Wiktionary viwiktionary https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh MediaWiki 1.47.0-wmf.1 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:Phiên bản ngôn ngữ 4 634 2350830 2037287 2026-05-07T08:11:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350830 wikitext text/x-wiki [[Wiktionary:Trang Cộng Đồng|Cộng đồng Wiktionary]] chắc chắn có tất cả những ngôn ngữ có [[người Wiktionary]] muốn thực hiện bản dịch đó. Chúng tôi biết là nhiều ngôn ngữ trong [[Wiktionary:Danh sách ngôn ngữ|6.500 ngôn ngữ khắp nơi]] chưa được dùng ở trên máy tính hoặc Web, vì vậy chúng tôi mong muốn cộng tác với những người biết nói bất kỳ ngôn ngữ nào để có số bản dịch nhiều hơn. Mỗi bản dịch của Wiktionary đang có một tài khoản người dùng riêng. Những liên kết nối với bản dịch khác gọi là [[Trợ giúp:Liên kết liên wiki|liên kết liên wiki]] (interlanguage/interwiki links). Địa chỉ của Wiktionary bằng ngôn ngữ bất kỳ là <code><var>xx</var>.wiktionary.org</code>, <var>xx</var> là mã ngôn ngữ hai chữ theo [[ISO 639]]. Cho những ngôn ngữ không có mã hai chữ, ngôn ngữ đó có mã ba chữ; nếu không, có mã ba chữ đặc biệt. (Ở những danh sách gửi thư và khi thảo luận, người ta thường thường viết "<var>xx</var>:" để nói là "Wiktionary bằng tiếng <var>xx</var>," thí dụ như, "Tôi là người quen ở vi:.") ==Các bộ từ điển== <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> *[[:af:Tuisblad|Afrikaans]]&nbsp;&ndash; {{af}} *[[:ar:|&#8238;&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;&nbsp;&#8236; (Araby)]]&nbsp;&ndash; {{ar}} *[[:ast:|Asturleonés]] *[[:gn:|Avañe’ẽ]] *[[:id:|Bahasa Indonesia]]&nbsp;&ndash; {{id}} *[[:ms:|Bahasa Melayu]] *[[:bg:|Български (Balgarski)]]&nbsp;&ndash; {{bg}} *[[:bn:|বাঙলা (Bangla)]] *[[:ca:|Català]]&nbsp;&ndash; {{cat-2}} *[[:cs:|Český]]&nbsp;&ndash; {{cs}} *[[:ch:|Chamorro]] *[[:cy:|Cymraeg]]&nbsp;&ndash; {{cy}} *[[:da:|Dansk]]&nbsp;&ndash; {{da}} *'''[[:de:|Deutsch]]'''&nbsp;&ndash; {{de}} *[[:et:|Eesti]] *[[:el:|Ελληνικά (Ellenika)]]&nbsp;&ndash; {{el}} *'''[[:en:|English]]'''&nbsp;&ndash; {{en}} *'''[[:es:|Español]]'''&nbsp;&ndash; {{es}} *[[:eo:|Esperanto]]&nbsp;&ndash; {{eo}} *[[:eu:|Euskara]] *[[:fa:|&#1601;&#1575;&#1585;&#1587;&#1740; (Farsi)]]&nbsp;&ndash; {{fa}} *'''[[:fr:|Français]]'''&nbsp;&ndash; {{fr}} *[[:fy:|Frysk]] *[[:ga:|Gaelige]] *[[:gl:|Galego]] *[[:gu:|ગુજરાતી <nowiki>[Gujarati]</nowiki>]] *[[:ko:|한국어 (Hangugeo)]]&nbsp;&ndash; {{ko}} *[[:hi:|हिन्दी (Hindi)]]&nbsp;&ndash; {{hi}} *[[:hr:|Hrvatski]] *[[:ia:|Interlingua]]&nbsp;&ndash; {{ia}} *[[:is:|Íslenska]]&nbsp;&ndash; [[Tiếng Băng đảo]] *[[:it:|Italiano]]&nbsp;&ndash; {{it}} *[[:he:|&#1506;&#1489;&#1512;&#1497;&#1514; (Ivrit)]]&nbsp;&ndash; {{he}} *[[:ku:|Kurdî]] *[[:la:|Latina]]&nbsp;&ndash; {{la}} *[[:lt:|Lietuvių]] *'''[[:hu:|Magyar]]''' *[[:ml:|മലയാളം (Malayalam)]] *[[:na:|Naoero]] *'''[[:nl:|Nederlands]]'''&nbsp;&ndash; {{nl}} *'''[[:ja:|日本語 (Nihongo)]]'''&nbsp;&ndash; {{ja}} *[[:no:|Norsk]]&nbsp;&ndash; {{no}} *[[:oc:|Occitan]] *[[:nds:|Plattdüütsch]] *'''[[:pl:|Polski]]'''&nbsp;&ndash; {{pl}} *[[:pt:|Português]]&nbsp;&ndash; {{pt}} *[[:ro:|Română]]&nbsp;&ndash; {{ro}} *[[:ru:|Русский (Russkiy)]]&nbsp;&ndash; {{ru}} *'''[[:fi:|Suomeksi]]'''&nbsp;&ndash; {{fi}} *'''[[:sv:|Svenska]]'''&nbsp;&ndash; {{sv}} *[[:ta:|தமிழ் (Tamil)]] *[[:tt:|татарча / بابارچا (Tatarça)]] *[[:th:|ไทย (Thai)]]&nbsp;&ndash; {{th}} *[[:tr:|Türkçe]]&nbsp;&ndash; {{tr}} *[[:ur:|&#1575;&#1585;&#1583;&#1608; (Urdu)]]&nbsp;&ndash; {{ur}} *[[:fj:|Vosa Vakaviti]]&nbsp;&ndash; {{fj}} *'''[[:zh:|中文 (Zhongwen)]]'''&nbsp;&ndash; {{zh}} <!-- Empty or non-existant *[[:ab:|Аҧсуа (Aṗsua)]] *[[:ay:|Aymara]] *[[:az:|Azərbaycan]] *[[:bal:|(Balochi)]] *[[:my:|(Burmese)]] *[[:sn:|chiShona]] *[[:co:|Corsu]] *[[:hy:|Հայերէն (Hayeren)]] *[[:tw:|Hō-ló-oē]] *[[:zu:|IsiZulu]] *[[:kn:|ಕನ್ನಡ (Kannaḍa)]] *[[:km:|ភាសាែខរ (Khmer)]]&nbsp;&ndash; [[Tiếng Khờ-me]] *[[:lv:|Latviešu]] *[[:ln:|Lingala]] *[[:mt:|Malti]] *[[:mr:|Marathi]] *[[:ne:|नेपाली (Nēpālī)]] *[[:pa:|ਪੰਜਾਬੀ / पंजाबी / پنجابی (Punjabi)]] *[[:qu:|Runa Simi]] *[[:tl:|Tagalog]] *[[:uk:|українська (Ukraïns’ka)]] *[[:uz:|Ўзбек (O’zbek)]] *[[:vo:|Volapük]] *[[:yo:|Yorùbá]] --> </div> [[Thể loại:Cộng đồng Wiktionary]] [[de:Wiktionary:Liste der Wiktionarys in anderen Sprachen]] [[en:Wiktionary:Multilingual coordination]] e5ypgif59gl4ltdunkvdipm6lnuso8n 2351076 2350830 2026-05-07T10:48:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351076 wikitext text/x-wiki [[Wiktionary:Trang Cộng Đồng|Cộng đồng Wiktionary]] chắc chắn có tất cả những ngôn ngữ có [[người Wiktionary]] muốn thực hiện bản dịch đó. Chúng tôi biết là nhiều ngôn ngữ trong [[Wiktionary:Danh sách ngôn ngữ|6.500 ngôn ngữ khắp nơi]] chưa được dùng ở trên máy tính hoặc Web, vì vậy chúng tôi mong muốn cộng tác với những người biết nói bất kỳ ngôn ngữ nào để có số bản dịch nhiều hơn. Mỗi bản dịch của Wiktionary đang có một tài khoản người dùng riêng. Những liên kết nối với bản dịch khác gọi là [[Trợ giúp:Liên kết liên wiki|liên kết liên wiki]] (interlanguage/interwiki links). Địa chỉ của Wiktionary bằng ngôn ngữ bất kỳ là <code><var>xx</var>.wiktionary.org</code>, <var>xx</var> là mã ngôn ngữ hai chữ theo [[ISO 639]]. Cho những ngôn ngữ không có mã hai chữ, ngôn ngữ đó có mã ba chữ; nếu không, có mã ba chữ đặc biệt. (Ở những danh sách gửi thư và khi thảo luận, người ta thường thường viết "<var>xx</var>:" để nói là "Wiktionary bằng tiếng <var>xx</var>," thí dụ như, "Tôi là người quen ở vi:.") ==Các bộ từ điển== <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> *[[:af:Tuisblad|Afrikaans]]&nbsp;&ndash; {{af}} *[[:ar:|&#8238;&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;&nbsp;&#8236; (Araby)]]&nbsp;&ndash; {{ar}} *[[:ast:|Asturleonés]] *[[:gn:|Avañe’ẽ]] *[[:id:|Bahasa Indonesia]]&nbsp;&ndash; {{id}} *[[:ms:|Bahasa Melayu]] *[[:bg:|Български (Balgarski)]]&nbsp;&ndash; {{bg}} *[[:bn:|বাঙলা (Bangla)]] *[[:ca:|Català]]&nbsp;&ndash; {{cat-old}} *[[:cs:|Český]]&nbsp;&ndash; {{cs}} *[[:ch:|Chamorro]] *[[:cy:|Cymraeg]]&nbsp;&ndash; {{cy}} *[[:da:|Dansk]]&nbsp;&ndash; {{da}} *'''[[:de:|Deutsch]]'''&nbsp;&ndash; {{de}} *[[:et:|Eesti]] *[[:el:|Ελληνικά (Ellenika)]]&nbsp;&ndash; {{el}} *'''[[:en:|English]]'''&nbsp;&ndash; {{en}} *'''[[:es:|Español]]'''&nbsp;&ndash; {{es}} *[[:eo:|Esperanto]]&nbsp;&ndash; {{eo}} *[[:eu:|Euskara]] *[[:fa:|&#1601;&#1575;&#1585;&#1587;&#1740; (Farsi)]]&nbsp;&ndash; {{fa}} *'''[[:fr:|Français]]'''&nbsp;&ndash; {{fr}} *[[:fy:|Frysk]] *[[:ga:|Gaelige]] *[[:gl:|Galego]] *[[:gu:|ગુજરાતી <nowiki>[Gujarati]</nowiki>]] *[[:ko:|한국어 (Hangugeo)]]&nbsp;&ndash; {{ko}} *[[:hi:|हिन्दी (Hindi)]]&nbsp;&ndash; {{hi}} *[[:hr:|Hrvatski]] *[[:ia:|Interlingua]]&nbsp;&ndash; {{ia}} *[[:is:|Íslenska]]&nbsp;&ndash; [[Tiếng Băng đảo]] *[[:it:|Italiano]]&nbsp;&ndash; {{it}} *[[:he:|&#1506;&#1489;&#1512;&#1497;&#1514; (Ivrit)]]&nbsp;&ndash; {{he}} *[[:ku:|Kurdî]] *[[:la:|Latina]]&nbsp;&ndash; {{la}} *[[:lt:|Lietuvių]] *'''[[:hu:|Magyar]]''' *[[:ml:|മലയാളം (Malayalam)]] *[[:na:|Naoero]] *'''[[:nl:|Nederlands]]'''&nbsp;&ndash; {{nl}} *'''[[:ja:|日本語 (Nihongo)]]'''&nbsp;&ndash; {{ja}} *[[:no:|Norsk]]&nbsp;&ndash; {{no}} *[[:oc:|Occitan]] *[[:nds:|Plattdüütsch]] *'''[[:pl:|Polski]]'''&nbsp;&ndash; {{pl}} *[[:pt:|Português]]&nbsp;&ndash; {{pt}} *[[:ro:|Română]]&nbsp;&ndash; {{ro}} *[[:ru:|Русский (Russkiy)]]&nbsp;&ndash; {{ru}} *'''[[:fi:|Suomeksi]]'''&nbsp;&ndash; {{fi}} *'''[[:sv:|Svenska]]'''&nbsp;&ndash; {{sv}} *[[:ta:|தமிழ் (Tamil)]] *[[:tt:|татарча / بابارچا (Tatarça)]] *[[:th:|ไทย (Thai)]]&nbsp;&ndash; {{th}} *[[:tr:|Türkçe]]&nbsp;&ndash; {{tr}} *[[:ur:|&#1575;&#1585;&#1583;&#1608; (Urdu)]]&nbsp;&ndash; {{ur}} *[[:fj:|Vosa Vakaviti]]&nbsp;&ndash; {{fj}} *'''[[:zh:|中文 (Zhongwen)]]'''&nbsp;&ndash; {{zh}} <!-- Empty or non-existant *[[:ab:|Аҧсуа (Aṗsua)]] *[[:ay:|Aymara]] *[[:az:|Azərbaycan]] *[[:bal:|(Balochi)]] *[[:my:|(Burmese)]] *[[:sn:|chiShona]] *[[:co:|Corsu]] *[[:hy:|Հայերէն (Hayeren)]] *[[:tw:|Hō-ló-oē]] *[[:zu:|IsiZulu]] *[[:kn:|ಕನ್ನಡ (Kannaḍa)]] *[[:km:|ភាសាែខរ (Khmer)]]&nbsp;&ndash; [[Tiếng Khờ-me]] *[[:lv:|Latviešu]] *[[:ln:|Lingala]] *[[:mt:|Malti]] *[[:mr:|Marathi]] *[[:ne:|नेपाली (Nēpālī)]] *[[:pa:|ਪੰਜਾਬੀ / पंजाबी / پنجابی (Punjabi)]] *[[:qu:|Runa Simi]] *[[:tl:|Tagalog]] *[[:uk:|українська (Ukraïns’ka)]] *[[:uz:|Ўзбек (O’zbek)]] *[[:vo:|Volapük]] *[[:yo:|Yorùbá]] --> </div> [[Thể loại:Cộng đồng Wiktionary]] [[de:Wiktionary:Liste der Wiktionarys in anderen Sprachen]] [[en:Wiktionary:Multilingual coordination]] 5deu4ahnync6yi1h1v8jnetou0q216o Thành viên:GerardM/kladblok 2 952 2350828 4079 2026-05-07T08:11:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350828 wikitext text/x-wiki ===Talen=== {| border=1 |- |[[Template:aa|<nowiki>{{aa}}</nowiki>]] | {{msgnw:aa}} || {{aa}} |- |[[Template:ab|<nowiki>{{ab}}</nowiki>]] | {{msgnw:ab}} || {{ab}} |- |[[Template:af|<nowiki>{{af}}</nowiki>]] | {{msgnw:af}} || {{af}} |- |[[Template:als|<nowiki>{{als}}</nowiki>]] | {{msgnw:als}} || {{als}} |- |[[Template:am|<nowiki>{{am}}</nowiki>]] | {{msgnw:am}} || {{am}} |- |[[Template:an|<nowiki>{{an}}</nowiki>]] | {{msgnw:an}} || {{an}} |- |[[Template:ar|<nowiki>{{ar}}</nowiki>]] | {{msgnw:ar}} || {{ar}} |- |[[Template:ars|<nowiki>{{ars}}</nowiki>]] | {{msgnw:ars}} || {{ars}} |- |[[Template:as|<nowiki>{{as}}</nowiki>]] | {{msgnw:as}} || {{as}} |- |[[Template:ast|<nowiki>{{ast}}</nowiki>]] | {{msgnw:ast}} || {{ast}} |- |[[Template:ay|<nowiki>{{ay}}</nowiki>]] | {{msgnw:ay}} || {{ay}} |- |[[Template:az|<nowiki>{{az}}</nowiki>]] | {{msgnw:az}} || {{az}} |- |[[Template:ba|<nowiki>{{ba}}</nowiki>]] | {{msgnw:ba}} || {{ba}} |- |[[Template:bal|<nowiki>{{bal}}</nowiki>]] | {{msgnw:bal}} || {{bal}} |- |[[Template:ban|<nowiki>{{ban}}</nowiki>]] | {{msgnw:ban}} || {{ban}} |- |[[Template:be|<nowiki>{{be}}</nowiki>]] | {{msgnw:be}} || {{be}} |- |[[Template:ber|<nowiki>{{ber}}</nowiki>]] | {{msgnw:ber}} || {{ber}} |- |[[Template:bg|<nowiki>{{bg}}</nowiki>]] | {{msgnw:bg}} || {{bg}} |- |[[Template:bh|<nowiki>{{bh}}</nowiki>]] | {{msgnw:bh}} || {{bh}} |- |[[Template:bi|<nowiki>{{bi}}</nowiki>]] | {{msgnw:bi}} || {{bi}} |- |[[Template:bn|<nowiki>{{bn}}</nowiki>]] | {{msgnw:bn}} || {{bn}} |- |[[Template:bo|<nowiki>{{bo}}</nowiki>]] | {{msgnw:bo}} || {{bo}} |- |[[Template:br|<nowiki>{{br}}</nowiki>]] | {{msgnw:br}} || {{br}} |- |[[Template:bs|<nowiki>{{bs}}</nowiki>]] | {{msgnw:bs}} || {{bs}} |- |[[Template:bug|<nowiki>{{bug}}</nowiki>]] | {{msgnw:bug}} || {{bug}} |- |[[Template:ca|<nowiki>{{cat-2}}</nowiki>]] | {{msgnw:ca}} || {{cat-2}} |- |[[Template:ceb|<nowiki>{{ceb}}</nowiki>]] | {{msgnw:ceb}} || {{ceb}} |- |[[Template:ch|<nowiki>{{ch}}</nowiki>]] | {{msgnw:ch}} || {{ch}} |- |[[Template:che|<nowiki>{{che}}</nowiki>]] | {{msgnw:che}} || {{che}} |- |[[Template:chm|<nowiki>{{chm}}</nowiki>]] | {{msgnw:chm}} || {{chm}} |- |[[Template:chr|<nowiki>{{chr}}</nowiki>]] | {{msgnw:chr}} || {{chr}} |- |[[Template:chv|<nowiki>{{chv}}</nowiki>]] | {{msgnw:chv}} || {{chv}} |- |[[Template:co|<nowiki>{{co}}</nowiki>]] | {{msgnw:co}} || {{co}} |- |[[Template:crh|<nowiki>{{crh}}</nowiki>]] | {{msgnw:crh}} || {{crh}} |- |[[Template:cs|<nowiki>{{cs}}</nowiki>]] | {{msgnw:cs}} || {{cs}} |- |[[Template:csb|<nowiki>{{csb}}</nowiki>]] | {{msgnw:csb}} || {{csb}} |- |[[Template:cy|<nowiki>{{cy}}</nowiki>]] | {{msgnw:cy}} || {{cy}} |- |[[Template:da|<nowiki>{{da}}</nowiki>]] | {{msgnw:da}} || {{da}} |- |[[Template:de|<nowiki>{{de}}</nowiki>]] | {{msgnw:de}} || {{de}} |- |[[Template:diu|<nowiki>{{diu}}</nowiki>]] | {{msgnw:diu}} || {{diu}} |- |[[Template:div|<nowiki>{{div}}</nowiki>]] | {{msgnw:div}} || {{div}} |- |[[Template:dz|<nowiki>{{dz}}</nowiki>]] | {{msgnw:dz}} || {{dz}} |- |[[Template:el|<nowiki>{{el}}</nowiki>]] | {{msgnw:el}} || {{el}} |- |[[Template:en|<nowiki>{{en}}</nowiki>]] | {{msgnw:en}} || {{en}} |- |[[Template:eu|<nowiki>{{eu}}</nowiki>]] | {{msgnw:eu}} || {{eu}} |- |[[Template:eo|<nowiki>{{eo}}</nowiki>]] | {{msgnw:eo}} || {{eo}} |- |[[Template:es|<nowiki>{{es}}</nowiki>]] | {{msgnw:es}} || {{es}} |- |[[Template:eso|<nowiki>{{eso}}</nowiki>]] | {{msgnw:eso}} || {{eso}} |- |[[Template:et|<nowiki>{{et}}</nowiki>]] | {{msgnw:et}} || {{et}} |- |[[Template:fa|<nowiki>{{fa}}</nowiki>]] | {{msgnw:fa}} || {{fa}} |- |[[Template:fi|<nowiki>{{fi}}</nowiki>]] | {{msgnw:fi}} || {{fi}} |- |[[Template:fiu|<nowiki>{{fiu}}</nowiki>]] | {{msgnw:fiu}} || {{fiu}} |- |[[Template:fj|<nowiki>{{fj}}</nowiki>]] | {{msgnw:fj}} || {{fj}} |- |[[Template:fo|<nowiki>{{fo}}</nowiki>]] | {{msgnw:fo}} || {{fo}} |- |[[Template:fr|<nowiki>{{fr}}</nowiki>]] | {{msgnw:fr}} || {{fr}} |- |[[Template:fur|<nowiki>{{fur}}</nowiki>]] | {{msgnw:fur}} || {{fur}} |- |[[Template:fy|<nowiki>{{fy}}</nowiki>]] | {{msgnw:fy}} || {{fy}} |- |[[Template:ga|<nowiki>{{ga}}</nowiki>]] | {{msgnw:ga}} || {{ga}} |- |[[Template:gay|<nowiki>{{gay}}</nowiki>]] | {{msgnw:gay}} || {{gay}} |- |[[Template:gl|<nowiki>{{gl}}</nowiki>]] | {{msgnw:gl}} || {{gl}} |- |[[Template:gn|<nowiki>{{gn}}</nowiki>]] | {{msgnw:gn}} || {{gn}} |- |[[Template:gu|<nowiki>{{gu}}</nowiki>]] | {{msgnw:gu}} || {{gu}} |- |[[Template:gs|<nowiki>{{gs}}</nowiki>]] | {{msgnw:gs}} || {{gs}} |- |[[Template:gv|<nowiki>{{gv}}</nowiki>]] | {{msgnw:gv}} || {{gv}} |- |[[Template:ha|<nowiki>{{ha}}</nowiki>]] | {{msgnw:ha}} || {{ha}} |- |[[Template:he|<nowiki>{{he}}</nowiki>]] | {{msgnw:he}} || {{he}} |- |[[Template:hi|<nowiki>{{hi}}</nowiki>]] | {{msgnw:hi}} || {{hi}} |- |[[Template:hr|<nowiki>{{hr}}</nowiki>]] | {{msgnw:hr}} || {{hr}} |- |[[Template:hu|<nowiki>{{hu}}</nowiki>]] | {{msgnw:hu}} || {{hu}} |- |[[Template:hy|<nowiki>{{hy}}</nowiki>]] | {{msgnw:hy}} || {{hy}} |- |[[Template:ia|<nowiki>{{ia}}</nowiki>]] | {{msgnw:ia}} || {{ia}} |- |[[Template:iba|<nowiki>{{iba}}</nowiki>]] | {{msgnw:iba}} || {{iba}} |- |[[Template:id|<nowiki>{{id}}</nowiki>]] | {{msgnw:id}} || {{id}} |- |[[Template:ii|<nowiki>{{ii}}</nowiki>]] | {{msgnw:ii}} || {{ii}} |- |[[Template:ik|<nowiki>{{ik}}</nowiki>]] | {{msgnw:ik}} || {{ik}} |- |[[Template:io|<nowiki>{{io}}</nowiki>]] | {{msgnw:io}} || {{io}} |- |[[Template:is|<nowiki>{{is}}</nowiki>]] | {{msgnw:is}} || {{is}} |- |[[Template:it|<nowiki>{{it}}</nowiki>]] | {{msgnw:it}} || {{it}} |- |[[Template:iu|<nowiki>{{iu}}</nowiki>]] | {{msgnw:iu}} || {{iu}} |- |[[Template:ja|<nowiki>{{ja}}</nowiki>]] | {{msgnw:ja}} || {{ja}} |- |[[Template:jv|<nowiki>{{jv}}</nowiki>]] | {{msgnw:jv}} || {{jv}} |- |[[Template:ka|<nowiki>{{ka}}</nowiki>]] | {{msgnw:ka}} || {{ka}} |- |[[Template:kaw|<nowiki>{{kaw}}</nowiki>]] | {{msgnw:kaw}} || {{kaw}} |- |[[Template:kh|<nowiki>{{kh}}</nowiki>]] | {{msgnw:kh}} || {{kh}} |- |[[Template:kk|<nowiki>{{kk}}</nowiki>]] | {{msgnw:kk}} || {{kk}} |- |[[Template:kl|<nowiki>{{kl}}</nowiki>]] | {{msgnw:kl}} || {{kl}} |- |[[Template:km|<nowiki>{{km}}</nowiki>]] | {{msgnw:km}} || {{km}} |- |[[Template:kn|<nowiki>{{kn}}</nowiki>]] | {{msgnw:kn}} || {{kn}} |- |[[Template:ko|<nowiki>{{ko}}</nowiki>]] | {{msgnw:ko}} || {{ko}} |- |[[Template:ks|<nowiki>{{ks}}</nowiki>]] | {{msgnw:ks}} || {{ks}} |- |[[Template:ku|<nowiki>{{ku}}</nowiki>]] | {{msgnw:ku}} || {{ku}} |- |[[Template:kw|<nowiki>{{kw}}</nowiki>]] | {{msgnw:kw}} || {{kw}} |- |[[Template:ky|<nowiki>{{ky}}</nowiki>]] | {{msgnw:ky}} || {{ky}} |- |[[Template:la|<nowiki>{{la}}</nowiki>]] | {{msgnw:la}} || {{la}} |- |[[Template:lb|<nowiki>{{lb}}</nowiki>]] | {{msgnw:lb}} || {{lb}} |- |[[Template:li|<nowiki>{{li}}</nowiki>]] | {{msgnw:li}} || {{li}} |- |[[Template:lt|<nowiki>{{lt}}</nowiki>]] | {{msgnw:lt}} || {{lt}} |- |[[Template:lv|<nowiki>{{lv}}</nowiki>]] | {{msgnw:lv}} || {{lv}} |- |[[Template:ma|<nowiki>{{ma}}</nowiki>]] | {{msgnw:ma}} || {{ma}} |- |[[Template:mdf|<nowiki>{{mdf}}</nowiki>]] | {{msgnw:mdf}} || {{mdf}} |- |[[Template:mi|<nowiki>{{mi}}</nowiki>]] | {{msgnw:mi}} || {{mi}} |- |[[Template:mk|<nowiki>{{mk}}</nowiki>]] | {{msgnw:mk}} || {{mk}} |- |[[Template:ml|<nowiki>{{ml}}</nowiki>]] | {{msgnw:ml}} || {{ml}} |- |[[Template:mn|<nowiki>{{mn}}</nowiki>]] | {{msgnw:mn}} || {{mn}} |- |[[Template:mnc|<nowiki>{{mnc}}</nowiki>]] | {{msgnw:mnc}} || {{mnc}} |- |[[Template:mo|<nowiki>{{mo}}</nowiki>]] | {{msgnw:mo}} || {{mo}} |- |[[Template:mr|<nowiki>{{mr}}</nowiki>]] | {{msgnw:mr}} || {{mr}} |- |[[Template:ms|<nowiki>{{ms}}</nowiki>]] | {{msgnw:ms}} || {{ms}} |- |[[Template:mt|<nowiki>{{mt}}</nowiki>]] | {{msgnw:mt}} || {{mt}} |- |[[Template:my|<nowiki>{{my}}</nowiki>]] | {{msgnw:my}} || {{my}} |- |[[Template:myv|<nowiki>{{myv}}</nowiki>]] | {{msgnw:myv}} || {{myv}} |- |[[Template:na|<nowiki>{{na}}</nowiki>]] | {{msgnw:na}} || {{na}} |- |[[Template:nah|<nowiki>{{nah}}</nowiki>]] | {{msgnw:nah}} || {{nah}} |- |[[Template:nb|<nowiki>{{nb}}</nowiki>]] | {{msgnw:nb}} || {{nb}} |- |[[Template:ne|<nowiki>{{ne}}</nowiki>]] | {{msgnw:ne}} || {{ne}} |- |[[Template:nd|<nowiki>{{nd}}</nowiki>]] | {{msgnw:nd}} || {{nd}} |- |[[Template:ng|<nowiki>{{ng}}</nowiki>]] | {{msgnw:ng}} || {{ng}} |- |[[Template:nl|<nowiki>{{nl}}</nowiki>]] | {{msgnw:nl}} || {{nl}} |- |[[Template:nn|<nowiki>{{nn}}</nowiki>]] | {{msgnw:nn}} || {{nn}} |- |[[Template:no|<nowiki>{{no}}</nowiki>]] | {{msgnw:no}} || {{no}} |- |[[Template:nr|<nowiki>{{nr}}</nowiki>]] | {{msgnw:nr}} || {{nr}} |- |[[Template:nv|<nowiki>{{nv}}</nowiki>]] | {{msgnw:nv}} || {{nv}} |- |[[Template:ny|<nowiki>{{ny}}</nowiki>]] | {{msgnw:ny}} || {{ny}} |- |[[Template:oc|<nowiki>{{oc}}</nowiki>]] | {{msgnw:oc}} || {{oc}} |- |[[Template:oj|<nowiki>{{oj}}</nowiki>]] | {{msgnw:oj}} || {{oj}} |- |[[Template:om|<nowiki>{{om}}</nowiki>]] | {{msgnw:om}} || {{om}} |- |[[Template:or|<nowiki>{{or}}</nowiki>]] | {{msgnw:or}} || {{or}} |- |[[Template:os|<nowiki>{{os}}</nowiki>]] | {{msgnw:os}} || {{os}} |- |[[Template:pap|<nowiki>{{pap}}</nowiki>]] | {{msgnw:pap}} || {{pap}} |- |[[Template:pi|<nowiki>{{pi}}</nowiki>]] | {{msgnw:pi}} || {{pi}} |- |[[Template:pl|<nowiki>{{pl}}</nowiki>]] | {{msgnw:pl}} || {{pl}} |- |[[Template:ps|<nowiki>{{ps}}</nowiki>]] | {{msgnw:ps}} || {{ps}} |- |[[Template:pt|<nowiki>{{pt}}</nowiki>]] | {{msgnw:pt}} || {{pt}} |- |[[Template:qu|<nowiki>{{qu}}</nowiki>]] | {{msgnw:qu}} || {{qu}} |- |[[Template:ra|<nowiki>{{ra}}</nowiki>]] | {{msgnw:ra}} || {{ra}} |- |[[Template:rn|<nowiki>{{rn}}</nowiki>]] | {{msgnw:rn}} || {{rn}} |- |[[Template:ro|<nowiki>{{ro}}</nowiki>]] | {{msgnw:ro}} || {{ro}} |- |[[Template:ru|<nowiki>{{ru}}</nowiki>]] | {{msgnw:ru}} || {{ru}} |- |[[Template:rw|<nowiki>{{rw}}</nowiki>]] | {{msgnw:rw}} || {{rw}} |- |[[Template:sa|<nowiki>{{sa}}</nowiki>]] | {{msgnw:sa}} || {{sa}} |- |[[Template:sc|<nowiki>{{sc}}</nowiki>]] | {{msgnw:sc}} || {{sc}} |- |[[Template:sco|<nowiki>{{sco}}</nowiki>]] | {{msgnw:sco}} || {{sco}} |- |[[Template:sd|<nowiki>{{sd}}</nowiki>]] | {{msgnw:sd}} || {{sd}} |- |[[Template:si|<nowiki>{{si}}</nowiki>]] | {{msgnw:si}} || {{si}} |- |[[Template:se|<nowiki>{{se}}</nowiki>]] | {{msgnw:se}} || {{se}} |- |[[Template:sk|<nowiki>{{sk}}</nowiki>]] | {{msgnw:sk}} || {{sk}} |- |[[Template:sl|<nowiki>{{sl}}</nowiki>]] | {{msgnw:sl}} || {{sl}} |- |[[Template:sm|<nowiki>{{sm}}</nowiki>]] | {{msgnw:sm}} || {{sm}} |- |[[Template:smi|<nowiki>{{smi}}</nowiki>]] | {{msgnw:smi}} || {{smi}} |- |[[Template:smn|<nowiki>{{smn}}</nowiki>]] | {{msgnw:smn}} || {{smn}} |- |[[Template:sn|<nowiki>{{sn}}</nowiki>]] | {{msgnw:sn}} || {{sn}} |- |[[Template:so|<nowiki>{{so}}</nowiki>]] | {{msgnw:so}} || {{so}} |- |[[Template:sq|<nowiki>{{sq}}</nowiki>]] | {{msgnw:sq}} || {{sq}} |- |[[Template:sr|<nowiki>{{sr}}</nowiki>]] | {{msgnw:sr}} || {{sr}} |- |[[Template:su|<nowiki>{{su}}</nowiki>]] | {{msgnw:su}} || {{su}} |- |[[Template:sv|<nowiki>{{sv}}</nowiki>]] | {{msgnw:sv}} || {{sv}} |- |[[Template:sw|<nowiki>{{sw}}</nowiki>]] | {{msgnw:sw}} || {{sw}} |- |[[Template:sq|<nowiki>{{sq}}</nowiki>]] | {{msgnw:sq}} || {{sq}} |- |[[Template:ss|<nowiki>{{ss}}</nowiki>]] | {{msgnw:ss}} || {{ss}} |- |[[Template:ta|<nowiki>{{ta}}</nowiki>]] | {{msgnw:ta}} || {{ta}} |- |[[Template:te|<nowiki>{{te}}</nowiki>]] | {{msgnw:te}} || {{te}} |- |[[Template:tg|<nowiki>{{tg}}</nowiki>]] | {{msgnw:tg}} || {{tg}} |- |[[Template:th|<nowiki>{{th}}</nowiki>]] | {{msgnw:th}} || {{th}} |- |[[Template:ti|<nowiki>{{ti}}</nowiki>]] | {{msgnw:ti}} || {{ti}} |- |[[Template:tk|<nowiki>{{tk}}</nowiki>]] | {{msgnw:tk}} || {{tk}} |- |[[Template:tl|<nowiki>{{tl}}</nowiki>]] | {{msgnw:tl}} || {{tl}} |- |[[Template:tlh|<nowiki>{{tlh}}</nowiki>]] | {{msgnw:tlh}} || {{tlh}} |- |[[Template:tn|<nowiki>{{tn}}</nowiki>]] | {{msgnw:tn}} || {{tn}} |- |[[Template:to|<nowiki>{{to}}</nowiki>]] | {{msgnw:to}} || {{to}} |- |[[Template:tpi|<nowiki>{{tpi}}</nowiki>]] | {{msgnw:tpi}} || {{tpi}} |- |[[Template:tr|<nowiki>{{tr}}</nowiki>]] | {{msgnw:tr}} || {{tr}} |- |[[Template:ts|<nowiki>{{ts}}</nowiki>]] | {{msgnw:ts}} || {{ts}} |- |[[Template:tt|<nowiki>{{tt}}</nowiki>]] | {{msgnw:tt}} || {{tt}} |- |[[Template:tw|<nowiki>{{tw}}</nowiki>]] | {{msgnw:tw}} || {{tw}} |- |[[Template:udm|<nowiki>{{udm}}</nowiki>]] | {{msgnw:udm}} || {{udm}} |- |[[Template:ug|<nowiki>{{ug}}</nowiki>]] | {{msgnw:ug}} || {{ug}} |- |[[Template:uk|<nowiki>{{uk}}</nowiki>]] | {{msgnw:uk}} || {{uk}} |- |[[Template:ur|<nowiki>{{ur}}</nowiki>]] | {{msgnw:ur}} || {{ur}} |- |[[Template:uz|<nowiki>{{uz}}</nowiki>]] | {{msgnw:uz}} || {{uz}} |- |[[Template:vi|<nowiki>{{vi}}</nowiki>]] | {{msgnw:vi}} || {{vi}} |- |[[Template:vo|<nowiki>{{vo}}</nowiki>]] | {{msgnw:vo}} || {{vo}} |- |[[Template:vot|<nowiki>{{vot}}</nowiki>]] | {{msgnw:vot}} || {{vot}} |- |[[Template:wa|<nowiki>{{wa}}</nowiki>]] | {{msgnw:wa}} || {{wa}} |- |[[Template:wen|<nowiki>{{wen}}</nowiki>]] | {{msgnw:wen}} || {{wen}} |- |[[Template:wo|<nowiki>{{wo}}</nowiki>]] | {{msgnw:wo}} || {{wo}} |- |[[Template:xh|<nowiki>{{xh}}</nowiki>]] | {{msgnw:xh}} || {{xh}} |- |[[Template:yi|<nowiki>{{yi}}</nowiki>]] | {{msgnw:yi}} || {{yi}} |- |[[Template:yo|<nowiki>{{yo}}</nowiki>]] | {{msgnw:yo}} || {{yo}} |- |[[Template:za|<nowiki>{{za}}</nowiki>]] | {{msgnw:za}} || {{za}} |- |[[Template:zh|<nowiki>{{zh}}</nowiki>]] | {{msgnw:zh}} || {{zh}} |- |[[Template:zu|<nowiki>{{zu}}</nowiki>]] | {{msgnw:zu}} || {{zu}} |- |} hju9q582qmlauq05zn57bqebkp4ylh4 2351072 2350828 2026-05-07T10:48:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351072 wikitext text/x-wiki ===Talen=== {| border=1 |- |[[Template:aa|<nowiki>{{aa}}</nowiki>]] | {{msgnw:aa}} || {{aa}} |- |[[Template:ab|<nowiki>{{ab}}</nowiki>]] | {{msgnw:ab}} || {{ab}} |- |[[Template:af|<nowiki>{{af}}</nowiki>]] | {{msgnw:af}} || {{af}} |- |[[Template:als|<nowiki>{{als}}</nowiki>]] | {{msgnw:als}} || {{als}} |- |[[Template:am|<nowiki>{{am}}</nowiki>]] | {{msgnw:am}} || {{am}} |- |[[Template:an|<nowiki>{{an}}</nowiki>]] | {{msgnw:an}} || {{an}} |- |[[Template:ar|<nowiki>{{ar}}</nowiki>]] | {{msgnw:ar}} || {{ar}} |- |[[Template:ars|<nowiki>{{ars}}</nowiki>]] | {{msgnw:ars}} || {{ars}} |- |[[Template:as|<nowiki>{{as}}</nowiki>]] | {{msgnw:as}} || {{as}} |- |[[Template:ast|<nowiki>{{ast}}</nowiki>]] | {{msgnw:ast}} || {{ast}} |- |[[Template:ay|<nowiki>{{ay}}</nowiki>]] | {{msgnw:ay}} || {{ay}} |- |[[Template:az|<nowiki>{{az}}</nowiki>]] | {{msgnw:az}} || {{az}} |- |[[Template:ba|<nowiki>{{ba}}</nowiki>]] | {{msgnw:ba}} || {{ba}} |- |[[Template:bal|<nowiki>{{bal}}</nowiki>]] | {{msgnw:bal}} || {{bal}} |- |[[Template:ban|<nowiki>{{ban}}</nowiki>]] | {{msgnw:ban}} || {{ban}} |- |[[Template:be|<nowiki>{{be}}</nowiki>]] | {{msgnw:be}} || {{be}} |- |[[Template:ber|<nowiki>{{ber}}</nowiki>]] | {{msgnw:ber}} || {{ber}} |- |[[Template:bg|<nowiki>{{bg}}</nowiki>]] | {{msgnw:bg}} || {{bg}} |- |[[Template:bh|<nowiki>{{bh}}</nowiki>]] | {{msgnw:bh}} || {{bh}} |- |[[Template:bi|<nowiki>{{bi}}</nowiki>]] | {{msgnw:bi}} || {{bi}} |- |[[Template:bn|<nowiki>{{bn}}</nowiki>]] | {{msgnw:bn}} || {{bn}} |- |[[Template:bo|<nowiki>{{bo}}</nowiki>]] | {{msgnw:bo}} || {{bo}} |- |[[Template:br|<nowiki>{{br}}</nowiki>]] | {{msgnw:br}} || {{br}} |- |[[Template:bs|<nowiki>{{bs}}</nowiki>]] | {{msgnw:bs}} || {{bs}} |- |[[Template:bug|<nowiki>{{bug}}</nowiki>]] | {{msgnw:bug}} || {{bug}} |- |[[Template:ca|<nowiki>{{cat-old}}</nowiki>]] | {{msgnw:ca}} || {{cat-old}} |- |[[Template:ceb|<nowiki>{{ceb}}</nowiki>]] | {{msgnw:ceb}} || {{ceb}} |- |[[Template:ch|<nowiki>{{ch}}</nowiki>]] | {{msgnw:ch}} || {{ch}} |- |[[Template:che|<nowiki>{{che}}</nowiki>]] | {{msgnw:che}} || {{che}} |- |[[Template:chm|<nowiki>{{chm}}</nowiki>]] | {{msgnw:chm}} || {{chm}} |- |[[Template:chr|<nowiki>{{chr}}</nowiki>]] | {{msgnw:chr}} || {{chr}} |- |[[Template:chv|<nowiki>{{chv}}</nowiki>]] | {{msgnw:chv}} || {{chv}} |- |[[Template:co|<nowiki>{{co}}</nowiki>]] | {{msgnw:co}} || {{co}} |- |[[Template:crh|<nowiki>{{crh}}</nowiki>]] | {{msgnw:crh}} || {{crh}} |- |[[Template:cs|<nowiki>{{cs}}</nowiki>]] | {{msgnw:cs}} || {{cs}} |- |[[Template:csb|<nowiki>{{csb}}</nowiki>]] | {{msgnw:csb}} || {{csb}} |- |[[Template:cy|<nowiki>{{cy}}</nowiki>]] | {{msgnw:cy}} || {{cy}} |- |[[Template:da|<nowiki>{{da}}</nowiki>]] | {{msgnw:da}} || {{da}} |- |[[Template:de|<nowiki>{{de}}</nowiki>]] | {{msgnw:de}} || {{de}} |- |[[Template:diu|<nowiki>{{diu}}</nowiki>]] | {{msgnw:diu}} || {{diu}} |- |[[Template:div|<nowiki>{{div}}</nowiki>]] | {{msgnw:div}} || {{div}} |- |[[Template:dz|<nowiki>{{dz}}</nowiki>]] | {{msgnw:dz}} || {{dz}} |- |[[Template:el|<nowiki>{{el}}</nowiki>]] | {{msgnw:el}} || {{el}} |- |[[Template:en|<nowiki>{{en}}</nowiki>]] | {{msgnw:en}} || {{en}} |- |[[Template:eu|<nowiki>{{eu}}</nowiki>]] | {{msgnw:eu}} || {{eu}} |- |[[Template:eo|<nowiki>{{eo}}</nowiki>]] | {{msgnw:eo}} || {{eo}} |- |[[Template:es|<nowiki>{{es}}</nowiki>]] | {{msgnw:es}} || {{es}} |- |[[Template:eso|<nowiki>{{eso}}</nowiki>]] | {{msgnw:eso}} || {{eso}} |- |[[Template:et|<nowiki>{{et}}</nowiki>]] | {{msgnw:et}} || {{et}} |- |[[Template:fa|<nowiki>{{fa}}</nowiki>]] | {{msgnw:fa}} || {{fa}} |- |[[Template:fi|<nowiki>{{fi}}</nowiki>]] | {{msgnw:fi}} || {{fi}} |- |[[Template:fiu|<nowiki>{{fiu}}</nowiki>]] | {{msgnw:fiu}} || {{fiu}} |- |[[Template:fj|<nowiki>{{fj}}</nowiki>]] | {{msgnw:fj}} || {{fj}} |- |[[Template:fo|<nowiki>{{fo}}</nowiki>]] | {{msgnw:fo}} || {{fo}} |- |[[Template:fr|<nowiki>{{fr}}</nowiki>]] | {{msgnw:fr}} || {{fr}} |- |[[Template:fur|<nowiki>{{fur}}</nowiki>]] | {{msgnw:fur}} || {{fur}} |- |[[Template:fy|<nowiki>{{fy}}</nowiki>]] | {{msgnw:fy}} || {{fy}} |- |[[Template:ga|<nowiki>{{ga}}</nowiki>]] | {{msgnw:ga}} || {{ga}} |- |[[Template:gay|<nowiki>{{gay}}</nowiki>]] | {{msgnw:gay}} || {{gay}} |- |[[Template:gl|<nowiki>{{gl}}</nowiki>]] | {{msgnw:gl}} || {{gl}} |- |[[Template:gn|<nowiki>{{gn}}</nowiki>]] | {{msgnw:gn}} || {{gn}} |- |[[Template:gu|<nowiki>{{gu}}</nowiki>]] | {{msgnw:gu}} || {{gu}} |- |[[Template:gs|<nowiki>{{gs}}</nowiki>]] | {{msgnw:gs}} || {{gs}} |- |[[Template:gv|<nowiki>{{gv}}</nowiki>]] | {{msgnw:gv}} || {{gv}} |- |[[Template:ha|<nowiki>{{ha}}</nowiki>]] | {{msgnw:ha}} || {{ha}} |- |[[Template:he|<nowiki>{{he}}</nowiki>]] | {{msgnw:he}} || {{he}} |- |[[Template:hi|<nowiki>{{hi}}</nowiki>]] | {{msgnw:hi}} || {{hi}} |- |[[Template:hr|<nowiki>{{hr}}</nowiki>]] | {{msgnw:hr}} || {{hr}} |- |[[Template:hu|<nowiki>{{hu}}</nowiki>]] | {{msgnw:hu}} || {{hu}} |- |[[Template:hy|<nowiki>{{hy}}</nowiki>]] | {{msgnw:hy}} || {{hy}} |- |[[Template:ia|<nowiki>{{ia}}</nowiki>]] | {{msgnw:ia}} || {{ia}} |- |[[Template:iba|<nowiki>{{iba}}</nowiki>]] | {{msgnw:iba}} || {{iba}} |- |[[Template:id|<nowiki>{{id}}</nowiki>]] | {{msgnw:id}} || {{id}} |- |[[Template:ii|<nowiki>{{ii}}</nowiki>]] | {{msgnw:ii}} || {{ii}} |- |[[Template:ik|<nowiki>{{ik}}</nowiki>]] | {{msgnw:ik}} || {{ik}} |- |[[Template:io|<nowiki>{{io}}</nowiki>]] | {{msgnw:io}} || {{io}} |- |[[Template:is|<nowiki>{{is}}</nowiki>]] | {{msgnw:is}} || {{is}} |- |[[Template:it|<nowiki>{{it}}</nowiki>]] | {{msgnw:it}} || {{it}} |- |[[Template:iu|<nowiki>{{iu}}</nowiki>]] | {{msgnw:iu}} || {{iu}} |- |[[Template:ja|<nowiki>{{ja}}</nowiki>]] | {{msgnw:ja}} || {{ja}} |- |[[Template:jv|<nowiki>{{jv}}</nowiki>]] | {{msgnw:jv}} || {{jv}} |- |[[Template:ka|<nowiki>{{ka}}</nowiki>]] | {{msgnw:ka}} || {{ka}} |- |[[Template:kaw|<nowiki>{{kaw}}</nowiki>]] | {{msgnw:kaw}} || {{kaw}} |- |[[Template:kh|<nowiki>{{kh}}</nowiki>]] | {{msgnw:kh}} || {{kh}} |- |[[Template:kk|<nowiki>{{kk}}</nowiki>]] | {{msgnw:kk}} || {{kk}} |- |[[Template:kl|<nowiki>{{kl}}</nowiki>]] | {{msgnw:kl}} || {{kl}} |- |[[Template:km|<nowiki>{{km}}</nowiki>]] | {{msgnw:km}} || {{km}} |- |[[Template:kn|<nowiki>{{kn}}</nowiki>]] | {{msgnw:kn}} || {{kn}} |- |[[Template:ko|<nowiki>{{ko}}</nowiki>]] | {{msgnw:ko}} || {{ko}} |- |[[Template:ks|<nowiki>{{ks}}</nowiki>]] | {{msgnw:ks}} || {{ks}} |- |[[Template:ku|<nowiki>{{ku}}</nowiki>]] | {{msgnw:ku}} || {{ku}} |- |[[Template:kw|<nowiki>{{kw}}</nowiki>]] | {{msgnw:kw}} || {{kw}} |- |[[Template:ky|<nowiki>{{ky}}</nowiki>]] | {{msgnw:ky}} || {{ky}} |- |[[Template:la|<nowiki>{{la}}</nowiki>]] | {{msgnw:la}} || {{la}} |- |[[Template:lb|<nowiki>{{lb}}</nowiki>]] | {{msgnw:lb}} || {{lb}} |- |[[Template:li|<nowiki>{{li}}</nowiki>]] | {{msgnw:li}} || {{li}} |- |[[Template:lt|<nowiki>{{lt}}</nowiki>]] | {{msgnw:lt}} || {{lt}} |- |[[Template:lv|<nowiki>{{lv}}</nowiki>]] | {{msgnw:lv}} || {{lv}} |- |[[Template:ma|<nowiki>{{ma}}</nowiki>]] | {{msgnw:ma}} || {{ma}} |- |[[Template:mdf|<nowiki>{{mdf}}</nowiki>]] | {{msgnw:mdf}} || {{mdf}} |- |[[Template:mi|<nowiki>{{mi}}</nowiki>]] | {{msgnw:mi}} || {{mi}} |- |[[Template:mk|<nowiki>{{mk}}</nowiki>]] | {{msgnw:mk}} || {{mk}} |- |[[Template:ml|<nowiki>{{ml}}</nowiki>]] | {{msgnw:ml}} || {{ml}} |- |[[Template:mn|<nowiki>{{mn}}</nowiki>]] | {{msgnw:mn}} || {{mn}} |- |[[Template:mnc|<nowiki>{{mnc}}</nowiki>]] | {{msgnw:mnc}} || {{mnc}} |- |[[Template:mo|<nowiki>{{mo}}</nowiki>]] | {{msgnw:mo}} || {{mo}} |- |[[Template:mr|<nowiki>{{mr}}</nowiki>]] | {{msgnw:mr}} || {{mr}} |- |[[Template:ms|<nowiki>{{ms}}</nowiki>]] | {{msgnw:ms}} || {{ms}} |- |[[Template:mt|<nowiki>{{mt}}</nowiki>]] | {{msgnw:mt}} || {{mt}} |- |[[Template:my|<nowiki>{{my}}</nowiki>]] | {{msgnw:my}} || {{my}} |- |[[Template:myv|<nowiki>{{myv}}</nowiki>]] | {{msgnw:myv}} || {{myv}} |- |[[Template:na|<nowiki>{{na}}</nowiki>]] | {{msgnw:na}} || {{na}} |- |[[Template:nah|<nowiki>{{nah}}</nowiki>]] | {{msgnw:nah}} || {{nah}} |- |[[Template:nb|<nowiki>{{nb}}</nowiki>]] | {{msgnw:nb}} || {{nb}} |- |[[Template:ne|<nowiki>{{ne}}</nowiki>]] | {{msgnw:ne}} || {{ne}} |- |[[Template:nd|<nowiki>{{nd}}</nowiki>]] | {{msgnw:nd}} || {{nd}} |- |[[Template:ng|<nowiki>{{ng}}</nowiki>]] | {{msgnw:ng}} || {{ng}} |- |[[Template:nl|<nowiki>{{nl}}</nowiki>]] | {{msgnw:nl}} || {{nl}} |- |[[Template:nn|<nowiki>{{nn}}</nowiki>]] | {{msgnw:nn}} || {{nn}} |- |[[Template:no|<nowiki>{{no}}</nowiki>]] | {{msgnw:no}} || {{no}} |- |[[Template:nr|<nowiki>{{nr}}</nowiki>]] | {{msgnw:nr}} || {{nr}} |- |[[Template:nv|<nowiki>{{nv}}</nowiki>]] | {{msgnw:nv}} || {{nv}} |- |[[Template:ny|<nowiki>{{ny}}</nowiki>]] | {{msgnw:ny}} || {{ny}} |- |[[Template:oc|<nowiki>{{oc}}</nowiki>]] | {{msgnw:oc}} || {{oc}} |- |[[Template:oj|<nowiki>{{oj}}</nowiki>]] | {{msgnw:oj}} || {{oj}} |- |[[Template:om|<nowiki>{{om}}</nowiki>]] | {{msgnw:om}} || {{om}} |- |[[Template:or|<nowiki>{{or}}</nowiki>]] | {{msgnw:or}} || {{or}} |- |[[Template:os|<nowiki>{{os}}</nowiki>]] | {{msgnw:os}} || {{os}} |- |[[Template:pap|<nowiki>{{pap}}</nowiki>]] | {{msgnw:pap}} || {{pap}} |- |[[Template:pi|<nowiki>{{pi}}</nowiki>]] | {{msgnw:pi}} || {{pi}} |- |[[Template:pl|<nowiki>{{pl}}</nowiki>]] | {{msgnw:pl}} || {{pl}} |- |[[Template:ps|<nowiki>{{ps}}</nowiki>]] | {{msgnw:ps}} || {{ps}} |- |[[Template:pt|<nowiki>{{pt}}</nowiki>]] | {{msgnw:pt}} || {{pt}} |- |[[Template:qu|<nowiki>{{qu}}</nowiki>]] | {{msgnw:qu}} || {{qu}} |- |[[Template:ra|<nowiki>{{ra}}</nowiki>]] | {{msgnw:ra}} || {{ra}} |- |[[Template:rn|<nowiki>{{rn}}</nowiki>]] | {{msgnw:rn}} || {{rn}} |- |[[Template:ro|<nowiki>{{ro}}</nowiki>]] | {{msgnw:ro}} || {{ro}} |- |[[Template:ru|<nowiki>{{ru}}</nowiki>]] | {{msgnw:ru}} || {{ru}} |- |[[Template:rw|<nowiki>{{rw}}</nowiki>]] | {{msgnw:rw}} || {{rw}} |- |[[Template:sa|<nowiki>{{sa}}</nowiki>]] | {{msgnw:sa}} || {{sa}} |- |[[Template:sc|<nowiki>{{sc}}</nowiki>]] | {{msgnw:sc}} || {{sc}} |- |[[Template:sco|<nowiki>{{sco}}</nowiki>]] | {{msgnw:sco}} || {{sco}} |- |[[Template:sd|<nowiki>{{sd}}</nowiki>]] | {{msgnw:sd}} || {{sd}} |- |[[Template:si|<nowiki>{{si}}</nowiki>]] | {{msgnw:si}} || {{si}} |- |[[Template:se|<nowiki>{{se}}</nowiki>]] | {{msgnw:se}} || {{se}} |- |[[Template:sk|<nowiki>{{sk}}</nowiki>]] | {{msgnw:sk}} || {{sk}} |- |[[Template:sl|<nowiki>{{sl}}</nowiki>]] | {{msgnw:sl}} || {{sl}} |- |[[Template:sm|<nowiki>{{sm}}</nowiki>]] | {{msgnw:sm}} || {{sm}} |- |[[Template:smi|<nowiki>{{smi}}</nowiki>]] | {{msgnw:smi}} || {{smi}} |- |[[Template:smn|<nowiki>{{smn}}</nowiki>]] | {{msgnw:smn}} || {{smn}} |- |[[Template:sn|<nowiki>{{sn}}</nowiki>]] | {{msgnw:sn}} || {{sn}} |- |[[Template:so|<nowiki>{{so}}</nowiki>]] | {{msgnw:so}} || {{so}} |- |[[Template:sq|<nowiki>{{sq}}</nowiki>]] | {{msgnw:sq}} || {{sq}} |- |[[Template:sr|<nowiki>{{sr}}</nowiki>]] | {{msgnw:sr}} || {{sr}} |- |[[Template:su|<nowiki>{{su}}</nowiki>]] | {{msgnw:su}} || {{su}} |- |[[Template:sv|<nowiki>{{sv}}</nowiki>]] | {{msgnw:sv}} || {{sv}} |- |[[Template:sw|<nowiki>{{sw}}</nowiki>]] | {{msgnw:sw}} || {{sw}} |- |[[Template:sq|<nowiki>{{sq}}</nowiki>]] | {{msgnw:sq}} || {{sq}} |- |[[Template:ss|<nowiki>{{ss}}</nowiki>]] | {{msgnw:ss}} || {{ss}} |- |[[Template:ta|<nowiki>{{ta}}</nowiki>]] | {{msgnw:ta}} || {{ta}} |- |[[Template:te|<nowiki>{{te}}</nowiki>]] | {{msgnw:te}} || {{te}} |- |[[Template:tg|<nowiki>{{tg}}</nowiki>]] | {{msgnw:tg}} || {{tg}} |- |[[Template:th|<nowiki>{{th}}</nowiki>]] | {{msgnw:th}} || {{th}} |- |[[Template:ti|<nowiki>{{ti}}</nowiki>]] | {{msgnw:ti}} || {{ti}} |- |[[Template:tk|<nowiki>{{tk}}</nowiki>]] | {{msgnw:tk}} || {{tk}} |- |[[Template:tl|<nowiki>{{tl}}</nowiki>]] | {{msgnw:tl}} || {{tl}} |- |[[Template:tlh|<nowiki>{{tlh}}</nowiki>]] | {{msgnw:tlh}} || {{tlh}} |- |[[Template:tn|<nowiki>{{tn}}</nowiki>]] | {{msgnw:tn}} || {{tn}} |- |[[Template:to|<nowiki>{{to}}</nowiki>]] | {{msgnw:to}} || {{to}} |- |[[Template:tpi|<nowiki>{{tpi}}</nowiki>]] | {{msgnw:tpi}} || {{tpi}} |- |[[Template:tr|<nowiki>{{tr}}</nowiki>]] | {{msgnw:tr}} || {{tr}} |- |[[Template:ts|<nowiki>{{ts}}</nowiki>]] | {{msgnw:ts}} || {{ts}} |- |[[Template:tt|<nowiki>{{tt}}</nowiki>]] | {{msgnw:tt}} || {{tt}} |- |[[Template:tw|<nowiki>{{tw}}</nowiki>]] | {{msgnw:tw}} || {{tw}} |- |[[Template:udm|<nowiki>{{udm}}</nowiki>]] | {{msgnw:udm}} || {{udm}} |- |[[Template:ug|<nowiki>{{ug}}</nowiki>]] | {{msgnw:ug}} || {{ug}} |- |[[Template:uk|<nowiki>{{uk}}</nowiki>]] | {{msgnw:uk}} || {{uk}} |- |[[Template:ur|<nowiki>{{ur}}</nowiki>]] | {{msgnw:ur}} || {{ur}} |- |[[Template:uz|<nowiki>{{uz}}</nowiki>]] | {{msgnw:uz}} || {{uz}} |- |[[Template:vi|<nowiki>{{vi}}</nowiki>]] | {{msgnw:vi}} || {{vi}} |- |[[Template:vo|<nowiki>{{vo}}</nowiki>]] | {{msgnw:vo}} || {{vo}} |- |[[Template:vot|<nowiki>{{vot}}</nowiki>]] | {{msgnw:vot}} || {{vot}} |- |[[Template:wa|<nowiki>{{wa}}</nowiki>]] | {{msgnw:wa}} || {{wa}} |- |[[Template:wen|<nowiki>{{wen}}</nowiki>]] | {{msgnw:wen}} || {{wen}} |- |[[Template:wo|<nowiki>{{wo}}</nowiki>]] | {{msgnw:wo}} || {{wo}} |- |[[Template:xh|<nowiki>{{xh}}</nowiki>]] | {{msgnw:xh}} || {{xh}} |- |[[Template:yi|<nowiki>{{yi}}</nowiki>]] | {{msgnw:yi}} || {{yi}} |- |[[Template:yo|<nowiki>{{yo}}</nowiki>]] | {{msgnw:yo}} || {{yo}} |- |[[Template:za|<nowiki>{{za}}</nowiki>]] | {{msgnw:za}} || {{za}} |- |[[Template:zh|<nowiki>{{zh}}</nowiki>]] | {{msgnw:zh}} || {{zh}} |- |[[Template:zu|<nowiki>{{zu}}</nowiki>]] | {{msgnw:zu}} || {{zu}} |- |} ti0829rrjet1i6zges6vp6f19xdcj6y Thành viên:GerardM/kladblok1 2 958 2350829 2267032 2026-05-07T08:11:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350829 wikitext text/x-wiki {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| #:*{{af}}: [[Vietnamees]] #:*{{sq}}: [[Vietnamisht]] #:*{{am}}: [[ቪትናምኛ]] #:*{{ar}}: [[فيتنامية]] #:*{{hy}}: [[Վիետնամերեն]] #:*{{az}}: [[Вјетнам]] #:*{{eu}}: [[Vietnamera]] #:*{{be}}: [[Віетнамскай]], [[Віетнамская]] #:*{{bg}}: [[Виетнамски]] #:*{{cat-2}}: [[Vietnamita]] #:*{{zh}}: [[越南语]] #:*{{hr}}: [[Vijetnamski]] #:*{{cs}}: [[Vietnamský]] #:*{{da}}: [[Vietnamesisk]] #:*{{nl}}: [[Vietnamees]] #:*{{en}}: [[Vietnamese]] #:*{{et}}: [[Vietnami]] #:*{{fo}}: [[Vietnamesiskt]] #:*{{fa}}: [[ويتنامى]] #:*{{fi}}: [[vietnamin]], [[vietnam]] #:*{{fr}}: [[vietnamien]] {{f}} #:*{{fy}}: [[Fiëtnameesk]] #:*{{ka}}: [[ვიეტნამური]] #:*{{de}}: [[Vietnamesisch]] #:*{{el}}: [[Βιετναμέζικα]] #:*{{he}}: [[וויאטנמית]] #:*{{hi}}: [[वियेतनामी]] #:*{{hu}}: [[Vietnami]] #:*{{is}}: [[Víetnamska]] #:*{{id}}: [[Vietnam]] #:*{{ga}}: [[Vítneamais]] #:*{{it}}: [[Vietnamese]] #:*{{ja}}: [[ベトナム語]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| #:*{{ko}}: [[베트남어]] #:*{{lv}}: [[Vjetnamiešu]] #:*{{lt}}: [[Vietnamiečių]], [[Vietnamietiškai]] #:*{{mk}}: [[Виетнамски]] #:*{{ms}}: [[Vietnam]] #:*{{mt}}: [[Vjetnamiż]] #:*{{mdf}}: [[Вьетнамонь]] #:*{{mn}}: [[Вьетнам]], [[Ветнам]] #:*{{ne}}: [[भियतनामी]] #:*{{no}}: [[Vietnamesisk]] #:*{{oc}}: [[Vietnamin]] #:*{{pl}}: [[Wietnamski]] #:*{{pt}}: [[Vietnamita]] #:*{{ru}}: [[Вьетнамский]] #:*{{sr}}: [[Вијетнамски]] #:*{{sk}}: [[Vietnamský]] #:*{{sl}}: [[Vietnamščina]] #:*{{es}}: [[vietnamita]] {{m}} #:*{{sw}}: [[Kivietnam]], [[Kivietinamu ]] #:*{{sv}}: [[Vietnamesiska]] #:*{{tl}}: [[Vietnamis]], [[Biyetnam]] #:*{{ta}}: [[வியட்னாமீஸ்]] #:*{{tt}}: [[Вьетнам]] #:*{{th}}: [[ภาษาเวียดนาม]] #:*{{tr}}: [[Vietnamca]] #:*{{uk}}: [[В'єтнамський]] #:*{{ur}}: [[ويتنامي]] #:*{{vi}}: [[Tiếng Việt]] #:*{{wa}}: [[Vietnamyin]] #:*{{cy}}: [[Fietnameg]], [[Fietmin]] |} |} nysgnl2epmf6y85xxnlk5a5xgxfki19 2351073 2350829 2026-05-07T10:48:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351073 wikitext text/x-wiki {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| #:*{{af}}: [[Vietnamees]] #:*{{sq}}: [[Vietnamisht]] #:*{{am}}: [[ቪትናምኛ]] #:*{{ar}}: [[فيتنامية]] #:*{{hy}}: [[Վիետնամերեն]] #:*{{az}}: [[Вјетнам]] #:*{{eu}}: [[Vietnamera]] #:*{{be}}: [[Віетнамскай]], [[Віетнамская]] #:*{{bg}}: [[Виетнамски]] #:*{{cat-old}}: [[Vietnamita]] #:*{{zh}}: [[越南语]] #:*{{hr}}: [[Vijetnamski]] #:*{{cs}}: [[Vietnamský]] #:*{{da}}: [[Vietnamesisk]] #:*{{nl}}: [[Vietnamees]] #:*{{en}}: [[Vietnamese]] #:*{{et}}: [[Vietnami]] #:*{{fo}}: [[Vietnamesiskt]] #:*{{fa}}: [[ويتنامى]] #:*{{fi}}: [[vietnamin]], [[vietnam]] #:*{{fr}}: [[vietnamien]] {{f}} #:*{{fy}}: [[Fiëtnameesk]] #:*{{ka}}: [[ვიეტნამური]] #:*{{de}}: [[Vietnamesisch]] #:*{{el}}: [[Βιετναμέζικα]] #:*{{he}}: [[וויאטנמית]] #:*{{hi}}: [[वियेतनामी]] #:*{{hu}}: [[Vietnami]] #:*{{is}}: [[Víetnamska]] #:*{{id}}: [[Vietnam]] #:*{{ga}}: [[Vítneamais]] #:*{{it}}: [[Vietnamese]] #:*{{ja}}: [[ベトナム語]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| #:*{{ko}}: [[베트남어]] #:*{{lv}}: [[Vjetnamiešu]] #:*{{lt}}: [[Vietnamiečių]], [[Vietnamietiškai]] #:*{{mk}}: [[Виетнамски]] #:*{{ms}}: [[Vietnam]] #:*{{mt}}: [[Vjetnamiż]] #:*{{mdf}}: [[Вьетнамонь]] #:*{{mn}}: [[Вьетнам]], [[Ветнам]] #:*{{ne}}: [[भियतनामी]] #:*{{no}}: [[Vietnamesisk]] #:*{{oc}}: [[Vietnamin]] #:*{{pl}}: [[Wietnamski]] #:*{{pt}}: [[Vietnamita]] #:*{{ru}}: [[Вьетнамский]] #:*{{sr}}: [[Вијетнамски]] #:*{{sk}}: [[Vietnamský]] #:*{{sl}}: [[Vietnamščina]] #:*{{es}}: [[vietnamita]] {{m}} #:*{{sw}}: [[Kivietnam]], [[Kivietinamu ]] #:*{{sv}}: [[Vietnamesiska]] #:*{{tl}}: [[Vietnamis]], [[Biyetnam]] #:*{{ta}}: [[வியட்னாமீஸ்]] #:*{{tt}}: [[Вьетнам]] #:*{{th}}: [[ภาษาเวียดนาม]] #:*{{tr}}: [[Vietnamca]] #:*{{uk}}: [[В'єтнамський]] #:*{{ur}}: [[ويتنامي]] #:*{{vi}}: [[Tiếng Việt]] #:*{{wa}}: [[Vietnamyin]] #:*{{cy}}: [[Fietnameg]], [[Fietmin]] |} |} qjoawwfyt2uv0q0kv3aipxge8r748w9 Thảo luận:tiếng Việt 1 959 2350827 2267035 2026-05-07T08:11:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350827 wikitext text/x-wiki In [[User:GerardM/kladblok]] I have a list of messages that are ISO 639 codes for languages. When they have their proper value, the [[User:GerardM/kladblok1]] will have many more translations for Tiếng Việt. When the templates have their value, the translation for many languages can be found on the nl:wiktionary. Thanks, <br> PS I do not speak Vietamese .. Nederlands is my mother tongue. [[User:GerardM|GerardM]] 14:12, 12 Aug 2004 (UTC) == Vietnamese words on nl:wiktionary == Because of the use of messages indicating that a word is in a certain language, you can check the [http://nl.wiktionary.org/w/wiki.phtml?title=Speciaal:Whatlinkshere&target=Sjabloon%3A-vi- Vietnamese words] on nl:wiktionary. As I do not have a clue if they are all correct, you may want to have a look. [[User:GerardM|GerardM]] 14:22, 12 Aug 2004 (UTC) == Translations == {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| :*{{af}}: '''Vietnamees''' :*{{sq}}: [[Vietnamisht]] :*{{am}}: [[ቪትናምኛ]] :*{{ar}}: [[فيتنامية]] :*{{hy}}: [[Վիետնամերեն]] :*{{az}}: [[Вјетнам]] :*{{eu}}: [[Vietnamera]] :*{{be}}: [[Віетнамскай]], [[Віетнамская]] :*{{bg}}: [[Виетнамски]] :*{{cat-2}}: [[Vietnamita]] :*{{zh}}: [[越南语]] :*{{hr}}: [[Vijetnamski]] :*{{cs}}: [[Vietnamský]] :*{{da}}: [[Vietnamesisk]] :*{{en}}: [[Vietnamese]] :*{{et}}: [[Vietnami]] :*{{fo}}: [[Vietnamesiskt]] :*{{fa}}: [[ويتنامى]] :*{{fi}}: [[vietnamin]], [[vietnam]] :*{{fr}}: [[vietnamien]] {{f}} :*{{fy}}: [[Fiëtnameesk]] :*{{ka}}: [[ვიეტნამური]] :*{{de}}: [[Vietnamesisch]] :*{{el}}: [[Βιετναμέζικα]] :*{{he}}: [[וויאטנמית]] :*{{hi}}: [[वियेतनामी]] :*{{hu}}: [[Vietnami]] :*{{is}}: [[Víetnamska]] :*{{id}}: [[Vietnam]] :*{{ga}}: [[Vítneamais]] :*{{it}}: [[Vietnamese]] :*{{ja}}: [[ベトナム語]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| :*{{ko}}: [[베트남어]] :*{{lv}}: [[Vjetnamiešu]] :*{{lt}}: [[Vietnamiečių]], [[Vietnamietiškai]] :*{{mk}}: [[Виетнамски]] :*{{ms}}: [[Vietnam]] :*{{mt}}: [[Vjetnamiż]] :*{{mdf}}: [[Вьетнамонь]] :*{{mn}}: [[Вьетнам]], [[Ветнам]] :*{{ne}}: [[भियतनामी]] :*{{no}}: [[Vietnamesisk]] :*{{oc}}: [[Vietnamin]] :*{{pl}}: [[Wietnamski]] :*{{pt}}: [[Vietnamita]] :*{{ru}}: [[Вьетнамский]] :*{{sr}}: [[Вијетнамски]] :*{{sk}}: [[Vietnamský]] :*{{sl}}: [[Vietnamščina]] :*{{es}}: [[vietnamita]] {{m}} :*{{sw}}: [[Kivietnam]], [[Kivietinamu ]] :*{{sv}}: [[Vietnamesiska]] :*{{tl}}: [[Vietnamis]], [[Biyetnam]] :*{{ta}}: [[வியட்னாமீஸ்]] :*{{tt}}: [[Вьетнам]] :*{{th}}: [[ภาษาเวียดนาม]] :*{{tr}}: [[Vietnamca]] :*{{uk}}: [[В'єтнамський]] :*{{ur}}: [[ويتنامي]] :*{{vi}}: [[Tiếng Việt]] :*{{wa}}: [[Vietnamyin]] :*{{cy}}: [[Fietnameg]], [[Fietmin]] |} |} ldukntv3my9pn4ssrlcr1k9dmdpfoc8 2351071 2350827 2026-05-07T10:48:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351071 wikitext text/x-wiki In [[User:GerardM/kladblok]] I have a list of messages that are ISO 639 codes for languages. When they have their proper value, the [[User:GerardM/kladblok1]] will have many more translations for Tiếng Việt. When the templates have their value, the translation for many languages can be found on the nl:wiktionary. Thanks, <br> PS I do not speak Vietamese .. Nederlands is my mother tongue. [[User:GerardM|GerardM]] 14:12, 12 Aug 2004 (UTC) == Vietnamese words on nl:wiktionary == Because of the use of messages indicating that a word is in a certain language, you can check the [http://nl.wiktionary.org/w/wiki.phtml?title=Speciaal:Whatlinkshere&target=Sjabloon%3A-vi- Vietnamese words] on nl:wiktionary. As I do not have a clue if they are all correct, you may want to have a look. [[User:GerardM|GerardM]] 14:22, 12 Aug 2004 (UTC) == Translations == {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| :*{{af}}: '''Vietnamees''' :*{{sq}}: [[Vietnamisht]] :*{{am}}: [[ቪትናምኛ]] :*{{ar}}: [[فيتنامية]] :*{{hy}}: [[Վիետնամերեն]] :*{{az}}: [[Вјетнам]] :*{{eu}}: [[Vietnamera]] :*{{be}}: [[Віетнамскай]], [[Віетнамская]] :*{{bg}}: [[Виетнамски]] :*{{cat-old}}: [[Vietnamita]] :*{{zh}}: [[越南语]] :*{{hr}}: [[Vijetnamski]] :*{{cs}}: [[Vietnamský]] :*{{da}}: [[Vietnamesisk]] :*{{en}}: [[Vietnamese]] :*{{et}}: [[Vietnami]] :*{{fo}}: [[Vietnamesiskt]] :*{{fa}}: [[ويتنامى]] :*{{fi}}: [[vietnamin]], [[vietnam]] :*{{fr}}: [[vietnamien]] {{f}} :*{{fy}}: [[Fiëtnameesk]] :*{{ka}}: [[ვიეტნამური]] :*{{de}}: [[Vietnamesisch]] :*{{el}}: [[Βιετναμέζικα]] :*{{he}}: [[וויאטנמית]] :*{{hi}}: [[वियेतनामी]] :*{{hu}}: [[Vietnami]] :*{{is}}: [[Víetnamska]] :*{{id}}: [[Vietnam]] :*{{ga}}: [[Vítneamais]] :*{{it}}: [[Vietnamese]] :*{{ja}}: [[ベトナム語]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| :*{{ko}}: [[베트남어]] :*{{lv}}: [[Vjetnamiešu]] :*{{lt}}: [[Vietnamiečių]], [[Vietnamietiškai]] :*{{mk}}: [[Виетнамски]] :*{{ms}}: [[Vietnam]] :*{{mt}}: [[Vjetnamiż]] :*{{mdf}}: [[Вьетнамонь]] :*{{mn}}: [[Вьетнам]], [[Ветнам]] :*{{ne}}: [[भियतनामी]] :*{{no}}: [[Vietnamesisk]] :*{{oc}}: [[Vietnamin]] :*{{pl}}: [[Wietnamski]] :*{{pt}}: [[Vietnamita]] :*{{ru}}: [[Вьетнамский]] :*{{sr}}: [[Вијетнамски]] :*{{sk}}: [[Vietnamský]] :*{{sl}}: [[Vietnamščina]] :*{{es}}: [[vietnamita]] {{m}} :*{{sw}}: [[Kivietnam]], [[Kivietinamu ]] :*{{sv}}: [[Vietnamesiska]] :*{{tl}}: [[Vietnamis]], [[Biyetnam]] :*{{ta}}: [[வியட்னாமீஸ்]] :*{{tt}}: [[Вьетнам]] :*{{th}}: [[ภาษาเวียดนาม]] :*{{tr}}: [[Vietnamca]] :*{{uk}}: [[В'єтнамський]] :*{{ur}}: [[ويتنامي]] :*{{vi}}: [[Tiếng Việt]] :*{{wa}}: [[Vietnamyin]] :*{{cy}}: [[Fietnameg]], [[Fietmin]] |} |} d978wvwl410skksrnuoajjv5i2p55zw tiếng Anh 0 984 2350624 2280668 2026-05-07T07:51:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350624 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Anh}} {{-pr-noun-}} '''tiếng Anh''' # [[ngôn ngữ|Ngôn ngữ]] [[bắt đầu]] ở [[nước]] [[Anh]] mà [[hiện nay]] được [[nói]] như [[tiếng mẹ đẻ]] ở [[khắp nơi]]: Anh, [[Hoa Kỳ]], [[Úc]] ([[Australia]]), [[New Zealand]] ([[Tân Tây Lan]]), [[Canada]] ([[Gia Nã Đại]]), [[Ireland]] ([[Ái Nhĩ Lan]]), [[Jamaica]], và [[Bermuda]], và dùng như [[tiếng thứ hai]] trong nhiều nước khác. {{-syn-}} * [[tiếng Mỹ]] * [[Anh ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[انجليزي]] {{g|m}}, [[انجليزية]] {{f}} * {{afr}}: [[Engels]] * {{sqi}}: [[Anglisht]], [[Anglishte]] * {{ang}}: [[Englisc]] * {{eng}}: [[English]] * {{hye}}: [[Անքլիական]], [[Անգլերեն]] * {{aze}}: [[Инҝилис]] * {{pol}}: [[język angielski]] {{g|m}} * {{fas}}: [[انگليسى]] * {{isl}}: [[Enska]] * {{eus}}: [[Ingelesa]] * {{bel}}: [[Ангельскай]], [[Англiйская]] * {{por}}: [[inglês]] * {{ina}}: [[anglese]] * {{bre}}: [[saozneg]] {{g|m}} * {{bul}}: [[английски]] {{g|m}} (angliîski) * {{cat-2}}: [[anglès]] {{g|m}}, [[anglesa]] {{f}} * {{chr}}: [[ᏲᏁᎦ/ᎩᎢᏏ]] * {{hrv}}: [[Engleski]] * {{dan}}: [[engelsk]] * {{heb}}: [[אנגלית]] * {{deu}}: [[Englisch]] {{n}} * {{est}}: [[Inglise]] * {{fao}}: [[Enskt]] * {{fry}}: [[Ingelsk]] * {{glg}}: [[Inglés]] * {{kat}}: [[ინგლისური]] * {{guj}}: [[અઁગ્રેજ઼ી]] * {{nds}}: [[Engelsch]] {{n}} * {{nld}}: [[Engels]] {{n}} * {{kor}}: [[영어]] ([[英語]], [[Anh ngữ]], ''yeong-eo'') * {{hin}}: [[अंग्रेज़ी]] (''angreji'') * {{hun}}: [[angol]] * {{ell}}: [[Αγγλικά]] {{n}} {{plur}} (''Angliká'') * {{ind}}: [[bahasa]] [[Inggris]] * {{gle}}: [[Béarla]] * {{kur}}: [[inglîzî]] * {{lat}}: [[Anglus]] {{g|m}} * {{lav}}: [[Angļu]] * {{lit}}: [[Angliškai]] * {{msa}}: [[bahasa]] [[Inggeris]] {{giữa}} * {{mkd}}: [[Англиски]] * {{mlt}}: [[Ingliż]] * {{mar}}: [[Ingraji]] * {{mar}}: [[ईंग्रजी]] * {{mdf}}: [[Англань]] * {{mon}}: [[Англи]] * {{nor}}: [[Engelsk]] * {{nau}}: [[Anglise]] * {{nep}}: [[अँग्रेजी]] * {{crh}}: [[İngiliz tili]] * {{rus}}: [[английский язык]] {{g|m}} (''angliîskiî iadic'') * {{jpn}}: [[英語]] (えいご, [[Anh ngữ]], ''eigo'') * {{oci}}: [[Anglès]] * {{fin}}: [[englanti]] * {{fra}}: [[anglais]] {{g|m}} * {{epo}}: [[angla]] * {{ron}}: [[englezã]] {{f}}, [[limba englezã]] * {{smn}}: [[engalaskiela]] * {{ces}}: [[angličtina]] {{f}}, [[anglický jazyk]] {{g|m}} * {{srp}}: [[Енглески]] * {{slk}}: [[angličtina]] {{f}}, [[anglický jazyk]] {{g|m}} * {{slv}}: [[Angleščina]] * {{som}}: [[Ingriisi]] * {{wen}}: [[Jendźelšćina]] * {{swa}}: [[Kiingereza]] * {{tgl}}: [[Ingles]] * {{tam}}: [[ஆங்கிலம்]] (''Angilam''), [[ஆங்கிலம]] * {{tat}}: [[Англия]] * {{spa}}: [[inglés]] * {{tha}}: [[ภาษาอังกฤษ]] * {{tur}}: [[İngilizce]] * {{swe}}: [[engelska]] * {{zho}}: [[英语]] ([[Anh ngữ]], ''ying yŭ''), [[英文]] ([[Anh]] [[văn]], ''ying wén'') * {{ukr}}: [[Англійський]] * {{urd}}: [[انگريزي]] * {{vot}}: [[Agljitšina]] * {{cym}}: [[saesneg]] * {{ita}}: [[inglese]] * {{yid}}: [[ענגליש]] * {{zul}}: [[Ngisi]] [[Isingisi]] {{cuối}} {{-related-}} * [[Anh]] [[Thể loại:Tiếng Anh| ]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Anh]] [[Thể loại:Danh từ riêng tiếng Việt]] 0oziwgq9aao1fmkercm7mighzt8l8ug 2350872 2350624 2026-05-07T10:37:39Z BlueShurikenNinjaBot 50371 (via JWB) 2350872 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Anh}} {{-pr-noun-}} '''tiếng Anh''' # [[ngôn ngữ|Ngôn ngữ]] [[bắt đầu]] ở [[nước]] [[Anh]] mà [[hiện nay]] được [[nói]] như [[tiếng mẹ đẻ]] ở [[khắp nơi]]: Anh, [[Hoa Kỳ]], [[Úc]] ([[Australia]]), [[New Zealand]] ([[Tân Tây Lan]]), [[Canada]] ([[Gia Nã Đại]]), [[Ireland]] ([[Ái Nhĩ Lan]]), [[Jamaica]], và [[Bermuda]], và dùng như [[tiếng thứ hai]] trong nhiều nước khác. {{-syn-}} * [[tiếng Mỹ]] * [[Anh ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[انجليزي]] {{g|m}}, [[انجليزية]] {{f}} * {{afr}}: [[Engels]] * {{sqi}}: [[Anglisht]], [[Anglishte]] * {{ang}}: [[Englisc]] * {{eng}}: [[English]] * {{hye}}: [[Անքլիական]], [[Անգլերեն]] * {{aze}}: [[Инҝилис]] * {{pol}}: [[język angielski]] {{g|m}} * {{fas}}: [[انگليسى]] * {{isl}}: [[Enska]] * {{eus}}: [[Ingelesa]] * {{bel}}: [[Ангельскай]], [[Англiйская]] * {{por}}: [[inglês]] * {{ina}}: [[anglese]] * {{bre}}: [[saozneg]] {{g|m}} * {{bul}}: [[английски]] {{g|m}} (angliîski) * {{cat-old}}: [[anglès]] {{g|m}}, [[anglesa]] {{f}} * {{chr}}: [[ᏲᏁᎦ/ᎩᎢᏏ]] * {{hrv}}: [[Engleski]] * {{dan}}: [[engelsk]] * {{heb}}: [[אנגלית]] * {{deu}}: [[Englisch]] {{n}} * {{est}}: [[Inglise]] * {{fao}}: [[Enskt]] * {{fry}}: [[Ingelsk]] * {{glg}}: [[Inglés]] * {{kat}}: [[ინგლისური]] * {{guj}}: [[અઁગ્રેજ઼ી]] * {{nds}}: [[Engelsch]] {{n}} * {{nld}}: [[Engels]] {{n}} * {{kor}}: [[영어]] ([[英語]], [[Anh ngữ]], ''yeong-eo'') * {{hin}}: [[अंग्रेज़ी]] (''angreji'') * {{hun}}: [[angol]] * {{ell}}: [[Αγγλικά]] {{n}} {{plur}} (''Angliká'') * {{ind}}: [[bahasa]] [[Inggris]] * {{gle}}: [[Béarla]] * {{kur}}: [[inglîzî]] * {{lat}}: [[Anglus]] {{g|m}} * {{lav}}: [[Angļu]] * {{lit}}: [[Angliškai]] * {{msa}}: [[bahasa]] [[Inggeris]] {{giữa}} * {{mkd}}: [[Англиски]] * {{mlt}}: [[Ingliż]] * {{mar}}: [[Ingraji]] * {{mar}}: [[ईंग्रजी]] * {{mdf}}: [[Англань]] * {{mon}}: [[Англи]] * {{nor}}: [[Engelsk]] * {{nau}}: [[Anglise]] * {{nep}}: [[अँग्रेजी]] * {{crh}}: [[İngiliz tili]] * {{rus}}: [[английский язык]] {{g|m}} (''angliîskiî iadic'') * {{jpn}}: [[英語]] (えいご, [[Anh ngữ]], ''eigo'') * {{oci}}: [[Anglès]] * {{fin}}: [[englanti]] * {{fra}}: [[anglais]] {{g|m}} * {{epo}}: [[angla]] * {{ron}}: [[englezã]] {{f}}, [[limba englezã]] * {{smn}}: [[engalaskiela]] * {{ces}}: [[angličtina]] {{f}}, [[anglický jazyk]] {{g|m}} * {{srp}}: [[Енглески]] * {{slk}}: [[angličtina]] {{f}}, [[anglický jazyk]] {{g|m}} * {{slv}}: [[Angleščina]] * {{som}}: [[Ingriisi]] * {{wen}}: [[Jendźelšćina]] * {{swa}}: [[Kiingereza]] * {{tgl}}: [[Ingles]] * {{tam}}: [[ஆங்கிலம்]] (''Angilam''), [[ஆங்கிலம]] * {{tat}}: [[Англия]] * {{spa}}: [[inglés]] * {{tha}}: [[ภาษาอังกฤษ]] * {{tur}}: [[İngilizce]] * {{swe}}: [[engelska]] * {{zho}}: [[英语]] ([[Anh ngữ]], ''ying yŭ''), [[英文]] ([[Anh]] [[văn]], ''ying wén'') * {{ukr}}: [[Англійський]] * {{urd}}: [[انگريزي]] * {{vot}}: [[Agljitšina]] * {{cym}}: [[saesneg]] * {{ita}}: [[inglese]] * {{yid}}: [[ענגליש]] * {{zul}}: [[Ngisi]] [[Isingisi]] {{cuối}} {{-related-}} * [[Anh]] [[Thể loại:Tiếng Anh| ]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Anh]] [[Thể loại:Danh từ riêng tiếng Việt]] 6iwm397qv5t0eufew197phwmwzx2iq6 tiếng Băng Đảo 0 997 2350625 2083635 2026-05-07T07:52:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350625 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Băng|Đảo}} {{-etym-}} "[[tiếng|Tiếng]]" + "[[Băng Đảo]]" ([[氷島]]) {{-noun-}} '''tiếng Băng đảo''' #[[Ngôn ngữ]] [[Xcăng-đi-na-vi]], ngôn ngữ quốc gia của [[Băng Đảo]]. {{-trans-}} {{đầu}} * {{ara}}: [[إسلندية]] * {{afr}}: [[Yslands]] * {{sqi}}: [[Islandisht]] * {{amh}}: [[አይስላንድኛ]] * {{eng}}: [[Icelandic]] * {{aze}}: [[Нсланд]] * {{pol}}: [[Islandzki]] * {{fas}}: [[ايسلندى]] * {{isl}}: [[Íslenska]] * {{eus}}: [[Islandiera]] * {{bel}}: [[Ісьляндзкай]], [[Ісьляндзкая]] * {{por}}: [[Islandês]] * {{bre}}: [[Islandeg]] * {{bul}}: [[Исландски]] * {{cat-2}}: [[Islandès]] * {{chr}}: [[ᎢᏍᎳᏅᏗ]] * {{hrv}}: [[Islandski]] * {{dan}}: [[Islandsk]] * {{heb}}: [[איסלנדית]] * {{deu}}: [[Isländisch]] {{n}} * {{fao}}: [[Íslendskt]] * {{fry}}: [[Iislânsk]] * {{glg}}: [[Islandés]] * {{nld}}: [[Ijslands]] * {{kor}}: [[아이슬란드어]] * {{hun}}: [[Izlandi]] * {{ell}}: [[Ισλανδικά]] * {{ind}}: [[Islandia]] * {{gle}}: [[Íoslainnis]] {{giữa}} * {{lav}}: [[Islandiešu]] * {{lit}}: [[Islandų]], [[Islandiškai]] * {{msa}}: [[Bahasa Iceland]] * {{mlt}}: [[Iżlandiż]] * {{mdf}}: [[Исландонь]] * {{mon}}: [[Исланд]] * {{nor}}: [[Islandsk]] * {{nep}}: [[आइसल्यान्डिक]] * {{rus}}: [[Исландский]] * {{jpn}}: [[アイスランド語]] * {{oci}}: [[Islandès]] * {{fin}}: [[islanti]] * {{fra}}: [[Islandais]] * {{ron}}: [[Islandeză]] * {{ces}}: [[Islandský]] * {{srp}}: [[Исландски]] * {{slk}}: [[Islandský]] * {{slv}}: [[Islandščina]] * {{wen}}: [[Islandšćina]] * {{swa}}: [[Kiaislandi]] * {{spa}}: [[islandés]] * {{tha}}: [[ภาษาไอ๊ซ์แลนด์]], [[ภาษาไอซ์แลนด์]] * {{tur}}: [[İzlandaca]] * {{swe}}: [[Isländska]] * {{zho}}: [[冰岛语]] ([[Băng Đảo]] [[ngữ]], ''bingdăo yŭ'') * {{ukr}}: [[Ісландський]] * {{urd}}: [[برفستاني]] * {{cym}}: [[Islandeg]] * {{ita}}: [[Islandese]] {{cuối}} [[Thể loại:Danh từ]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Băng đảo]] tdjeuht2wob8sk7f4ogyf7unnrh8eti 2350873 2350625 2026-05-07T10:37:42Z BlueShurikenNinjaBot 50371 (via JWB) 2350873 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Băng|Đảo}} {{-etym-}} "[[tiếng|Tiếng]]" + "[[Băng Đảo]]" ([[氷島]]) {{-noun-}} '''tiếng Băng đảo''' #[[Ngôn ngữ]] [[Xcăng-đi-na-vi]], ngôn ngữ quốc gia của [[Băng Đảo]]. {{-trans-}} {{đầu}} * {{ara}}: [[إسلندية]] * {{afr}}: [[Yslands]] * {{sqi}}: [[Islandisht]] * {{amh}}: [[አይስላንድኛ]] * {{eng}}: [[Icelandic]] * {{aze}}: [[Нсланд]] * {{pol}}: [[Islandzki]] * {{fas}}: [[ايسلندى]] * {{isl}}: [[Íslenska]] * {{eus}}: [[Islandiera]] * {{bel}}: [[Ісьляндзкай]], [[Ісьляндзкая]] * {{por}}: [[Islandês]] * {{bre}}: [[Islandeg]] * {{bul}}: [[Исландски]] * {{cat-old}}: [[Islandès]] * {{chr}}: [[ᎢᏍᎳᏅᏗ]] * {{hrv}}: [[Islandski]] * {{dan}}: [[Islandsk]] * {{heb}}: [[איסלנדית]] * {{deu}}: [[Isländisch]] {{n}} * {{fao}}: [[Íslendskt]] * {{fry}}: [[Iislânsk]] * {{glg}}: [[Islandés]] * {{nld}}: [[Ijslands]] * {{kor}}: [[아이슬란드어]] * {{hun}}: [[Izlandi]] * {{ell}}: [[Ισλανδικά]] * {{ind}}: [[Islandia]] * {{gle}}: [[Íoslainnis]] {{giữa}} * {{lav}}: [[Islandiešu]] * {{lit}}: [[Islandų]], [[Islandiškai]] * {{msa}}: [[Bahasa Iceland]] * {{mlt}}: [[Iżlandiż]] * {{mdf}}: [[Исландонь]] * {{mon}}: [[Исланд]] * {{nor}}: [[Islandsk]] * {{nep}}: [[आइसल्यान्डिक]] * {{rus}}: [[Исландский]] * {{jpn}}: [[アイスランド語]] * {{oci}}: [[Islandès]] * {{fin}}: [[islanti]] * {{fra}}: [[Islandais]] * {{ron}}: [[Islandeză]] * {{ces}}: [[Islandský]] * {{srp}}: [[Исландски]] * {{slk}}: [[Islandský]] * {{slv}}: [[Islandščina]] * {{wen}}: [[Islandšćina]] * {{swa}}: [[Kiaislandi]] * {{spa}}: [[islandés]] * {{tha}}: [[ภาษาไอ๊ซ์แลนด์]], [[ภาษาไอซ์แลนด์]] * {{tur}}: [[İzlandaca]] * {{swe}}: [[Isländska]] * {{zho}}: [[冰岛语]] ([[Băng Đảo]] [[ngữ]], ''bingdăo yŭ'') * {{ukr}}: [[Ісландський]] * {{urd}}: [[برفستاني]] * {{cym}}: [[Islandeg]] * {{ita}}: [[Islandese]] {{cuối}} [[Thể loại:Danh từ]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Băng đảo]] hmm7x8r0r14z168c56ilr3s66p0rivl tiếng Đan Mạch 0 1002 2350626 2280669 2026-05-07T07:52:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350626 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Đan|Mạch}} {{-etymology-}} [[tiếng]] ([[ngôn ngữ]]) + [[Đan Mạch]]) {{-pr-noun-}} '''tiếng Đan Mạch''', '''tiếng Đan-mạch''' # [[ngôn ngữ|Ngôn ngữ]] của nước [[Đan Mạch]]. {{-trans-}} {{đầu}} * {{ara}}: [[دانماركية]] * {{afr}}: [[Deens]] * {{sqi}}: [[Danisht]] * {{amh}}: [[ዴኒሽ]] * {{eng}}: [[Danish]] * {{hye}}: [[Դանիական]], [[Դանիշ]] * {{aze}}: [[Данимарка]] * {{pol}}: [[Duński]] * {{fas}}: [[دانماركى]] * {{isl}}: [[Danska]] * {{eus}}: [[Danieraz]], [[Daniera]] * {{bel}}: [[Дацкая]] * {{por}}: [[dinamarquês]] {{g|m}} * {{bre}}: [[Daneg]] * {{bul}}: [[Датски]] * {{cat-2}}: [[danès]] {{g|m}} * {{chr}}: [[ᏓᏂᏍ]] * {{hrv}}: [[Danski]] * {{dan}}: [[dansk]] * {{heb}}: [[דנית]] (''De’nit'') * {{deu}}: [[Dänisch]] {{n}} * {{est}}: [[Taani]] * {{fao}}: [[Danskt]] * {{fry}}: [[Deensk]], [[Dånsch]] * {{glg}}: [[Dinamarqués]] * {{kat}}: [[დანიური]] * {{kor}}: [[덴마크어]] * {{nds}}: [[Däänsch]] {{n}} * {{hin}}: [[डेनिश]] * {{hun}}: [[dán]] * {{ell}}: [[Δανικά]] * {{ind}}: [[Denmark]] * {{gle}}: [[Danmhairgis]] * {{kur}}: [[Danîmarkî]] * {{lav}}: [[Dāņu]] {{giữa}} * {{lit}}: [[Danų]], [[Daniškai]] * {{mkd}}: [[Дански]] * {{mal}}: [[Denmark]] * {{mlt}}: [[Daniż]] * {{mdf}}: [[Данонь]] * {{mon}}: [[Дани]] * {{nor}}: [[dansk]] * {{nep}}: [[ड्यानिश]] * {{rus}}: [[Датский]] * {{jpn}}: [[デンマーク語]] * {{oci}}: [[Danès]] * {{fin}}: [[tanska]] * {{fra}}: [[danois]] {{g|m}} * {{ron}}: [[daneză]] {{f}} * {{ces}}: [[Dánský]] * {{srp}}: [[Дански]] * {{slk}}: [[Dánsky]] * {{slv}}: [[danščina]] {{f}} * {{wen}}: [[Danšćina]], [[Dańšćina]] * {{swa}}: [[Kidenmarki]] * {{tgl}}: [[Denish]] * {{tam}}: [[டேனிஷ்]] * {{tat}}: [[Дания]] * {{spa}}: [[danés]] {{g|m}} * {{tha}}: [[ภาษาเดนมาร์ก]] * {{tur}}: [[Danca]] * {{swe}}: [[danska]] * {{zho}}: [[丹麦语]] ([[Đan Mạch]] [[ngữ]], ''dan mài yŭ'') * {{ukr}}: [[Датський]] * {{urd}}: [[ڈينش]] * {{cym}}: [[Daneg]] * {{wln}}: [[Daenwès]] * {{ita}}: [[danese]] {{g|m}} {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Đan Mạch]] g9ryq123sjwyd9uqgdceitwtvvdlpdy 2350874 2350626 2026-05-07T10:37:45Z BlueShurikenNinjaBot 50371 (via JWB) 2350874 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Đan|Mạch}} {{-etymology-}} [[tiếng]] ([[ngôn ngữ]]) + [[Đan Mạch]]) {{-pr-noun-}} '''tiếng Đan Mạch''', '''tiếng Đan-mạch''' # [[ngôn ngữ|Ngôn ngữ]] của nước [[Đan Mạch]]. {{-trans-}} {{đầu}} * {{ara}}: [[دانماركية]] * {{afr}}: [[Deens]] * {{sqi}}: [[Danisht]] * {{amh}}: [[ዴኒሽ]] * {{eng}}: [[Danish]] * {{hye}}: [[Դանիական]], [[Դանիշ]] * {{aze}}: [[Данимарка]] * {{pol}}: [[Duński]] * {{fas}}: [[دانماركى]] * {{isl}}: [[Danska]] * {{eus}}: [[Danieraz]], [[Daniera]] * {{bel}}: [[Дацкая]] * {{por}}: [[dinamarquês]] {{g|m}} * {{bre}}: [[Daneg]] * {{bul}}: [[Датски]] * {{cat-old}}: [[danès]] {{g|m}} * {{chr}}: [[ᏓᏂᏍ]] * {{hrv}}: [[Danski]] * {{dan}}: [[dansk]] * {{heb}}: [[דנית]] (''De’nit'') * {{deu}}: [[Dänisch]] {{n}} * {{est}}: [[Taani]] * {{fao}}: [[Danskt]] * {{fry}}: [[Deensk]], [[Dånsch]] * {{glg}}: [[Dinamarqués]] * {{kat}}: [[დანიური]] * {{kor}}: [[덴마크어]] * {{nds}}: [[Däänsch]] {{n}} * {{hin}}: [[डेनिश]] * {{hun}}: [[dán]] * {{ell}}: [[Δανικά]] * {{ind}}: [[Denmark]] * {{gle}}: [[Danmhairgis]] * {{kur}}: [[Danîmarkî]] * {{lav}}: [[Dāņu]] {{giữa}} * {{lit}}: [[Danų]], [[Daniškai]] * {{mkd}}: [[Дански]] * {{mal}}: [[Denmark]] * {{mlt}}: [[Daniż]] * {{mdf}}: [[Данонь]] * {{mon}}: [[Дани]] * {{nor}}: [[dansk]] * {{nep}}: [[ड्यानिश]] * {{rus}}: [[Датский]] * {{jpn}}: [[デンマーク語]] * {{oci}}: [[Danès]] * {{fin}}: [[tanska]] * {{fra}}: [[danois]] {{g|m}} * {{ron}}: [[daneză]] {{f}} * {{ces}}: [[Dánský]] * {{srp}}: [[Дански]] * {{slk}}: [[Dánsky]] * {{slv}}: [[danščina]] {{f}} * {{wen}}: [[Danšćina]], [[Dańšćina]] * {{swa}}: [[Kidenmarki]] * {{tgl}}: [[Denish]] * {{tam}}: [[டேனிஷ்]] * {{tat}}: [[Дания]] * {{spa}}: [[danés]] {{g|m}} * {{tha}}: [[ภาษาเดนมาร์ก]] * {{tur}}: [[Danca]] * {{swe}}: [[danska]] * {{zho}}: [[丹麦语]] ([[Đan Mạch]] [[ngữ]], ''dan mài yŭ'') * {{ukr}}: [[Датський]] * {{urd}}: [[ڈينش]] * {{cym}}: [[Daneg]] * {{wln}}: [[Daenwès]] * {{ita}}: [[danese]] {{g|m}} {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Đan Mạch]] lp5pqkq89hrb3223y4fpq2k7pb3hsbh tiếng Ý 0 1007 2350627 2280670 2026-05-07T07:52:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350627 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Ý}} {{-pr-noun-}} '''tiếng Ý''' ([[ISO]] 639-1: [[it]]; ISO 639-2: [[ita]]; [[SIL]]: [[ITN]]) # [[ngôn ngữ|Ngôn ngữ]] dùng ở nước [[Ý]], [[San Marino]], [[Tòa Thánh]] [[Va-ti-căng]], và vài [[vùng]] của [[Thụy Sĩ]]. {{-trans-}} {{đầu}} * {{ara}}: [[إيطالية]] * {{afr}}: [[Italiaans]] * {{sqi}}: [[Italisht]] * {{amh}}: [[ጣሊያንኛ]] * {{eng}}: [[Italian]] * {{hye}}: [[Իտալական]], [[Իտալերեն]] * {{aze}}: [[Италјан]] * {{pol}}: [[Włoski]] * {{fas}}: [[ايتاليايى]] * {{isl}}: [[Ítalska]] * {{eus}}: [[Italiera]] * {{bel}}: [[Італьянскай]], [[Італійская]], [[Італьянская]] * {{por}}: [[Italiano]] * {{bre}}: [[Italianeg]] * {{bul}}: [[Италиански]] * {{cat-2}}: [[italià]] {{g|m}} * {{chr}}: [[ᎢᏔᎵᎠᏃ]] * {{cor}}: [[Italek]] * {{hrv}}: [[Talijanski]] * {{dan}}: [[Italiensk]] * {{heb}}: [[איטלקית]] * {{deu}}: [[Italienisch]] {{n}} * {{est}}: [[Itaalia]] * {{fao}}: [[Italskt]] * {{fry}}: [[Italjaansk]] * {{glg}}: [[Italiano]] * {{kat}}: [[იტალიელი]] * {{nld}}: [[Italiaans]] * {{kor}}: [[이탈리아어]] * {{hin}}: [[इतालवी]] * {{hun}}: [[olasz]] * {{ell}}: [[Ιταλικά]] * {{ind}}: [[Italia]] * {{gle}}: [[Iodáilis]] * {{khm}}: [[ភាសាអីុតាលាង]] * {{kur}}: [[Talyanî]] * {{lav}}: [[Italų]], [[Itališkai]] {{giữa}} * {{msa}}: [[Itali]] * {{mkd}}: [[Италијански]] * {{mlt}}: [[Taljan]] * {{mdf}}: [[Италиень]] * {{mon}}: [[Итали]] * {{nor}}: [[Italiensk]] * {{nep}}: [[इटालियन]] * {{rus}}: [[Итальянский]] * {{jpn}}: [[イタリア語]] * {{oci}}: [[Italian]] * {{fin}}: [[italia]] * {{fra}}: [[italien]] {{g|m}} * {{epo}}: [[Itala]] * {{ron}}: [[Italiană]] * {{ces}}: [[Italský]] * {{srp}}: [[Талјански]] * {{slk}}: [[Taliansky]] * {{slv}}: [[italijanščina]] {{f}} * {{som}}: [[Talyani]] * {{swa}}: [[Kiitaliano]] * {{tgl}}: [[Italyano]] * {{tam}}: [[இத்தாலியன்]] * {{tat}}: [[Италия]] * {{spa}}: [[Italiano]] * {{tha}}: [[ภาษาอิตาลี]] * {{tur}}: [[İtalyanca]] * {{swe}}: [[italienska]] * {{zho}}: [[意大利语]] ([[Ý Đại Lợi]] [[ngữ]], ''yìdàlì yŭ'') * {{ukr}}: [[Італійський]] * {{ukr}}: [[Італійський]] * {{urd}}: [[اٹالوي]] * {{cym}}: [[Eidaleg]] * {{wln}}: [[Itålyin]] * {{ita}}: [[italiano]] {{g|m}} * {{yid}}: [[איטאַליעניש]] * {{zul}}: [[Isintaliyane]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Ý]] [[Thể loại:Danh từ riêng tiếng Việt]] 4rn00rp8o8ep76ngrpu3xsbd9iwzjce 2350875 2350627 2026-05-07T10:37:48Z BlueShurikenNinjaBot 50371 (via JWB) 2350875 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Ý}} {{-pr-noun-}} '''tiếng Ý''' ([[ISO]] 639-1: [[it]]; ISO 639-2: [[ita]]; [[SIL]]: [[ITN]]) # [[ngôn ngữ|Ngôn ngữ]] dùng ở nước [[Ý]], [[San Marino]], [[Tòa Thánh]] [[Va-ti-căng]], và vài [[vùng]] của [[Thụy Sĩ]]. {{-trans-}} {{đầu}} * {{ara}}: [[إيطالية]] * {{afr}}: [[Italiaans]] * {{sqi}}: [[Italisht]] * {{amh}}: [[ጣሊያንኛ]] * {{eng}}: [[Italian]] * {{hye}}: [[Իտալական]], [[Իտալերեն]] * {{aze}}: [[Италјан]] * {{pol}}: [[Włoski]] * {{fas}}: [[ايتاليايى]] * {{isl}}: [[Ítalska]] * {{eus}}: [[Italiera]] * {{bel}}: [[Італьянскай]], [[Італійская]], [[Італьянская]] * {{por}}: [[Italiano]] * {{bre}}: [[Italianeg]] * {{bul}}: [[Италиански]] * {{cat-old}}: [[italià]] {{g|m}} * {{chr}}: [[ᎢᏔᎵᎠᏃ]] * {{cor}}: [[Italek]] * {{hrv}}: [[Talijanski]] * {{dan}}: [[Italiensk]] * {{heb}}: [[איטלקית]] * {{deu}}: [[Italienisch]] {{n}} * {{est}}: [[Itaalia]] * {{fao}}: [[Italskt]] * {{fry}}: [[Italjaansk]] * {{glg}}: [[Italiano]] * {{kat}}: [[იტალიელი]] * {{nld}}: [[Italiaans]] * {{kor}}: [[이탈리아어]] * {{hin}}: [[इतालवी]] * {{hun}}: [[olasz]] * {{ell}}: [[Ιταλικά]] * {{ind}}: [[Italia]] * {{gle}}: [[Iodáilis]] * {{khm}}: [[ភាសាអីុតាលាង]] * {{kur}}: [[Talyanî]] * {{lav}}: [[Italų]], [[Itališkai]] {{giữa}} * {{msa}}: [[Itali]] * {{mkd}}: [[Италијански]] * {{mlt}}: [[Taljan]] * {{mdf}}: [[Италиень]] * {{mon}}: [[Итали]] * {{nor}}: [[Italiensk]] * {{nep}}: [[इटालियन]] * {{rus}}: [[Итальянский]] * {{jpn}}: [[イタリア語]] * {{oci}}: [[Italian]] * {{fin}}: [[italia]] * {{fra}}: [[italien]] {{g|m}} * {{epo}}: [[Itala]] * {{ron}}: [[Italiană]] * {{ces}}: [[Italský]] * {{srp}}: [[Талјански]] * {{slk}}: [[Taliansky]] * {{slv}}: [[italijanščina]] {{f}} * {{som}}: [[Talyani]] * {{swa}}: [[Kiitaliano]] * {{tgl}}: [[Italyano]] * {{tam}}: [[இத்தாலியன்]] * {{tat}}: [[Италия]] * {{spa}}: [[Italiano]] * {{tha}}: [[ภาษาอิตาลี]] * {{tur}}: [[İtalyanca]] * {{swe}}: [[italienska]] * {{zho}}: [[意大利语]] ([[Ý Đại Lợi]] [[ngữ]], ''yìdàlì yŭ'') * {{ukr}}: [[Італійський]] * {{ukr}}: [[Італійський]] * {{urd}}: [[اٹالوي]] * {{cym}}: [[Eidaleg]] * {{wln}}: [[Itålyin]] * {{ita}}: [[italiano]] {{g|m}} * {{yid}}: [[איטאַליעניש]] * {{zul}}: [[Isintaliyane]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Ý]] [[Thể loại:Danh từ riêng tiếng Việt]] 9i2vgjewa2n3hiojq439993by6elivy tiếng Bồ Đào Nha 0 1008 2350628 2280671 2026-05-07T07:52:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350628 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Bồ|Đào|Nha}} {{-pr-noun-}} '''tiếng Bồ Đào Nha''', '''tiếng Bồ-đào-nha''', [[pt]] ([[ISO]] 639-1), [[por]] (ISO 639-2), [[POR]] ([[SIL]]) #[[ngôn ngữ|Ngôn ngữ]] chính của [[Bồ Đào Nha]], [[An-gô-la]], [[Mozambique|Moçambique]], [[São Tomé và Príncipe|São Tomé e Príncipe]], [[Guinea-Bissau|Guiné Bissau]], [[mũi Xang|Cabo Verde]], [[Timor Leste]], và [[Braxin]]. {{-syn-}} * [[tiếng Bồ]] {{-trans-}} {{đầu}} * {{ara}}: [[برتغالية]] * {{afr}}: [[Portugees]] * {{sqi}}: [[Portugalisht]] * {{eng}}: [[Portuguese]] * {{hye}}: [[Պորտուգալական]], [[Պորտուգալերեն]] * {{aze}}: [[Португал]] * {{pol}}: [[Portugalski]] * {{fas}}: [[پرتغالى]] * {{isl}}: [[Portúgalska]] * {{eus}}: [[Portugesa]], [[Portuges]] * {{bel}}: [[Партугальская]] * {{por}}: [[português]] * {{ina}}: [[portugese]] * {{bre}}: [[Portugaleg]] * {{bul}}: [[португалски]] * {{cat-2}}: [[Portuguès]] * {{cor}}: [[Portyngalek]] * {{hrv}}: [[Portugalski]] * {{dan}}: [[Portugisisk]] * {{heb}}: [[פורטוגזית]] * {{deu}}: [[Portugiesisch]] {{n}} * {{est}}: [[Portugali]] * {{fao}}: [[Portogisiskt]] * {{fry}}: [[Portugeesk]] * {{kat}}: [[პორტუგალიური]] * {{nld}}: [[Portugees]] * {{kor}}: [[포르투갈어]] * {{hin}}: [[पोरच्युगीज]] * {{hun}}: [[Portugál]] * {{ell}}: [[Πορτογαλικά]] * {{ind}}: [[bahasa portugal]], [[bahasa portugis]] * {{gle}}: [[Portugués]] * {{gle}}: [[Portaingéilis]] * {{lav}}: [[Portugāļu]] {{giữa}} * {{lit}}: [[Portugalų]], [[Portugališkai]] * {{mkd}}: [[Португалски]] * {{mlt}}: [[Bahasa Portugis]], [[Portugal]] * {{mlt}}: [[Portugiż]] * {{mdf}}: [[Португалонь]] * {{mon}}: [[Португали]] * {{nor}}: [[Portugisisk]] * {{nep}}: [[पोर्तुगाली]] * {{rus}}: [[Португальский]] * {{jpn}}: [[ポルトガル語]] (''porutogaru-go'') * {{fin}}: [[portugali]] * {{fra}}: [[portugais]] {{g|m}} * {{epo}}: [[portugala]] ([[lingvo]]) * {{ron}}: [[portugheză]] * {{ces}}: [[Portugalski]] * {{srp}}: [[Португалски]] * {{slk}}: [[Portugalský]] * {{slv}}: [[Portugalščina]] * {{wen}}: [[Portugalšćina]] * {{swa}}: [[Kireno]] * {{tgl}}: [[Portuges]] * {{tam}}: [[போர்ச்சுகீஸ]] * {{tat}}: [[Португал]] * {{spa}}: [[portugués]] * {{tha}}: [[ภาษาโปรตุเกส]] * {{tur}}: [[Portekizce]] * {{swe}}: [[portugisiska]] * {{zho}}: [[葡萄牙语]] ([[Bồ Đào Nha]] [[ngữ]], ''pútáoyá yŭ'') * {{ukr}}: [[Португальський]] * {{urd}}: [[پرتگالي]] * {{vol}}: [[Portugänapük]] * {{cym}}: [[Portiwgaleg]] * {{wln}}: [[Portuguès]] * {{ita}}: [[Portoghese]] * {{zul}}: [[Isiputukezi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Bồ Đào Nha]] 2tndav4nfnbwxnqlsr73hw48bbwtot8 2350876 2350628 2026-05-07T10:37:51Z BlueShurikenNinjaBot 50371 (via JWB) 2350876 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Bồ|Đào|Nha}} {{-pr-noun-}} '''tiếng Bồ Đào Nha''', '''tiếng Bồ-đào-nha''', [[pt]] ([[ISO]] 639-1), [[por]] (ISO 639-2), [[POR]] ([[SIL]]) #[[ngôn ngữ|Ngôn ngữ]] chính của [[Bồ Đào Nha]], [[An-gô-la]], [[Mozambique|Moçambique]], [[São Tomé và Príncipe|São Tomé e Príncipe]], [[Guinea-Bissau|Guiné Bissau]], [[mũi Xang|Cabo Verde]], [[Timor Leste]], và [[Braxin]]. {{-syn-}} * [[tiếng Bồ]] {{-trans-}} {{đầu}} * {{ara}}: [[برتغالية]] * {{afr}}: [[Portugees]] * {{sqi}}: [[Portugalisht]] * {{eng}}: [[Portuguese]] * {{hye}}: [[Պորտուգալական]], [[Պորտուգալերեն]] * {{aze}}: [[Португал]] * {{pol}}: [[Portugalski]] * {{fas}}: [[پرتغالى]] * {{isl}}: [[Portúgalska]] * {{eus}}: [[Portugesa]], [[Portuges]] * {{bel}}: [[Партугальская]] * {{por}}: [[português]] * {{ina}}: [[portugese]] * {{bre}}: [[Portugaleg]] * {{bul}}: [[португалски]] * {{cat-old}}: [[Portuguès]] * {{cor}}: [[Portyngalek]] * {{hrv}}: [[Portugalski]] * {{dan}}: [[Portugisisk]] * {{heb}}: [[פורטוגזית]] * {{deu}}: [[Portugiesisch]] {{n}} * {{est}}: [[Portugali]] * {{fao}}: [[Portogisiskt]] * {{fry}}: [[Portugeesk]] * {{kat}}: [[პორტუგალიური]] * {{nld}}: [[Portugees]] * {{kor}}: [[포르투갈어]] * {{hin}}: [[पोरच्युगीज]] * {{hun}}: [[Portugál]] * {{ell}}: [[Πορτογαλικά]] * {{ind}}: [[bahasa portugal]], [[bahasa portugis]] * {{gle}}: [[Portugués]] * {{gle}}: [[Portaingéilis]] * {{lav}}: [[Portugāļu]] {{giữa}} * {{lit}}: [[Portugalų]], [[Portugališkai]] * {{mkd}}: [[Португалски]] * {{mlt}}: [[Bahasa Portugis]], [[Portugal]] * {{mlt}}: [[Portugiż]] * {{mdf}}: [[Португалонь]] * {{mon}}: [[Португали]] * {{nor}}: [[Portugisisk]] * {{nep}}: [[पोर्तुगाली]] * {{rus}}: [[Португальский]] * {{jpn}}: [[ポルトガル語]] (''porutogaru-go'') * {{fin}}: [[portugali]] * {{fra}}: [[portugais]] {{g|m}} * {{epo}}: [[portugala]] ([[lingvo]]) * {{ron}}: [[portugheză]] * {{ces}}: [[Portugalski]] * {{srp}}: [[Португалски]] * {{slk}}: [[Portugalský]] * {{slv}}: [[Portugalščina]] * {{wen}}: [[Portugalšćina]] * {{swa}}: [[Kireno]] * {{tgl}}: [[Portuges]] * {{tam}}: [[போர்ச்சுகீஸ]] * {{tat}}: [[Португал]] * {{spa}}: [[portugués]] * {{tha}}: [[ภาษาโปรตุเกส]] * {{tur}}: [[Portekizce]] * {{swe}}: [[portugisiska]] * {{zho}}: [[葡萄牙语]] ([[Bồ Đào Nha]] [[ngữ]], ''pútáoyá yŭ'') * {{ukr}}: [[Португальський]] * {{urd}}: [[پرتگالي]] * {{vol}}: [[Portugänapük]] * {{cym}}: [[Portiwgaleg]] * {{wln}}: [[Portuguès]] * {{ita}}: [[Portoghese]] * {{zul}}: [[Isiputukezi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Bồ Đào Nha]] m45hld2kv50nn5vv6d8f5av24cmshi5 tiếng Đức 0 1009 2350629 2280672 2026-05-07T07:52:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350629 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Đức}} {{-pr-noun-}} '''tiếng Đức''', [[de]] ([[ISO]] 639-1), [[ger]] (ISO 639-2(B)), [[deu]] (ISO 639-2(T)), [[GER]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] thuộc [[hệ ngôn ngữ Ấn-Âu]], nói chính ở [[Đức]], nước [[Áo]], [[Thụy Sĩ]], và một vùng nhỏ trong nước [[Bỉ]]. {{-trans-}} {{đầu}} * {{ara}}: [[المانية]] * {{afr}}: [[Duits]] * {{sqi}}: [[Gjermanisht]] * {{eng}}: [[German]] * {{hye}}: [[Գերմանական]], [[Գերմաներեն]] * {{aze}}: [[Алман]] * {{pol}}: [[niemiecki]] {{g|m}} * {{fas}}: [[المانى]] * {{isl}}: [[Þýska]] * {{eus}}: [[Alemanieraz]], [[Alemanez]], [[Aleman]] * {{bel}}: [[Нямецкая]] * {{por}}: [[alemão]] {{g|m}} * {{ina}}: [[germano]] * {{bre}}: [[alamaneg]] {{g|m}} * {{bul}}: [[Немски]] * {{cat-2}}: [[Alemany]] * {{chr}}: [[ᎠᏛᏥ]] * {{cor}}: [[Almaynek]] * {{hrv}}: [[Njemački]] * {{dan}}: [[tysk]] * {{heb}}: [[גרמנית]] * {{deu}}: [[Deutsch]] {{n}} * {{est}}: [[Saksa]] * {{fao}}: [[Týskt]] * {{fry}}: [[Dútsk]] {{n}} * {{kat}}: [[გერმანული]] * {{nld}}: [[Duits]] * {{kor}}: [[독일어]] * {{hin}}: [[जर्मन]] * {{hun}}: [[Német]] * {{ell}}: [[Γερμανικά]] * {{ind}}: [[bahasa Jerman]] * {{gle}}: [[Gearmáinis]] * {{khm}}: [[ភាសាអាទឺម៉ង]] * {{kur}}: [[Elmanî]] * {{lav}}: [[Vācu]] * {{lit}}: [[Vokiškai]] * {{msa}}: [[Bahasa Jerman]], [[Jerman]], [[Germani]] * {{mkd}}: [[Германски]] {{giữa}} * {{mlt}}: [[Ġermaniż]] * {{mar}}: [[जर्मन]] * {{mdf}}: [[Германонь]] * {{mon}}: [[Герман]] * {{nor}}: [[tysk]] * {{nep}}: [[जर्मन]] * {{rus}}: [[Немецкий]] * {{jpn}}: [[ドイツ語]] (どいつご, ''doitsugo'') * {{oci}}: [[Aleman]] * {{fin}}: [[saksa]] * {{fra}}: [[Allemand]] {{g|m}} * {{epo}}: [[Germana]] * {{ron}}: [[germană]] * {{smn}}: [[säksikiela]] * {{ces}}: [[němčina]] {{f}} * {{srp}}: [[Немачки]] * {{slk}}: [[Nemecký]] * {{slv}}: [[nemščina]] * {{som}}: [[Jarmal]] * {{wen}}: [[Nĕmčina]] * {{swa}}: [[Kijerumani]] * {{tgl}}: [[Aleman]] * {{tam}}: [[ஜெர்மன்]] * {{tat}}: [[Немец]] * {{spa}}: [[Alemán]] {{g|m}} * {{tha}}: [[ภาษาเยอรมัน]] * {{tur}}: [[Almanca]] * {{swe}}: [[tyska]] * {{zho}}: ** {{Hans}}: [[德语]] ([[Đức ngữ]], ''Déyǔ'') ** {{Hant}}: [[德語]] ([[Đức ngữ]], ''Déyǔ'') * {{ukr}}: [[Німецький]] * {{urd}}: [[جرمن]] * {{cym}}: [[Almaeneg]] * {{wln}}: [[Almand]] * {{ita}}: [[tedesco]] {{g|m}} * {{yid}}: [[דײַטש]] * {{zul}}: [[Jalimani]], [[Ijalimane]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Đức]] [[Thể loại:Danh từ riêng tiếng Việt]] 4siovxnqhc1p7orb4j185qoi2myvekd 2350877 2350629 2026-05-07T10:38:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350877 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Đức}} {{-pr-noun-}} '''tiếng Đức''', [[de]] ([[ISO]] 639-1), [[ger]] (ISO 639-2(B)), [[deu]] (ISO 639-2(T)), [[GER]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] thuộc [[hệ ngôn ngữ Ấn-Âu]], nói chính ở [[Đức]], nước [[Áo]], [[Thụy Sĩ]], và một vùng nhỏ trong nước [[Bỉ]]. {{-trans-}} {{đầu}} * {{ara}}: [[المانية]] * {{afr}}: [[Duits]] * {{sqi}}: [[Gjermanisht]] * {{eng}}: [[German]] * {{hye}}: [[Գերմանական]], [[Գերմաներեն]] * {{aze}}: [[Алман]] * {{pol}}: [[niemiecki]] {{g|m}} * {{fas}}: [[المانى]] * {{isl}}: [[Þýska]] * {{eus}}: [[Alemanieraz]], [[Alemanez]], [[Aleman]] * {{bel}}: [[Нямецкая]] * {{por}}: [[alemão]] {{g|m}} * {{ina}}: [[germano]] * {{bre}}: [[alamaneg]] {{g|m}} * {{bul}}: [[Немски]] * {{cat-old}}: [[Alemany]] * {{chr}}: [[ᎠᏛᏥ]] * {{cor}}: [[Almaynek]] * {{hrv}}: [[Njemački]] * {{dan}}: [[tysk]] * {{heb}}: [[גרמנית]] * {{deu}}: [[Deutsch]] {{n}} * {{est}}: [[Saksa]] * {{fao}}: [[Týskt]] * {{fry}}: [[Dútsk]] {{n}} * {{kat}}: [[გერმანული]] * {{nld}}: [[Duits]] * {{kor}}: [[독일어]] * {{hin}}: [[जर्मन]] * {{hun}}: [[Német]] * {{ell}}: [[Γερμανικά]] * {{ind}}: [[bahasa Jerman]] * {{gle}}: [[Gearmáinis]] * {{khm}}: [[ភាសាអាទឺម៉ង]] * {{kur}}: [[Elmanî]] * {{lav}}: [[Vācu]] * {{lit}}: [[Vokiškai]] * {{msa}}: [[Bahasa Jerman]], [[Jerman]], [[Germani]] * {{mkd}}: [[Германски]] {{giữa}} * {{mlt}}: [[Ġermaniż]] * {{mar}}: [[जर्मन]] * {{mdf}}: [[Германонь]] * {{mon}}: [[Герман]] * {{nor}}: [[tysk]] * {{nep}}: [[जर्मन]] * {{rus}}: [[Немецкий]] * {{jpn}}: [[ドイツ語]] (どいつご, ''doitsugo'') * {{oci}}: [[Aleman]] * {{fin}}: [[saksa]] * {{fra}}: [[Allemand]] {{g|m}} * {{epo}}: [[Germana]] * {{ron}}: [[germană]] * {{smn}}: [[säksikiela]] * {{ces}}: [[němčina]] {{f}} * {{srp}}: [[Немачки]] * {{slk}}: [[Nemecký]] * {{slv}}: [[nemščina]] * {{som}}: [[Jarmal]] * {{wen}}: [[Nĕmčina]] * {{swa}}: [[Kijerumani]] * {{tgl}}: [[Aleman]] * {{tam}}: [[ஜெர்மன்]] * {{tat}}: [[Немец]] * {{spa}}: [[Alemán]] {{g|m}} * {{tha}}: [[ภาษาเยอรมัน]] * {{tur}}: [[Almanca]] * {{swe}}: [[tyska]] * {{zho}}: ** {{Hans}}: [[德语]] ([[Đức ngữ]], ''Déyǔ'') ** {{Hant}}: [[德語]] ([[Đức ngữ]], ''Déyǔ'') * {{ukr}}: [[Німецький]] * {{urd}}: [[جرمن]] * {{cym}}: [[Almaeneg]] * {{wln}}: [[Almand]] * {{ita}}: [[tedesco]] {{g|m}} * {{yid}}: [[דײַטש]] * {{zul}}: [[Jalimani]], [[Ijalimane]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Đức]] [[Thể loại:Danh từ riêng tiếng Việt]] lo821lgsznkrqb7n4a0bzu7jcu0wtp5 tiếng Do Thái 0 1010 2350631 2280673 2026-05-07T07:52:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350631 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Do|Thái}} {{-pr-noun-}} '''tiếng Do Thái''', [[tiếng Do thái]], [[he]] ([[ISO]] 639-1), [[heb]] (ISO 639-2), [[HBR]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của dân [[do Thái]] ([[Hê-brơ]]). {{-syn-}} * [[tiếng Hebrew]] * [[tiếng Hê-brơ]] {{-trans-}} {{đầu}} * {{ara}}: [[عِبْرٍيّة]] (''`ibriyyah'') * {{afr}}: [[Hebreeus]] * {{sqi}}: [[Hebraisht]] * {{amh}}: [[ዕብራስጥ]] * {{eng}}: [[Hebrew]] * {{hye}}: [[Հրեական]], [[Եբրայերեն]] * {{aze}}: [[Јәһуди]] * {{pol}}: [[hebrajski]] * {{fas}}: [[عبرى]] * {{isl}}: [[Hebreska]] * {{eus}}: [[Hebraiera]], [[Hebreera]] * {{bel}}: [[Габрэйскай]], [[Іўрыт]] * {{por}}: [[hebraico]], [[hebreu]] * {{ina}}: [[hebreo]] * {{bre}}: [[Hebreeg]] * {{bul}}: [[Еврейски]] * {{cat-2}}: [[hebreu]] * {{chr}}: [[ᎮᏊ]] * {{cor}}: [[Ebrow]] * {{hrv}}: [[Hebrejski]] * {{dan}}: [[Hebraisk]] * {{heb}}: [[עברית]] (''Ivriet'') * {{deu}}: [[Hebräisch]] * {{est}}: [[Heebrea]] * {{fao}}: [[Hebraiskt]] * {{fry}}: [[Hebrieusk]] * {{kat}}: [[ებრაული]] * {{kor}}: [[헤브라이어]] * {{hin}}: [[हीर्बूउ]] * {{hun}}: [[héber]] * {{ell}}: [[Εβραϊκά]] * {{ind}}: [[Yahudi]], [[Ibrani]] * {{gle}}: [[Eabhrais]] * {{kur}}: [[Ibranî]] * {{lav}}: [[Ebreju]] {{giữa}} * {{lit}}: [[Hebrajų]], [[Hebrajiškai]] * {{msa}}: [[Bahasa Ibrani]], [[Ibran]] * {{mkd}}: [[Хибру]] * {{mlt}}: [[Ebrajk]] * {{mdf}}: [[Евреень]] * {{mon}}: [[Еврей]] * {{nor}}: [[Hebraisk]] * {{nep}}: [[हिब्रु]] * {{rus}}: [[иврит]] {{g|m}} * {{jpn}}: [[ヘブライ語]] * {{oci}}: [[Hebraisk]] * {{fin}}: [[heprea]] * {{fra}}: [[hébreu]] * {{epo}}: [[hebreo]] * {{ron}}: [[Ebraică]] * {{ces}}: [[Hebrejský]] * {{srp}}: [[Јеврејски]] * {{slk}}: [[Hebrejský]] * {{slv}}: [[Hebrejščina]] * {{swa}}: [[Kiyahudi]] * {{tgl}}: [[Hebreo]] * {{tam}}: [[ஹீப்ரூ]] * {{tat}}: [[Иврид]] * {{spa}}: [[hebreo]] * {{tha}}: [[ภาษายิว]], [[ภาษาฮิบรู]], [[ภาษาฮีบรู]] * {{tur}}: [[İbranice]] * {{swe}}: [[hebreiska]] * {{zho}}: [[希伯来语]] ([[hy|Hy]] [[bá|Bá]] [[lai|Lai]] [[ngữ]], ''xibólái yŭ'') * {{ukr}}: [[Єврейський]] * {{urd}}: [[جاوي]] * {{cym}}: [[Hebraeg]] * {{wln}}: [[Ebreu]] * {{ita}}: [[ebreo]] * {{yid}}: [[העברעיִש]], [[לשון־קודש]] * {{zul}}: [[Isihebheru]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Do Thái]] [[Thể loại:Danh từ riêng tiếng Việt]] fs40l0mf04n5t56p9qpvaz43gvt21vb 2350878 2350631 2026-05-07T10:38:11Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350878 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Do|Thái}} {{-pr-noun-}} '''tiếng Do Thái''', [[tiếng Do thái]], [[he]] ([[ISO]] 639-1), [[heb]] (ISO 639-2), [[HBR]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của dân [[do Thái]] ([[Hê-brơ]]). {{-syn-}} * [[tiếng Hebrew]] * [[tiếng Hê-brơ]] {{-trans-}} {{đầu}} * {{ara}}: [[عِبْرٍيّة]] (''`ibriyyah'') * {{afr}}: [[Hebreeus]] * {{sqi}}: [[Hebraisht]] * {{amh}}: [[ዕብራስጥ]] * {{eng}}: [[Hebrew]] * {{hye}}: [[Հրեական]], [[Եբրայերեն]] * {{aze}}: [[Јәһуди]] * {{pol}}: [[hebrajski]] * {{fas}}: [[عبرى]] * {{isl}}: [[Hebreska]] * {{eus}}: [[Hebraiera]], [[Hebreera]] * {{bel}}: [[Габрэйскай]], [[Іўрыт]] * {{por}}: [[hebraico]], [[hebreu]] * {{ina}}: [[hebreo]] * {{bre}}: [[Hebreeg]] * {{bul}}: [[Еврейски]] * {{cat-old}}: [[hebreu]] * {{chr}}: [[ᎮᏊ]] * {{cor}}: [[Ebrow]] * {{hrv}}: [[Hebrejski]] * {{dan}}: [[Hebraisk]] * {{heb}}: [[עברית]] (''Ivriet'') * {{deu}}: [[Hebräisch]] * {{est}}: [[Heebrea]] * {{fao}}: [[Hebraiskt]] * {{fry}}: [[Hebrieusk]] * {{kat}}: [[ებრაული]] * {{kor}}: [[헤브라이어]] * {{hin}}: [[हीर्बूउ]] * {{hun}}: [[héber]] * {{ell}}: [[Εβραϊκά]] * {{ind}}: [[Yahudi]], [[Ibrani]] * {{gle}}: [[Eabhrais]] * {{kur}}: [[Ibranî]] * {{lav}}: [[Ebreju]] {{giữa}} * {{lit}}: [[Hebrajų]], [[Hebrajiškai]] * {{msa}}: [[Bahasa Ibrani]], [[Ibran]] * {{mkd}}: [[Хибру]] * {{mlt}}: [[Ebrajk]] * {{mdf}}: [[Евреень]] * {{mon}}: [[Еврей]] * {{nor}}: [[Hebraisk]] * {{nep}}: [[हिब्रु]] * {{rus}}: [[иврит]] {{g|m}} * {{jpn}}: [[ヘブライ語]] * {{oci}}: [[Hebraisk]] * {{fin}}: [[heprea]] * {{fra}}: [[hébreu]] * {{epo}}: [[hebreo]] * {{ron}}: [[Ebraică]] * {{ces}}: [[Hebrejský]] * {{srp}}: [[Јеврејски]] * {{slk}}: [[Hebrejský]] * {{slv}}: [[Hebrejščina]] * {{swa}}: [[Kiyahudi]] * {{tgl}}: [[Hebreo]] * {{tam}}: [[ஹீப்ரூ]] * {{tat}}: [[Иврид]] * {{spa}}: [[hebreo]] * {{tha}}: [[ภาษายิว]], [[ภาษาฮิบรู]], [[ภาษาฮีบรู]] * {{tur}}: [[İbranice]] * {{swe}}: [[hebreiska]] * {{zho}}: [[希伯来语]] ([[hy|Hy]] [[bá|Bá]] [[lai|Lai]] [[ngữ]], ''xibólái yŭ'') * {{ukr}}: [[Єврейський]] * {{urd}}: [[جاوي]] * {{cym}}: [[Hebraeg]] * {{wln}}: [[Ebreu]] * {{ita}}: [[ebreo]] * {{yid}}: [[העברעיִש]], [[לשון־קודש]] * {{zul}}: [[Isihebheru]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Do Thái]] [[Thể loại:Danh từ riêng tiếng Việt]] op370d4n34kha0nqplsegqh2b2ihcr9 tiếng Hy Lạp 0 1011 2350632 2280674 2026-05-07T07:52:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350632 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Hy|Lạp}} {{-pr-noun-}} '''tiếng Hy Lạp''', '''tiếng Hy-lạp''', '''tiếng Hi Lạp''', '''tiếng Hi-lạp''', [[el]] ([[ISO]] 639-1), [[gre]] (ISO 639-2(B)), [[ell]] (ISO 639-2(T)) # [[ngôn ngữ|Ngôn ngữ]] thuộc [[hệ ngôn ngữ Ấn-Âu]], dùng chính ở nước [[Hy Lạp]]. Có vài [[phương ngôn]]; [[tiếng Hy Lạp hiện đại]] phát triển từ [[tiếng Hy Lạp cổ]]. {{-trans-}} {{đầu}} * {{ara}}: [[يونانية]] * {{afr}}: [[Grieks]] * {{sqi}}: [[Greqisht]] * {{amh}}: [[ግሪክኛ]] * {{eng}}: [[Greek]] * {{hye}}: [[Հունական]], [[Հունարեն]] * {{aze}}: [[Јунан]] * {{pol}}: [[greka]] {{f}} * {{fas}}: [[يونانى]] * {{isl}}: [[Gríska]] * {{eus}}: [[Grekera]], [[Greziera]] * {{bel}}: [[Грэцкая]] * {{por}}: [[grego]] {{g|m}} * {{ina}}: [[greco]] * {{bre}}: [[Gresianeg]] * {{bul}}: [[гръцки]] {{g|m}} * {{cat-2}}: [[grec]] * {{chr}}: [[ᎬᎵᎧ]] * {{cor}}: [[Greka]] * {{hrv}}: [[Grčki]] * {{dan}}: [[græsk]] * {{heb}}: [[יוונית]] (Ye'va'nit) * {{deu}}: [[Griechisch]] {{n}} * {{est}}: [[kreeka keel]] * {{fao}}: [[Grikskt]] * {{fry}}: [[Gryksk]] * {{glg}}: [[Grego]] * {{kat}}: [[ბერძნული]] * {{nld}}: [[Grieks]] * {{kor}}: [[그리스어]] * {{hin}}: [[ग्रीक]] * {{hun}}: [[görög]] * {{ell}}: [[Ελληνικά]] * {{ind}}: [[bahaa yunani]] * {{gle}}: [[Gréigis]] * {{khm}}: [[ភាសាកិក]] * {{kur}}: [[Yonanî]], [[Yewnanî]] * {{lat}}: [[Graece]], [[Graeca]] {{giữa}} * {{lav}}: [[Grieķu]] * {{lit}}: [[Graikų]], [[Graikiškai]] * {{msa}}: [[Bahasa Yunani]], [[Yunani]] * {{mkd}}: [[Грчки]] * {{mlt}}: [[Grieg]] * {{mdf}}: [[Грекань]] * {{mon}}: [[Грек]] * {{nor}}: [[Gresk]] * {{nep}}: [[ग्रीक]] * {{rus}}: [[Греческий]] * {{jpn}}: [[ギリシア語]] (girishia-go) * {{oci}}: [[Grec]] * {{fin}}: [[kreikka]] * {{fra}}: [[grec]] {{g|m}} * {{epo}}: [[greka]] * {{ron}}: [[greacă]] {{f}} * {{ces}}: [[Řecký]] * {{srp}}: [[Грчки]] * {{slk}}: [[Grécky]] * {{slv}}: [[Grščina]] * {{wen}}: [[Grjekšćina]] * {{swa}}: [[Kigiriki]] * {{tgl}}: [[Griyego]] * {{tam}}: [[கிரேக்கம்]] * {{tat}}: [[Грек]] * {{spa}}: [[griego]] * {{tha}}: [[ภาษากรีก]] * {{tur}}: [[Yunanca]] * {{swe}}: [[grekiska]] * {{zho}}: ** {{Hans}}: [[希腊语]] ([[hy|Hy]] [[lạp|Lạp]] [[ngữ]], ''Xīlàyǔ'') ** {{Hant}}: [[希臘語]] ([[hy|Hy]] [[lạp|Lạp]] [[ngữ]], ''Xīlàyǔ'') * {{ukr}}: [[Грецький]] * {{urd}}: [[يوناني]] * {{cym}}: [[Groeg]] * {{wln}}: [[Grek]] * {{ita}}: [[greco]] * {{yid}}: [[גריכיש]] * {{zul}}: [[Isigrikhi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hy Lạp]] 6h8b3wtnn3sdc8narpo6lr41g59u4xe 2350879 2350632 2026-05-07T10:38:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350879 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Hy|Lạp}} {{-pr-noun-}} '''tiếng Hy Lạp''', '''tiếng Hy-lạp''', '''tiếng Hi Lạp''', '''tiếng Hi-lạp''', [[el]] ([[ISO]] 639-1), [[gre]] (ISO 639-2(B)), [[ell]] (ISO 639-2(T)) # [[ngôn ngữ|Ngôn ngữ]] thuộc [[hệ ngôn ngữ Ấn-Âu]], dùng chính ở nước [[Hy Lạp]]. Có vài [[phương ngôn]]; [[tiếng Hy Lạp hiện đại]] phát triển từ [[tiếng Hy Lạp cổ]]. {{-trans-}} {{đầu}} * {{ara}}: [[يونانية]] * {{afr}}: [[Grieks]] * {{sqi}}: [[Greqisht]] * {{amh}}: [[ግሪክኛ]] * {{eng}}: [[Greek]] * {{hye}}: [[Հունական]], [[Հունարեն]] * {{aze}}: [[Јунан]] * {{pol}}: [[greka]] {{f}} * {{fas}}: [[يونانى]] * {{isl}}: [[Gríska]] * {{eus}}: [[Grekera]], [[Greziera]] * {{bel}}: [[Грэцкая]] * {{por}}: [[grego]] {{g|m}} * {{ina}}: [[greco]] * {{bre}}: [[Gresianeg]] * {{bul}}: [[гръцки]] {{g|m}} * {{cat-old}}: [[grec]] * {{chr}}: [[ᎬᎵᎧ]] * {{cor}}: [[Greka]] * {{hrv}}: [[Grčki]] * {{dan}}: [[græsk]] * {{heb}}: [[יוונית]] (Ye'va'nit) * {{deu}}: [[Griechisch]] {{n}} * {{est}}: [[kreeka keel]] * {{fao}}: [[Grikskt]] * {{fry}}: [[Gryksk]] * {{glg}}: [[Grego]] * {{kat}}: [[ბერძნული]] * {{nld}}: [[Grieks]] * {{kor}}: [[그리스어]] * {{hin}}: [[ग्रीक]] * {{hun}}: [[görög]] * {{ell}}: [[Ελληνικά]] * {{ind}}: [[bahaa yunani]] * {{gle}}: [[Gréigis]] * {{khm}}: [[ភាសាកិក]] * {{kur}}: [[Yonanî]], [[Yewnanî]] * {{lat}}: [[Graece]], [[Graeca]] {{giữa}} * {{lav}}: [[Grieķu]] * {{lit}}: [[Graikų]], [[Graikiškai]] * {{msa}}: [[Bahasa Yunani]], [[Yunani]] * {{mkd}}: [[Грчки]] * {{mlt}}: [[Grieg]] * {{mdf}}: [[Грекань]] * {{mon}}: [[Грек]] * {{nor}}: [[Gresk]] * {{nep}}: [[ग्रीक]] * {{rus}}: [[Греческий]] * {{jpn}}: [[ギリシア語]] (girishia-go) * {{oci}}: [[Grec]] * {{fin}}: [[kreikka]] * {{fra}}: [[grec]] {{g|m}} * {{epo}}: [[greka]] * {{ron}}: [[greacă]] {{f}} * {{ces}}: [[Řecký]] * {{srp}}: [[Грчки]] * {{slk}}: [[Grécky]] * {{slv}}: [[Grščina]] * {{wen}}: [[Grjekšćina]] * {{swa}}: [[Kigiriki]] * {{tgl}}: [[Griyego]] * {{tam}}: [[கிரேக்கம்]] * {{tat}}: [[Грек]] * {{spa}}: [[griego]] * {{tha}}: [[ภาษากรีก]] * {{tur}}: [[Yunanca]] * {{swe}}: [[grekiska]] * {{zho}}: ** {{Hans}}: [[希腊语]] ([[hy|Hy]] [[lạp|Lạp]] [[ngữ]], ''Xīlàyǔ'') ** {{Hant}}: [[希臘語]] ([[hy|Hy]] [[lạp|Lạp]] [[ngữ]], ''Xīlàyǔ'') * {{ukr}}: [[Грецький]] * {{urd}}: [[يوناني]] * {{cym}}: [[Groeg]] * {{wln}}: [[Grek]] * {{ita}}: [[greco]] * {{yid}}: [[גריכיש]] * {{zul}}: [[Isigrikhi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hy Lạp]] nq1ci07jkrcna0uwyxn2mw5jhstb940 tiếng Hin-đi 0 1012 2350633 2094354 2026-05-07T07:52:23Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350633 wikitext text/x-wiki {{-vie-}} {{-etymology-}} "[[Hindi]]" nguyên thủy đến từ [[tiếng Ba Tư]]. {{-pr-noun-}} '''tiếng Hin-đi''' ([[ISO]] 639-1: hi; ISO 639-2: hin; [[SIL]]: HND) # [[ngôn ngữ|Ngôn ngữ]] dùng trong [[Tiểu bang|Tiểu Bang]] Bắc [[Ấn Độ]]. Cũng dùng ở [[Phi-gi|Fiji]], [[Guyana]], và như tiếng thứ hai của người [[Ấn-độ]] trong nhiều nước khác. {{-trans-}} {{đầu}} * {{ara}}: [[هندية]] * {{afr}}: [[Hindoes]], [[Hindi]] * {{amh}}: [[ሐንድኛ]] * {{eng}}: [[Hindi]] * {{hye}}: [[Հինդի]] * {{aze}}: [[Һинд]] * {{pol}}: [[Hindi]], [[Hinduski]] * {{fas}}: [[هندى]] * {{isl}}: [[Hindí]] * {{eus}}: [[Hindi]] * {{bel}}: [[Хіндзі]] * {{por}}: [[Hindi]] * {{bul}}: [[хинди]] * {{cat-2}}: [[Hindi]] * {{chr}}: [[ᎯᏅᏗ]] * {{hrv}}: [[Indijski]] * {{dan}}: [[Hindi]] * {{heb}}: [[הינדית]] * {{deu}}: [[Hindi]] * {{est}}: [[Hindi]] * {{kat}}: [[ჰინდი]] * {{guj}}: [[હિન્દી]] * {{nld}}: [[Hindi]] * {{kor}}: [[힌디어]] * {{kor}}: [[힌디어]] * {{hin}}: [[हिन्दी]] * {{hun}}: [[Hindi]] * {{ell}}: [[Χιντού]], [[Χίντι]] * {{ind}}: [[Hindi]] * {{gle}}: [[Hiondúis]] * {{lav}}: [[Hindu]] * {{lav}}: [[Hindu]] {{giữa}} * {{lit}}: [[Hindi]] * {{msa}}: [[Hindi]] * {{mkd}}: [[Хинду]] * {{mlt}}: [[Ħindi]] * {{mar}}: [[हिन्दी]] * {{mdf}}: [[Хинди]] * {{mon}}: [[Энтхэг]] * {{nor}}: [[Hindi]] * {{nep}}: [[हिन्दी]] * {{rus}}: [[Хинди]] * {{jpn}}: [[ヒンディー語]] * {{oci}}: [[Indi]] * {{fin}}: [[Hindi]] * {{ron}}: [[Hindusă]] * {{ces}}: [[Hindský]] * {{srp}}: [[Хинди]] * {{wen}}: [[Hindišćina]] * {{swa}}: [[Kihindi]] * {{tgl}}: [[Wikang Bumbáy]] * {{tam}}: [[ஹிந்தி]] * {{tat}}: [[Хинди]] * {{spa}}: [[Hindi]] * {{tha}}: [[ชาวฮินดู]], [[ภาษาฮินดู]] * {{tur}}: [[Hindu]] * {{swe}}: [[Hindi]] * {{zho}}: [[印地语]] ([[ấn|Ấn]] [[địa|Địa]] [[ngữ]], ''yìndì yŭ'') * {{ukr}}: [[Хiндi]] * {{urd}}: [[ہندي]] * {{cym}}: [[Hindi]] * {{wln}}: [[Hindi]] * {{ita}}: [[Hindi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hin-đi]] [[Thể loại:Danh từ riêng tiếng Việt]] lehnfxwbvft27ztkweiz88v1222jlgv 2350880 2350633 2026-05-07T10:38:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350880 wikitext text/x-wiki {{-vie-}} {{-etymology-}} "[[Hindi]]" nguyên thủy đến từ [[tiếng Ba Tư]]. {{-pr-noun-}} '''tiếng Hin-đi''' ([[ISO]] 639-1: hi; ISO 639-2: hin; [[SIL]]: HND) # [[ngôn ngữ|Ngôn ngữ]] dùng trong [[Tiểu bang|Tiểu Bang]] Bắc [[Ấn Độ]]. Cũng dùng ở [[Phi-gi|Fiji]], [[Guyana]], và như tiếng thứ hai của người [[Ấn-độ]] trong nhiều nước khác. {{-trans-}} {{đầu}} * {{ara}}: [[هندية]] * {{afr}}: [[Hindoes]], [[Hindi]] * {{amh}}: [[ሐንድኛ]] * {{eng}}: [[Hindi]] * {{hye}}: [[Հինդի]] * {{aze}}: [[Һинд]] * {{pol}}: [[Hindi]], [[Hinduski]] * {{fas}}: [[هندى]] * {{isl}}: [[Hindí]] * {{eus}}: [[Hindi]] * {{bel}}: [[Хіндзі]] * {{por}}: [[Hindi]] * {{bul}}: [[хинди]] * {{cat-old}}: [[Hindi]] * {{chr}}: [[ᎯᏅᏗ]] * {{hrv}}: [[Indijski]] * {{dan}}: [[Hindi]] * {{heb}}: [[הינדית]] * {{deu}}: [[Hindi]] * {{est}}: [[Hindi]] * {{kat}}: [[ჰინდი]] * {{guj}}: [[હિન્દી]] * {{nld}}: [[Hindi]] * {{kor}}: [[힌디어]] * {{kor}}: [[힌디어]] * {{hin}}: [[हिन्दी]] * {{hun}}: [[Hindi]] * {{ell}}: [[Χιντού]], [[Χίντι]] * {{ind}}: [[Hindi]] * {{gle}}: [[Hiondúis]] * {{lav}}: [[Hindu]] * {{lav}}: [[Hindu]] {{giữa}} * {{lit}}: [[Hindi]] * {{msa}}: [[Hindi]] * {{mkd}}: [[Хинду]] * {{mlt}}: [[Ħindi]] * {{mar}}: [[हिन्दी]] * {{mdf}}: [[Хинди]] * {{mon}}: [[Энтхэг]] * {{nor}}: [[Hindi]] * {{nep}}: [[हिन्दी]] * {{rus}}: [[Хинди]] * {{jpn}}: [[ヒンディー語]] * {{oci}}: [[Indi]] * {{fin}}: [[Hindi]] * {{ron}}: [[Hindusă]] * {{ces}}: [[Hindský]] * {{srp}}: [[Хинди]] * {{wen}}: [[Hindišćina]] * {{swa}}: [[Kihindi]] * {{tgl}}: [[Wikang Bumbáy]] * {{tam}}: [[ஹிந்தி]] * {{tat}}: [[Хинди]] * {{spa}}: [[Hindi]] * {{tha}}: [[ชาวฮินดู]], [[ภาษาฮินดู]] * {{tur}}: [[Hindu]] * {{swe}}: [[Hindi]] * {{zho}}: [[印地语]] ([[ấn|Ấn]] [[địa|Địa]] [[ngữ]], ''yìndì yŭ'') * {{ukr}}: [[Хiндi]] * {{urd}}: [[ہندي]] * {{cym}}: [[Hindi]] * {{wln}}: [[Hindi]] * {{ita}}: [[Hindi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hin-đi]] [[Thể loại:Danh từ riêng tiếng Việt]] 440cktu38o44bsgo4j2f63rdvov061j tiếng Phần Lan 0 1014 2350634 2320369 2026-05-07T07:52:26Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350634 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Phần|Lan}} {{-pr-noun-}} '''tiếng Phần Lan''', [[tiếng Phần-lan]], [[fi]] ([[ISO]] 639-1), [[fin]] (ISO 639-2), [[FIN]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của nước [[Phần Lan]]. {{-trans-}} {{đầu}} * {{afr}}: [[Fins]] * {{sqi}}: [[Finlandisht]] * {{amh}}: [[ፊኒሽ]] * {{eng}}: [[Fins]] {{g|m}} * {{eng}}: [[Finnish]] * {{hye}}: [[Ֆիննական]], [[Ֆինիշ]] * {{aze}}: [[Фин]] * {{pol}}: [[język fiński]] * {{fas}}: [[فنلاند]] * {{isl}}: [[Finnska]] * {{eus}}: [[Suomiera]] * {{bel}}: [[Фінская]] * {{por}}: [[finlandês]] * {{ina}}: [[finnese]] * {{bre}}: [[Finneg]] * {{bul}}: [[Финландски]] * {{cat-2}}: [[finès]], [[llengua finesa]], [[finlandès]] * {{hrv}}: [[Finski]] * {{dan}}: [[finsk]] {{n}} * {{heb}}: [[פינית]] * {{deu}}: [[Finnisch]] {{n}} * {{est}}: [[Soome]] * {{fao}}: [[Finskt]] * {{fry}}: [[Finsk]] * {{glg}}: [[Finlandés]] * {{kat}}: [[ფინური]] * {{kor}}: [[핀란드어]] * {{hun}}: [[finn]] * {{ell}}: [[Φινλανδικά]] * {{ind}}: [[bahasa finlandia]] * {{gle}}: [[Fionlainnis]] * {{kur}}: [[Fînlendî]] * {{lav}}: [[Somu]] * {{lit}}: [[Suomių]], [[Suomiškai]] {{giữa}} * {{msa}}: [[bahasa Finland]], [[Finland]], [[Finlandia]] * {{mkd}}: [[Somu]] * {{mlt}}: [[Finlandiż]] * {{mdf}}: [[Суомиень]] * {{mon}}: [[Финлянд]], [[Финлянди]] * {{nor}}: [[Finsk]] * {{nep}}: [[फिनिश]] * {{rus}}: [[финский]] * {{jpn}}: [[フィンランド語]] (''finrando-go'') * {{oci}}: [[Finès]] * {{fin}}: [[suomi]] * {{fra}}: [[Finnois]] * {{ron}}: [[finlandeză]] {{f}} * {{smn}}: [[suomakiela]] * {{ces}}: [[finština]] * {{srp}}: [[Фински]] * {{slk}}: [[Fínsky]] * {{slv}}: [[finščina]] * {{wen}}: [[Finšćina]] * {{swa}}: [[Kifinlandia]], [[Kifinlandi]], [[Kifinishi]] * {{tam}}: [[பின்னிஷ்]] * {{tat}}: [[Фин]] * {{spa}}: [[finlandés]] {{g|m}}, [[finés]] {{g|m}} * {{tha}}: [[ภาษาฟินนิช]], [[ภาษาฟิน]], [[ภาษาฟินแลนด์]] * {{tur}}: [[Fince]] * {{swe}}: [[finska]] * {{zho}}: [[芬兰语]] ([[phân|Phân]] [[lan|Lan]] [[ngữ]], ''fenlán yŭ'') * {{ukr}}: [[Фінський]] * {{urd}}: [[فنّنِش]] * {{vie}}: [[Tiếng Phần-lan]] * {{vot}}: [[Soomi]] * {{wln}}: [[Finwès]] * {{ita}}: [[finlandese]] * {{zul}}: [[Isifinilandi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Phần Lan]] erygazffo5eyzyqxv7n23u499pxnzgf 2350881 2350634 2026-05-07T10:38:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350881 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Phần|Lan}} {{-pr-noun-}} '''tiếng Phần Lan''', [[tiếng Phần-lan]], [[fi]] ([[ISO]] 639-1), [[fin]] (ISO 639-2), [[FIN]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của nước [[Phần Lan]]. {{-trans-}} {{đầu}} * {{afr}}: [[Fins]] * {{sqi}}: [[Finlandisht]] * {{amh}}: [[ፊኒሽ]] * {{eng}}: [[Fins]] {{g|m}} * {{eng}}: [[Finnish]] * {{hye}}: [[Ֆիննական]], [[Ֆինիշ]] * {{aze}}: [[Фин]] * {{pol}}: [[język fiński]] * {{fas}}: [[فنلاند]] * {{isl}}: [[Finnska]] * {{eus}}: [[Suomiera]] * {{bel}}: [[Фінская]] * {{por}}: [[finlandês]] * {{ina}}: [[finnese]] * {{bre}}: [[Finneg]] * {{bul}}: [[Финландски]] * {{cat-old}}: [[finès]], [[llengua finesa]], [[finlandès]] * {{hrv}}: [[Finski]] * {{dan}}: [[finsk]] {{n}} * {{heb}}: [[פינית]] * {{deu}}: [[Finnisch]] {{n}} * {{est}}: [[Soome]] * {{fao}}: [[Finskt]] * {{fry}}: [[Finsk]] * {{glg}}: [[Finlandés]] * {{kat}}: [[ფინური]] * {{kor}}: [[핀란드어]] * {{hun}}: [[finn]] * {{ell}}: [[Φινλανδικά]] * {{ind}}: [[bahasa finlandia]] * {{gle}}: [[Fionlainnis]] * {{kur}}: [[Fînlendî]] * {{lav}}: [[Somu]] * {{lit}}: [[Suomių]], [[Suomiškai]] {{giữa}} * {{msa}}: [[bahasa Finland]], [[Finland]], [[Finlandia]] * {{mkd}}: [[Somu]] * {{mlt}}: [[Finlandiż]] * {{mdf}}: [[Суомиень]] * {{mon}}: [[Финлянд]], [[Финлянди]] * {{nor}}: [[Finsk]] * {{nep}}: [[फिनिश]] * {{rus}}: [[финский]] * {{jpn}}: [[フィンランド語]] (''finrando-go'') * {{oci}}: [[Finès]] * {{fin}}: [[suomi]] * {{fra}}: [[Finnois]] * {{ron}}: [[finlandeză]] {{f}} * {{smn}}: [[suomakiela]] * {{ces}}: [[finština]] * {{srp}}: [[Фински]] * {{slk}}: [[Fínsky]] * {{slv}}: [[finščina]] * {{wen}}: [[Finšćina]] * {{swa}}: [[Kifinlandia]], [[Kifinlandi]], [[Kifinishi]] * {{tam}}: [[பின்னிஷ்]] * {{tat}}: [[Фин]] * {{spa}}: [[finlandés]] {{g|m}}, [[finés]] {{g|m}} * {{tha}}: [[ภาษาฟินนิช]], [[ภาษาฟิน]], [[ภาษาฟินแลนด์]] * {{tur}}: [[Fince]] * {{swe}}: [[finska]] * {{zho}}: [[芬兰语]] ([[phân|Phân]] [[lan|Lan]] [[ngữ]], ''fenlán yŭ'') * {{ukr}}: [[Фінський]] * {{urd}}: [[فنّنِش]] * {{vie}}: [[Tiếng Phần-lan]] * {{vot}}: [[Soomi]] * {{wln}}: [[Finwès]] * {{ita}}: [[finlandese]] * {{zul}}: [[Isifinilandi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Phần Lan]] 88bsz4b2c9p0698lm18nqv2tgnlf2lw tiếng Pháp 0 1015 2350635 2280676 2026-05-07T07:52:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350635 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Pháp}} {{-pr-noun-}} '''tiếng Pháp''', [[fr]] ([[ISO]] 639-1), [[fre]] (ISO 639-2(B)), [[fra]] (ISO 639-2(T)), [[FRN]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của nước [[Pháp]], [[Wallonia]] (ở dưới nước [[Bỉ]]), [[Thụy Sĩ]], [[Monaco]], [[Lục-xâm-bảo]], [[Senegal]], [[Haiti]] cũng như tại [[Quebec]] và [[New Brunswick]] (hai [[tỉnh bang]] của [[Gia Nã Đại]]). {{-trans-}} {{đầu}} * {{ara}}: [[فرنسية]] * {{afr}}: [[Frans]] * {{sqi}}: [[Frëngjisht]] * {{amh}}: [[ፈረንሳይኛ]] * {{eng}}: [[French]] * {{arg}}: [[franzés]] * {{hye}}: [[Ֆրանսերեն]] * {{aze}}: [[Франсыз]] * {{pol}}: [[francuski]] * {{fas}}: [[فرانسوى]] * {{isl}}: [[Franska]] * {{eus}}: [[Frantzesez]] * {{bel}}: [[Францускай]], [[Французская]], [[Французкая]] * {{por}}: [[francês]] * {{ina}}: [[francese]] * {{bre}}: [[galleg]] {{g|m}} * {{bul}}: [[Френски]] * {{cat-2}}: [[Francès]] * {{chr}}: [[ᎠᎦᎸᏥ]] * {{cor}}: [[Frynkek]] * {{hrv}}: [[francuski]] {{g|m}} * {{dan}}: [[fransk]] * {{heb}}: [[צרפתית]] (''Tzar’fa’tit'') * {{deu}}: [[Französisch]] * {{est}}: [[Prantsuse]] * {{fao}}: [[Franskt]] * {{fry}}: [[Frânsk]] {{n}} * {{kat}}: [[ფრანგული]] * {{nld}}: [[Frans]] {{n}} * {{kor}}: [[불어]] * {{hin}}: [[फानिसिस]] * {{hun}}: [[francia]] * {{ind}}: [[bahasa Perancis]] * {{gle}}: [[Francés]] [[Francês]] * {{gle}}: [[Fraincis]] * {{khm}}: [[ភាសារាំង]] * {{kur}}: [[Ferensî]] * {{lav}}: [[Franču]] * {{lit}}: [[Prancūziškai]] {{giữa}} * {{msa}}: [[Perancis]] * {{mkd}}: [[Француски]] * {{mlt}}: [[Franċiż]] * {{mdf}}: [[Кранцонь]] * {{mon}}: [[Франц]] * {{nor}}: [[fransk]] * {{nep}}: [[फ्रांसिसी]] * {{rus}}: [[Французский]] * {{jpn}}: [[フランス語]] (''furansu-go'') * {{oci}}: [[Francés]] * {{fin}}: [[ranska]] * {{fra}}: [[français]] {{g|m}} * {{ron}}: [[franceză]] {{f}} * {{smn}}: [[ránskákiela]] * {{ces}}: [[Francouzský]] * {{srp}}: [[Француски]] * {{slk}}: [[Francúzsky]] * {{slv}}: [[francoščina]] * {{som}}: [[Faransiis]] * {{wen}}: [[Francošćina]] * {{swa}}: [[Kifaransa]] * {{tgl}}: [[Pranses]] * {{tam}}: [[பிரென்ச்]] * {{tat}}: [[Франсуз]] * {{spa}}: [[francés]] * {{tha}}: [[ภาษาฝรั่งเศส]] * {{tur}}: [[Fransızca]] * {{swe}}: [[franska]] * {{zho}}: ** {{Hans}}: [[法语]] ([[Pháp ngữ]], ''fǎyǔ'') ** {{Hant}}: [[法語]] ([[Pháp ngữ]]''fǎyǔ'') * {{ukr}}: [[Французький]] * {{urd}}: [[فرانسيسي]] * {{cym}}: [[Ffrangeg]] * {{wln}}: [[Francès]] * {{ita}}: [[francese]] {{g|m}} * {{yid}}: [[פֿראַנצױזיש]] * {{zul}}: [[Isifulentshi]] [[isiFulentshi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Pháp]] 861vh9jzf0obmg6cf01nlaam7m8n1he 2350882 2350635 2026-05-07T10:38:23Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350882 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Pháp}} {{-pr-noun-}} '''tiếng Pháp''', [[fr]] ([[ISO]] 639-1), [[fre]] (ISO 639-2(B)), [[fra]] (ISO 639-2(T)), [[FRN]] ([[SIL]]) # [[ngôn ngữ|Ngôn ngữ]] của nước [[Pháp]], [[Wallonia]] (ở dưới nước [[Bỉ]]), [[Thụy Sĩ]], [[Monaco]], [[Lục-xâm-bảo]], [[Senegal]], [[Haiti]] cũng như tại [[Quebec]] và [[New Brunswick]] (hai [[tỉnh bang]] của [[Gia Nã Đại]]). {{-trans-}} {{đầu}} * {{ara}}: [[فرنسية]] * {{afr}}: [[Frans]] * {{sqi}}: [[Frëngjisht]] * {{amh}}: [[ፈረንሳይኛ]] * {{eng}}: [[French]] * {{arg}}: [[franzés]] * {{hye}}: [[Ֆրանսերեն]] * {{aze}}: [[Франсыз]] * {{pol}}: [[francuski]] * {{fas}}: [[فرانسوى]] * {{isl}}: [[Franska]] * {{eus}}: [[Frantzesez]] * {{bel}}: [[Францускай]], [[Французская]], [[Французкая]] * {{por}}: [[francês]] * {{ina}}: [[francese]] * {{bre}}: [[galleg]] {{g|m}} * {{bul}}: [[Френски]] * {{cat-old}}: [[Francès]] * {{chr}}: [[ᎠᎦᎸᏥ]] * {{cor}}: [[Frynkek]] * {{hrv}}: [[francuski]] {{g|m}} * {{dan}}: [[fransk]] * {{heb}}: [[צרפתית]] (''Tzar’fa’tit'') * {{deu}}: [[Französisch]] * {{est}}: [[Prantsuse]] * {{fao}}: [[Franskt]] * {{fry}}: [[Frânsk]] {{n}} * {{kat}}: [[ფრანგული]] * {{nld}}: [[Frans]] {{n}} * {{kor}}: [[불어]] * {{hin}}: [[फानिसिस]] * {{hun}}: [[francia]] * {{ind}}: [[bahasa Perancis]] * {{gle}}: [[Francés]] [[Francês]] * {{gle}}: [[Fraincis]] * {{khm}}: [[ភាសារាំង]] * {{kur}}: [[Ferensî]] * {{lav}}: [[Franču]] * {{lit}}: [[Prancūziškai]] {{giữa}} * {{msa}}: [[Perancis]] * {{mkd}}: [[Француски]] * {{mlt}}: [[Franċiż]] * {{mdf}}: [[Кранцонь]] * {{mon}}: [[Франц]] * {{nor}}: [[fransk]] * {{nep}}: [[फ्रांसिसी]] * {{rus}}: [[Французский]] * {{jpn}}: [[フランス語]] (''furansu-go'') * {{oci}}: [[Francés]] * {{fin}}: [[ranska]] * {{fra}}: [[français]] {{g|m}} * {{ron}}: [[franceză]] {{f}} * {{smn}}: [[ránskákiela]] * {{ces}}: [[Francouzský]] * {{srp}}: [[Француски]] * {{slk}}: [[Francúzsky]] * {{slv}}: [[francoščina]] * {{som}}: [[Faransiis]] * {{wen}}: [[Francošćina]] * {{swa}}: [[Kifaransa]] * {{tgl}}: [[Pranses]] * {{tam}}: [[பிரென்ச்]] * {{tat}}: [[Франсуз]] * {{spa}}: [[francés]] * {{tha}}: [[ภาษาฝรั่งเศส]] * {{tur}}: [[Fransızca]] * {{swe}}: [[franska]] * {{zho}}: ** {{Hans}}: [[法语]] ([[Pháp ngữ]], ''fǎyǔ'') ** {{Hant}}: [[法語]] ([[Pháp ngữ]]''fǎyǔ'') * {{ukr}}: [[Французький]] * {{urd}}: [[فرانسيسي]] * {{cym}}: [[Ffrangeg]] * {{wln}}: [[Francès]] * {{ita}}: [[francese]] {{g|m}} * {{yid}}: [[פֿראַנצױזיש]] * {{zul}}: [[Isifulentshi]] [[isiFulentshi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Pháp]] 6s33nk50q678wosu42gawv8xucdlw7z ngôn ngữ 0 1021 2350636 2281322 2026-05-07T07:52:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350636 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{đầu}} * [[言语]]: [[ngôn ngữ]] {{cuối}} {{-hanviet-t-}} {{đầu}} * [[言語]]: [[ngôn ngữ]] {{cuối}} {{-noun-}} {{pn}} # [[hệ thống|Hệ thống]] các [[âm thanh]], các [[từ ngữ]] và các [[quy tắc]] [[kết hợp]] chúng, làm [[phương tiện]] [[giao tiếp]] [[chung]] cho một [[cộng đồng]]. #: '''''Ngôn ngữ''' là phương tiện giao tiếp quan trọng nhất.'' # Hệ thống [[kí hiệu]] làm [[phương tiện]] [[diễn đạt]], [[thông báo]]. #: '''''Ngôn ngữ''' điện ảnh'' #: '''''Ngôn ngữ''' hội hoạ'' # [[cách|Cách]], [[lối]] [[sử dụng]] ngôn ngữ có [[tính chất]] [[cá biệt]] [[riêng lẻ]]. #: '''''Ngôn ngữ''' truyện Kiều.'' {{-syn-}} ; hệ thống các âm thanh, từ ngữ, và quy tắc * [[tiếng]] {{-trans-}} {{đầu}} * {{ara}}: [[لُغَةٌ]] (''luḡa'') {{f}}, [[لسان]] (''lisān'') {{g|m}} ** {{arz}}: [[لغة]] (''loḡa'') {{f}} * {{afr}}: [[taal]] * {{akk}}: {{Xsux char|[[𒅴]]}} (''lišānu'') * {{sqi}}: [[gjuhë]] {{f}} * {{eng}}: [[lingo]] {{term|thông tục}}, [[tongue]], [[speech]], [[parlance]] * {{ang}}: [[sprǣċ]] {{f}}, [[spǣċ]] {{f}} * {{arg}}: [[luenga]] {{f}}, [[idioma]] {{g|m}} * {{hye}}: [[լեզու]] * {{rup}}: [[limbã]] * {{ast}}: [[idioma]] {{g|m}}, [[llingua]] {{f}} * {{aze}}: [[dil]] * {{pol}}: [[język]] {{g|m}}, [[mowa]] {{f}} * {{fas}}: [[زبان]] (''zabân'') * {{bal}}: [[زبان]], [[زوان]] (''zawán'') * {{isl}}: [[mál]] {{n}}, [[tungumál]] {{n}}, [[tunga]] {{n}} * {{bak}}: [[тел]] (''tel'') * {{eus}}: [[hizkuntza]] * {{bel}}: [[мо́ва]] {{f}} * {{ben}}: [[ভাষা]] (''bhasha'') * {{por}}: [[idioma]] {{g|m}}, [[língua]] {{f}}, [[linguagem]] {{f}} * {{ina}}: [[lingua]], [[linguage]] * {{bre}}: [[yezh]] * {{bul}}: [[ези́к]] {{g|m}} * {{cat-2}}: [[idioma]] {{g|m}}, [[llengua]] {{f}}, [[llenguatge]] {{g|m}} * {{che}}: [[мотт]] (''mott'') * {{chr}}: [[ᎦᏬᏂᎯᏍᏗ]] (''gawonihisdi'') * {{chv}}: [[чӗлхе]] (''çělxe'') * {{cor}}: [[yeth]] * {{dan}}: [[sprog]] {{n}}, [[mål]], [[tunge]] {{g|c}} * {{heb}}: [[לשון]] (''lašón'', ''lashón'') {{f}}, [[שפה]] (''safá'') {{f}} * {{dng}}: [[йүян]] * {{deu}}: [[Sprache]] {{f}} * {{goh}}: [[sprāhha]] {{f}} * {{gmh}}: [[sprāche]] {{f}} * {{est}}: [[keel]] * {{fao}}: [[mál]] {{n}}, [[tungumál]] {{n}} * {{fur}}: [[lenghe]] {{f}}, [[lengağ]] * {{fry}}: [[taal]] * {{gla}}: [[cànan]] {{g|m}}, [[cainnt]] {{f}} * {{glg}}: [[linguaxe]] * {{got}}: [[𐍂𐌰𐌶𐌳𐌰]] (''razda'') {{f}} * {{kat}}: [[ენა]] * {{guj}}: [[ભાષા]] (''bhāṣā''), [[બાશા]] (''basha'') {{f}} * {{nld}}: [[taal]] {{f}}, [[spraak]] {{f}}, [[tong]] {{f}} * {{haw}}: [[‘ōlelo]] * {{hin}}: [[भाषा]] (''bhāṣā'') {{f}}, [[ज़बान]] (''zabān'') {{f}}, [[बोली]] (''bōlī'') * {{hun}}: [[nyelv]] * {{ell}}: [[γλώσσα]] (''glóssa'') {{f}} * {{grc}}: [[γλῶσσα]] (''glōssa'') {{f}}, [[γλῶττα]] (''glōtta'') {{f}} * {{ido}}: [[linguo]] * {{ind}}: [[bahasa]] * {{gle}}: [[teanga]] {{f}} * {{jav}}: [[basa]] * {{xal}}: [[келн]] (''keln'') * {{kan}}: [[ಭಾಷೆ]] (''bhāṣe'') * {{krc}}: [[тил]] (''til'') * {{kaz}}: [[тіл]] (''til'') * {{khm}}: [[ភាសា]] (''pīăsā'') * {{kum}}: [[тил]] (''til'') * {{kur}}: [[ziman]] * {{kir}}: [[тил]] (''til'') * {{lao}}: [[ພາສາ]] (''phaa-saa'') * {{lat}}: [[lingua]] {{f}} * {{lav}}: [[valoda]] {{f}} * {{lim}}: [[taol]] {{f}} * {{lit}}: [[kalba]] {{f}} * {{jbo}}: [[bangu]] * {{ltz}}: [[Sprooch]] {{f}} * {{msa}}: [[bahasa]] * {{mkd}}: [[ја́зик]] {{g|m}} * {{mal}}: [[ഭാഷ]] (''bhāṣa'') * {{mlt}}: [[lingwa]], [[ilsien]] * {{nan}}: [[gí-giân]] * {{mri}}: [[reo]] * {{mar}}: [[भाषा]] (''bhāṣā'') * {{mya}}: [[ဘာသာစကား]] (''batha-zăgà''), [[စကား]] (''zăgà''), [[ဘာသာ]] (''batha'') * {{mdf}}: [[кяль]] * {{hmn}}: [[lus]], [[hom lus]] * {{mon}}: ** {{Cyrl}}: [[хэл]] (''hel'') ** {{Mong}}: {{Mong char|[[ᠬᠡᠯᠡ]]}} (''hele'') * {{mtq}}: [[thiểng]] * {{nor}}: [[språk]] {{n}}, [[talemål]] {{n}} {{term|chỉ bằng giọng nói}}, [[tunge]] {{f}}, [[tungemål]] {{n}} * {{non}}: [[mál]] {{n}}, [[tunga]] {{f}} * {{nah}}: [[tlahtōlli]] * {{langname|alt}}: [[тил]] (''til'') * {{nau}}: [[langue]] * {{nav}}: [[saad]] * {{nep}}: [[भाषा]] (''bhāṣā'') * {{rus}}: [[язы́к]] {{g|m}} * {{jpn}}: {{Hani char|[[言葉]]}} (ことば, ''kotoba''), {{Hani char|[[言語]]}} (げんご, ''gengo'', ngôn ngữ) * {{nov}}: [[lingue]] * {{oci}}: [[lenga]] {{f}} * {{oji}}: [[inwewin]] * {{oss}}: [[ӕвзаг]] (''ævzag'') * {{pus}}: [[ژبه]] (''žëba'') {{f}} * {{san}}: [[भाषा]] (''bhāṣā'') {{f}} * {{fin}}: [[kieli]] * {{fra}}: [[langue]] {{f}} * {{fro}}: [[langue]] {{f}} * {{frm}}: [[langue]] {{f}} * {{pro}}: [[lengaje]] * {{cmn}}: ** {{Hant}}: {{Hani char|[[語言]]}} (''yǔyán'', ngữ ngôn) ** {{Hans}}: {{Hani char|[[语言]]}} (''yǔyán'', ngữ ngôn) * {{que}}: [[rimay]], [[simi]] {{term|miền nam}}; [[rimay]], [[shimi]] {{term|Ecuador}} * {{epo}}: [[lingvo]] * {{rar}}: [[reo]] * {{ron}}: [[limbă]] {{f}} * {{roh}}: [[linguatg]] * {{sah}}: [[тыл]] (''tyl'') * {{sme}}: [[giella]] * {{srd}}: [[limbàlzu]] * {{sco}}: [[leid]] * {{ces}}: [[jazyk]] {{g|m}}, [[řeč]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[језик]] {{g|m}} ** {{Latn}}: [[jezik]] {{g|m}} * {{sin}}: [[භාෂාව]] (''bhāṣāva'') * {{slk}}: [[jazyk]] {{g|m}} * {{slv}}: [[jêzik]] {{g|m}} * {{sot}}: [[puo]] * {{swa}}: [[lugha]], [[ki-]] {{term|tiền tố danh từ số 7}} * {{tgl}}: [[wika]], [[lengguwa]], [[idyoma]] * {{tgk}}: [[забон]] (''zabon'') * {{tam}}: [[மொழி]] (''moḻi''), [[பாசை]] (''pācai'') * {{tat}}: [[тел]] (''tel'') * {{crh}}: [[til]] * {{spa}}: [[lengua]] {{f}}, [[idioma]] {{g|m}} * {{tel}}: [[భాష]] (''bhāṣa'') * {{tha}}: [[ภาษา]] (''paasăa'') * {{tur}}: [[dil]], [[lisan]] {{term|cũ}} * {{swe}}: [[språk]] {{n}}, [[tungomål]] {{n}} * {{kor}}: [[언어]] (''eon-eo'') ({{Hani char|[[言語]]}}, ngôn ngữ), [[말]] (''mal'') * {{tuk}}: [[dil]] * {{ukr}}: [[мо́ва]] {{f}} * {{urd}}: [[زبان]] (''zabān'') {{f}}, [[بھاشا]] (''bhāṣā'') {{f}}, [[بولی]] (''bōlī'') * {{uig}}: [[تىل]] (''til'') * {{uzb}}: [[til]], [[zabon]] * {{vol}}: [[pük]] * {{vot}}: [[tšeeli]] * {{cym}}: [[iaith]] {{f}} * {{wol}}: [[làkk]] * {{xho}}: [[ulwimi]] * {{ita}}: [[lingua]] {{f}} * {{yid}}: [[לשון]] (''loshn'') {{n}}, [[שפּראַך]] (''shprakh'') {{f}} * {{zul}}: [[ulimi]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Ngôn ngữ học/Tiếng Việt]] [[Thể loại:Danh từ tiếng Việt]] mzfhf116ks55oljemwxe9mhp113vjcc 2350884 2350636 2026-05-07T10:38:26Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350884 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{đầu}} * [[言语]]: [[ngôn ngữ]] {{cuối}} {{-hanviet-t-}} {{đầu}} * [[言語]]: [[ngôn ngữ]] {{cuối}} {{-noun-}} {{pn}} # [[hệ thống|Hệ thống]] các [[âm thanh]], các [[từ ngữ]] và các [[quy tắc]] [[kết hợp]] chúng, làm [[phương tiện]] [[giao tiếp]] [[chung]] cho một [[cộng đồng]]. #: '''''Ngôn ngữ''' là phương tiện giao tiếp quan trọng nhất.'' # Hệ thống [[kí hiệu]] làm [[phương tiện]] [[diễn đạt]], [[thông báo]]. #: '''''Ngôn ngữ''' điện ảnh'' #: '''''Ngôn ngữ''' hội hoạ'' # [[cách|Cách]], [[lối]] [[sử dụng]] ngôn ngữ có [[tính chất]] [[cá biệt]] [[riêng lẻ]]. #: '''''Ngôn ngữ''' truyện Kiều.'' {{-syn-}} ; hệ thống các âm thanh, từ ngữ, và quy tắc * [[tiếng]] {{-trans-}} {{đầu}} * {{ara}}: [[لُغَةٌ]] (''luḡa'') {{f}}, [[لسان]] (''lisān'') {{g|m}} ** {{arz}}: [[لغة]] (''loḡa'') {{f}} * {{afr}}: [[taal]] * {{akk}}: {{Xsux char|[[𒅴]]}} (''lišānu'') * {{sqi}}: [[gjuhë]] {{f}} * {{eng}}: [[lingo]] {{term|thông tục}}, [[tongue]], [[speech]], [[parlance]] * {{ang}}: [[sprǣċ]] {{f}}, [[spǣċ]] {{f}} * {{arg}}: [[luenga]] {{f}}, [[idioma]] {{g|m}} * {{hye}}: [[լեզու]] * {{rup}}: [[limbã]] * {{ast}}: [[idioma]] {{g|m}}, [[llingua]] {{f}} * {{aze}}: [[dil]] * {{pol}}: [[język]] {{g|m}}, [[mowa]] {{f}} * {{fas}}: [[زبان]] (''zabân'') * {{bal}}: [[زبان]], [[زوان]] (''zawán'') * {{isl}}: [[mál]] {{n}}, [[tungumál]] {{n}}, [[tunga]] {{n}} * {{bak}}: [[тел]] (''tel'') * {{eus}}: [[hizkuntza]] * {{bel}}: [[мо́ва]] {{f}} * {{ben}}: [[ভাষা]] (''bhasha'') * {{por}}: [[idioma]] {{g|m}}, [[língua]] {{f}}, [[linguagem]] {{f}} * {{ina}}: [[lingua]], [[linguage]] * {{bre}}: [[yezh]] * {{bul}}: [[ези́к]] {{g|m}} * {{cat-old}}: [[idioma]] {{g|m}}, [[llengua]] {{f}}, [[llenguatge]] {{g|m}} * {{che}}: [[мотт]] (''mott'') * {{chr}}: [[ᎦᏬᏂᎯᏍᏗ]] (''gawonihisdi'') * {{chv}}: [[чӗлхе]] (''çělxe'') * {{cor}}: [[yeth]] * {{dan}}: [[sprog]] {{n}}, [[mål]], [[tunge]] {{g|c}} * {{heb}}: [[לשון]] (''lašón'', ''lashón'') {{f}}, [[שפה]] (''safá'') {{f}} * {{dng}}: [[йүян]] * {{deu}}: [[Sprache]] {{f}} * {{goh}}: [[sprāhha]] {{f}} * {{gmh}}: [[sprāche]] {{f}} * {{est}}: [[keel]] * {{fao}}: [[mál]] {{n}}, [[tungumál]] {{n}} * {{fur}}: [[lenghe]] {{f}}, [[lengağ]] * {{fry}}: [[taal]] * {{gla}}: [[cànan]] {{g|m}}, [[cainnt]] {{f}} * {{glg}}: [[linguaxe]] * {{got}}: [[𐍂𐌰𐌶𐌳𐌰]] (''razda'') {{f}} * {{kat}}: [[ენა]] * {{guj}}: [[ભાષા]] (''bhāṣā''), [[બાશા]] (''basha'') {{f}} * {{nld}}: [[taal]] {{f}}, [[spraak]] {{f}}, [[tong]] {{f}} * {{haw}}: [[‘ōlelo]] * {{hin}}: [[भाषा]] (''bhāṣā'') {{f}}, [[ज़बान]] (''zabān'') {{f}}, [[बोली]] (''bōlī'') * {{hun}}: [[nyelv]] * {{ell}}: [[γλώσσα]] (''glóssa'') {{f}} * {{grc}}: [[γλῶσσα]] (''glōssa'') {{f}}, [[γλῶττα]] (''glōtta'') {{f}} * {{ido}}: [[linguo]] * {{ind}}: [[bahasa]] * {{gle}}: [[teanga]] {{f}} * {{jav}}: [[basa]] * {{xal}}: [[келн]] (''keln'') * {{kan}}: [[ಭಾಷೆ]] (''bhāṣe'') * {{krc}}: [[тил]] (''til'') * {{kaz}}: [[тіл]] (''til'') * {{khm}}: [[ភាសា]] (''pīăsā'') * {{kum}}: [[тил]] (''til'') * {{kur}}: [[ziman]] * {{kir}}: [[тил]] (''til'') * {{lao}}: [[ພາສາ]] (''phaa-saa'') * {{lat}}: [[lingua]] {{f}} * {{lav}}: [[valoda]] {{f}} * {{lim}}: [[taol]] {{f}} * {{lit}}: [[kalba]] {{f}} * {{jbo}}: [[bangu]] * {{ltz}}: [[Sprooch]] {{f}} * {{msa}}: [[bahasa]] * {{mkd}}: [[ја́зик]] {{g|m}} * {{mal}}: [[ഭാഷ]] (''bhāṣa'') * {{mlt}}: [[lingwa]], [[ilsien]] * {{nan}}: [[gí-giân]] * {{mri}}: [[reo]] * {{mar}}: [[भाषा]] (''bhāṣā'') * {{mya}}: [[ဘာသာစကား]] (''batha-zăgà''), [[စကား]] (''zăgà''), [[ဘာသာ]] (''batha'') * {{mdf}}: [[кяль]] * {{hmn}}: [[lus]], [[hom lus]] * {{mon}}: ** {{Cyrl}}: [[хэл]] (''hel'') ** {{Mong}}: {{Mong char|[[ᠬᠡᠯᠡ]]}} (''hele'') * {{mtq}}: [[thiểng]] * {{nor}}: [[språk]] {{n}}, [[talemål]] {{n}} {{term|chỉ bằng giọng nói}}, [[tunge]] {{f}}, [[tungemål]] {{n}} * {{non}}: [[mál]] {{n}}, [[tunga]] {{f}} * {{nah}}: [[tlahtōlli]] * {{langname|alt}}: [[тил]] (''til'') * {{nau}}: [[langue]] * {{nav}}: [[saad]] * {{nep}}: [[भाषा]] (''bhāṣā'') * {{rus}}: [[язы́к]] {{g|m}} * {{jpn}}: {{Hani char|[[言葉]]}} (ことば, ''kotoba''), {{Hani char|[[言語]]}} (げんご, ''gengo'', ngôn ngữ) * {{nov}}: [[lingue]] * {{oci}}: [[lenga]] {{f}} * {{oji}}: [[inwewin]] * {{oss}}: [[ӕвзаг]] (''ævzag'') * {{pus}}: [[ژبه]] (''žëba'') {{f}} * {{san}}: [[भाषा]] (''bhāṣā'') {{f}} * {{fin}}: [[kieli]] * {{fra}}: [[langue]] {{f}} * {{fro}}: [[langue]] {{f}} * {{frm}}: [[langue]] {{f}} * {{pro}}: [[lengaje]] * {{cmn}}: ** {{Hant}}: {{Hani char|[[語言]]}} (''yǔyán'', ngữ ngôn) ** {{Hans}}: {{Hani char|[[语言]]}} (''yǔyán'', ngữ ngôn) * {{que}}: [[rimay]], [[simi]] {{term|miền nam}}; [[rimay]], [[shimi]] {{term|Ecuador}} * {{epo}}: [[lingvo]] * {{rar}}: [[reo]] * {{ron}}: [[limbă]] {{f}} * {{roh}}: [[linguatg]] * {{sah}}: [[тыл]] (''tyl'') * {{sme}}: [[giella]] * {{srd}}: [[limbàlzu]] * {{sco}}: [[leid]] * {{ces}}: [[jazyk]] {{g|m}}, [[řeč]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[језик]] {{g|m}} ** {{Latn}}: [[jezik]] {{g|m}} * {{sin}}: [[භාෂාව]] (''bhāṣāva'') * {{slk}}: [[jazyk]] {{g|m}} * {{slv}}: [[jêzik]] {{g|m}} * {{sot}}: [[puo]] * {{swa}}: [[lugha]], [[ki-]] {{term|tiền tố danh từ số 7}} * {{tgl}}: [[wika]], [[lengguwa]], [[idyoma]] * {{tgk}}: [[забон]] (''zabon'') * {{tam}}: [[மொழி]] (''moḻi''), [[பாசை]] (''pācai'') * {{tat}}: [[тел]] (''tel'') * {{crh}}: [[til]] * {{spa}}: [[lengua]] {{f}}, [[idioma]] {{g|m}} * {{tel}}: [[భాష]] (''bhāṣa'') * {{tha}}: [[ภาษา]] (''paasăa'') * {{tur}}: [[dil]], [[lisan]] {{term|cũ}} * {{swe}}: [[språk]] {{n}}, [[tungomål]] {{n}} * {{kor}}: [[언어]] (''eon-eo'') ({{Hani char|[[言語]]}}, ngôn ngữ), [[말]] (''mal'') * {{tuk}}: [[dil]] * {{ukr}}: [[мо́ва]] {{f}} * {{urd}}: [[زبان]] (''zabān'') {{f}}, [[بھاشا]] (''bhāṣā'') {{f}}, [[بولی]] (''bōlī'') * {{uig}}: [[تىل]] (''til'') * {{uzb}}: [[til]], [[zabon]] * {{vol}}: [[pük]] * {{vot}}: [[tšeeli]] * {{cym}}: [[iaith]] {{f}} * {{wol}}: [[làkk]] * {{xho}}: [[ulwimi]] * {{ita}}: [[lingua]] {{f}} * {{yid}}: [[לשון]] (''loshn'') {{n}}, [[שפּראַך]] (''shprakh'') {{f}} * {{zul}}: [[ulimi]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Ngôn ngữ học/Tiếng Việt]] [[Thể loại:Danh từ tiếng Việt]] oaqub3x8xyksrccwoe1io79w68ztfin tiếng Hàn 0 1030 2350637 2280678 2026-05-07T07:52:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350637 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Hàn}} {{-etymology-}} [[tiếng]] ([[ngôn ngữ]]) + [[Hàn]] ([[Hàn Quốc]], [[Đại Hàn]]) {{-pr-noun-}} '''tiếng Hàn''' # [[ngôn ngữ|Ngôn ngữ]] [[phổ dụng]] nhất tại [[Triều Tiên]], ngôn ngữ [[chính thức]] của cả hai miền Bắc và Nam Triều Tiên ([[cộng hòa|Cộng hòa]] [[dân chủ|Dân chủ]] [[nhân dân|Nhân dân]] Triều Tiên và [[Hàn Quốc]]), cũng được [[sử dụng]] [[rộng rãi]] ở [[Diên Biên]] và các [[vùng]] [[bao quanh]], thuộc Cộng hòa Nhân dân [[Trung Hoa]], [[nơi]] có [[người]] Triều Tiên [[sinh sống]]. {{-syn-}} * [[tiếng Triều Tiên]], [[tiếng Triều tiên]] * [[tiếng Hàn Quốc]] * [[tiếng Đại Hàn]] * [[Hàn ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[كورية]] * {{afr}}: [[Koreaans]] * {{sqi}}: [[Korean]] * {{amh}}: [[ኮሪያኛ]] * {{eng}}: [[Korean]] * {{hye}}: [[Կորեական]] * {{aze}}: [[Кореја]] * {{pol}}: [[Koreański]] * {{fas}}: [[کره ای]] * {{isl}}: [[Kóreska]] * {{eus}}: [[Koreera]], [[Korearra]] * {{bel}}: [[Карэйская]] * {{por}}: [[Coreano]] * {{bre}}: [[Koreeg]] * {{bul}}: [[Корейски]] * {{cat-2}}: [[Coreà]] * {{chr}}: [[ᎪᎵᎥ]] * {{hrv}}: [[Korejski]] * {{dan}}: [[Koreansk]] * {{heb}}: [[קוריאנית]] * {{deu}}: [[Koreanisch]] * {{est}}: [[Korea]] * {{fao}}: [[Koreanskt]] * {{fry}}: [[Koreaansk]] * {{kat}}: [[კორეული]] * {{nld}}: [[Koreaans]] * {{kor}}: [[한국말]] * {{hin}}: [[कोरियन]] * {{hun}}: [[Koreai]] * {{ell}}: [[Κορεατικά]] * {{ind}}: [[Korea]] * {{gle}}: [[Cóiréis]] * {{khm}}: [[ភាសាកូេរ៉]] * {{lav}}: [[Korejiešu]] {{giữa}} * {{lit}}: [[Korėjiečių]], [[Korėjietiškai]] * {{msa}}: [[Korea]] * {{mkd}}: [[Корејски]] * {{mlt}}: [[Korejan]] * {{mar}}: [[कोरीयन]] * {{mdf}}: [[Кореень]] * {{mon}}: [[Солонгос]] * {{nor}}: [[Koreansk]] * {{nep}}: [[कोरियाली]] * {{rus}}: [[Корейский]] * {{jpn}}: [[韓国語]] ([[Hàn Quốc]] [[ngữ]], [[かん]][[こく]][[ご]], ''kankokugo'')), [[朝鮮語]] ([[Triều Tiên]] ngữ, [[ちょう]][[せん]][[ご]], ''chōsengo)'') * {{oci}}: [[Corean]] * {{fin}}: [[korea]] * {{fra}}: [[Coréen]] * {{ron}}: [[Coreană]] * {{ces}}: [[Korejský]] * {{srp}}: [[Корејски]] * {{slk}}: [[Kórejský]] * {{slv}}: [[Korejščina]] * {{swa}}: [[Kikorea]] * {{tgl}}: [[Koreano]] * {{tam}}: [[கோரியன்]] * {{tat}}: [[Корея]] * {{spa}}: [[Coreano]] {{g|m}} * {{tha}}: [[ภาษาเกาหลี]] * {{tur}}: [[Korece]] * {{swe}}: [[Koreanska]] * {{zho}}: [[朝鲜语]] ([[Triều Tiên]] [[ngữ]], ''Cháoxiǎn yǔ'') * {{ukr}}: [[Корейський]] * {{urd}}: [[کورين]] * {{cym}}: [[Iaith Corea]] * {{wln}}: [[Coreyin]] * {{ita}}: [[Coreano]] {{cuối}} {{-related-}} * [[chữ Hàn]] [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hàn]] 3wd5afrd8j3tinyis1203dcye6wxksn 2350883 2350637 2026-05-07T10:38:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350883 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Hàn}} {{-etymology-}} [[tiếng]] ([[ngôn ngữ]]) + [[Hàn]] ([[Hàn Quốc]], [[Đại Hàn]]) {{-pr-noun-}} '''tiếng Hàn''' # [[ngôn ngữ|Ngôn ngữ]] [[phổ dụng]] nhất tại [[Triều Tiên]], ngôn ngữ [[chính thức]] của cả hai miền Bắc và Nam Triều Tiên ([[cộng hòa|Cộng hòa]] [[dân chủ|Dân chủ]] [[nhân dân|Nhân dân]] Triều Tiên và [[Hàn Quốc]]), cũng được [[sử dụng]] [[rộng rãi]] ở [[Diên Biên]] và các [[vùng]] [[bao quanh]], thuộc Cộng hòa Nhân dân [[Trung Hoa]], [[nơi]] có [[người]] Triều Tiên [[sinh sống]]. {{-syn-}} * [[tiếng Triều Tiên]], [[tiếng Triều tiên]] * [[tiếng Hàn Quốc]] * [[tiếng Đại Hàn]] * [[Hàn ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[كورية]] * {{afr}}: [[Koreaans]] * {{sqi}}: [[Korean]] * {{amh}}: [[ኮሪያኛ]] * {{eng}}: [[Korean]] * {{hye}}: [[Կորեական]] * {{aze}}: [[Кореја]] * {{pol}}: [[Koreański]] * {{fas}}: [[کره ای]] * {{isl}}: [[Kóreska]] * {{eus}}: [[Koreera]], [[Korearra]] * {{bel}}: [[Карэйская]] * {{por}}: [[Coreano]] * {{bre}}: [[Koreeg]] * {{bul}}: [[Корейски]] * {{cat-old}}: [[Coreà]] * {{chr}}: [[ᎪᎵᎥ]] * {{hrv}}: [[Korejski]] * {{dan}}: [[Koreansk]] * {{heb}}: [[קוריאנית]] * {{deu}}: [[Koreanisch]] * {{est}}: [[Korea]] * {{fao}}: [[Koreanskt]] * {{fry}}: [[Koreaansk]] * {{kat}}: [[კორეული]] * {{nld}}: [[Koreaans]] * {{kor}}: [[한국말]] * {{hin}}: [[कोरियन]] * {{hun}}: [[Koreai]] * {{ell}}: [[Κορεατικά]] * {{ind}}: [[Korea]] * {{gle}}: [[Cóiréis]] * {{khm}}: [[ភាសាកូេរ៉]] * {{lav}}: [[Korejiešu]] {{giữa}} * {{lit}}: [[Korėjiečių]], [[Korėjietiškai]] * {{msa}}: [[Korea]] * {{mkd}}: [[Корејски]] * {{mlt}}: [[Korejan]] * {{mar}}: [[कोरीयन]] * {{mdf}}: [[Кореень]] * {{mon}}: [[Солонгос]] * {{nor}}: [[Koreansk]] * {{nep}}: [[कोरियाली]] * {{rus}}: [[Корейский]] * {{jpn}}: [[韓国語]] ([[Hàn Quốc]] [[ngữ]], [[かん]][[こく]][[ご]], ''kankokugo'')), [[朝鮮語]] ([[Triều Tiên]] ngữ, [[ちょう]][[せん]][[ご]], ''chōsengo)'') * {{oci}}: [[Corean]] * {{fin}}: [[korea]] * {{fra}}: [[Coréen]] * {{ron}}: [[Coreană]] * {{ces}}: [[Korejský]] * {{srp}}: [[Корејски]] * {{slk}}: [[Kórejský]] * {{slv}}: [[Korejščina]] * {{swa}}: [[Kikorea]] * {{tgl}}: [[Koreano]] * {{tam}}: [[கோரியன்]] * {{tat}}: [[Корея]] * {{spa}}: [[Coreano]] {{g|m}} * {{tha}}: [[ภาษาเกาหลี]] * {{tur}}: [[Korece]] * {{swe}}: [[Koreanska]] * {{zho}}: [[朝鲜语]] ([[Triều Tiên]] [[ngữ]], ''Cháoxiǎn yǔ'') * {{ukr}}: [[Корейський]] * {{urd}}: [[کورين]] * {{cym}}: [[Iaith Corea]] * {{wln}}: [[Coreyin]] * {{ita}}: [[Coreano]] {{cuối}} {{-related-}} * [[chữ Hàn]] [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hàn]] kpm3l4r5udfh9g0kr2gbke4poduvfvj từ điển 0 1034 2350638 2305384 2026-05-07T07:52:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350638 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-paro-}} {{đầu}} :* [[tụ điện]] :* [[tư điền]] :* [[tứ diện]] {{giữa}} :* [[tự điền]] :* [[tự điển]] :* [[tự điền]] :* [[tự điển]] {{cuối}} [[Hình:Latin dictionary.jpg|thumb|từ điển]] {{-noun-}} (bộ, cuốn, quyển) '''từ điển''' # Bộ [[sách]] cho [[danh sách]] các [[từ#Danh từ|từ]] (được [[sắp xếp]] theo [[thứ tự]] ABC), thường [[giải thích]] [[ý nghĩa]], [[từ nguyên]], cách [[dùng]], [[dịch]], cách [[phát âm]] và thường kèm theo các [[ví dụ]] về cách [[sử dụng]] từ đó. Có loại từ điển gồm nhiều hơn một [[ngôn ngữ]] giúp người đọc có thể dịch nghĩa của mỗi từ từ [[ngôn ngữ]] này sang (những) [[ngôn ngữ]] kia. #: ''Hãy tra cứu bộ '''từ điển''' mở Wiktionary.'' # Cuốn sách như ở trên nhưng chỉ [[chuyên môn]] về việc dịch từ. #: '''''Từ điển''' tiếng Việt.'' #: '''''Từ điển''' Anh–Việt.'' #: '''''Từ điển''' Việt–Anh.'' #: '''''Từ điển''' Anh–Pháp–Việt.'' # {{@|tin học}} {{see-entry|mảng kết hợp}} {{-trans-}} {{đầu}} * {{ara}}: [[قاموس]] (''qāmūs''), [[معجم]] (''mu'duam'') * {{sqi}}: [[fjalor]] * {{eng}}: [[dictionary]], [[wordbook]] * {{hye}}: (''pararan'') * {{aze}}: [[lüghɘt]] * {{pol}}: [[słownik]] * {{fas}}: [[کتب لغت]] * {{isl}}: [[ordabóg]] * {{eus}}: [[hiztegi]] * {{por}}: [[dicionário]] {{g|m}} * {{ina}}: [[dictionario]] * {{bos}}: [[rječnik]] * {{bre}}: [[geriadur]] * {{bul}}: [[речник]] (''rečnik'') {{g|m}} * {{cat-2}}: [[diccionari]] {{g|m}} * {{dan}}: [[ordbog]] * {{heb}}: [[מילון]] (''milon'') * {{deu}}: [[Wörterbuch]] {{n}} * {{est}}: [[sõnaraamat]] * {{fry}}: [[wurdboek]] * {{glg}}: [[diccionario]] {{g|m}} * {{nld}}: [[woordenboek]] {{n}} * {{haw}}: [[puke wehewehe ‘ōlelo]] * {{hin}}: [[शब्दकोश]] (''shabdakosh''), [[कोश]] (''kosh'') * {{hun}}: [[szótár]] * {{ell}}: [[λεξικό]] (''lexikó'') {{n}} * {{ind}}: [[kamus]] * {{gle}}: [[foclóir]] {{g|m}} * {{kan}}: [[ನಿಘಂಟು]] (''nighangṭu''), [[ಅರ್ಥಕೋಶ]] (''arthakōsh'') * {{khm}}: [[វចនានុកម]] (''vajnanukrom'') * {{kur}}: [[ferheng]], [[khebernivis]], [[loghet]] * {{lat}}: [[dictionarium]] {{n}} * {{lav}}: [[vardnica]] {{giữa}} * {{lit}}: [[žodynas]] {{g|m}} * {{ltz}}: [[Wierderbuch]] {{n}}, [[Dixionär]] {{g|m}} * {{mlt}}: [[dizzjunarju]] (''dittsyunaryu'') * {{mnc}}: (''buleku bithe'') * {{nor}}: [[ordbok]] * {{rus}}: [[словарь]] (''slovar’'') {{g|m}} * {{jpn}}: [[辞書]] (じしょ, ''jisho''); [[辞典]] (じてん, ''jiten'') * {{fin}}: [[sanakirja]] * {{san}}: [[निघण्टु]] (nighaṇṭu) * {{fra}}: [[dictionnaire]] {{g|m}} * {{epo}}: [[vortaro]] * {{ron}}: [[dicţionar]] {{n}} * {{ces}}: [[slovník]] {{g|m}} * {{slk}}: [[slovník]] * {{slv}}: [[slovar]] {{g|m}} * {{som}}: [[qaamuus]], [[abwan-ka]] * {{swa}}: [[kamusi]] ''5'' * {{tam}}: (''akharaadhi'') * {{tat}}: [[süzlek]] * {{spa}}: [[diccionario]] {{g|m}} * {{tha}}: [[พจนานุกรม]] (''photnanukrom'') * {{tur}}: [[sözlük]] * {{swe}}: [[ordbok]] * {{kor}}: [[사전]] (''sajeon'') * {{zho}}: phồn thể: [[辭典]], [[詞典]], giản thể: [[词典]] (''cí diǎn'', [[từ điển]]) * {{urd}}: [[لغت]] (''lughat'') * {{vol}}: [[vödabuk]], [[vödasbuk]] * {{cym}}: [[geiriadur]] * {{xho}}: [[idikshinari]] ''5'' * {{ita}}: [[dizionario]] {{g|m}} * {{zul}}: [[isichazimazwi]] ''4'' {{cuối}} {{-related-}} * [[tự điển]] [[Thể loại:Danh từ tiếng Việt]] l8et94eqp8syxs86to2ew3v1zo049au 2350885 2350638 2026-05-07T10:38:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350885 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-paro-}} {{đầu}} :* [[tụ điện]] :* [[tư điền]] :* [[tứ diện]] {{giữa}} :* [[tự điền]] :* [[tự điển]] :* [[tự điền]] :* [[tự điển]] {{cuối}} [[Hình:Latin dictionary.jpg|thumb|từ điển]] {{-noun-}} (bộ, cuốn, quyển) '''từ điển''' # Bộ [[sách]] cho [[danh sách]] các [[từ#Danh từ|từ]] (được [[sắp xếp]] theo [[thứ tự]] ABC), thường [[giải thích]] [[ý nghĩa]], [[từ nguyên]], cách [[dùng]], [[dịch]], cách [[phát âm]] và thường kèm theo các [[ví dụ]] về cách [[sử dụng]] từ đó. Có loại từ điển gồm nhiều hơn một [[ngôn ngữ]] giúp người đọc có thể dịch nghĩa của mỗi từ từ [[ngôn ngữ]] này sang (những) [[ngôn ngữ]] kia. #: ''Hãy tra cứu bộ '''từ điển''' mở Wiktionary.'' # Cuốn sách như ở trên nhưng chỉ [[chuyên môn]] về việc dịch từ. #: '''''Từ điển''' tiếng Việt.'' #: '''''Từ điển''' Anh–Việt.'' #: '''''Từ điển''' Việt–Anh.'' #: '''''Từ điển''' Anh–Pháp–Việt.'' # {{@|tin học}} {{see-entry|mảng kết hợp}} {{-trans-}} {{đầu}} * {{ara}}: [[قاموس]] (''qāmūs''), [[معجم]] (''mu'duam'') * {{sqi}}: [[fjalor]] * {{eng}}: [[dictionary]], [[wordbook]] * {{hye}}: (''pararan'') * {{aze}}: [[lüghɘt]] * {{pol}}: [[słownik]] * {{fas}}: [[کتب لغت]] * {{isl}}: [[ordabóg]] * {{eus}}: [[hiztegi]] * {{por}}: [[dicionário]] {{g|m}} * {{ina}}: [[dictionario]] * {{bos}}: [[rječnik]] * {{bre}}: [[geriadur]] * {{bul}}: [[речник]] (''rečnik'') {{g|m}} * {{cat-old}}: [[diccionari]] {{g|m}} * {{dan}}: [[ordbog]] * {{heb}}: [[מילון]] (''milon'') * {{deu}}: [[Wörterbuch]] {{n}} * {{est}}: [[sõnaraamat]] * {{fry}}: [[wurdboek]] * {{glg}}: [[diccionario]] {{g|m}} * {{nld}}: [[woordenboek]] {{n}} * {{haw}}: [[puke wehewehe ‘ōlelo]] * {{hin}}: [[शब्दकोश]] (''shabdakosh''), [[कोश]] (''kosh'') * {{hun}}: [[szótár]] * {{ell}}: [[λεξικό]] (''lexikó'') {{n}} * {{ind}}: [[kamus]] * {{gle}}: [[foclóir]] {{g|m}} * {{kan}}: [[ನಿಘಂಟು]] (''nighangṭu''), [[ಅರ್ಥಕೋಶ]] (''arthakōsh'') * {{khm}}: [[វចនានុកម]] (''vajnanukrom'') * {{kur}}: [[ferheng]], [[khebernivis]], [[loghet]] * {{lat}}: [[dictionarium]] {{n}} * {{lav}}: [[vardnica]] {{giữa}} * {{lit}}: [[žodynas]] {{g|m}} * {{ltz}}: [[Wierderbuch]] {{n}}, [[Dixionär]] {{g|m}} * {{mlt}}: [[dizzjunarju]] (''dittsyunaryu'') * {{mnc}}: (''buleku bithe'') * {{nor}}: [[ordbok]] * {{rus}}: [[словарь]] (''slovar’'') {{g|m}} * {{jpn}}: [[辞書]] (じしょ, ''jisho''); [[辞典]] (じてん, ''jiten'') * {{fin}}: [[sanakirja]] * {{san}}: [[निघण्टु]] (nighaṇṭu) * {{fra}}: [[dictionnaire]] {{g|m}} * {{epo}}: [[vortaro]] * {{ron}}: [[dicţionar]] {{n}} * {{ces}}: [[slovník]] {{g|m}} * {{slk}}: [[slovník]] * {{slv}}: [[slovar]] {{g|m}} * {{som}}: [[qaamuus]], [[abwan-ka]] * {{swa}}: [[kamusi]] ''5'' * {{tam}}: (''akharaadhi'') * {{tat}}: [[süzlek]] * {{spa}}: [[diccionario]] {{g|m}} * {{tha}}: [[พจนานุกรม]] (''photnanukrom'') * {{tur}}: [[sözlük]] * {{swe}}: [[ordbok]] * {{kor}}: [[사전]] (''sajeon'') * {{zho}}: phồn thể: [[辭典]], [[詞典]], giản thể: [[词典]] (''cí diǎn'', [[từ điển]]) * {{urd}}: [[لغت]] (''lughat'') * {{vol}}: [[vödabuk]], [[vödasbuk]] * {{cym}}: [[geiriadur]] * {{xho}}: [[idikshinari]] ''5'' * {{ita}}: [[dizionario]] {{g|m}} * {{zul}}: [[isichazimazwi]] ''4'' {{cuối}} {{-related-}} * [[tự điển]] [[Thể loại:Danh từ tiếng Việt]] agw2zkf15sfjzu6kiouhl7qw5ug9dy7 Bản mẫu:cat 10 1048 2350839 2026124 2026-05-07T08:17:07Z Kateru Zakuro 34522 Đổi hướng đến [[Bản mẫu:categorize]] 2350839 wikitext text/x-wiki #REDIRECT [[Template:categorize]] qf7wsa0hms5gpk8lczwvhcbl3kyiu1u máy vi tính 0 1106 2350639 2280681 2026-05-07T07:52:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350639 wikitext text/x-wiki {{-vie-}} {{-info-|Máy tính}} {{-pron-}} {{vie-pron|máy|vi|tính}} {{-etymology-}} [[máy]] + [[vi tính]] {{-noun-}} '''máy vi tính''' # Một [[thiết bị]] hay [[hệ thống]] [[điện tử]] có [[khả năng]] [[xử lý dữ liệu]], dùng để [[tính toán]] hay [[kiểm soát]] các [[hoạt động]] mà có thể [[biểu diễn]] dưới [[dạng]] [[số]] hay [[quy luật]] [[lô-gích]]. #: ''Các dữ liệu đã được nhập vào '''máy vi tính'''.'' {{-syn-}} * [[điện toán]] * [[máy điện toán]] * [[máy tính]] * [[máy tính điện tử]] * [[vi tính]] {{-related-}} * [[câu lệnh]] * [[cương liệu]] * [[máy chủ]] * [[máy tính bỏ túi]] * [[máy tính cá nhân]] * [[máy tính để bàn]] * [[máy tính toán]] * [[máy tính xách tay]] * [[máy truy tìm dữ liệu]] * [[mệnh lệnh]] * [[nhu liệu]] * [[phần cứng]] * [[phần mềm]] * [[siêu máy tính]] {{-trans-}} {{đầu}} * {{ara}}: [[كمبيوتر]] (''kmbyutr'') * {{eng}}: [[computer]] * {{pol}}: [[komputer]] * {{isl}}: [[tölva]] * {{por}}: [[computador]] * {{ina}}: [[computator]] * {{bre}}: [[urzhiataer]] {{g|m}}, [[urzhiataerioù]] {{plur}} * {{cat-2}}: [[ordinador]] {{g|m}} * {{dan}}: [[computer]] {{g|m}}, [[rekenaar]] {{g|m}} * {{heb}}: [[מחשב]] * {{deu}}: [[Computer]] {{g|m}}, [[Rechner]] {{g|m}} * {{dzo}}: [['logrig'we]] * {{nld}}: [[computer]] {{g|m}} * {{kor}}: [[컴퓨터]] (''keompyuteo'') * {{hin}}: ''[[sanghanak]]'' * {{hun}}: [[számitogép]] * {{ell}}: [[υπολογιστής]] {{g|m}} * {{ind}}: [[komputer]] * {{lav}}: [[dators]] {{giữa}} * {{mri}}: [[rorohiko]] * {{rus}}: [[компьютер]] (''kompyuter'') {{g|m}} * {{jpn}}: [[コンピュータ]] (''kompyūta''), [[計算機]] ([[けいさんき]], [[kế toán]] [[ky]], ''keisanki'') * {{fin}}: [[tietokone]] * {{fra}}: [[ordinateur]] {{g|m}} * {{epo}}: [[komputilo]] * {{ron}}: [[computator]] {{g|m}}, [[ordinator]] {{g|m}} * {{ces}}: [[počítač]] {{g|m}} * {{slk}}: [[počítač]] {{g|m}} * {{spa}}: [[ordenador]] {{g|m}} {{term|Tây Ban Nha, Guatemala, El Salvador, Panama, Honduras, Dominican Republic, Nicaragua}}, [[computadora]] {{f}} {{term|Mexico, Puerto Rico, Venezuela, Argentina, Peru, Uruguay, Cuba, Costa Rica, Bolivia, Paraguay}}, [[computador]] {{g|m}} {{term|Chile, Columbia, Peru}} * {{tur}}: [[bilgisayarı]] * {{swe}}: [[dator]] * {{zho}}: [[计算机]] ([[kế toán]] [[ky]], ''jìsuànji''), [[电脑]] ([[điện]] [[não]], ''diànnăo'') * {{vol}}: [[kompütöm]] * {{ita}}: [[computer]] {{g|m}} * {{yid}}: [[קאָמפּיוטער]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Máy vi tính]] [[Thể loại:Công nghệ]] bxan5dtscm2gzyakamwbi35fkomrzfp 2350886 2350639 2026-05-07T10:38:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350886 wikitext text/x-wiki {{-vie-}} {{-info-|Máy tính}} {{-pron-}} {{vie-pron|máy|vi|tính}} {{-etymology-}} [[máy]] + [[vi tính]] {{-noun-}} '''máy vi tính''' # Một [[thiết bị]] hay [[hệ thống]] [[điện tử]] có [[khả năng]] [[xử lý dữ liệu]], dùng để [[tính toán]] hay [[kiểm soát]] các [[hoạt động]] mà có thể [[biểu diễn]] dưới [[dạng]] [[số]] hay [[quy luật]] [[lô-gích]]. #: ''Các dữ liệu đã được nhập vào '''máy vi tính'''.'' {{-syn-}} * [[điện toán]] * [[máy điện toán]] * [[máy tính]] * [[máy tính điện tử]] * [[vi tính]] {{-related-}} * [[câu lệnh]] * [[cương liệu]] * [[máy chủ]] * [[máy tính bỏ túi]] * [[máy tính cá nhân]] * [[máy tính để bàn]] * [[máy tính toán]] * [[máy tính xách tay]] * [[máy truy tìm dữ liệu]] * [[mệnh lệnh]] * [[nhu liệu]] * [[phần cứng]] * [[phần mềm]] * [[siêu máy tính]] {{-trans-}} {{đầu}} * {{ara}}: [[كمبيوتر]] (''kmbyutr'') * {{eng}}: [[computer]] * {{pol}}: [[komputer]] * {{isl}}: [[tölva]] * {{por}}: [[computador]] * {{ina}}: [[computator]] * {{bre}}: [[urzhiataer]] {{g|m}}, [[urzhiataerioù]] {{plur}} * {{cat-old}}: [[ordinador]] {{g|m}} * {{dan}}: [[computer]] {{g|m}}, [[rekenaar]] {{g|m}} * {{heb}}: [[מחשב]] * {{deu}}: [[Computer]] {{g|m}}, [[Rechner]] {{g|m}} * {{dzo}}: [['logrig'we]] * {{nld}}: [[computer]] {{g|m}} * {{kor}}: [[컴퓨터]] (''keompyuteo'') * {{hin}}: ''[[sanghanak]]'' * {{hun}}: [[számitogép]] * {{ell}}: [[υπολογιστής]] {{g|m}} * {{ind}}: [[komputer]] * {{lav}}: [[dators]] {{giữa}} * {{mri}}: [[rorohiko]] * {{rus}}: [[компьютер]] (''kompyuter'') {{g|m}} * {{jpn}}: [[コンピュータ]] (''kompyūta''), [[計算機]] ([[けいさんき]], [[kế toán]] [[ky]], ''keisanki'') * {{fin}}: [[tietokone]] * {{fra}}: [[ordinateur]] {{g|m}} * {{epo}}: [[komputilo]] * {{ron}}: [[computator]] {{g|m}}, [[ordinator]] {{g|m}} * {{ces}}: [[počítač]] {{g|m}} * {{slk}}: [[počítač]] {{g|m}} * {{spa}}: [[ordenador]] {{g|m}} {{term|Tây Ban Nha, Guatemala, El Salvador, Panama, Honduras, Dominican Republic, Nicaragua}}, [[computadora]] {{f}} {{term|Mexico, Puerto Rico, Venezuela, Argentina, Peru, Uruguay, Cuba, Costa Rica, Bolivia, Paraguay}}, [[computador]] {{g|m}} {{term|Chile, Columbia, Peru}} * {{tur}}: [[bilgisayarı]] * {{swe}}: [[dator]] * {{zho}}: [[计算机]] ([[kế toán]] [[ky]], ''jìsuànji''), [[电脑]] ([[điện]] [[não]], ''diànnăo'') * {{vol}}: [[kompütöm]] * {{ita}}: [[computer]] {{g|m}} * {{yid}}: [[קאָמפּיוטער]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Máy vi tính]] [[Thể loại:Công nghệ]] 2lgrzt4hfledz62gyr5woeufhzc1ie0 yêu 0 1358 2350801 2273613 2026-05-07T08:07:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350801 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} *[[要]]: [[yêu]], [[yếu]] *[[殀]]: [[yểu]], [[yêu]] *[[約]]: [[yêu]], [[ước]] *[[吆]]: [[yêu]], [[ao]] *[[沋]]: [[yêu]], [[vưu]] *[[腰]]: [[yêu]] *[[昐]]: [[yêu]], [[phân]] *[[喓]]: [[yêu]] *[[妖]]: [[yêu]] *[[訞]]: [[yêu]] *[[约]]: [[yêu]], [[ước]] *[[𡆩]]: [[yêu]] *[[夭]]: [[yểu]], [[yêu]] *[[咬]]: [[yêu]], [[giao]], [[giảo]] *[[喲]]: [[yêu]], [[ước]] *[[芺]]: [[yêu]], [[áo]], [[ảo]] {{mid}} *[[麽]]: [[ma]], [[yêu]] *[[徼]]: [[kiếu]], [[kiểu]], [[kiêu]], [[yêu]], [[khiếu]] *[[祅]]: [[yêu]] *[[祆]]: [[hiên]], [[yêu]], [[tiên]] *[[么]]: [[ma]], [[yêu]], [[ao]] *[[𡇘]]: [[yêu]] *[[邀]]: [[yêu]] *[[哟]]: [[yêu]], [[ước]] *[[齩]]: [[yêu]], [[giảo]] *[[𦝫]]: [[yêu]] *[[麼]]: [[ma]], [[yêu]] *[[天]]: [[yêu]], [[thiên]] *[[婹]]: [[yêu]] *[[幺]]: [[ma]], [[yêu]] *[[葽]]: [[yêu]] *[[杫]]: [[yêu]] {{bottom}} {{-hanviet-t-}} {{top}} *[[要]]: [[yêu]], [[yếu]] *[[邀]]: [[yêu]] *[[夭]]: [[yểu]], [[yêu]] *[[腰]]: [[yêu]] {{mid}} *[[妖]]: [[yêu]] *[[幺]]: [[yêu]] *[[徼]]: [[kiếu]], [[kiêu]], [[yêu]] {{bottom}} {{-nôm-}} {{top}} *[[要]]: [[yêu]], [[eo]], [[yếu]], [[éo]] *[[殀]]: [[ẹo]], [[yêu]], [[yều]], [[ẽo]], [[yểu]], [[ẻo]] *[[祅]]: [[yêu]] *[[約]]: [[yêu]], [[ước]] *[[㤇]]: [[yêu]] *[[吆]]: [[yêu]] *[[邀]]: [[yêu]] *[[么]]: [[yêu]], [[ma]] *[[齩]]: [[yêu]], [[giảo]] *[[祆]]: [[hiên]], [[yêu]], [[tiên]] *[[夭]]: [[yêu]], [[ỉu]], [[èo]], [[eo]], [[yếu]], [[yểu]] {{mid}} *[[咬]]: [[yêu]], [[giào]], [[giảo]], [[rao]] *[[腰]]: [[yêu]], [[eo]], [[oeo]] *[[喓]]: [[yêu]], [[eo]], [[éo]] *[[约]]: [[yêu]], [[ước]] *[[妖]]: [[yêu]], [[èo]], [[ẽo]], [[ẻo]] *[[𢞅]]: [[yêu]], [[éo]] *[[幺]]: [[yêu]], [[ma]] *[[葽]]: [[yêu]] *[[徼]]: [[yêu]], [[kiếu]], [[khiếu]], [[kiêu]], [[kiểu]], [[khỉu]] *[[訞]]: [[yêu]] {{bottom}} {{-verb-}} '''yêu''' #Có [[tình cảm]] [[thắm thiết]] dành riêng cho một người nào đó, muốn chung sống và cùng nhau gắn bó [[cuộc đời]]. #:'''''Yêu''' nhau.'' #:''Người '''yêu'''.'' #Có [[tình cảm]] [[dễ chịu]] khi [[tiếp xúc]] với một [[đối tượng]] nào đó, muốn [[gần gũi]] và thường [[sẵn sàng]] vì đối tượng đó mà [[hết lòng]]. #:''Mẹ '''yêu''' con.'' #:'''''Yêu''' nghề.'' #:'''''Yêu''' đời.'' #:''Trông thật đáng '''yêu'''.'' #:'''''Yêu''' nên tốt, ghét nên xấu (tục ngữ).'' #Từ dùng sau một [[động từ]] trong những [[tổ hợp]] tả một [[hành vi]] về [[hình thức]] là [[chê trách]], [[đánh mắng]] một cách [[nhẹ nhàng]], nhưng thật ra là [[biểu thị]] [[tình cảm]] [[thương yêu]]. #:''Mẹ mắng '''yêu''' con.'' #:''Nguýt '''yêu'''.'' #:''Tát '''yêu'''.'' {{-ant-}} *[[ghét]] {{-drv-}} {{đầu}} * [[yêu chuộng]] * [[yêu dấu]] * [[yêu đương]] * [[yêu mến]] * [[yêu quý]] * [[yêu thương]] {{cuối}} {{-trans-}} '''có tình cảm thắm thiết''' {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| *{{cat-2}}: [[estimar]], [[voler]] *{{zh}}: [[爱]]/[[愛]] (ai), [[热爱]]/[[熱愛]] (re'ai) *{{cs}}: [[milovat]] *{{nl}}: [[houden van]], [[beminnen]], [[liefhebben]] *{{eo}}: [[ami]] *{{et}}: [[armastama]] *{{fil}}: [[umibig]] *{{fi}}: [[rakastaa]] *{{fr}}: [[aimer]] *{{de}}: [[lieben]] *{{he}}: [[לאהוב]] *{{it}}: [[amare]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| *{{ja}}: [[恋する]] (こいする, koisuru), [[愛する]] (あいする, aisuru) *{{lv}}: [[mīlēt]] *{{pt}}: [[amar]] *{{ru}}: [[любить]] (ljúbit') *{{ro}}: [[iubi]] *{{es}}: [[amar]], [[querer]] *{{sk}}: [[milovať]], [[ľúbiť]] *{{sv}}: [[älska]], [[vara kär i]] *{{ta}}: [[காதலி]] (between man and woman-sexual love), [[அன்பு செலுத்து]] (common love) *{{mr}}: PREM |} |} '''tình cảm dễ chịu, thích thú''' {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| *{{cat-2}}: [[agradar]] *{{zh}}: [[喜欢]]/[[喜歡]] (xihuan), [[爱好]]/[[愛好]] (aihao) *{{eo}}: [[ŝati]] *{{et}}: [[armastama]] *{{fi}}: [[pitää]] [[paljon]]/[[kovasti]], [[rakastaa]] *{{fr}}: [[aimer]] [[beaucoup]], aimer [[bien]], [[vouloir]] [[beaucoup]] *{{de}}: [[lieben]] *{{it}}: [[volere]] [[molto]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| *{{ja}}: [[気に入っている]] *{{lv}}: [[patikt]], [[mīlēt]] *{{pt}}: [[adorar]], [[amar]] *{{ru}}: [[любить]] (ljúbit') *{{es}}: [[encantar]], [[gustar]], [[adorar]] |} |} {{-noun-}} '''yêu''' # Vật tưởng tượng trong cổ tích, thần thoại, hình thù kì dị, chuyên làm hại người. {{-syn-}} *[[yêu tinh]] *[[yêu ma]] {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} qw411f2dxepkrhf82cde0vr1mp77etp 2350887 2350801 2026-05-07T10:38:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350887 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} *[[要]]: [[yêu]], [[yếu]] *[[殀]]: [[yểu]], [[yêu]] *[[約]]: [[yêu]], [[ước]] *[[吆]]: [[yêu]], [[ao]] *[[沋]]: [[yêu]], [[vưu]] *[[腰]]: [[yêu]] *[[昐]]: [[yêu]], [[phân]] *[[喓]]: [[yêu]] *[[妖]]: [[yêu]] *[[訞]]: [[yêu]] *[[约]]: [[yêu]], [[ước]] *[[𡆩]]: [[yêu]] *[[夭]]: [[yểu]], [[yêu]] *[[咬]]: [[yêu]], [[giao]], [[giảo]] *[[喲]]: [[yêu]], [[ước]] *[[芺]]: [[yêu]], [[áo]], [[ảo]] {{mid}} *[[麽]]: [[ma]], [[yêu]] *[[徼]]: [[kiếu]], [[kiểu]], [[kiêu]], [[yêu]], [[khiếu]] *[[祅]]: [[yêu]] *[[祆]]: [[hiên]], [[yêu]], [[tiên]] *[[么]]: [[ma]], [[yêu]], [[ao]] *[[𡇘]]: [[yêu]] *[[邀]]: [[yêu]] *[[哟]]: [[yêu]], [[ước]] *[[齩]]: [[yêu]], [[giảo]] *[[𦝫]]: [[yêu]] *[[麼]]: [[ma]], [[yêu]] *[[天]]: [[yêu]], [[thiên]] *[[婹]]: [[yêu]] *[[幺]]: [[ma]], [[yêu]] *[[葽]]: [[yêu]] *[[杫]]: [[yêu]] {{bottom}} {{-hanviet-t-}} {{top}} *[[要]]: [[yêu]], [[yếu]] *[[邀]]: [[yêu]] *[[夭]]: [[yểu]], [[yêu]] *[[腰]]: [[yêu]] {{mid}} *[[妖]]: [[yêu]] *[[幺]]: [[yêu]] *[[徼]]: [[kiếu]], [[kiêu]], [[yêu]] {{bottom}} {{-nôm-}} {{top}} *[[要]]: [[yêu]], [[eo]], [[yếu]], [[éo]] *[[殀]]: [[ẹo]], [[yêu]], [[yều]], [[ẽo]], [[yểu]], [[ẻo]] *[[祅]]: [[yêu]] *[[約]]: [[yêu]], [[ước]] *[[㤇]]: [[yêu]] *[[吆]]: [[yêu]] *[[邀]]: [[yêu]] *[[么]]: [[yêu]], [[ma]] *[[齩]]: [[yêu]], [[giảo]] *[[祆]]: [[hiên]], [[yêu]], [[tiên]] *[[夭]]: [[yêu]], [[ỉu]], [[èo]], [[eo]], [[yếu]], [[yểu]] {{mid}} *[[咬]]: [[yêu]], [[giào]], [[giảo]], [[rao]] *[[腰]]: [[yêu]], [[eo]], [[oeo]] *[[喓]]: [[yêu]], [[eo]], [[éo]] *[[约]]: [[yêu]], [[ước]] *[[妖]]: [[yêu]], [[èo]], [[ẽo]], [[ẻo]] *[[𢞅]]: [[yêu]], [[éo]] *[[幺]]: [[yêu]], [[ma]] *[[葽]]: [[yêu]] *[[徼]]: [[yêu]], [[kiếu]], [[khiếu]], [[kiêu]], [[kiểu]], [[khỉu]] *[[訞]]: [[yêu]] {{bottom}} {{-verb-}} '''yêu''' #Có [[tình cảm]] [[thắm thiết]] dành riêng cho một người nào đó, muốn chung sống và cùng nhau gắn bó [[cuộc đời]]. #:'''''Yêu''' nhau.'' #:''Người '''yêu'''.'' #Có [[tình cảm]] [[dễ chịu]] khi [[tiếp xúc]] với một [[đối tượng]] nào đó, muốn [[gần gũi]] và thường [[sẵn sàng]] vì đối tượng đó mà [[hết lòng]]. #:''Mẹ '''yêu''' con.'' #:'''''Yêu''' nghề.'' #:'''''Yêu''' đời.'' #:''Trông thật đáng '''yêu'''.'' #:'''''Yêu''' nên tốt, ghét nên xấu (tục ngữ).'' #Từ dùng sau một [[động từ]] trong những [[tổ hợp]] tả một [[hành vi]] về [[hình thức]] là [[chê trách]], [[đánh mắng]] một cách [[nhẹ nhàng]], nhưng thật ra là [[biểu thị]] [[tình cảm]] [[thương yêu]]. #:''Mẹ mắng '''yêu''' con.'' #:''Nguýt '''yêu'''.'' #:''Tát '''yêu'''.'' {{-ant-}} *[[ghét]] {{-drv-}} {{đầu}} * [[yêu chuộng]] * [[yêu dấu]] * [[yêu đương]] * [[yêu mến]] * [[yêu quý]] * [[yêu thương]] {{cuối}} {{-trans-}} '''có tình cảm thắm thiết''' {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| *{{cat-old}}: [[estimar]], [[voler]] *{{zh}}: [[爱]]/[[愛]] (ai), [[热爱]]/[[熱愛]] (re'ai) *{{cs}}: [[milovat]] *{{nl}}: [[houden van]], [[beminnen]], [[liefhebben]] *{{eo}}: [[ami]] *{{et}}: [[armastama]] *{{fil}}: [[umibig]] *{{fi}}: [[rakastaa]] *{{fr}}: [[aimer]] *{{de}}: [[lieben]] *{{he}}: [[לאהוב]] *{{it}}: [[amare]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| *{{ja}}: [[恋する]] (こいする, koisuru), [[愛する]] (あいする, aisuru) *{{lv}}: [[mīlēt]] *{{pt}}: [[amar]] *{{ru}}: [[любить]] (ljúbit') *{{ro}}: [[iubi]] *{{es}}: [[amar]], [[querer]] *{{sk}}: [[milovať]], [[ľúbiť]] *{{sv}}: [[älska]], [[vara kär i]] *{{ta}}: [[காதலி]] (between man and woman-sexual love), [[அன்பு செலுத்து]] (common love) *{{mr}}: PREM |} |} '''tình cảm dễ chịu, thích thú''' {| border=0 width=100% |- |bgcolor="#FFFFE0" valign=top width=48%| {| *{{cat-old}}: [[agradar]] *{{zh}}: [[喜欢]]/[[喜歡]] (xihuan), [[爱好]]/[[愛好]] (aihao) *{{eo}}: [[ŝati]] *{{et}}: [[armastama]] *{{fi}}: [[pitää]] [[paljon]]/[[kovasti]], [[rakastaa]] *{{fr}}: [[aimer]] [[beaucoup]], aimer [[bien]], [[vouloir]] [[beaucoup]] *{{de}}: [[lieben]] *{{it}}: [[volere]] [[molto]] |} | width=1% | |bgcolor="#FFFFE0" valign=top width=48%| {| *{{ja}}: [[気に入っている]] *{{lv}}: [[patikt]], [[mīlēt]] *{{pt}}: [[adorar]], [[amar]] *{{ru}}: [[любить]] (ljúbit') *{{es}}: [[encantar]], [[gustar]], [[adorar]] |} |} {{-noun-}} '''yêu''' # Vật tưởng tượng trong cổ tích, thần thoại, hình thù kì dị, chuyên làm hại người. {{-syn-}} *[[yêu tinh]] *[[yêu ma]] {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} anlsnc32x0za27jalqs6rnbxknbku47 tiếng Nga 0 1524 2350640 2280684 2026-05-07T07:52:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350640 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Nga}} {{-noun-}} '''tiếng Nga''' # [[ngôn ngữ|Ngôn ngữ]] chính của nước [[Nga]]. {{-trans-}} {{đầu}} * {{ara}}: [[روسية]] * {{afr}}: [[Russies]] * {{sqi}}: [[Rusisht]] * {{eng}}: [[Russian]] * {{hye}}: [[Ռուսական]], [[Ռուսերեն]] * {{aze}}: [[Рус]] * {{pol}}: [[rosyjski]], [[mówić]] [[po]] [[rosyjsku]] * {{fas}}: [[روسى]] * {{isl}}: [[Rússneska]] * {{eus}}: [[Errusiera]] * {{bel}}: [[Расейскай]], [[Расейская]], [[Руская]] * {{por}}: [[russo]] {{g|m}} * {{ina}}: [[russo]] * {{bre}}: [[Ruseg]], [[Rusianeg]] * {{bul}}: [[руски]] {{g|m}} * {{cat-2}}: [[rus]] {{g|m}} * {{hrv}}: [[Ruski]] * {{dan}}: [[russisk]] * {{heb}}: [[רוסית]] (Russit) * {{deu}}: [[Russisch]] {{n}} * {{est}}: [[Vene]] * {{fao}}: [[Russiskt]] * {{kat}}: [[რუსული]] * {{nld}}: [[Russisch]] * {{kor}}: [[러시아어]] * {{hin}}: [[रशियन]], [[रूसी]] * {{hun}}: [[orosz]] * {{ind}}: [[bahasa Rusia]] * {{gle}}: [[Rúisis]] * {{khm}}: [[ភាសារុសីុ]] * {{kur}}: [[Ûrisî]] * {{lav}}: [[Krievu]] * {{lit}}: [[Rusų]], [[Rusiškai]] * {{msa}}: [[Rusia]] * {{mkd}}: [[Руски]] {{giữa}} * {{mlt}}: [[Russu]] * {{mdf}}: [[Рузонь]] * {{mon}}: [[Орос]] * {{nor}}: [[Russisk]] * {{nep}}: [[रसियाली]] * {{rus}}: [[русский язык]] {{g|m}}, [[по-русски]] * {{jpn}}: [[ロシア語]] (''roshia-go'') * {{oci}}: [[Rus]] * {{fin}}: [[venäjä]] * {{fra}}: [[russe]] {{g|m}} * {{epo}}: [[Rusa]] * {{ron}}: [[rusă]] {{f}} * {{smn}}: [[ruošakiela]] * {{ces}}: [[ruský]] * {{srp}}: [[Руски]] * {{slk}}: [[ruština]] {{f}} * {{slv}}: [[ruščina]] {{f}} * {{som}}: [[Ruush]] * {{wen}}: [[Rušćina]] * {{swa}}: [[Kirusi]] {{g|m}} * {{tgl}}: [[Ruso]] * {{tam}}: [[ருஸ்சியன்]] * {{tat}}: [[Рус]] * {{spa}}: [[ruso]] {{g|m}} * {{tha}}: [[ภาษารัสเซีย]] * {{tur}}: [[Rusça]] * {{swe}}: [[ryska]] * {{zho}}: [[俄語]] ([[Nga ngữ]], ''È yǔ'') * {{ukr}}: [[Російський]] * {{urd}}: [[روسي]] * {{cym}}: [[Rwsieg]] * {{wln}}: [[Rûsse]] * {{ita}}: [[russo]] * {{yid}}: [[רוסיש]] * {{zul}}: [[Isirashiya]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Nga]] [[Thể loại:Danh từ riêng tiếng Việt]] iudgbmres23qzvm9do4xbgwzvnq7yeb 2350888 2350640 2026-05-07T10:38:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350888 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Nga}} {{-noun-}} '''tiếng Nga''' # [[ngôn ngữ|Ngôn ngữ]] chính của nước [[Nga]]. {{-trans-}} {{đầu}} * {{ara}}: [[روسية]] * {{afr}}: [[Russies]] * {{sqi}}: [[Rusisht]] * {{eng}}: [[Russian]] * {{hye}}: [[Ռուսական]], [[Ռուսերեն]] * {{aze}}: [[Рус]] * {{pol}}: [[rosyjski]], [[mówić]] [[po]] [[rosyjsku]] * {{fas}}: [[روسى]] * {{isl}}: [[Rússneska]] * {{eus}}: [[Errusiera]] * {{bel}}: [[Расейскай]], [[Расейская]], [[Руская]] * {{por}}: [[russo]] {{g|m}} * {{ina}}: [[russo]] * {{bre}}: [[Ruseg]], [[Rusianeg]] * {{bul}}: [[руски]] {{g|m}} * {{cat-old}}: [[rus]] {{g|m}} * {{hrv}}: [[Ruski]] * {{dan}}: [[russisk]] * {{heb}}: [[רוסית]] (Russit) * {{deu}}: [[Russisch]] {{n}} * {{est}}: [[Vene]] * {{fao}}: [[Russiskt]] * {{kat}}: [[რუსული]] * {{nld}}: [[Russisch]] * {{kor}}: [[러시아어]] * {{hin}}: [[रशियन]], [[रूसी]] * {{hun}}: [[orosz]] * {{ind}}: [[bahasa Rusia]] * {{gle}}: [[Rúisis]] * {{khm}}: [[ភាសារុសីុ]] * {{kur}}: [[Ûrisî]] * {{lav}}: [[Krievu]] * {{lit}}: [[Rusų]], [[Rusiškai]] * {{msa}}: [[Rusia]] * {{mkd}}: [[Руски]] {{giữa}} * {{mlt}}: [[Russu]] * {{mdf}}: [[Рузонь]] * {{mon}}: [[Орос]] * {{nor}}: [[Russisk]] * {{nep}}: [[रसियाली]] * {{rus}}: [[русский язык]] {{g|m}}, [[по-русски]] * {{jpn}}: [[ロシア語]] (''roshia-go'') * {{oci}}: [[Rus]] * {{fin}}: [[venäjä]] * {{fra}}: [[russe]] {{g|m}} * {{epo}}: [[Rusa]] * {{ron}}: [[rusă]] {{f}} * {{smn}}: [[ruošakiela]] * {{ces}}: [[ruský]] * {{srp}}: [[Руски]] * {{slk}}: [[ruština]] {{f}} * {{slv}}: [[ruščina]] {{f}} * {{som}}: [[Ruush]] * {{wen}}: [[Rušćina]] * {{swa}}: [[Kirusi]] {{g|m}} * {{tgl}}: [[Ruso]] * {{tam}}: [[ருஸ்சியன்]] * {{tat}}: [[Рус]] * {{spa}}: [[ruso]] {{g|m}} * {{tha}}: [[ภาษารัสเซีย]] * {{tur}}: [[Rusça]] * {{swe}}: [[ryska]] * {{zho}}: [[俄語]] ([[Nga ngữ]], ''È yǔ'') * {{ukr}}: [[Російський]] * {{urd}}: [[روسي]] * {{cym}}: [[Rwsieg]] * {{wln}}: [[Rûsse]] * {{ita}}: [[russo]] * {{yid}}: [[רוסיש]] * {{zul}}: [[Isirashiya]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Nga]] [[Thể loại:Danh từ riêng tiếng Việt]] ms1gbqyh57y23845umdb47qw1xb0rvg vật lý học 0 1548 2350802 2284707 2026-05-07T08:07:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350802 wikitext text/x-wiki {{-vie-}} {{-noun-}} '''vật lý học''' # Một môn khoa học tự nhiên tập trung vào sự nghiên cứu vật chất và chuyển động của nó trong không gian và thời gian, cùng với những khái niệm liên quan như năng lượng và lực. #: ''Lý thuyết '''vật lý học''' đại cương.'' {{-info-}} {{-syn-}} *[[vật lý]] {{-related-}} *[[vật lý]], [[nhà vật lý]] {{-trans-}} {{đầu}} *{{en}}: [[physics]] *{{pt}}: [[física]] {{f}} *{{de}}: [[Physik]] {{f}} *{{nl}}: [[fysica]] {{f}}, [[natuurkunde]] {{f}} *{{ro}}: [[fizică]] {{f}} *{{ru}}: [[физика]] {{f}} (fízika) *{{fr}}: [[physique]] {{f}} {{giữa}} *{{fi}}: [[fysiikka]] *{{ia}}: [[physica]] {{f}} *{{es}}: [[fisica]] *{{sv}}: [[fysik]] {{g|c}} *{{cat-2}}: [[física]] {{f}} *{{it}}: [[fisica]] {{f}} *{{zho}}: [[物理学]] {{cuối}} [[Thể loại:Vật lý học| ]] iqm3g8sd5x2clnkfnccjhrbeiqdy6w4 2350889 2350802 2026-05-07T10:38:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350889 wikitext text/x-wiki {{-vie-}} {{-noun-}} '''vật lý học''' # Một môn khoa học tự nhiên tập trung vào sự nghiên cứu vật chất và chuyển động của nó trong không gian và thời gian, cùng với những khái niệm liên quan như năng lượng và lực. #: ''Lý thuyết '''vật lý học''' đại cương.'' {{-info-}} {{-syn-}} *[[vật lý]] {{-related-}} *[[vật lý]], [[nhà vật lý]] {{-trans-}} {{đầu}} *{{en}}: [[physics]] *{{pt}}: [[física]] {{f}} *{{de}}: [[Physik]] {{f}} *{{nl}}: [[fysica]] {{f}}, [[natuurkunde]] {{f}} *{{ro}}: [[fizică]] {{f}} *{{ru}}: [[физика]] {{f}} (fízika) *{{fr}}: [[physique]] {{f}} {{giữa}} *{{fi}}: [[fysiikka]] *{{ia}}: [[physica]] {{f}} *{{es}}: [[fisica]] *{{sv}}: [[fysik]] {{g|c}} *{{cat-old}}: [[física]] {{f}} *{{it}}: [[fisica]] {{f}} *{{zho}}: [[物理学]] {{cuối}} [[Thể loại:Vật lý học| ]] 0em9z6r7y829rfy9firkyn3wtkxpbu3 tình bạn 0 1584 2350641 2113321 2026-05-07T07:52:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350641 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tình|bạn}} {{-etymology-}} [[tình]] + [[bạn]] {{-noun-}} '''tình bạn''' # Việc mà mấy [[người]] là [[bạn]] với nhau. {{-related-}} * [[tình hữu nghị]] * [[giao sảo]] {{-trans-}} {{đầu}} * {{eng}}: [[friendship]] * {{pol}}: [[przyjaźń]] {{f}} * {{por}}: [[amizade]] * {{cat-2}}: [[amistat]] {{f}} * {{deu}}: [[Freundschaft]] {{f}} {{giữa}} * {{nld}}: [[vriendschap]] {{f}} * {{pap}}: [[amistat]] * {{fra}}: [[amitié]] {{f}} * {{spa}}: [[amistad]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 8xf954suzuphbuis7cmbcact8credjc 2350890 2350641 2026-05-07T10:38:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350890 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tình|bạn}} {{-etymology-}} [[tình]] + [[bạn]] {{-noun-}} '''tình bạn''' # Việc mà mấy [[người]] là [[bạn]] với nhau. {{-related-}} * [[tình hữu nghị]] * [[giao sảo]] {{-trans-}} {{đầu}} * {{eng}}: [[friendship]] * {{pol}}: [[przyjaźń]] {{f}} * {{por}}: [[amizade]] * {{cat-old}}: [[amistat]] {{f}} * {{deu}}: [[Freundschaft]] {{f}} {{giữa}} * {{nld}}: [[vriendschap]] {{f}} * {{pap}}: [[amistat]] * {{fra}}: [[amitié]] {{f}} * {{spa}}: [[amistad]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] hc56aepx1a7yz838ojcsihpvfkpls6k máy tính điện tử 0 1596 2350803 2280694 2026-05-07T08:07:48Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350803 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''máy tính điện tử''' # Một [[thiết bị]] điện tử có khả năng [[xử lý dữ liệu]] theo một tập hợp của các mệnh lệnh [[máy tính]] (hay [[câu lệnh]]) đã được chứa sẵn bên trong máy một cách tạm thời hay vĩnh viễn. #: ''Cấu hình '''máy tính điện tử'''.'' #: '''''Máy tính điện tử''' số vạn năng.'' {{-usage-}} * Không nên nhầm lẫn với ''[[máy tính toán]]''. {{-syn-}} * [[máy tính]] * [[máy vi tính]] * [[máy điện toán]] {{-trans-}} {{đầu}} * {{ar}}: [[كمبيوتر]] (kmbyutr) * {{en}}: [[computer]] * {{pl}}: [[komputer]] {{g|m}} * {{is}}: [[tölva]] * {{pt}}: [[computador]] * {{ia}}: [[computator]] * {{br}}: [[urzhiataer]] {{g|m}}, -ioù {{plur}} * {{cat-2}}: [[ordinador]] {{g|m}} * {{he}}: [[מחשב]] {{g|m}} (makhshév) * {{dz}}: [['logrig'we]] * {{da}}: [[computer]] {{g|m}}, [[rekenaar]] {{g|m}} * {{de}}: [[Computer]] {{g|m}}, [[Rechner]] {{g|m}} * {{nl}}: [[computer]] {{g|m}} * {{hi}}: [[संगणक]] (sanghanak) * {{hu}}: [[számitogép]] * {{el}}: [[υπολογιστής]] {{g|m}} (ypologistís) * {{id}}: [[komputer]] * {{lv}}: [[dators]] {{g|m}} * {{mi}}: [[rorohiko]] * {{ru}}: [[компьютер]] (kompyuter) {{g|m}} * {{ja}}: [[コンピュータ]] (kompyūta), [[計算機]] (けいさんき, keisanki) * {{fr}}: [[ordinateur]] {{g|m}} * {{fi}}: [[tietokone]] * {{eo}}: [[komputilo]] * {{ro}}: [[computator]] {{g|m}}, [[ordinator]] {{g|m}} * {{cs}}: [[počítač]] {{g|m}} * {{sk}}: [[počítač]] {{g|m}} * {{es}}: *:[[ordenador]] {{g|m}} (Tây Ban Nha, Guatemala, El Salvador, Panama, Honduras, Dominican Republic, Nicaragua) *:[[computadora]] {{f}} (Mễ Tây Cơ, Puerto Rico, Venezuela, Argentina, Peru, Uruguay, Cuba, Costa Rica, Bolivia, Paraguay) *:[[computador]] {{g|m}} (Chile, Columbia, và lúc thì ở Peru) * {{tr}}: [[bilgisayar]] * {{sv}}: [[dator]] {{g|m}} * {{ko}}: [[컴퓨터]] (keompyuteo) * {{zh}}: [[计算机]]/[[电脑]] * {{vo}}: [[kompütöm]] * {{it}}: [[computer]] {{g|m}} * {{yi}}: [[קאָמפּיוטער]] {{g|m}} (kompyuter) {{cuối}} [[Category:Danh từ]] [[Category:Máy vi tính]] [[Thể loại:Công nghệ]] ------------- bzfkuee4zap9pyaxdgo4g8v6jzybvoh 2350891 2350803 2026-05-07T10:38:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350891 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''máy tính điện tử''' # Một [[thiết bị]] điện tử có khả năng [[xử lý dữ liệu]] theo một tập hợp của các mệnh lệnh [[máy tính]] (hay [[câu lệnh]]) đã được chứa sẵn bên trong máy một cách tạm thời hay vĩnh viễn. #: ''Cấu hình '''máy tính điện tử'''.'' #: '''''Máy tính điện tử''' số vạn năng.'' {{-usage-}} * Không nên nhầm lẫn với ''[[máy tính toán]]''. {{-syn-}} * [[máy tính]] * [[máy vi tính]] * [[máy điện toán]] {{-trans-}} {{đầu}} * {{ar}}: [[كمبيوتر]] (kmbyutr) * {{en}}: [[computer]] * {{pl}}: [[komputer]] {{g|m}} * {{is}}: [[tölva]] * {{pt}}: [[computador]] * {{ia}}: [[computator]] * {{br}}: [[urzhiataer]] {{g|m}}, -ioù {{plur}} * {{cat-old}}: [[ordinador]] {{g|m}} * {{he}}: [[מחשב]] {{g|m}} (makhshév) * {{dz}}: [['logrig'we]] * {{da}}: [[computer]] {{g|m}}, [[rekenaar]] {{g|m}} * {{de}}: [[Computer]] {{g|m}}, [[Rechner]] {{g|m}} * {{nl}}: [[computer]] {{g|m}} * {{hi}}: [[संगणक]] (sanghanak) * {{hu}}: [[számitogép]] * {{el}}: [[υπολογιστής]] {{g|m}} (ypologistís) * {{id}}: [[komputer]] * {{lv}}: [[dators]] {{g|m}} * {{mi}}: [[rorohiko]] * {{ru}}: [[компьютер]] (kompyuter) {{g|m}} * {{ja}}: [[コンピュータ]] (kompyūta), [[計算機]] (けいさんき, keisanki) * {{fr}}: [[ordinateur]] {{g|m}} * {{fi}}: [[tietokone]] * {{eo}}: [[komputilo]] * {{ro}}: [[computator]] {{g|m}}, [[ordinator]] {{g|m}} * {{cs}}: [[počítač]] {{g|m}} * {{sk}}: [[počítač]] {{g|m}} * {{es}}: *:[[ordenador]] {{g|m}} (Tây Ban Nha, Guatemala, El Salvador, Panama, Honduras, Dominican Republic, Nicaragua) *:[[computadora]] {{f}} (Mễ Tây Cơ, Puerto Rico, Venezuela, Argentina, Peru, Uruguay, Cuba, Costa Rica, Bolivia, Paraguay) *:[[computador]] {{g|m}} (Chile, Columbia, và lúc thì ở Peru) * {{tr}}: [[bilgisayar]] * {{sv}}: [[dator]] {{g|m}} * {{ko}}: [[컴퓨터]] (keompyuteo) * {{zh}}: [[计算机]]/[[电脑]] * {{vo}}: [[kompütöm]] * {{it}}: [[computer]] {{g|m}} * {{yi}}: [[קאָמפּיוטער]] {{g|m}} (kompyuter) {{cuối}} [[Category:Danh từ]] [[Category:Máy vi tính]] [[Thể loại:Công nghệ]] ------------- ldzj1odmacuxy7fd5zkf69cinv6f4vb vàng 0 1611 2350804 2280696 2026-05-07T08:07:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350804 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Au,79.jpg|thumb|vàng]] {{-pron-}} {{vie-pron|vàng}} {{-nôm-}} {{top}} *[[癀]]: [[quảng]], [[vàng]], [[hoàng]] *[[横]]: [[vàng]], [[hoạnh]], [[hoành]] *[[鐄]]: [[vàng]], [[hoàng]] *[[󰊊]]: [[vàng]] {{mid}} *[[傍]]: [[phàng]], [[phành]], [[bàng]], [[vàng]], [[bạng]] *[[󰕵]]: [[vàng]] *[[黃]]: [[huỳnh]], [[vàng]], [[hoàng]] {{bottom}} {{-noun-}} #[[nguyên tố|Nguyên tố]] [[hoá học]] có kí hiệu '''Au''' và số nguyên tử 79 trong bảng tuần hoàn, một của [[kim loại quý]] #: ''Đeo dây chuyền '''vàng'''.'' #: ''Cửa hàng bán '''vàng''' bạc.'' # Tiền giấy, quần áo giấy, ô tô giấy, mũ giấy, giày dép giấy,... để cúng những người đã qua đời. #: ''Đốt '''vàng''' mã.'' #: ''Hoá '''vàng''' sau ngày Tết.'' {{-trans-}} {{đầu}} :*{{nl}}: [[goud]] :*{{af}}: [[goud]] :*{{sq}}: [[ar]] :*{{ar}}: [[ذهب]] (dhahab) :*{{eu}}: [[urrea]] :*{{be}}: [[золата]] :*{{bs}}: [[zlato]] :*{{br}}: [[aour]] {{g|m}} :*{{bg}}: [[злато]] {{n}} :*{{cat-2}}: [[or]] {{g|m}} :*{{zh}}: [[金]] :*{{kw}}: [[owr]] :*{{hr}}: [[zlato]] :*{{cs}}: [[zlato]] {{n}} :*{{da}}: [[guld]] :*{{en}}: [[gold]] :*{{nl}}: [[goud]] {{n}} :*{{eo}}: [[oro]] :*{{et}}: [[kuld]] :*{{fo}}: [[gull]] :*{{fi}}: [[kulta]] :*{{fr}}: [[or]] {{g|m}} :*{{fy}}: [[goud]] :*{{fur}}: [[aur]] :*{{gl}}: [[ouro]] :*{{ka}}: [[ოქრო]] :*{{de}}: [[Gold]] {{n}} :*{{el}}: [[χρυσάφι]] {{n}} :*{{gn}}: [[itaju]], [[kuarepotiju]] :*{{he}}: [[זהב]] {{g|m}} :*{{hu}}: [[arany]] :*{{is}}: [[gull]] :*{{id}}: [[emas]] :*{{ia}}: [[auro]] :*{{ga}}: [[ór]] :*{{it}}: [[oro]] {{g|m}} {{giữa}} :*{{ja}}: [[金]] (きん, kin) :*{{csb}}: [[złoto]] :*{{kk}}: [[алтын]] :*{{ko}}: [[금]] ([[金]]) :*{{lo}}: [[ຄຳ]] :*{{la}}: [[aurum]] :*{{lv}}: [[zelts]] :*{{lt}}: [[auksas]] :*{{langname|lb}}: [[gold]] :*{{mk}}: [[злато]] :*{{ms}}: [[aurum]], [[emas]] :*{{mt}}: [[deheb]] :*{{gv}}: [[airh]] :*{{mn}}: [[алт]], [[алтан]] :*{{no}}: [[gull]] :*{{hsb}}: [[złoto]] {{n}} :*{{pl}}: [[złoto]] {{n}} :*{{pt}}: [[ouro]] {{g|m}} :*{{ro}}: [[aur]] {{n}} :*{{ru}}: [[золото]] {{n}} :*{{gd}}: [[òr]] :*{{cs}}: [[zlato]] {{n}} :*{{sr}}: [[злато]] :*{{sk}}: [[zlato]] {{n}} :*{{sl}}: [[zlato]] {{n}} :*{{es}}: [[oro]] {{g|m}} :*{{sv}}: [[guld]] :*{{tgl}}: [[ginto]] :*{{tg}}: [[tillo]] :*{{th}}: [[ทองคำ]] :*{{tpn}}: [[itaîuba]] :*{{tr}}: [[altın]] :*{{uk}}: [[золото]] :*{{uz}}: [[олтин]] :*{{cy}}: [[aur]] {{g|m}} {{cuối}} {{-adj-}} # Có màu như màu của hoa mướp, của nghệ. #: ''Ngoài đồng lúa chín '''vàng'''.'' #: ''Bộ quần áo màu '''vàng'''.'' {{-trans-}} {{đầu}} :*{{en}}: {{t|en|yellow}} :*{{pt}}: [[amarelo]] :*{{cat-2}}: [[groc]] :*{{de}}: {{t|de|gelb}} :*{{ka}}: {{t|ka|ყვითელი}} :*{{nl}}: [[geel]] :*{{hu}}: [[sárga]] {{giữa}} :*{{mi}}: [[koowhai]] :*{{pap}}: [[hel]] :*{{fr}}: [[jaune]] :*{{cs}}: [[žlutý]] :*{{es}}: [[amarillo]] :*{{it}}: [[giallo]] {{cuối}} {{-related-}} *[[màu vàng]], [[mầu vàng]] {{bảng:màu sắc/vi}} {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} [[Category:Nguyên tố hóa học]] [[Category:Danh từ tiếng Việt]] [[Category:Tính từ tiếng Việt]] hb2u8pg16y99yrwn9x9t5htsa7caqiu 2350892 2350804 2026-05-07T10:38:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350892 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Au,79.jpg|thumb|vàng]] {{-pron-}} {{vie-pron|vàng}} {{-nôm-}} {{top}} *[[癀]]: [[quảng]], [[vàng]], [[hoàng]] *[[横]]: [[vàng]], [[hoạnh]], [[hoành]] *[[鐄]]: [[vàng]], [[hoàng]] *[[󰊊]]: [[vàng]] {{mid}} *[[傍]]: [[phàng]], [[phành]], [[bàng]], [[vàng]], [[bạng]] *[[󰕵]]: [[vàng]] *[[黃]]: [[huỳnh]], [[vàng]], [[hoàng]] {{bottom}} {{-noun-}} #[[nguyên tố|Nguyên tố]] [[hoá học]] có kí hiệu '''Au''' và số nguyên tử 79 trong bảng tuần hoàn, một của [[kim loại quý]] #: ''Đeo dây chuyền '''vàng'''.'' #: ''Cửa hàng bán '''vàng''' bạc.'' # Tiền giấy, quần áo giấy, ô tô giấy, mũ giấy, giày dép giấy,... để cúng những người đã qua đời. #: ''Đốt '''vàng''' mã.'' #: ''Hoá '''vàng''' sau ngày Tết.'' {{-trans-}} {{đầu}} :*{{nl}}: [[goud]] :*{{af}}: [[goud]] :*{{sq}}: [[ar]] :*{{ar}}: [[ذهب]] (dhahab) :*{{eu}}: [[urrea]] :*{{be}}: [[золата]] :*{{bs}}: [[zlato]] :*{{br}}: [[aour]] {{g|m}} :*{{bg}}: [[злато]] {{n}} :*{{cat-old}}: [[or]] {{g|m}} :*{{zh}}: [[金]] :*{{kw}}: [[owr]] :*{{hr}}: [[zlato]] :*{{cs}}: [[zlato]] {{n}} :*{{da}}: [[guld]] :*{{en}}: [[gold]] :*{{nl}}: [[goud]] {{n}} :*{{eo}}: [[oro]] :*{{et}}: [[kuld]] :*{{fo}}: [[gull]] :*{{fi}}: [[kulta]] :*{{fr}}: [[or]] {{g|m}} :*{{fy}}: [[goud]] :*{{fur}}: [[aur]] :*{{gl}}: [[ouro]] :*{{ka}}: [[ოქრო]] :*{{de}}: [[Gold]] {{n}} :*{{el}}: [[χρυσάφι]] {{n}} :*{{gn}}: [[itaju]], [[kuarepotiju]] :*{{he}}: [[זהב]] {{g|m}} :*{{hu}}: [[arany]] :*{{is}}: [[gull]] :*{{id}}: [[emas]] :*{{ia}}: [[auro]] :*{{ga}}: [[ór]] :*{{it}}: [[oro]] {{g|m}} {{giữa}} :*{{ja}}: [[金]] (きん, kin) :*{{csb}}: [[złoto]] :*{{kk}}: [[алтын]] :*{{ko}}: [[금]] ([[金]]) :*{{lo}}: [[ຄຳ]] :*{{la}}: [[aurum]] :*{{lv}}: [[zelts]] :*{{lt}}: [[auksas]] :*{{langname|lb}}: [[gold]] :*{{mk}}: [[злато]] :*{{ms}}: [[aurum]], [[emas]] :*{{mt}}: [[deheb]] :*{{gv}}: [[airh]] :*{{mn}}: [[алт]], [[алтан]] :*{{no}}: [[gull]] :*{{hsb}}: [[złoto]] {{n}} :*{{pl}}: [[złoto]] {{n}} :*{{pt}}: [[ouro]] {{g|m}} :*{{ro}}: [[aur]] {{n}} :*{{ru}}: [[золото]] {{n}} :*{{gd}}: [[òr]] :*{{cs}}: [[zlato]] {{n}} :*{{sr}}: [[злато]] :*{{sk}}: [[zlato]] {{n}} :*{{sl}}: [[zlato]] {{n}} :*{{es}}: [[oro]] {{g|m}} :*{{sv}}: [[guld]] :*{{tgl}}: [[ginto]] :*{{tg}}: [[tillo]] :*{{th}}: [[ทองคำ]] :*{{tpn}}: [[itaîuba]] :*{{tr}}: [[altın]] :*{{uk}}: [[золото]] :*{{uz}}: [[олтин]] :*{{cy}}: [[aur]] {{g|m}} {{cuối}} {{-adj-}} # Có màu như màu của hoa mướp, của nghệ. #: ''Ngoài đồng lúa chín '''vàng'''.'' #: ''Bộ quần áo màu '''vàng'''.'' {{-trans-}} {{đầu}} :*{{en}}: {{t|en|yellow}} :*{{pt}}: [[amarelo]] :*{{cat-old}}: [[groc]] :*{{de}}: {{t|de|gelb}} :*{{ka}}: {{t|ka|ყვითელი}} :*{{nl}}: [[geel]] :*{{hu}}: [[sárga]] {{giữa}} :*{{mi}}: [[koowhai]] :*{{pap}}: [[hel]] :*{{fr}}: [[jaune]] :*{{cs}}: [[žlutý]] :*{{es}}: [[amarillo]] :*{{it}}: [[giallo]] {{cuối}} {{-related-}} *[[màu vàng]], [[mầu vàng]] {{bảng:màu sắc/vi}} {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} [[Category:Nguyên tố hóa học]] [[Category:Danh từ tiếng Việt]] [[Category:Tính từ tiếng Việt]] ntcpeplehk835utcznwzqo82ggl4w8n chó 0 1635 2350642 2350095 2026-05-07T07:53:02Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350642 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “cho”}} {{-vie-}} {{-info-}} [[Hình:GermanShep1 wb.jpg|nhỏ|'''Chó''' béc-giê.]] {{-alternative form-}} * {{q|từ lóng Internet}} {{alter|vi|cờ hó}} * {{q|đọc chệch}} {{alter|vi|tó}} {{-etymology-}} Từ {{etym-inh|vi|mkh-vie-pro|*ʔa-cɔːʔ}} < {{etym-inh|vi|mkh-pro|*cɔʔ||chó}}; cùng gốc với {{cognate|sea|co||chó, đầy tớ, nô lệ}}, {{cognate|hal|chô||chó}}, {{cognate|pac|acho||chó}}, {{cognate|kjg|-}} ''sɔʔ'' và {{cognate|zng|θɔː¹}}. So sánh thêm với {{cognate|km|ច||Tuất}}, một từ vay mượn từ ngữ chi Việt. {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-chó.wav|Âm thanh (Sài Gòn)}} {{-nôm-}} {{đầu}} * [[㹥]]: '''chó''' * [[犾]]: '''chó''' * [[犬]]: khuyển, '''chó''' {{giữa}} * [[𤝹]]: '''chó''', chù * [[𤠚]]: '''chó''' * [[𦢞]]: '''chó''' {{bottom}} {{-paro-}} {{đầu}} * {{vi-l|cho}} * {{vi-l|chò}} * {{vi-l|chọ}} * {{vi-l|chỏ}} * {{vi-l|chõ}} * {{vi-l|chồ}} * {{vi-l|chộ}} * {{vi-l|chỗ}} * {{vi-l|chơ}} * {{vi-l|chờ}} * {{vi-l|chớ}} * {{vi-l|chợ}} * {{vi-l|chở}} {{cuối}} {{-noun-}} {{vie-noun|cls=con}} # Loài [[động vật]] thuộc nhóm [[ăn thịt]], [[nuôi]] để [[giữ]] [[nhà]] hay đi [[săn]], v.v. Danh pháp khoa học: {{mention|mul|Canis familiaris}} hoặc {{mention|mul|Canis lupus familiaris}}. #: {{synonyms|vi|cẩu|khuyển|cầy|ki|q1=từ Hán-Việt|q2=từ Hán-Việt|q3=về mặt để ăn thịt|q4=thông tục}} #: {{ux|vi|Nuôi '''chó''' giữ nhà.}} #* '''1943''', {{w|Nam Cao}}, ''[[s:Lão Hạc|Lão Hạc]]'': #*: {{quote|vi|- Có lẽ tôi bán con '''chó''' đấy, ông giáo ạ!}} {{vie-noun|cls=[[con]], [[thằng]]}} # {{label|vi|thô tục}} Dùng để ví kẻ đáng [[khinh miệt]], và làm tiếng [[mắng nhiếc]]. #: {{ux|vi|Cái lũ '''chó''' khốn nạn này! Ai cho chúng mày nghịch nước hả?}} {{-derived-}} {{column|vi|n=3|bọ chó|bơi chó|chó ăn đá gà ăn sỏi|chó Bắc Kinh|chó biển|chó bông|chó cảnh|chó cắn áo rách|chó cậy gần nhà, gà cậy gần chuồng|chó chê mèo lắm lông|chó chết|chó chui gầm chạn|chó có váy lĩnh|chó cỏ|chó dé|chó đá vẫy đuôi|chó đẻ|chó đen giữ mực|chó đểu|chó đốm|chó ghẻ|chó già giữ xương|chó khô mèo lạc|chó lài|chó má|chó mái chim mồi|chó mực|chó ngao|chó ngáp phải ruồi|chó nghiệp vụ|chó nhà quê đòi ăn mắm mực|chó nhảy bàn độc|chó ông thánh cắn ra chữ|chó phốc|chó Phú Quốc|chó rừng|chó săn|chó săn chim mồi|chó sói|chó sục|chó ta|chó treo mèo đậy|chó vá|chó vện|chó xù|cờ chân chó|cờ chó|gấu chó|húng chó|khỉ đầu chó|khỉ mặt chó|lên voi xuống chó|lửng chó|máu chó|mèo đến nhà thì khó, chó đến nhà thì sang|mồm chó vó ngựa|óc chó|thịt chó|treo đầu dê, bán thịt chó|ve chó}} {{-trans-}} {{multitrans|data= {{trans-top|Loài động vật}} * {{aas}}: {{t2|aas|wa-t}} * {{aau}}: {{t2|aau|nwoh}} * {{abq}}: {{t2|abq|ла}} * {{ab}}: {{t2|ab|ала}} * {{ace}}: {{t2|ace|asèë}}, {{t2|ace|asei}} * {{ach}}: {{t2|ach|gwok}} * {{ady}}: {{t2|ady|хьэ}} {{q|Abzakh}}, {{t2|ady|хьэжъ}} {{q|Shapsug}} * {{aa}}: {{t2|aa|kuta}} * {{afr}}: {{tt+|af|hond}} * {{ain}}: {{t2|ain|セタ|tr=seta}}, {{t2|ain|レエㇷ゚|tr=reep}} * {{en}}: {{tt+|en|dog}} ** {{ang}}: {{tt+|ang|hund|m}} ** {{enm}}: {{t2|enm|dogge}}, {{t2|enm|hound}} * {{as}}: {{t2|as|কুকুৰ}} * {{tay}}: {{t2|tay|huzil}}, {{t2|tay|hu-il}}, {{t2|tay|hoyel}} * {{aze}}: {{tt+|az|it}}, {{tt+|az|köpək}} * {{pol}}: {{tt+|pl|pies|m}}, {{tt+|pl|suka|f}} {{q|chó cái}} * {{bdq}}: {{t2|bdq|kŏ}} * {{eu}}: {{tt+|eu|txakur}}, {{t2|eu|etxe-txakur}} * {{nod}}: {{t2|nod|ᩉ᩠ᨾᩣ}} * {{pt}}: {{tt+|pt|cão|m}}, {{tt+|pt|cachorro|m}} * {{br}}: {{tt+|br|ki|m}}, {{tt+|br|chas|p}}, {{tt+|br|kiez|f}} {{q|chó cái}}, {{tt+|br|kiezed|p}} ** {{xbm}}: {{t2|xbm|ci|m}} * {{cat-2}}: {{tt+|ca|gos|m}}, {{tt+|ca|ca|m}}, {{tt+|ca|quisso|m}} {{q|ngôn ngữ trẻ con}}, {{tt+|ca|gossa|f}}, {{t2|ca|cutxu}} {{q|Alghero}} * {{chr}}: {{tt+|chr|ᎩᏟ}}, {{tt+|chr|ᎩᎵ}} * {{kw}}: {{t2|kw|ki}} * {{crk}}: {{t2|crk|atim}} * {{aaq}}: {{t2|aaq|alemos}} * {{dan}}: {{t2+|da|hund|c}} * {{de}}: {{tt+|de|Hund|m}}, {{tt+|de|Hündin|f}} ** {{gsw}}: {{t2|gsw|Hund|m}} ** {{gmh}}: {{t2|gmh|hunt|m}} ** {{goh}}: {{t2|goh|hunt|m}} * {{est}}: {{tt+|et|koer}}, {{tt+|et|peni}} * {{rad}}: {{t2|rad|asâo}} * {{fao}}: {{tt+|fo|hundur|m}} * {{gl}}: {{tt+|gl|can|m}}, {{tt+|gl|cadela|f}}, {{tt+|gl|cuzo|m}}, {{tt+|gl|cuza|f}} * {{jra}}: {{t2|jra|asâo}} * {{ka}}: {{tt+|ka|ძაღლი}} * {{nl}}: {{tt+|nl|hond|m}} * {{haw}}: {{t2|haw|ʻīlio}} * {{hun}}: {{tt+|hu|kutya}}, {{tt+|hu|eb}} * {{ell}}: {{tt+|el|σκύλος|m}}, {{tt+|el|σκυλί|n}} ** {{grc}}: {{t2|grc|κύων|m|f}}, {{t2|grc|σκύλαξ|m}}, {{t2|grc|σκύλλος|m}} * {{is}}: {{tt+|is|hundur|m}} * {{ido}}: {{tt+|io|hundo}}, {{tt+|io|hundino}} {{q|chó cái}} * {{id}}: {{tt+|id|anjing}}, {{tt+|id|asu}} * {{iu}}: {{t2|iu|ᕿᒻᒥᖅ}} * {{ik}}: {{t2|ik|qimmiq}} * {{jav}}: {{tt+|jv|ꦲꦱꦸ}}, {{t2|jv|sagawon}}, {{tt+|jv|baung}}, {{tt+|jv|cemera}}, {{tt+|jv|sona}} * {{csb}}: {{t2|csb|tósz}}, {{t2|csb|pies}} * {{khm}}: {{tt+|km|ឆ្កែ}} * {{kru}}: [[alla]] * {{lao}}: {{tt+|lo|ໝາ}} * {{la}}: {{tt+|la|canis|m}} * {{ii}}: {{t2|ii|ꈌ}} * {{khb}}: {{t2|khb|ᦖᦱ}} * {{zng}}: {{t2|zng|θɔː¹}} * {{mri}}: {{tt+|mi|kurī}} * {{mya}}: {{tt+|my|ခွေး}} * {{mnw}}: {{tt+|mnw|ကၠဵု}} * {{mtq}}: {{t2|mtq|chỏ}} * {{nah}}: ** {{nci}}: {{t2|nci|chichi}}, {{t2|nci|itzcuintli}} ** {{nch}}: {{t2|nch|chichi}} ** {{nhn}}: {{t2|nhn|chichi}}, {{t2|nhn|itzcuintli}} * {{ja}}: {{tt+|ja|犬|tr=いぬ, inu}}, {{tt+|ja|狗|tr=いぬ, inu}} * {{nrf}}: {{t2|nrf|tchian|m}} {{q|Guernsey|Jersey}} * {{or}}: {{tt+|or|କୁକୁର}} * {{orh}}: {{t2|orh|ŋinaɣɪn}} * {{oss}}: {{t2|os|куыдз}} {{q|Iron}}, {{t2|os|куй}} {{q|Digor}} * {{pac}}: {{t2|pac|acho}} * {{pzh}}: {{t2|pzh|wazu}} * {{bxd}}: {{t2|bxd|kʰui³⁵}} * {{fr}}: {{tt+|fr|chien|m}} * {{epo}}: {{tt+|eo|hundo}}, {{tt+|eo|hundino}} {{q|chó cái}} * {{rap}}: {{t2|rap|paihéŋa}} * {{sad}}: {{t2|sad|káákà}} * {{trv}}: {{t2|trv|huling}} * {{ses}}: {{t2|ses|hanchii}}, {{t2|ses|abaykor}}, {{t2|ses|hansi}} * {{shn}}: {{tt+|shn|မႃ}} * {{tam}}: {{tt+|ta|நாய்}} * {{twf}}: {{t2|twf|cùloʼóna}} * {{tat}}: {{tt+|tt|эт}} * {{tyz}}: {{t2|tyz|ma}} * {{abe}}: {{t2|abe|adia}}, {{t2|abe|alemos}} * {{es}}: {{tt+|es|perro|m}}, {{tt+|es|can|m}} {{q|trang trọng}} * {{bo}}: {{t2|bo|ཁྱི}} * {{tha}}: {{tt+|th|หมา}}, {{tt+|th|สุนัข}} * {{blt}}: {{t2|blt|ꪢꪱ|tr=ma}} * {{sv}}: {{tt+|sv|hund|c}}, {{tt+|sv|hynda|c}} {{q|chó cái}} * {{zha}}: {{t2|za|ma}} * {{ko}}: {{tt+|ko|개}}, {{tt+|ko|견(犬)}}, {{tt+|ko|구(狗)}} * {{zho}}: ** {{gan}}: {{t2|gan|狗|tr=gieu3}} ** {{zhx-tai}}: {{t2|zhx-tai|狗}} ** {{dng}}: {{t2|dng|гу}} ** {{hak}}: {{t2|hak|狗仔|tr=kéu-é}} ** {{mnp}}: {{t2|mnp|狗仔|tr=ě-ciě}}, {{t2|mnp|狗|tr=ě}} ** {{cdo}}: {{t2|cdo|犬|tr=kēng}} ** {{nan}}: {{tt+|nan|狗|tr=káu}} ** {{wuu}}: {{t2|wuu|狗}} ** {{cmn}}: {{tt+|cmn|狗}}, {{tt+|cmn|犬}} {{q|văn chương}} ** {{yue}}: {{t2|yue|狗}}, {{tt+|yue|犬}} {{q|văn chương}} ** {{hsn}}: {{t2|hsn|狗|tr=gou3}} * {{ude}}: {{t2|ude|инʼаи}} * {{urd}}: {{tt+|ur|کتا|m|tr=kuttā}} * {{ium}}: {{t2|ium|juv}} * {{vol}}: {{tt+|vo|dog}}, {{tt+|vo|jidog}} {{q|chó cái}}, {{tt+|vo|jodog}} {{q|chó cái bị triệt sản}} * {{it}}: {{tt+|it|cane|m}} * {{yii}}: {{t2|yii|gudaga}} * {{yo}}: {{t2|yo|ajá}} {{trans-bottom}} }} {{-see also-}} * {{vi-l|Tuất}} * {{vi-l|cún}} * [[Thesaurus:chó]] {{-anagram-}} * {{anagrams|vi|hóc}} {{-reference-}} {{R:Tratu|vn|vn}} {{R:WinVNKey:Lê Sơn Thanh}} {{C|vi|Chó}} {{-mtq-}} {{-paro-}} {{đầu}} * {{l|mtq|cho}} * {{l|mtq|chò}} * {{l|mtq|chỏ}} * {{l|mtq|chõ}} * {{l|mtq|chồ}} * {{l|mtq|chố}} * {{l|mtq|chỗ}} * {{l|mtq|chờ}} * {{l|mtq|chớ}} * {{l|mtq|chở}} * {{l|mtq|chỡ}} * {{l|mtq|Chỡ}} {{cuối}} {{-noun-}} {{mtq-noun}} # {{label|mtq|Mường Bi}} Một loại [[bồ]] nhỏ để [[đựng]] [[đồ]] (như [[chăn]], [[quần áo]], v.v.), có [[quai]] và [[nắp]]; cái [[bịch]] đựng đồ. # {{label|mtq|Mường Bi}} Cái [[sọt]]. {{-reference-}} {{R:Nguyễn Văn Khang, Bùi Chỉ, Hoàng Văn Hành 2002|page=88}} {{c|mtq|Dụng cụ}} {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-paro-}} * {{l|tyz|chò}} * {{l|tyz|chỏ}} {{-adjc-}} {{tyz-adj}} # [[mòn|Mòn]]. {{-reference-}} {{R:Lương Bèn}} =={{langname|sed}}== ==={{ĐM|noun}}=== {{head|sed|Danh từ}} # {{l|vi|chó}}. #:{{ux|sed|rup môi to '''chó'''|Bắt một con '''chó'''}} ==={{đm|ref}}=== {{R:VOV}} {{c|sed|Chó}} 8oz8ns0rjsflhn7bxdjjaf38ak6cil3 2350893 2350642 2026-05-07T10:38:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350893 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “cho”}} {{-vie-}} {{-info-}} [[Hình:GermanShep1 wb.jpg|nhỏ|'''Chó''' béc-giê.]] {{-alternative form-}} * {{q|từ lóng Internet}} {{alter|vi|cờ hó}} * {{q|đọc chệch}} {{alter|vi|tó}} {{-etymology-}} Từ {{etym-inh|vi|mkh-vie-pro|*ʔa-cɔːʔ}} < {{etym-inh|vi|mkh-pro|*cɔʔ||chó}}; cùng gốc với {{cognate|sea|co||chó, đầy tớ, nô lệ}}, {{cognate|hal|chô||chó}}, {{cognate|pac|acho||chó}}, {{cognate|kjg|-}} ''sɔʔ'' và {{cognate|zng|θɔː¹}}. So sánh thêm với {{cognate|km|ច||Tuất}}, một từ vay mượn từ ngữ chi Việt. {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-chó.wav|Âm thanh (Sài Gòn)}} {{-nôm-}} {{đầu}} * [[㹥]]: '''chó''' * [[犾]]: '''chó''' * [[犬]]: khuyển, '''chó''' {{giữa}} * [[𤝹]]: '''chó''', chù * [[𤠚]]: '''chó''' * [[𦢞]]: '''chó''' {{bottom}} {{-paro-}} {{đầu}} * {{vi-l|cho}} * {{vi-l|chò}} * {{vi-l|chọ}} * {{vi-l|chỏ}} * {{vi-l|chõ}} * {{vi-l|chồ}} * {{vi-l|chộ}} * {{vi-l|chỗ}} * {{vi-l|chơ}} * {{vi-l|chờ}} * {{vi-l|chớ}} * {{vi-l|chợ}} * {{vi-l|chở}} {{cuối}} {{-noun-}} {{vie-noun|cls=con}} # Loài [[động vật]] thuộc nhóm [[ăn thịt]], [[nuôi]] để [[giữ]] [[nhà]] hay đi [[săn]], v.v. Danh pháp khoa học: {{mention|mul|Canis familiaris}} hoặc {{mention|mul|Canis lupus familiaris}}. #: {{synonyms|vi|cẩu|khuyển|cầy|ki|q1=từ Hán-Việt|q2=từ Hán-Việt|q3=về mặt để ăn thịt|q4=thông tục}} #: {{ux|vi|Nuôi '''chó''' giữ nhà.}} #* '''1943''', {{w|Nam Cao}}, ''[[s:Lão Hạc|Lão Hạc]]'': #*: {{quote|vi|- Có lẽ tôi bán con '''chó''' đấy, ông giáo ạ!}} {{vie-noun|cls=[[con]], [[thằng]]}} # {{label|vi|thô tục}} Dùng để ví kẻ đáng [[khinh miệt]], và làm tiếng [[mắng nhiếc]]. #: {{ux|vi|Cái lũ '''chó''' khốn nạn này! Ai cho chúng mày nghịch nước hả?}} {{-derived-}} {{column|vi|n=3|bọ chó|bơi chó|chó ăn đá gà ăn sỏi|chó Bắc Kinh|chó biển|chó bông|chó cảnh|chó cắn áo rách|chó cậy gần nhà, gà cậy gần chuồng|chó chê mèo lắm lông|chó chết|chó chui gầm chạn|chó có váy lĩnh|chó cỏ|chó dé|chó đá vẫy đuôi|chó đẻ|chó đen giữ mực|chó đểu|chó đốm|chó ghẻ|chó già giữ xương|chó khô mèo lạc|chó lài|chó má|chó mái chim mồi|chó mực|chó ngao|chó ngáp phải ruồi|chó nghiệp vụ|chó nhà quê đòi ăn mắm mực|chó nhảy bàn độc|chó ông thánh cắn ra chữ|chó phốc|chó Phú Quốc|chó rừng|chó săn|chó săn chim mồi|chó sói|chó sục|chó ta|chó treo mèo đậy|chó vá|chó vện|chó xù|cờ chân chó|cờ chó|gấu chó|húng chó|khỉ đầu chó|khỉ mặt chó|lên voi xuống chó|lửng chó|máu chó|mèo đến nhà thì khó, chó đến nhà thì sang|mồm chó vó ngựa|óc chó|thịt chó|treo đầu dê, bán thịt chó|ve chó}} {{-trans-}} {{multitrans|data= {{trans-top|Loài động vật}} * {{aas}}: {{t2|aas|wa-t}} * {{aau}}: {{t2|aau|nwoh}} * {{abq}}: {{t2|abq|ла}} * {{ab}}: {{t2|ab|ала}} * {{ace}}: {{t2|ace|asèë}}, {{t2|ace|asei}} * {{ach}}: {{t2|ach|gwok}} * {{ady}}: {{t2|ady|хьэ}} {{q|Abzakh}}, {{t2|ady|хьэжъ}} {{q|Shapsug}} * {{aa}}: {{t2|aa|kuta}} * {{afr}}: {{tt+|af|hond}} * {{ain}}: {{t2|ain|セタ|tr=seta}}, {{t2|ain|レエㇷ゚|tr=reep}} * {{en}}: {{tt+|en|dog}} ** {{ang}}: {{tt+|ang|hund|m}} ** {{enm}}: {{t2|enm|dogge}}, {{t2|enm|hound}} * {{as}}: {{t2|as|কুকুৰ}} * {{tay}}: {{t2|tay|huzil}}, {{t2|tay|hu-il}}, {{t2|tay|hoyel}} * {{aze}}: {{tt+|az|it}}, {{tt+|az|köpək}} * {{pol}}: {{tt+|pl|pies|m}}, {{tt+|pl|suka|f}} {{q|chó cái}} * {{bdq}}: {{t2|bdq|kŏ}} * {{eu}}: {{tt+|eu|txakur}}, {{t2|eu|etxe-txakur}} * {{nod}}: {{t2|nod|ᩉ᩠ᨾᩣ}} * {{pt}}: {{tt+|pt|cão|m}}, {{tt+|pt|cachorro|m}} * {{br}}: {{tt+|br|ki|m}}, {{tt+|br|chas|p}}, {{tt+|br|kiez|f}} {{q|chó cái}}, {{tt+|br|kiezed|p}} ** {{xbm}}: {{t2|xbm|ci|m}} * {{cat-old}}: {{tt+|ca|gos|m}}, {{tt+|ca|ca|m}}, {{tt+|ca|quisso|m}} {{q|ngôn ngữ trẻ con}}, {{tt+|ca|gossa|f}}, {{t2|ca|cutxu}} {{q|Alghero}} * {{chr}}: {{tt+|chr|ᎩᏟ}}, {{tt+|chr|ᎩᎵ}} * {{kw}}: {{t2|kw|ki}} * {{crk}}: {{t2|crk|atim}} * {{aaq}}: {{t2|aaq|alemos}} * {{dan}}: {{t2+|da|hund|c}} * {{de}}: {{tt+|de|Hund|m}}, {{tt+|de|Hündin|f}} ** {{gsw}}: {{t2|gsw|Hund|m}} ** {{gmh}}: {{t2|gmh|hunt|m}} ** {{goh}}: {{t2|goh|hunt|m}} * {{est}}: {{tt+|et|koer}}, {{tt+|et|peni}} * {{rad}}: {{t2|rad|asâo}} * {{fao}}: {{tt+|fo|hundur|m}} * {{gl}}: {{tt+|gl|can|m}}, {{tt+|gl|cadela|f}}, {{tt+|gl|cuzo|m}}, {{tt+|gl|cuza|f}} * {{jra}}: {{t2|jra|asâo}} * {{ka}}: {{tt+|ka|ძაღლი}} * {{nl}}: {{tt+|nl|hond|m}} * {{haw}}: {{t2|haw|ʻīlio}} * {{hun}}: {{tt+|hu|kutya}}, {{tt+|hu|eb}} * {{ell}}: {{tt+|el|σκύλος|m}}, {{tt+|el|σκυλί|n}} ** {{grc}}: {{t2|grc|κύων|m|f}}, {{t2|grc|σκύλαξ|m}}, {{t2|grc|σκύλλος|m}} * {{is}}: {{tt+|is|hundur|m}} * {{ido}}: {{tt+|io|hundo}}, {{tt+|io|hundino}} {{q|chó cái}} * {{id}}: {{tt+|id|anjing}}, {{tt+|id|asu}} * {{iu}}: {{t2|iu|ᕿᒻᒥᖅ}} * {{ik}}: {{t2|ik|qimmiq}} * {{jav}}: {{tt+|jv|ꦲꦱꦸ}}, {{t2|jv|sagawon}}, {{tt+|jv|baung}}, {{tt+|jv|cemera}}, {{tt+|jv|sona}} * {{csb}}: {{t2|csb|tósz}}, {{t2|csb|pies}} * {{khm}}: {{tt+|km|ឆ្កែ}} * {{kru}}: [[alla]] * {{lao}}: {{tt+|lo|ໝາ}} * {{la}}: {{tt+|la|canis|m}} * {{ii}}: {{t2|ii|ꈌ}} * {{khb}}: {{t2|khb|ᦖᦱ}} * {{zng}}: {{t2|zng|θɔː¹}} * {{mri}}: {{tt+|mi|kurī}} * {{mya}}: {{tt+|my|ခွေး}} * {{mnw}}: {{tt+|mnw|ကၠဵု}} * {{mtq}}: {{t2|mtq|chỏ}} * {{nah}}: ** {{nci}}: {{t2|nci|chichi}}, {{t2|nci|itzcuintli}} ** {{nch}}: {{t2|nch|chichi}} ** {{nhn}}: {{t2|nhn|chichi}}, {{t2|nhn|itzcuintli}} * {{ja}}: {{tt+|ja|犬|tr=いぬ, inu}}, {{tt+|ja|狗|tr=いぬ, inu}} * {{nrf}}: {{t2|nrf|tchian|m}} {{q|Guernsey|Jersey}} * {{or}}: {{tt+|or|କୁକୁର}} * {{orh}}: {{t2|orh|ŋinaɣɪn}} * {{oss}}: {{t2|os|куыдз}} {{q|Iron}}, {{t2|os|куй}} {{q|Digor}} * {{pac}}: {{t2|pac|acho}} * {{pzh}}: {{t2|pzh|wazu}} * {{bxd}}: {{t2|bxd|kʰui³⁵}} * {{fr}}: {{tt+|fr|chien|m}} * {{epo}}: {{tt+|eo|hundo}}, {{tt+|eo|hundino}} {{q|chó cái}} * {{rap}}: {{t2|rap|paihéŋa}} * {{sad}}: {{t2|sad|káákà}} * {{trv}}: {{t2|trv|huling}} * {{ses}}: {{t2|ses|hanchii}}, {{t2|ses|abaykor}}, {{t2|ses|hansi}} * {{shn}}: {{tt+|shn|မႃ}} * {{tam}}: {{tt+|ta|நாய்}} * {{twf}}: {{t2|twf|cùloʼóna}} * {{tat}}: {{tt+|tt|эт}} * {{tyz}}: {{t2|tyz|ma}} * {{abe}}: {{t2|abe|adia}}, {{t2|abe|alemos}} * {{es}}: {{tt+|es|perro|m}}, {{tt+|es|can|m}} {{q|trang trọng}} * {{bo}}: {{t2|bo|ཁྱི}} * {{tha}}: {{tt+|th|หมา}}, {{tt+|th|สุนัข}} * {{blt}}: {{t2|blt|ꪢꪱ|tr=ma}} * {{sv}}: {{tt+|sv|hund|c}}, {{tt+|sv|hynda|c}} {{q|chó cái}} * {{zha}}: {{t2|za|ma}} * {{ko}}: {{tt+|ko|개}}, {{tt+|ko|견(犬)}}, {{tt+|ko|구(狗)}} * {{zho}}: ** {{gan}}: {{t2|gan|狗|tr=gieu3}} ** {{zhx-tai}}: {{t2|zhx-tai|狗}} ** {{dng}}: {{t2|dng|гу}} ** {{hak}}: {{t2|hak|狗仔|tr=kéu-é}} ** {{mnp}}: {{t2|mnp|狗仔|tr=ě-ciě}}, {{t2|mnp|狗|tr=ě}} ** {{cdo}}: {{t2|cdo|犬|tr=kēng}} ** {{nan}}: {{tt+|nan|狗|tr=káu}} ** {{wuu}}: {{t2|wuu|狗}} ** {{cmn}}: {{tt+|cmn|狗}}, {{tt+|cmn|犬}} {{q|văn chương}} ** {{yue}}: {{t2|yue|狗}}, {{tt+|yue|犬}} {{q|văn chương}} ** {{hsn}}: {{t2|hsn|狗|tr=gou3}} * {{ude}}: {{t2|ude|инʼаи}} * {{urd}}: {{tt+|ur|کتا|m|tr=kuttā}} * {{ium}}: {{t2|ium|juv}} * {{vol}}: {{tt+|vo|dog}}, {{tt+|vo|jidog}} {{q|chó cái}}, {{tt+|vo|jodog}} {{q|chó cái bị triệt sản}} * {{it}}: {{tt+|it|cane|m}} * {{yii}}: {{t2|yii|gudaga}} * {{yo}}: {{t2|yo|ajá}} {{trans-bottom}} }} {{-see also-}} * {{vi-l|Tuất}} * {{vi-l|cún}} * [[Thesaurus:chó]] {{-anagram-}} * {{anagrams|vi|hóc}} {{-reference-}} {{R:Tratu|vn|vn}} {{R:WinVNKey:Lê Sơn Thanh}} {{C|vi|Chó}} {{-mtq-}} {{-paro-}} {{đầu}} * {{l|mtq|cho}} * {{l|mtq|chò}} * {{l|mtq|chỏ}} * {{l|mtq|chõ}} * {{l|mtq|chồ}} * {{l|mtq|chố}} * {{l|mtq|chỗ}} * {{l|mtq|chờ}} * {{l|mtq|chớ}} * {{l|mtq|chở}} * {{l|mtq|chỡ}} * {{l|mtq|Chỡ}} {{cuối}} {{-noun-}} {{mtq-noun}} # {{label|mtq|Mường Bi}} Một loại [[bồ]] nhỏ để [[đựng]] [[đồ]] (như [[chăn]], [[quần áo]], v.v.), có [[quai]] và [[nắp]]; cái [[bịch]] đựng đồ. # {{label|mtq|Mường Bi}} Cái [[sọt]]. {{-reference-}} {{R:Nguyễn Văn Khang, Bùi Chỉ, Hoàng Văn Hành 2002|page=88}} {{c|mtq|Dụng cụ}} {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-paro-}} * {{l|tyz|chò}} * {{l|tyz|chỏ}} {{-adjc-}} {{tyz-adj}} # [[mòn|Mòn]]. {{-reference-}} {{R:Lương Bèn}} =={{langname|sed}}== ==={{ĐM|noun}}=== {{head|sed|Danh từ}} # {{l|vi|chó}}. #:{{ux|sed|rup môi to '''chó'''|Bắt một con '''chó'''}} ==={{đm|ref}}=== {{R:VOV}} {{c|sed|Chó}} socipc9giljfpu4u11j7nrzo037byde 0 2195 2350805 2280714 2026-05-07T08:07:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350805 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:herring2.jpg|thumb|cá]] {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} *[[個]]: [[cá]] *[[个]]: [[cán]], [[cá]] {{mid}} *[[箇]]: [[cá]] *[[亇]]: [[cá]] {{bottom}} {{-hanviet-t-}} {{top}} *[[個]]: [[cá]] *[[个]]: [[cá]] {{mid}} *[[箇]]: [[cá]] {{bottom}} {{-nôm-}} {{top}} *[[亇]]: [[cá]] *[[箇]]: [[rá]], [[cá]], [[có]] *[[󰀆]]: [[cá]] *[[個]]: [[cá]], [[cái]] {{mid}} *[[个]]: [[cá]], [[cán]] *[[󰑱]]: [[cá]] *[[𩵜]]: [[cá]] {{bottom}} {{-noun-}} '''cá''' #[[động vật|Động vật]] có [[xương sống]], sống trong [[nước]], thở bằng [[mang]], bơi bằng [[vây]]. #: ''Nuôi '''cá''' cảnh.'' #: ''Đánh bắt '''cá'''.'' {{-trans-}} {{đầu}} :*{{en}}: {{t+|en|fish}} :*{{hy}}: {{t+|hy|ձուկ}} :*{{nod}}: [[ᨸᩖᩣ]] :*{{pt}}: {{t+|pt|peixe|m}} :*{{cat-2}}: {{t+|ca|peix|m}} :*{{da}}: {{t+|da|fisk|c}} :*{{de}}: {{t+|de|Fisch|m}} :*{{ka}}: {{t+|ka|თევზი}} :*{{nl}}: {{t+|nl|vis|m}} :*{{hu}}: {{t+|hu|hal}} :*{{km}}: {{t+|km|ត្រី}} :*{{lo}}: {{t+|lo|ປາ}} :*{{khb}}: {{t|khb|ᦔᦱ}} {{giữa}} :*{{ms}}: {{t+|ms|ikan}} :*{{my}}: {{t+|my|ငါး}} :*{{ru}}: [[рыба]] {{f}} (rýba) :*{{oc}}: [[peis]], [[peish]] {{g|m}} :*{{fi}}: {{t+|fi|kala}} :*{{fr}}: {{t+|fr|poisson|f}} :*{{es}}: [[pez]], [[peje]] {{g|m}} :*{{bo}}: {{t|bo|ཉ}} :*{{th}}: {{t+|th|ปลา}} :*{{blt}}: [[ꪜꪱ]] :*{{zho}}: [[魚]] ([[ngư]], ''yú'') :*{{uz}}: {{t+|uz|baliq}} {{cuối}} {{-verb-}} '''cá''' # Đoan, cuộc, đánh cuộc, đố nhau có ăn thua. #: '''''Cá''' coi ai nói trúng nè.'' {{-syn-}} *[[cá cược]] {{-trans-}} {{đầu}} :*{{en}}: to [[bet]] {{giữa}} {{cuối}} {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] {{-por-}} {{-alternative form-}} * {{l|pt|câ}}, {{l|pt|cà}}, {{l|pt|ca}} {{q|lỗi thời}} {{-pron-}} * {{IPA2|/ˈka/}} {{-adv-}} {{pn}} # [[đây|Đây]], ở đây, ở [[chỗ]] này. #: {{ux|pt|'''Cá''' estou.|Tôi '''đây'''.}} # [[đến|Đến]] nơi này, đến đây. #: {{ux|vi|Vem '''cá'''.|Lại '''đây'''.}} {{catname|Phó từ|tiếng Bồ Đào Nha}} {{-kpm-}} {{-noun-}} {{head|kpm|Danh từ}} # [[tiếng]] [[đuổi]] [[dê]]. {{-derived-}} * {{l|kpm|vơcá}} {{-ref-}} * Lý Toàn Thắng, Tạ Văn Thông, K'Brêu, K'Bròh (1985) ''Ngữ pháp tiếng Kơ Ho''. Sở Văn hóa và Thông tin Lâm Đồng. j7o2yw8cdbbnbf07za702d4g1gy0mr1 2350894 2350805 2026-05-07T10:39:00Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350894 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:herring2.jpg|thumb|cá]] {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} *[[個]]: [[cá]] *[[个]]: [[cán]], [[cá]] {{mid}} *[[箇]]: [[cá]] *[[亇]]: [[cá]] {{bottom}} {{-hanviet-t-}} {{top}} *[[個]]: [[cá]] *[[个]]: [[cá]] {{mid}} *[[箇]]: [[cá]] {{bottom}} {{-nôm-}} {{top}} *[[亇]]: [[cá]] *[[箇]]: [[rá]], [[cá]], [[có]] *[[󰀆]]: [[cá]] *[[個]]: [[cá]], [[cái]] {{mid}} *[[个]]: [[cá]], [[cán]] *[[󰑱]]: [[cá]] *[[𩵜]]: [[cá]] {{bottom}} {{-noun-}} '''cá''' #[[động vật|Động vật]] có [[xương sống]], sống trong [[nước]], thở bằng [[mang]], bơi bằng [[vây]]. #: ''Nuôi '''cá''' cảnh.'' #: ''Đánh bắt '''cá'''.'' {{-trans-}} {{đầu}} :*{{en}}: {{t+|en|fish}} :*{{hy}}: {{t+|hy|ձուկ}} :*{{nod}}: [[ᨸᩖᩣ]] :*{{pt}}: {{t+|pt|peixe|m}} :*{{cat-old}}: {{t+|ca|peix|m}} :*{{da}}: {{t+|da|fisk|c}} :*{{de}}: {{t+|de|Fisch|m}} :*{{ka}}: {{t+|ka|თევზი}} :*{{nl}}: {{t+|nl|vis|m}} :*{{hu}}: {{t+|hu|hal}} :*{{km}}: {{t+|km|ត្រី}} :*{{lo}}: {{t+|lo|ປາ}} :*{{khb}}: {{t|khb|ᦔᦱ}} {{giữa}} :*{{ms}}: {{t+|ms|ikan}} :*{{my}}: {{t+|my|ငါး}} :*{{ru}}: [[рыба]] {{f}} (rýba) :*{{oc}}: [[peis]], [[peish]] {{g|m}} :*{{fi}}: {{t+|fi|kala}} :*{{fr}}: {{t+|fr|poisson|f}} :*{{es}}: [[pez]], [[peje]] {{g|m}} :*{{bo}}: {{t|bo|ཉ}} :*{{th}}: {{t+|th|ปลา}} :*{{blt}}: [[ꪜꪱ]] :*{{zho}}: [[魚]] ([[ngư]], ''yú'') :*{{uz}}: {{t+|uz|baliq}} {{cuối}} {{-verb-}} '''cá''' # Đoan, cuộc, đánh cuộc, đố nhau có ăn thua. #: '''''Cá''' coi ai nói trúng nè.'' {{-syn-}} *[[cá cược]] {{-trans-}} {{đầu}} :*{{en}}: to [[bet]] {{giữa}} {{cuối}} {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] {{-por-}} {{-alternative form-}} * {{l|pt|câ}}, {{l|pt|cà}}, {{l|pt|ca}} {{q|lỗi thời}} {{-pron-}} * {{IPA2|/ˈka/}} {{-adv-}} {{pn}} # [[đây|Đây]], ở đây, ở [[chỗ]] này. #: {{ux|pt|'''Cá''' estou.|Tôi '''đây'''.}} # [[đến|Đến]] nơi này, đến đây. #: {{ux|vi|Vem '''cá'''.|Lại '''đây'''.}} {{catname|Phó từ|tiếng Bồ Đào Nha}} {{-kpm-}} {{-noun-}} {{head|kpm|Danh từ}} # [[tiếng]] [[đuổi]] [[dê]]. {{-derived-}} * {{l|kpm|vơcá}} {{-ref-}} * Lý Toàn Thắng, Tạ Văn Thông, K'Brêu, K'Bròh (1985) ''Ngữ pháp tiếng Kơ Ho''. Sở Văn hóa và Thông tin Lâm Đồng. cba3alql6lzeh2pm6eda9ptskysqkrf cà phê 0 2196 2350643 2332320 2026-05-07T07:53:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350643 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Roasted coffee beans.jpg|nhỏ|phải|cà phê<br /><small>hạt quả</small>]] [[Hình:A small cup of coffee.JPG|nhỏ|phải|cà phê<br /><small>đồ uống nóng</small>]] {{-pron-}} {{vie-pron|cà|phê}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:café]] ** [[ita:caffè]] *** [[tur:kahve]] **** [[ara:قهوة]] (qahwa) }} Có người Ethiopia cho rằng nó bắt nguồn từ [[w:Kaffa|Kaffa]], một tỉnh thời cổ của Ethiopia, nơi được cho là nguồn của cà phê, nhưng từ nguyên này không chắc, vì nó không giải thích tại sao tiếng Ả Rập có từ [[قهوة]] (''qahwa''). Ngoài ra, ''qahwa'' chỉ chỉ đến thức uống. Loại khô, xay hay không, được gọi là [[بن]] (''bunn'') trong tiếng Ả Rập. Từ đó xuất từ ''buna'', tức "cà phê" trong tiếng Amharic. Có nhiều nguồn cho rằng từ ''qahwa'' trong tiếng Ả Rập đã từng có nghĩa thức uống pha nào, nhất là [[rượu vang]]. {{-noun-}} '''cà phê''', '''cà-phê''' # [[cây|Cây]] [[trồng]] ở nhiều [[vùng]] [[Việt Nam]], nhiều nhất là [[Tây Nguyên]], [[thân]] [[nhỡ]], [[cành]] có [[cạnh]] [[nâu]] [[đen]], [[tròn]], [[màu]] [[sám]], lá [[hình]] [[trái]] [[xoan]], [[mặt]] trên màu [[lục]] [[bóng]], mặt dưới [[nhạt]], [[hoa]] [[trắng]], [[quả]] [[nạc]], [[hạt]] [[rang]] [[xay]] [[pha]] để [[uống]] có [[vị]] [[thơm]] [[ngon]] #: ''trồng '''cà phê''''' # [[hạt|Hạt]] [[quả]] cà phê. #: ''mua vài lạng '''cà phê''''' # [[đồ uống|Đồ uống]] [[nóng]] hay [[lạnh]] làm bằng [[hột]] cà phê [[xay]]. #: ''kẹo '''cà phê''''' #: ''pha '''cà phê''' uống'' {{-trans-}} ; cây {{đầu}} * {{ara}}: [[بن]] {{g}} (''bun'') * {{eng}}: [[coffee]] * {{pol}}: [[kawowiec]] {{g|m}} * {{por}}: [[árvore de café]] {{f}} * {{cat-2}}: [[cafè]] {{g|m}} * {{dan}}: [[kaffebusk]] {{g|c}}, [[kaffetræ]] {{n}} * {{heb}}: [[קפה]] {{g|m}} (''qafé'') * {{deu}}: [[Kaffeepflanze]] {{f}} * {{est}}: [[kohvipuu]] * {{nld}}: [[koffie]] {{g|m}}, [[koffieplant]] {{g|m}} * {{kur}}: [[qehwe]] {{f}}, [[qawe]] {{f}} {{giữa}} * {{rus}}: [[кофейное дерево]] (''koféjnoe dérevo'') {{n}} * {{jpn}}: [[コーヒーの木]] ([[こ]][[ー]][[ひ]]ー[[の]][[き]], ''kōhī no ki'') * {{fra}}: [[caféier]] {{g|m}} * {{ces}}: [[kávovník]] {{g|m}} * {{slk}}: [[kávovník]] {{g|m}} * {{slv}}: [[kavovec]] {{g|m}} * {{spa}}: [[cafeto]] {{g|m}}, [[café]] {{g|m}} * {{swe}}: [[kaffebuske]] {{g|c}}, [[kaffeträd]] {{n}} * {{tpi}}: [[kopi]] * {{ita}}: [[caffè]] {{f}} {{cuối}} ; hạt quả {{đầu}} * {{ara}}: [[بن]] (''bun'') {{g}} * {{eng}}: [[coffee]] * {{heb}}: [[פולי קפה]] {{g|m}} {{plur}} (''poléi qafé'') {{giữa}} * {{nld}}: [[koffie]] {{g|m}}, [[koffieboon]] {{g|m}} * {{rus}}: [[кофе]] {{g|m}} (''kófe'') * {{jpn}}: [[コーヒー豆]] (''kōhīmame'') {{cuối}} ; đồ uống {{đầu}} * {{ara}}: [[قهوة]] {{f}} (''qáhwa'') * {{afr}}: [[koffie]] * {{amu}}: [[kajwê]] * {{eng}}: [[coffee]] * {{pol}}: [[kawa]] {{f}} * {{isl}}: [[kaffi]] {{n}} * {{por}}: [[café]] {{g|m}} * {{ina}}: [[caffe]] * {{bos}}: [[kafa]] {{f}}, [[kava]] {{f}}, [[kahva]] {{f}} * {{bul}}: [[кафе]] {{n}} (''kafé'') * {{cat-2}}: [[cafè]] {{g|m}} * {{chr}}: [[ᎧᏫ]] (''kawi'') * {{dan}}: [[kaffe]] {{g|c}} * {{heb}}: [[קפה]] {{g|m}} (''qafé'') * {{deu}}: [[Kaffee]] {{g|m}} * {{est}}: [[kohv]] * {{kat}}: [[ყავა]] * {{nld}}: [[koffie]] {{g|m}} * {{hun}}: [[kávé]] * {{ell}}: [[καφές]] {{g|m}} (''kafés'') * {{ido}}: [[kafeo]] * {{khm}}: [[កាហ្វេ]] (''kāfē'') * {{kur}}: [[qehwe]] {{f}}, [[qawe]] {{f}}, [[قاوه]] * {{lav}}: [[kafija]] {{f}} * {{nah}}: [[cafentzin]] {{giữa}} * {{rus}}: [[кофе]] {{g|m}} (''kófe'') * {{jpn}}: [[珈琲]] (''già bội''), [[コーヒー]] (''kōhī'') * {{oci}}: [[cafè]] {{g|m}} * {{oji}}: [[makade-mashkikiwaaboo]] * {{fin}}: [[kahvi]] * {{fra}}: [[café]] {{g|m}} * {{cmn}}: [[咖啡]] (''kāfēi'', [[già]] [[phê]]) * {{yue}}: [[咖啡]] (''gaa3 fe1'', [[già]] [[phê]]) * {{epo}}: [[kafo]] * {{ron}}: [[cafeă]] {{f}} * {{ces}}: [[káva]] {{f}} * {{srp}}: ** {{Cyrl}}: [[кафа#Tiêng Serbi|кафа]] {{f}}, [[кава#Tiêng Serbi|кава]] {{f}} ** {{Latn}}: [[kafa#Tiêng Serbi|kafa]] {{f}}, [[kava#Tiêng Serbi|kava]] {{f}} * {{slk}}: [[káva]] {{f}} * {{slv}}: [[kava]] {{f}} * {{spa}}: [[café]] {{g|m}}, [[tinto]] {{g|m}} * {{tur}}: [[kahve]] * {{swe}}: [[kaffe]] {{n}} * {{tpi}}: [[kopi]] * {{kor}}: [[커피]] (''keopi'') * {{cym}}: [[coffi]] * {{ita}}: [[caffè]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] cfzmpc37tw9ep7uz5e84n4g0eg1qynd 2350895 2350643 2026-05-07T10:39:03Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350895 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Roasted coffee beans.jpg|nhỏ|phải|cà phê<br /><small>hạt quả</small>]] [[Hình:A small cup of coffee.JPG|nhỏ|phải|cà phê<br /><small>đồ uống nóng</small>]] {{-pron-}} {{vie-pron|cà|phê}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:café]] ** [[ita:caffè]] *** [[tur:kahve]] **** [[ara:قهوة]] (qahwa) }} Có người Ethiopia cho rằng nó bắt nguồn từ [[w:Kaffa|Kaffa]], một tỉnh thời cổ của Ethiopia, nơi được cho là nguồn của cà phê, nhưng từ nguyên này không chắc, vì nó không giải thích tại sao tiếng Ả Rập có từ [[قهوة]] (''qahwa''). Ngoài ra, ''qahwa'' chỉ chỉ đến thức uống. Loại khô, xay hay không, được gọi là [[بن]] (''bunn'') trong tiếng Ả Rập. Từ đó xuất từ ''buna'', tức "cà phê" trong tiếng Amharic. Có nhiều nguồn cho rằng từ ''qahwa'' trong tiếng Ả Rập đã từng có nghĩa thức uống pha nào, nhất là [[rượu vang]]. {{-noun-}} '''cà phê''', '''cà-phê''' # [[cây|Cây]] [[trồng]] ở nhiều [[vùng]] [[Việt Nam]], nhiều nhất là [[Tây Nguyên]], [[thân]] [[nhỡ]], [[cành]] có [[cạnh]] [[nâu]] [[đen]], [[tròn]], [[màu]] [[sám]], lá [[hình]] [[trái]] [[xoan]], [[mặt]] trên màu [[lục]] [[bóng]], mặt dưới [[nhạt]], [[hoa]] [[trắng]], [[quả]] [[nạc]], [[hạt]] [[rang]] [[xay]] [[pha]] để [[uống]] có [[vị]] [[thơm]] [[ngon]] #: ''trồng '''cà phê''''' # [[hạt|Hạt]] [[quả]] cà phê. #: ''mua vài lạng '''cà phê''''' # [[đồ uống|Đồ uống]] [[nóng]] hay [[lạnh]] làm bằng [[hột]] cà phê [[xay]]. #: ''kẹo '''cà phê''''' #: ''pha '''cà phê''' uống'' {{-trans-}} ; cây {{đầu}} * {{ara}}: [[بن]] {{g}} (''bun'') * {{eng}}: [[coffee]] * {{pol}}: [[kawowiec]] {{g|m}} * {{por}}: [[árvore de café]] {{f}} * {{cat-old}}: [[cafè]] {{g|m}} * {{dan}}: [[kaffebusk]] {{g|c}}, [[kaffetræ]] {{n}} * {{heb}}: [[קפה]] {{g|m}} (''qafé'') * {{deu}}: [[Kaffeepflanze]] {{f}} * {{est}}: [[kohvipuu]] * {{nld}}: [[koffie]] {{g|m}}, [[koffieplant]] {{g|m}} * {{kur}}: [[qehwe]] {{f}}, [[qawe]] {{f}} {{giữa}} * {{rus}}: [[кофейное дерево]] (''koféjnoe dérevo'') {{n}} * {{jpn}}: [[コーヒーの木]] ([[こ]][[ー]][[ひ]]ー[[の]][[き]], ''kōhī no ki'') * {{fra}}: [[caféier]] {{g|m}} * {{ces}}: [[kávovník]] {{g|m}} * {{slk}}: [[kávovník]] {{g|m}} * {{slv}}: [[kavovec]] {{g|m}} * {{spa}}: [[cafeto]] {{g|m}}, [[café]] {{g|m}} * {{swe}}: [[kaffebuske]] {{g|c}}, [[kaffeträd]] {{n}} * {{tpi}}: [[kopi]] * {{ita}}: [[caffè]] {{f}} {{cuối}} ; hạt quả {{đầu}} * {{ara}}: [[بن]] (''bun'') {{g}} * {{eng}}: [[coffee]] * {{heb}}: [[פולי קפה]] {{g|m}} {{plur}} (''poléi qafé'') {{giữa}} * {{nld}}: [[koffie]] {{g|m}}, [[koffieboon]] {{g|m}} * {{rus}}: [[кофе]] {{g|m}} (''kófe'') * {{jpn}}: [[コーヒー豆]] (''kōhīmame'') {{cuối}} ; đồ uống {{đầu}} * {{ara}}: [[قهوة]] {{f}} (''qáhwa'') * {{afr}}: [[koffie]] * {{amu}}: [[kajwê]] * {{eng}}: [[coffee]] * {{pol}}: [[kawa]] {{f}} * {{isl}}: [[kaffi]] {{n}} * {{por}}: [[café]] {{g|m}} * {{ina}}: [[caffe]] * {{bos}}: [[kafa]] {{f}}, [[kava]] {{f}}, [[kahva]] {{f}} * {{bul}}: [[кафе]] {{n}} (''kafé'') * {{cat-old}}: [[cafè]] {{g|m}} * {{chr}}: [[ᎧᏫ]] (''kawi'') * {{dan}}: [[kaffe]] {{g|c}} * {{heb}}: [[קפה]] {{g|m}} (''qafé'') * {{deu}}: [[Kaffee]] {{g|m}} * {{est}}: [[kohv]] * {{kat}}: [[ყავა]] * {{nld}}: [[koffie]] {{g|m}} * {{hun}}: [[kávé]] * {{ell}}: [[καφές]] {{g|m}} (''kafés'') * {{ido}}: [[kafeo]] * {{khm}}: [[កាហ្វេ]] (''kāfē'') * {{kur}}: [[qehwe]] {{f}}, [[qawe]] {{f}}, [[قاوه]] * {{lav}}: [[kafija]] {{f}} * {{nah}}: [[cafentzin]] {{giữa}} * {{rus}}: [[кофе]] {{g|m}} (''kófe'') * {{jpn}}: [[珈琲]] (''già bội''), [[コーヒー]] (''kōhī'') * {{oci}}: [[cafè]] {{g|m}} * {{oji}}: [[makade-mashkikiwaaboo]] * {{fin}}: [[kahvi]] * {{fra}}: [[café]] {{g|m}} * {{cmn}}: [[咖啡]] (''kāfēi'', [[già]] [[phê]]) * {{yue}}: [[咖啡]] (''gaa3 fe1'', [[già]] [[phê]]) * {{epo}}: [[kafo]] * {{ron}}: [[cafeă]] {{f}} * {{ces}}: [[káva]] {{f}} * {{srp}}: ** {{Cyrl}}: [[кафа#Tiêng Serbi|кафа]] {{f}}, [[кава#Tiêng Serbi|кава]] {{f}} ** {{Latn}}: [[kafa#Tiêng Serbi|kafa]] {{f}}, [[kava#Tiêng Serbi|kava]] {{f}} * {{slk}}: [[káva]] {{f}} * {{slv}}: [[kava]] {{f}} * {{spa}}: [[café]] {{g|m}}, [[tinto]] {{g|m}} * {{tur}}: [[kahve]] * {{swe}}: [[kaffe]] {{n}} * {{tpi}}: [[kopi]] * {{kor}}: [[커피]] (''keopi'') * {{cym}}: [[coffi]] * {{ita}}: [[caffè]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ligrh9f09g2p13wmqf70bg9f71pyczj chim 0 2209 2350644 2281315 2026-05-07T07:53:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350644 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = mkh-proto | attested = 0 | term = ciim }} {{-nôm-}} {{top}} *[[󰖀]]: [[chim]] *[[𪀄]]: [[chim]] {{mid}} *[[󰕿]]: [[chim]] {{bottom}} {{-noun-}} [[Tập tin:Kookaburra portrait.jpg|nhỏ|phải|chim]] '''chim''' # [[động vật|Động vật]] [[lông vũ]], thường [[bay lượn]], [[chuyền]] [[cành]] và [[hót]] [[líu lo]]. #: '''''Chim''' bay.'' #: '''''Chim''' hót.'' #: '''''Chim''' có cánh, cá có vây.'' (tục ngữ) #: ''Tổ '''chim'''.'' # {{@|thông tục}} [[dương vật|Dương vật]] của [[đàn ông]]. # {{@|lóng|Nam Việt Nam}} [[bộ phận|Bộ phận]] [[sinh dục]] của [[nữ giới]] (ít dùng). {{-trans-}} {{trans-top|động vật lông vũ, thường bay lượn}} * {{sqi}}: [[zog]] {{g|m}} * {{eng}}: [[bird]] * {{nod}}: [[ᨶᩫ᩠ᨠ]] * {{isl}}: [[fugl]] {{g|m}} * {{bul}}: [[птица]] {{f}} (''ptíca'') * {{cat-2}}: [[ocell]] {{g|m}} * {{dan}}: [[fugl]] {{g|c}} * {{deu}}: [[Vogel]] {{g|m}} * {{nld}}: [[vogel]] {{g|m}} * {{khm}}: [[បក្សី]] (''baksəy'') * {{lao}}: [[ນົກ]] * {{khb}}: [[ᦷᦓᧅ]] * {{mya}}: [[ငှက်]] (''hngak'') {{trans-mid}} * {{mnw}}: [[ဂစေံ]] * {{mtq}}: [[chim#Tiếng Mường|chim]] * {{rus}}: [[птица]] {{f}} (''ptíca'') * {{jpn}}: [[鳥]] * {{fra}}: [[oiseau]] {{g|m}} * {{spa}}: [[pájaro]] {{g|m}}, [[ave]] {{f}} * {{tha}}: [[นก]] (''nók'') * {{blt}}: [[ꪶꪙꪀ]] * {{kor}}: [[새]] (''sæ'') * {{ita}}: [[uccello]] {{g|m}} * {{vol}}: (♂♀) [[böd]], (♂) [[hiböd]], (♀) [[jiböd]] {{trans-bottom}} {{trans-top|dương vật}} * {{eng}}: [[penis]] * {{fra}}: [[pénis]] * {{zho}}: [[屌]], [[鳥]] {{trans-bottom}} {{-related-}} * [[bướm]] {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} {{-cje-}} {{-noun-}} {{head|cje|Danh từ}} # {{l|vi|chim}}. {{-mtq-}} {{-noun-}} '''chim''' # [[chim#Tiếng Việt|Chim]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Mường]] [[Thể loại:Lớp Chim]] {{-hnu-}} {{-pron-}} * {{IPA4|hnu|/ciːm/}} {{-noun-}} {{pn}} # [[chim#Tiếng Việt|chim]]. [[Thể loại:Danh từ tiếng Pọng]] {{-tou-}} {{-pron-}} * {{IPA4|tou|/ciːm¹/}} {{-noun-}} {{pn}} # {{term|Cuối Chăm}} [[chim#Tiếng Việt|chim]]. [[Thể loại:Danh từ tiếng Thổ]] tkt85pamglhwab3efa1kibmrta585dl 2350896 2350644 2026-05-07T10:39:06Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350896 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = mkh-proto | attested = 0 | term = ciim }} {{-nôm-}} {{top}} *[[󰖀]]: [[chim]] *[[𪀄]]: [[chim]] {{mid}} *[[󰕿]]: [[chim]] {{bottom}} {{-noun-}} [[Tập tin:Kookaburra portrait.jpg|nhỏ|phải|chim]] '''chim''' # [[động vật|Động vật]] [[lông vũ]], thường [[bay lượn]], [[chuyền]] [[cành]] và [[hót]] [[líu lo]]. #: '''''Chim''' bay.'' #: '''''Chim''' hót.'' #: '''''Chim''' có cánh, cá có vây.'' (tục ngữ) #: ''Tổ '''chim'''.'' # {{@|thông tục}} [[dương vật|Dương vật]] của [[đàn ông]]. # {{@|lóng|Nam Việt Nam}} [[bộ phận|Bộ phận]] [[sinh dục]] của [[nữ giới]] (ít dùng). {{-trans-}} {{trans-top|động vật lông vũ, thường bay lượn}} * {{sqi}}: [[zog]] {{g|m}} * {{eng}}: [[bird]] * {{nod}}: [[ᨶᩫ᩠ᨠ]] * {{isl}}: [[fugl]] {{g|m}} * {{bul}}: [[птица]] {{f}} (''ptíca'') * {{cat-old}}: [[ocell]] {{g|m}} * {{dan}}: [[fugl]] {{g|c}} * {{deu}}: [[Vogel]] {{g|m}} * {{nld}}: [[vogel]] {{g|m}} * {{khm}}: [[បក្សី]] (''baksəy'') * {{lao}}: [[ນົກ]] * {{khb}}: [[ᦷᦓᧅ]] * {{mya}}: [[ငှက်]] (''hngak'') {{trans-mid}} * {{mnw}}: [[ဂစေံ]] * {{mtq}}: [[chim#Tiếng Mường|chim]] * {{rus}}: [[птица]] {{f}} (''ptíca'') * {{jpn}}: [[鳥]] * {{fra}}: [[oiseau]] {{g|m}} * {{spa}}: [[pájaro]] {{g|m}}, [[ave]] {{f}} * {{tha}}: [[นก]] (''nók'') * {{blt}}: [[ꪶꪙꪀ]] * {{kor}}: [[새]] (''sæ'') * {{ita}}: [[uccello]] {{g|m}} * {{vol}}: (♂♀) [[böd]], (♂) [[hiböd]], (♀) [[jiböd]] {{trans-bottom}} {{trans-top|dương vật}} * {{eng}}: [[penis]] * {{fra}}: [[pénis]] * {{zho}}: [[屌]], [[鳥]] {{trans-bottom}} {{-related-}} * [[bướm]] {{-ref-}} {{R:WinVNKey:Lê Sơn Thanh}} {{-cje-}} {{-noun-}} {{head|cje|Danh từ}} # {{l|vi|chim}}. {{-mtq-}} {{-noun-}} '''chim''' # [[chim#Tiếng Việt|Chim]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Mường]] [[Thể loại:Lớp Chim]] {{-hnu-}} {{-pron-}} * {{IPA4|hnu|/ciːm/}} {{-noun-}} {{pn}} # [[chim#Tiếng Việt|chim]]. [[Thể loại:Danh từ tiếng Pọng]] {{-tou-}} {{-pron-}} * {{IPA4|tou|/ciːm¹/}} {{-noun-}} {{pn}} # {{term|Cuối Chăm}} [[chim#Tiếng Việt|chim]]. [[Thể loại:Danh từ tiếng Thổ]] qo6mdy2ouomkyv3twbr5qamn7zamh9d đầu 0 2244 2350441 2296978 2026-05-06T12:19:25Z Intolerable situation 44958 2350441 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Danh từ'') Phiên âm từ [[chữ Hán]] <big>[[頭]]</big>. {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[cổ]], [[đầu]], [[sắc]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] {{mid}} * [[夲]]: [[bản]], [[thao]], [[đầu]], [[bổn]] * [[投]]: [[đậu]], [[đầu]] * [[头]]: [[đầu]] * [[酘]]: [[đầu]], [[phân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[亠]]: [[đầu]] * [[頭]]: [[đầu]] {{mid}} * [[投]]: [[đầu]] * [[骰]]: [[đầu]] {{bottom}} {{-nôm-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[đầu]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] * [[投]]: [[đầu]], [[nhầu]] {{mid}} * [[头]]: [[đầu]] * [[㪗]]: [[đầu]] * [[酘]]: [[đầu]] * [[姚]]: [[rêu]], [[đầu]], [[riêu]], [[diêu]], [[đào]], [[dao]] {{bottom}} {{-paro-}} {{đầu}} * [[dàu]] * [[dáu]] * [[dâu]] * [[dầu]] * [[dấu]] * [[dậu]] * [[Dậu]] * [[dẩu]] * [[dẫu]] * [[đau]] * [[đàu]] * [[đâu]] * [[đấu]] * [[đậu]] * [[đẩu]] {{cuối}} {{-noun-}} {{picdic/vie/head}} [[Tập tin:Giraffa camelopardalis head (Profil).jpg|nhỏ|Phần '''đầu''' của một con hươu cao cổ.]] [[Tập tin:Locomotive at Giap Bat Station (2).jpg|nhỏ|'''Đầu''' máy xe lửa.]] {{pn}} # Phần trên cùng của [[cơ thể]] con [[người]] hay phần trước nhất của cơ thể [[động vật]], nơi có [[bộ óc]] và nhiều [[giác quan]] khác. #* '''1938''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “Chương III”, trong ''Lời thề trước miễu''<sup>[https://vi.wikisource.org/wiki/L%E1%BB%9Di_th%E1%BB%81_tr%C6%B0%E1%BB%9Bc_mi%E1%BB%85u/Ch%C6%B0%C6%A1ng_III]</sup>: #*: Ông Hương trưởng quá chén, ông gặm cái '''đầu''' gà chưa xong, nên ông cứ ép khách, chớ ông ăn không được. #* [[w:La Quán Trung|La Quán Trung]], “Hồi 33”, trong ''Tam quốc diễn nghĩa'', [[w:Phan Kế Bính|Phan Kế Bính]] dịch, [[w:Bùi Kỷ|Bùi Kỷ]] hiệu đính<sup>[https://vi.wikisource.org/wiki/Tam_qu%E1%BB%91c_di%E1%BB%85n_ngh%C4%A9a/H%E1%BB%93i_33]</sup>: #*: Đi đến Thượng Lộ thì bị Đô uý Vương Viêm giết, đem '''đầu''' đến dâng Tào Tháo. # {{term|Dùng hạn chế trong một số tổ hợp}} Đầu của con người, coi là biểu tượng của [[suy nghĩ]], [[nhận thức]]. #: {{ux|vi|Vấn đề đau '''đầu'''.}} #: {{ux|vi|Cứng '''đầu'''.}} # Phần có [[tóc]] [[mọc]] ở trên đầu con người; tóc (''nói tổng quát''). #: {{ux|vi|Gãi '''đầu''' gãi tai.''}} #: {{ux|vi|Chải '''đầu'''.}} #: {{ux|vi|Mái '''đầu''' xanh.}} #: {{ux|vi|'''Đầu''' bạc.}} #* '''1932''', [[w:Phan Khôi|Phan Khôi]], ''Tình già'', Phụ nữ tân văn, Sài Gòn, số 122<sup>[https://vi.wikisource.org/wiki/T%C3%ACnh_gi%C3%A0]</sup>: #*: Dưới ngọn đèn mờ, trong gian nhà nhỏ, hai cái '''đầu''' xanh kề nhau than thở #* [[w:Nguyễn Dữ|Nguyễn Dữ]], “Chuyện nghiệp-oan của Đào-thị”, trong ''Truyền kỳ mạn lục'', bản dịch của [[w:Trúc Khê (nhà văn)|Trúc Khê Ngô Văn Triện]]<sup>[https://vi.wikisource.org/wiki/Truy%E1%BB%81n_k%E1%BB%B3_m%E1%BA%A1n_l%E1%BB%A5c/7]</sup>: #*: Hàn-than sợ phải cạo trọc '''đầu''' và mặc đồ nâu sồng, trốn đến tu ở chùa Phật-tích, (chùa Thầy); giảng kinh thuyết kệ, chỉ mấy tháng đã lảu thông lắm. # Phần trước nhất hoặc phần trên cùng của một số [[vật]]. #: {{ux|vi|'''Đầu''' máy bay.}} #: {{ux|vi|Trên '''đầu''' tủ.}} #: {{ux|vi|Sóng bạc '''đầu'''.}} #* {{quote-book|vi|author=Thạch Lam|authorlink=Thạch Lam|title=Gió lạnh đầu mùa|url={{fullurle:s:Gió lạnh đầu mùa}}|year=1937|publisher=NXB Đời nay|passage=Chị Lan từ trong buồng đi ra, khệ nệ ôm cái thúng quần áo đặt lên '''đầu''' phản.}} # Phần có [[điểm]] [[xuất phát]] của một khoảng [[không gian]] hoặc [[thời gian]]. #: {{ux|vi|Đi từ '''đầu''' tỉnh đến cuối tỉnh.}} #: {{ux|vi|Nhà ở '''đầu''' làng.}} #: {{ux|vi|'''Đầu''' mùa thu.}} #: {{ux|vi|Những ngày '''đầu''' tháng.}} #* [[w:Phạm Đình Hổ|Phạm Đình Hổ]], “Thác oan”, trong ''Vũ trung tùy bút'', bản dịch của [[w:Nguyễn Hữu Tiến (nhà nghiên cứu)|Nguyễn Hữu Tiến]]<sup>[https://vi.wikisource.org/wiki/V%C5%A9_trung_t%C3%B9y_b%C3%BAt/Ch%C6%B0%C6%A1ng_XXXII]</sup>: #*: Ông có cái nhà tranh năm gian, '''đầu''' phía đông là phòng vợ chồng người con trưởng, tên là Doãn Bạt. # Phần ở tận cùng, giống nhau ở hai phía [[đối lập]] trên [[chiều dài]] của một vật. #: {{ux|vi|Hai bên '''đầu''' cầu.}} #: {{ux|vi|Nắm một '''đầu''' dây.}} #: {{ux|vi|Trở '''đầu''' đũa.}} #* {{quote-book|vi|author=Ngô Tất Tố|authorlink=Ngô Tất Tố|chapter=Chương IV|chapterurl={{fullurle:s:Tắt đèn/IV}}|title=Tắt đèn|url={{fullurle:s:Tắt đèn}}|year=1939|publisher=NXB Mai Lĩnh|passage=Rồi hai ông hằm hằm túm lấy '''đầu''' thừng, sền sệt điệu anh Dậu xuống thềm.}} # [[vị trí|Vị trí]] hoặc [[thời điểm]] thứ [[nhất]], trên hoặc trước tất cả những vị trí, thời điểm khác. #: {{ux|vi|Hàng ghế '''đầu'''.}} #: {{ux|vi|Lần '''đầu'''.}} #: {{ux|vi|Tập '''đầu''' của bộ sách.}} #: {{ux|vi|Đếm lại từ '''đầu'''.}} #: {{ux|vi|Dẫn '''đầu'''.}} # Từ dùng để chỉ từng [[đơn vị]] để [[tính]] [[bình quân]] về người, [[gia súc]], đơn vị [[diện tích]]. #: {{ux|vi|Sản lượng tính theo '''đầu''' người.}} #: {{ux|vi|Mỗi lao động hai '''đầu''' lợn.}} #: {{ux|vi|Tăng số phân bón trên mỗi '''đầu''' mẫu.}} # Từ dùng để chỉ từng đơn vị [[máy móc]], nói chung. #: {{ux|vi|'''Đầu''' máy khâu.}} #: {{ux|vi|'''Đầu''' video.}} #: {{ux|vi|'''Đầu''' đọc.}} #: {{ux|vi|'''Đầu''' câm.}} # {{term|Khẩu ngữ}} [[đầu video|Đầu video]] (''nói tắt''). #: {{ux|vi|'''Đầu''' đa hệ.}} {{-drv-}} {{đầu}} * [[ấm đầu]] * [[bắt đầu]] * [[cá mập đầu búa]] * [[đầu bạc răng long]] * [[đầu chày đít thớt]] * [[đầu đất]] * [[đầu đội trời chân đạp đất]] * [[đầu đuôi]] * [[đầu đường xó chợ]] * [[đầu giác]] * [[đầu gối]] * [[đầu hai thứ tóc]] * [[đầu hãn]] * [[đầu hồi]] * [[đầu hôm]] * [[đầu não]] * {{l|vi|đầu nước}} * [[đầu óc]] * [[đầu sỏ]] * [[đầu têu]] * [[đầu tóc]] * [[đầu trâu mặt ngựa]] * [[đầu trò]] * [[đầu trộm đuôi cướp]] * [[đầu trứng]] * [[đầu xuôi đuôi lọt]] * [[gội đầu]] * [[khấu đầu]] * [[khỉ đầu chó]] * [[linh dương đầu bò]] * [[nấm đầu khỉ]] * [[nước đổ đầu vịt]] * [[phủ đầu]] * [[treo đầu dê bán thịt chó]] {{cuối}} {{-trans-}} {{trans-top|Phần của cơ thể}} * {{ara}}: {{t+|ar|رَأْس|m|tr=raʾs}} ** {{arz}}: {{t|arz|راس|f|tr=rās}}, {{t|arz|دماغ|f|tr=demāḡ}} * {{aau}}: {{t+|aau|makwe}} * {{abk}}: {{t+|ab|ахы|tr=axə}} * {{adt}}: {{t+|adt|vapardla}}, {{t+|adt|ngundi}} * {{afr}}: {{t+|af|kop}} * {{agr}}: {{t+|agr|buuk}} * {{ain}}: {{t+|ain|サパ|tr=sapa}}, {{t+|ain|パケ|tr=pake}} * {{ake}}: {{t|ake|puꞌpɨ}} * {{akk}}: {{t|akk|𒊕|tr=rēšu}} * {{akl}}: {{t|akl|ueo}} * {{akz}}: {{t+|akz|isbakko}} * {{sqi}}: {{t|sq|kokë|f}}, {{t|sq|krye|n}}, {{t|sq|kaptinë|f}} * {{amh}}: {{t+|am|ራስ|tr=ras}} * {{agm}}: {{t|agm|mɨtɨho}} * {{eng}}: {{t+|en|head}}, {{t|en|caput}}, {{t|en|pate}} {{q|từ lóng}}, {{t|en|noggin}} {{q|từ lóng}}, {{t|en|loaf}} {{q|từ lóng}}, {{t|en|nut}} {{q|từ lóng}}, {{t|en|noodle}} {{q|từ lóng}}, {{t|en|bonce}} {{q|từ lóng ở Anh}} ** {{ang}}: {{t|ang|hēafod|n}}, {{t|ang|hafela|m}} ** {{enm}}: {{t|enm|heed}} * {{apy}}: {{t|apy|upuhpo}} * {{arg}}: {{t+|an|capeza}} * {{hye}}: {{t|hy|գլուխ|tr=glux}} * {{asm}}: {{t+|as|মূৰ|tr=mur}}, {{t+|as|মাথা|tr=matha}} * {{ast}}: {{t+|ast|cabeza|f}}, {{t+|ast|tiesta|f}} * {{aze}}: {{t|az|baş}} * {{pol}}: {{t+|pl|głowa|f}} * {{bak}}: {{t|ba|баш|tr=baš}} * {{eus}}: {{t|eu|buru}}, {{t|eu|kasko}}, {{t|eu|gazta}} * {{non}}: {{t|non|hǫfuð|n}} * {{isl}}: {{t|is|höfuð|n}}, {{q|ít trang trọng}} {{t|is|haus|m}} * {{langname|bor}}: {{t|bor|aora}} * {{por}}: {{t|pt|cabeça|f}} * {{bre}}: {{t|br|penn|m}} * {{bul}}: {{t|bg|глава|f|tr=glavá}} * {{cat}}: {{t+|ca|cap|m}} * {{chr}}: {{t|chr|ᎠᏍᎪᎵ|tr=asgoli}} * {{cic}}: {{t|cic|ishkobo}} * {{chw}}: {{t|chw|murru}} * {{dlm}}: {{t|dlm|cup|m}} * {{xda}}: {{t|xda|kamburung}} * {{xdk}}: {{t|xdk|gabara}} * {{heb}}: {{t+|he|ראש|m|tr=rosh}} * {{dlg}}: {{t|dlg|бас|tr=bas}} * {{dan}}: {{t+|da|hoved|n}} * {{deu}}: {{t|de|Kopf|m}}, {{t|de|Haupt|n}} {{q|hiếm khi được dùng}} * {{est}}: {{t|et|pea}} * {{eve}}: {{t|eve|дил|tr=ʒil}} * {{ewe}}: {{t|ee|ta}} * {{fao}}: {{t|fo|høvd|n}}, {{t|fo|høvur|n}} * {{kat}}: {{t|ka|თავი}} * {{nld}}: {{t+|nl|hoofd|n}} * {{hau}}: {{t|ha|kai}} * {{haw}}: {{t|haw|poʻo}} * {{hin}}: {{t+|hi|सिर|m|tr=sir}} * {{hun}}: {{t+|hu|fej}} * {{ell}}: {{t+|el|κεφάλι|n|tr=kefáli}} * {{ido}}: {{t+|io|kapo}} * {{ind}}: {{t+|id|kepala}}, {{t+|id|hulu}} * {{jav}}: {{t|jv|endhas}}, {{t|jv|sirah}}, {{t|jv|mustaka}} * {{kjh}}: {{t|kjh|пас|tr=pas}} * {{khm}}: {{t+|km|ក្បាល|tr=kbaal}} * {{kpy}}: {{t|kpy|лэвʼыт}} * {{lao}}: {{t+|lo|ຫົວ|tr=hūa}} * {{lat}}: {{t|la|caput|n}} * {{lzz}}: {{t|lzz|თი|tr=ti}} * {{iii}}: {{t|ii|ꀂꏾ|tr=i qi}} * {{lut}}: {{t|lut|sx̌əy̓us}} * {{khb}}: {{t|khb|ᦷᦠ|tr=ḣo}} * {{msa}}: {{t|ms|kepala}}, {{t|ms|hulu}} * {{mas}}: {{t|mas|elukunya}} * {{mkd}}: {{t|mk|глава|f|tr=glava}} * {{mlg}}: {{t|mg|loha}} * {{mal}}: {{t|ml|തല|tr=tala}} * {{mlt}}: {{t|mt|ras}} {{trans-mid}} * {{glv}}: {{t|gv|kione|m}} * {{mnc}}: {{t|mnc|ᡠᠵᡠ|tr=uju}} * {{mri}}: {{t|mi|māhunga}}, {{t|mi|māhuna}}, {{t|mi|mātenga}}, {{t|mi|pane}}, {{t|mi|upoko}}, {{t|mi|uru}} * {{mya}}: {{t|my|ခေါင်း|tr=hkaung:}} * {{mon}}: {{t|mn|толгой|tr=tolgoi}} * {{nor}}: ** {{nob}}: {{t|no|hode|n}} ** {{nno}}: {{t|nn|hovud|n}} * {{nah}}: ** {{nci}}: {{t|nci|tzontecomatl}}, {{t|nci|cuaitl}} * {{nep}}: {{t|ne|टाउको|tr=ṭāuko}}, {{t|ne|शिर|tr=śir}} * {{rus}}: {{t+|ru|голова|f|tr=golová}} * {{wuh}}: {{t|wuh|dolo}} * {{jpn}}: {{t|ja|頭|tr=あたま, atama}}, {{t|ja|頭|tr=かしら, kashira}}, {{t|ja|頭部|tr=とうぶ, tōbu}} {{q|chính thức}}, {{t|ja|頭|tr=こうべ, kōbe}} {{q|cổ}} * {{nrf}}: {{t|nrf|tête|f}} * {{nnv}}: {{t|nnv|kakarti}} * {{oci}}: {{t|oc|cap|m}}, {{t|oc|tèsta|f}} * {{ori}}: {{t|or|ଶିର|tr=śirô}} * {{orm}}: {{t|om|mataa}} * {{oss}}: {{t|os|сӕр|tr=sær}} * {{fra}}: {{t+|fr|tête|f}} ** {{fro}}: {{t|fro|teste}}, {{t|fro|chief}} * {{fin}}: {{t|fi|pää}} * {{epo}}: {{t+|eo|kapo}} * {{rhg}}: {{t|rhg|matá}} * {{sgs}}: {{t|sgs|galva|f}} * {{sag}}: {{t|sg|li}} * {{ces}}: {{t+|cs|hlava|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|глава|f}} ** {{Latn}}: {{t|sh|glava|f}} * {{cjs}}: {{t|cjs|паш|tr=paş}} * {{sin}}: {{t|si|ඔළුව|tr=oḷuwa}} * {{slk}}: {{t|sk|hlava|f}} * {{slv}}: {{t|sl|glava|f}}, {{t|sl|buča}} * {{som}}: {{t|so|madax}} * {{sto}}: {{t|sto|pa}} * {{sux}}: {{t|sux|𒊕|tr=SAG}} * {{swa}}: {{t|sw|kichwa}} * {{tgl}}: {{t+|tl|ulo}} * {{tam}}: {{t+|ta|தலை|tr=talai}} * {{bod}}: {{t|bo|མགོ|tr=mgo}}, {{t|bo|དབུ|tr=dbu}} {{q|kính ngữ}} * {{twf}}: {{t|twf|p’ínemą}} * {{crh}}: {{t|crh|baş}} * {{spa}}: {{t|es|cabeza|f}}, {{t+|es|testa|f}}, {{t|es|maceta|f}} {{q|Guatemala|Nicaragua}}, {{t|es|marote|m}} {{q|Argentina|Uruguay}}, {{t|es|sabiola|f}} {{q|Uruguay}}, {{t|es|coco|m}} {{q|thông tục}}, {{t|es|melón|m}} {{q|thông tục}}, {{t|es|tarro|m}} {{q|thông tục}}, {{t|es|chola|f}} {{q|thông tục}} * {{tel}}: {{t|te|తల|tr=tala}} * {{tha}}: {{t+|th|หัว|tr=hǔua}}, {{t+|th|ศีรษะ|tr=sǐi-sà}} * {{tur}}: {{t|tr|baş}}, {{t|tr|kafa}} * {{swe}}: {{t|sv|huvud|n}}, {{t|sv|skalle|c}} * {{tir}}: {{t|ti|ርእሲ|tr=rəʾsi}} * {{kor}}: {{t+|ko|머리|tr=meori}} * {{zho}}: ** {{gan}}: {{t+|gan|頭}}, {{t+|gan|头|tr=teu2}} ** {{dng}}: {{t+|dng|ту|tr=tu}} ** {{hak}}: {{t+|hak|頭那}}, {{t+|hak|头那|tr=thèu-nà}} ** {{cdo}}: {{t+|cdo|頭}}, {{t+|cdo|头|tr=tàu}} ** {{nan}}: {{t+|nan|頭}}, {{t+|nan|头|tr=thâu}} ** {{wuu}}: {{t+|wuu|頭}}, {{t+|wuu|头|tr=deu}} ** {{cmn}}: {{t+|cmn|頭}}, {{t+|cmn|头|tr=tóu}}, {{t+|cmn|頭腦}}, {{t+|cmn|头脑|tr=tóunǎo}} ** {{yue}}: {{t+|yue|頭}}, {{t+|yue|头|tr=tau4}} ** {{hsn}}: {{t+|hsn|腦殼}}, {{t+|hsn|脑壳|tr=lau3 ko6}} * {{ukr}}: {{t|uk|голова|f|tr=holová}} * {{urd}}: {{t+|ur|سر|m|tr=sir}} * {{uzb}}: {{t|uz|bosh}}, {{t|uz|kalla}} * {{vec}}: {{t|vec|testa|f}}, {{t|vec|cao|m}}, {{t|vec|cavo|m}} * {{vol}}: {{t+|vo|kap}} * {{cym}}: {{t+|cy|pen|m}} * {{wln}}: {{t|wa|tiesse}} * {{wol}}: {{t|wo|boopa}} * {{xho}}: {{t|xh|intloko}} * {{ita}}: {{t+|it|testa|f}}, {{t+|it|capo|m}} * {{yid}}: {{t|yi|קאָפּ|tr=kop}} * {{yox}}: {{t|yox|頭|tr=ちぶる, chiburu}}, {{t|yox|ふらじ|tr=furazi}} * {{nmn}}: {{t|nmn|nàn}} {{trans-bottom}} {{trans-top|Tóc (nói tổng quát) — xem bản dịch tại ''[[tóc]]''}} {{trans-bottom}} {{-verb-}} {{pn}} # {{term|Kết hợp hạn chế}} [[theo|Theo]]. #: {{ux|vi|'''Đầu''' Phật (đi tu).}} # {{term|Khẩu ngữ}} [[đầu hàng|Đầu hàng]] (''nói tắt''). #: {{ux|vi|Thà chết không '''đầu''' giặc.}} #* [[w:Nguyễn Đình Chiểu|Nguyễn Đình Chiểu]], ''Lục Vân Tiên'' (bản Quốc ngữ 2082 câu)<sup>[https://vi.wikisource.org/wiki/L%E1%BB%A5c_V%C3%A2n_Ti%C3%AAn_(b%E1%BA%A3n_Qu%E1%BB%91c_ng%E1%BB%AF_2082_c%C3%A2u)/II]</sup>: #*: Ghét đời thúc quí phân băng,<br>Sớm '''đầu''' tối đánh lằng nhằng rối dân. {{-adj-}} {{pn}} # Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu. {{-trans-}} {{trans-top|Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu}} * {{eng}}: {{t+|en|initial}} * {{nld}}: {{t+|nl|initieel}} {{trans-mid}} * {{rus}}: {{t+|ru|начальный|tr=načálʹnyj}} * {{fra}}: {{t+|fr|initial}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Động từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} 89m2obztmmdqkgz2ybj4gz9tfqgppof 2350445 2350441 2026-05-06T12:28:39Z Intolerable situation 44958 2350445 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Danh từ'') Phiên âm từ [[chữ Hán]] <big>[[頭]]</big>. {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[cổ]], [[đầu]], [[sắc]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] {{mid}} * [[夲]]: [[bản]], [[thao]], [[đầu]], [[bổn]] * [[投]]: [[đậu]], [[đầu]] * [[头]]: [[đầu]] * [[酘]]: [[đầu]], [[phân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[亠]]: [[đầu]] * [[頭]]: [[đầu]] {{mid}} * [[投]]: [[đầu]] * [[骰]]: [[đầu]] {{bottom}} {{-nôm-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[đầu]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] * [[投]]: [[đầu]], [[nhầu]] {{mid}} * [[头]]: [[đầu]] * [[㪗]]: [[đầu]] * [[酘]]: [[đầu]] * [[姚]]: [[rêu]], [[đầu]], [[riêu]], [[diêu]], [[đào]], [[dao]] {{bottom}} {{-paro-}} {{đầu}} * [[dàu]] * [[dáu]] * [[dâu]] * [[dầu]] * [[dấu]] * [[dậu]] * [[Dậu]] * [[dẩu]] * [[dẫu]] * [[đau]] * [[đàu]] * [[đâu]] * [[đấu]] * [[đậu]] * [[đẩu]] {{cuối}} {{-noun-}} {{picdic/vie/head}} [[Tập tin:Giraffa camelopardalis head (Profil).jpg|nhỏ|Phần '''đầu''' của một con hươu cao cổ.]] [[Tập tin:Locomotive at Giap Bat Station (2).jpg|nhỏ|'''Đầu''' máy xe lửa.]] {{pn}} # Phần trên cùng của [[cơ thể]] con [[người]] hay phần trước nhất của cơ thể [[động vật]], nơi có [[bộ óc]] và nhiều [[giác quan]] khác. #* '''1938''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “Chương III”, trong ''Lời thề trước miễu''<sup>[https://vi.wikisource.org/wiki/L%E1%BB%9Di_th%E1%BB%81_tr%C6%B0%E1%BB%9Bc_mi%E1%BB%85u/Ch%C6%B0%C6%A1ng_III]</sup>: #*: Ông Hương trưởng quá chén, ông gặm cái '''đầu''' gà chưa xong, nên ông cứ ép khách, chớ ông ăn không được. #* [[w:La Quán Trung|La Quán Trung]], “Hồi 33”, trong ''Tam quốc diễn nghĩa'', [[w:Phan Kế Bính|Phan Kế Bính]] dịch, [[w:Bùi Kỷ|Bùi Kỷ]] hiệu đính<sup>[https://vi.wikisource.org/wiki/Tam_qu%E1%BB%91c_di%E1%BB%85n_ngh%C4%A9a/H%E1%BB%93i_33]</sup>: #*: Đi đến Thượng Lộ thì bị Đô uý Vương Viêm giết, đem '''đầu''' đến dâng Tào Tháo. # {{term|Dùng hạn chế trong một số tổ hợp}} Đầu của con người, coi là biểu tượng của [[suy nghĩ]], [[nhận thức]]. #: {{ux|vi|Vấn đề đau '''đầu'''.}} #: {{ux|vi|Cứng '''đầu'''.}} # Phần có [[tóc]] [[mọc]] ở trên đầu con người; tóc (''nói tổng quát''). #: {{ux|vi|Gãi '''đầu''' gãi tai.''}} #: {{ux|vi|Chải '''đầu'''.}} #: {{ux|vi|Mái '''đầu''' xanh.}} #: {{ux|vi|'''Đầu''' bạc.}} #* '''1932''', [[w:Phan Khôi|Phan Khôi]], ''Tình già'', Phụ nữ tân văn, Sài Gòn, số 122<sup>[https://vi.wikisource.org/wiki/T%C3%ACnh_gi%C3%A0]</sup>: #*: Dưới ngọn đèn mờ, trong gian nhà nhỏ, hai cái '''đầu''' xanh kề nhau than thở #* [[w:Nguyễn Dữ|Nguyễn Dữ]], “Chuyện nghiệp-oan của Đào-thị”, trong ''Truyền kỳ mạn lục'', bản dịch của [[w:Trúc Khê (nhà văn)|Trúc Khê Ngô Văn Triện]]<sup>[https://vi.wikisource.org/wiki/Truy%E1%BB%81n_k%E1%BB%B3_m%E1%BA%A1n_l%E1%BB%A5c/7]</sup>: #*: Hàn-than sợ phải cạo trọc '''đầu''' và mặc đồ nâu sồng, trốn đến tu ở chùa Phật-tích, (chùa Thầy); giảng kinh thuyết kệ, chỉ mấy tháng đã lảu thông lắm. # Phần trước nhất hoặc phần trên cùng của một số [[vật]]. #: {{ux|vi|'''Đầu''' máy bay.}} #: {{ux|vi|Trên '''đầu''' tủ.}} #: {{ux|vi|Sóng bạc '''đầu'''.}} #* {{quote-book|vi|author=Thạch Lam|authorlink=Thạch Lam|title=Gió lạnh đầu mùa|url={{fullurle:s:Gió lạnh đầu mùa}}|year=1937|publisher=NXB Đời nay|passage=Chị Lan từ trong buồng đi ra, khệ nệ ôm cái thúng quần áo đặt lên '''đầu''' phản.}} # Phần có [[điểm]] [[xuất phát]] của một khoảng [[không gian]] hoặc [[thời gian]]. #: {{ux|vi|Đi từ '''đầu''' tỉnh đến cuối tỉnh.}} #: {{ux|vi|Nhà ở '''đầu''' làng.}} #: {{ux|vi|'''Đầu''' mùa thu.}} #: {{ux|vi|Những ngày '''đầu''' tháng.}} #* [[w:Phạm Đình Hổ|Phạm Đình Hổ]], “Thác oan”, trong ''Vũ trung tùy bút'', bản dịch của [[w:Nguyễn Hữu Tiến (nhà nghiên cứu)|Nguyễn Hữu Tiến]]<sup>[https://vi.wikisource.org/wiki/V%C5%A9_trung_t%C3%B9y_b%C3%BAt/Ch%C6%B0%C6%A1ng_XXXII]</sup>: #*: Ông có cái nhà tranh năm gian, '''đầu''' phía đông là phòng vợ chồng người con trưởng, tên là Doãn Bạt. # Phần ở tận cùng, giống nhau ở hai phía [[đối lập]] trên [[chiều dài]] của một vật. #: {{ux|vi|Hai bên '''đầu''' cầu.}} #: {{ux|vi|Nắm một '''đầu''' dây.}} #: {{ux|vi|Trở '''đầu''' đũa.}} #* {{quote-book|vi|author=Ngô Tất Tố|authorlink=Ngô Tất Tố|chapter=Chương IV|chapterurl={{fullurle:s:Tắt đèn/IV}}|title=Tắt đèn|url={{fullurle:s:Tắt đèn}}|year=1939|publisher=NXB Mai Lĩnh|passage=Rồi hai ông hằm hằm túm lấy '''đầu''' thừng, sền sệt điệu anh Dậu xuống thềm.}} # [[vị trí|Vị trí]] hoặc [[thời điểm]] thứ [[nhất]], trên hoặc trước tất cả những vị trí, thời điểm khác. #: {{ux|vi|Hàng ghế '''đầu'''.}} #: {{ux|vi|Lần '''đầu'''.}} #: {{ux|vi|Tập '''đầu''' của bộ sách.}} #: {{ux|vi|Đếm lại từ '''đầu'''.}} #: {{ux|vi|Dẫn '''đầu'''.}} # Từ dùng để chỉ từng [[đơn vị]] để [[tính]] [[bình quân]] về người, [[gia súc]], đơn vị [[diện tích]]. #: {{ux|vi|Sản lượng tính theo '''đầu''' người.}} #: {{ux|vi|Mỗi lao động hai '''đầu''' lợn.}} #: {{ux|vi|Tăng số phân bón trên mỗi '''đầu''' mẫu.}} # Từ dùng để chỉ từng đơn vị [[máy móc]], nói chung. #: {{ux|vi|'''Đầu''' máy khâu.}} #: {{ux|vi|'''Đầu''' video.}} #: {{ux|vi|'''Đầu''' đọc.}} #: {{ux|vi|'''Đầu''' câm.}} # {{term|Khẩu ngữ}} [[đầu video|Đầu video]] (''nói tắt''). #: {{ux|vi|'''Đầu''' đa hệ.}} {{-drv-}} {{đầu}} * [[ấm đầu]] * [[bắt đầu]] * [[cá mập đầu búa]] * [[đầu bạc răng long]] * [[đầu chày đít thớt]] * [[đầu đất]] * [[đầu đội trời chân đạp đất]] * [[đầu đuôi]] * [[đầu đường xó chợ]] * [[đầu giác]] * [[đầu gối]] * [[đầu hai thứ tóc]] * [[đầu hãn]] * [[đầu hồi]] * [[đầu hôm]] * [[đầu não]] * {{l|vi|đầu nước}} * [[đầu óc]] * [[đầu sỏ]] * [[đầu têu]] * [[đầu tóc]] * [[đầu trâu mặt ngựa]] * [[đầu trò]] * [[đầu trộm đuôi cướp]] * [[đầu trứng]] * [[đầu xuôi đuôi lọt]] * [[gội đầu]] * [[khấu đầu]] * [[khỉ đầu chó]] * [[linh dương đầu bò]] * [[nấm đầu khỉ]] * [[nước đổ đầu vịt]] * [[phủ đầu]] * [[treo đầu dê bán thịt chó]] {{cuối}} {{-trans-}} {{trans-top|Phần của cơ thể}} * {{ara}}: {{t+|ar|رَأْس|m|tr=raʾs}} ** {{arz}}: {{t|arz|راس|f|tr=rās}}, {{t|arz|دماغ|f|tr=demāḡ}} * {{aau}}: {{t+|aau|makwe}} * {{abk}}: {{t+|ab|ахы|tr=axə}} * {{adt}}: {{t+|adt|vapardla}}, {{t+|adt|ngundi}} * {{afr}}: {{t+|af|kop}} * {{agr}}: {{t+|agr|buuk}} * {{ain}}: {{t+|ain|サパ|tr=sapa}}, {{t+|ain|パケ|tr=pake}} * {{ake}}: {{t|ake|puꞌpɨ}} * {{akk}}: {{t|akk|𒊕|tr=rēšu}} * {{akl}}: {{t|akl|ueo}} * {{akz}}: {{t+|akz|isbakko}} * {{sqi}}: {{t|sq|kokë|f}}, {{t|sq|krye|n}}, {{t|sq|kaptinë|f}} * {{amh}}: {{t+|am|ራስ|tr=ras}} * {{agm}}: {{t|agm|mɨtɨho}} * {{eng}}: {{t+|en|head}}, {{t|en|caput}}, {{t|en|pate}} {{q|từ lóng}}, {{t|en|noggin}} {{q|từ lóng}}, {{t|en|loaf}} {{q|từ lóng}}, {{t|en|nut}} {{q|từ lóng}}, {{t|en|noodle}} {{q|từ lóng}}, {{t|en|bonce}} {{q|từ lóng ở Anh}} ** {{ang}}: {{t|ang|hēafod|n}}, {{t|ang|hafela|m}} ** {{enm}}: {{t|enm|heed}} * {{apy}}: {{t|apy|upuhpo}} * {{arg}}: {{t+|an|capeza}} * {{hye}}: {{t|hy|գլուխ|tr=glux}} * {{asm}}: {{t+|as|মূৰ|tr=mur}}, {{t+|as|মাথা|tr=matha}} * {{ast}}: {{t+|ast|cabeza|f}}, {{t+|ast|tiesta|f}} * {{aze}}: {{t|az|baş}} * {{pol}}: {{t+|pl|głowa|f}} * {{bak}}: {{t|ba|баш|tr=baš}} * {{eus}}: {{t|eu|buru}}, {{t|eu|kasko}}, {{t|eu|gazta}} * {{non}}: {{t|non|hǫfuð|n}} * {{isl}}: {{t|is|höfuð|n}}, {{q|ít trang trọng}} {{t|is|haus|m}} * {{langname|bor}}: {{t|bor|aora}} * {{por}}: {{t|pt|cabeça|f}} * {{bre}}: {{t|br|penn|m}} * {{bul}}: {{t|bg|глава|f|tr=glavá}} * {{cat}}: {{t+|ca|cap|m}} * {{chr}}: {{t|chr|ᎠᏍᎪᎵ|tr=asgoli}} * {{cic}}: {{t|cic|ishkobo}} * {{chw}}: {{t|chw|murru}} * {{dlm}}: {{t|dlm|cup|m}} * {{xda}}: {{t|xda|kamburung}} * {{xdk}}: {{t|xdk|gabara}} * {{heb}}: {{t+|he|ראש|m|tr=rosh}} * {{dlg}}: {{t|dlg|бас|tr=bas}} * {{dan}}: {{t+|da|hoved|n}} * {{deu}}: {{t|de|Kopf|m}}, {{t|de|Haupt|n}} {{q|hiếm khi được dùng}} * {{est}}: {{t|et|pea}} * {{eve}}: {{t|eve|дил|tr=ʒil}} * {{ewe}}: {{t|ee|ta}} * {{fao}}: {{t|fo|høvd|n}}, {{t|fo|høvur|n}} * {{kat}}: {{t|ka|თავი}} * {{nld}}: {{t+|nl|hoofd|n}} * {{hau}}: {{t|ha|kai}} * {{haw}}: {{t|haw|poʻo}} * {{hin}}: {{t+|hi|सिर|m|tr=sir}} * {{hun}}: {{t+|hu|fej}} * {{ell}}: {{t+|el|κεφάλι|n|tr=kefáli}} * {{ido}}: {{t+|io|kapo}} * {{ind}}: {{t+|id|kepala}}, {{t+|id|hulu}} * {{jav}}: {{t|jv|endhas}}, {{t|jv|sirah}}, {{t|jv|mustaka}} * {{kjh}}: {{t|kjh|пас|tr=pas}} * {{khm}}: {{t+|km|ក្បាល|tr=kbaal}} * {{kpy}}: {{t|kpy|лэвʼыт}} * {{lao}}: {{t+|lo|ຫົວ|tr=hūa}} * {{lat}}: {{t|la|caput|n}} * {{lzz}}: {{t|lzz|თი|tr=ti}} * {{iii}}: {{t|ii|ꀂꏾ|tr=i qi}} * {{lut}}: {{t|lut|sx̌əy̓us}} * {{khb}}: {{t|khb|ᦷᦠ|tr=ḣo}} * {{msa}}: {{t|ms|kepala}}, {{t|ms|hulu}} * {{mas}}: {{t|mas|elukunya}} * {{mkd}}: {{t|mk|глава|f|tr=glava}} * {{mlg}}: {{t|mg|loha}} * {{mal}}: {{t|ml|തല|tr=tala}} * {{mlt}}: {{t|mt|ras}} {{trans-mid}} * {{glv}}: {{t|gv|kione|m}} * {{mnc}}: {{t|mnc|ᡠᠵᡠ|tr=uju}} * {{mri}}: {{t|mi|māhunga}}, {{t|mi|māhuna}}, {{t|mi|mātenga}}, {{t|mi|pane}}, {{t|mi|upoko}}, {{t|mi|uru}} * {{mya}}: {{t|my|ခေါင်း|tr=hkaung:}} * {{mon}}: {{t|mn|толгой|tr=tolgoi}} * {{nor}}: ** {{nob}}: {{t|no|hode|n}} ** {{nno}}: {{t|nn|hovud|n}} * {{nah}}: ** {{nci}}: {{t|nci|tzontecomatl}}, {{t|nci|cuaitl}} * {{nep}}: {{t|ne|टाउको|tr=ṭāuko}}, {{t|ne|शिर|tr=śir}} * {{rus}}: {{t+|ru|голова|f|tr=golová}} * {{wuh}}: {{t|wuh|dolo}} * {{jpn}}: {{t|ja|頭|tr=あたま, atama}}, {{t|ja|頭|tr=かしら, kashira}}, {{t|ja|頭部|tr=とうぶ, tōbu}} {{q|chính thức}}, {{t|ja|頭|tr=こうべ, kōbe}} {{q|cổ}} * {{nrf}}: {{t|nrf|tête|f}} * {{nnv}}: {{t|nnv|kakarti}} * {{oci}}: {{t|oc|cap|m}}, {{t|oc|tèsta|f}} * {{ori}}: {{t|or|ଶିର|tr=śirô}} * {{orm}}: {{t|om|mataa}} * {{oss}}: {{t|os|сӕр|tr=sær}} * {{fra}}: {{t+|fr|tête|f}} ** {{fro}}: {{t|fro|teste}}, {{t|fro|chief}} * {{fin}}: {{t+|fi|pää}} * {{epo}}: {{t+|eo|kapo}} * {{rhg}}: {{t|rhg|matá}} * {{sgs}}: {{t|sgs|galva|f}} * {{sag}}: {{t|sg|li}} * {{ces}}: {{t+|cs|hlava|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|глава|f}} ** {{Latn}}: {{t|sh|glava|f}} * {{cjs}}: {{t|cjs|паш|tr=paş}} * {{sin}}: {{t|si|ඔළුව|tr=oḷuwa}} * {{slk}}: {{t|sk|hlava|f}} * {{slv}}: {{t|sl|glava|f}}, {{t|sl|buča}} * {{som}}: {{t|so|madax}} * {{sto}}: {{t|sto|pa}} * {{sux}}: {{t|sux|𒊕|tr=SAG}} * {{swa}}: {{t|sw|kichwa}} * {{tgl}}: {{t+|tl|ulo}} * {{tam}}: {{t+|ta|தலை|tr=talai}} * {{bod}}: {{t|bo|མགོ|tr=mgo}}, {{t|bo|དབུ|tr=dbu}} {{q|kính ngữ}} * {{twf}}: {{t|twf|p’ínemą}} * {{crh}}: {{t|crh|baş}} * {{spa}}: {{t|es|cabeza|f}}, {{t+|es|testa|f}}, {{t|es|maceta|f}} {{q|Guatemala|Nicaragua}}, {{t|es|marote|m}} {{q|Argentina|Uruguay}}, {{t|es|sabiola|f}} {{q|Uruguay}}, {{t|es|coco|m}} {{q|thông tục}}, {{t|es|melón|m}} {{q|thông tục}}, {{t|es|tarro|m}} {{q|thông tục}}, {{t|es|chola|f}} {{q|thông tục}} * {{tel}}: {{t|te|తల|tr=tala}} * {{tha}}: {{t+|th|หัว|tr=hǔua}}, {{t+|th|ศีรษะ|tr=sǐi-sà}} * {{tur}}: {{t|tr|baş}}, {{t|tr|kafa}} * {{swe}}: {{t|sv|huvud|n}}, {{t|sv|skalle|c}} * {{tir}}: {{t|ti|ርእሲ|tr=rəʾsi}} * {{kor}}: {{t+|ko|머리|tr=meori}} * {{zho}}: ** {{gan}}: {{t+|gan|頭}}, {{t+|gan|头|tr=teu2}} ** {{dng}}: {{t+|dng|ту|tr=tu}} ** {{hak}}: {{t+|hak|頭那}}, {{t+|hak|头那|tr=thèu-nà}} ** {{cdo}}: {{t+|cdo|頭}}, {{t+|cdo|头|tr=tàu}} ** {{nan}}: {{t+|nan|頭}}, {{t+|nan|头|tr=thâu}} ** {{wuu}}: {{t+|wuu|頭}}, {{t+|wuu|头|tr=deu}} ** {{cmn}}: {{t+|cmn|頭}}, {{t+|cmn|头|tr=tóu}}, {{t+|cmn|頭腦}}, {{t+|cmn|头脑|tr=tóunǎo}} ** {{yue}}: {{t+|yue|頭}}, {{t+|yue|头|tr=tau4}} ** {{hsn}}: {{t+|hsn|腦殼}}, {{t+|hsn|脑壳|tr=lau3 ko6}} * {{ukr}}: {{t|uk|голова|f|tr=holová}} * {{urd}}: {{t+|ur|سر|m|tr=sir}} * {{uzb}}: {{t|uz|bosh}}, {{t|uz|kalla}} * {{vec}}: {{t|vec|testa|f}}, {{t|vec|cao|m}}, {{t|vec|cavo|m}} * {{vol}}: {{t+|vo|kap}} * {{cym}}: {{t+|cy|pen|m}} * {{wln}}: {{t|wa|tiesse}} * {{wol}}: {{t|wo|boopa}} * {{xho}}: {{t|xh|intloko}} * {{ita}}: {{t+|it|testa|f}}, {{t+|it|capo|m}} * {{yid}}: {{t|yi|קאָפּ|tr=kop}} * {{yox}}: {{t|yox|頭|tr=ちぶる, chiburu}}, {{t|yox|ふらじ|tr=furazi}} * {{nmn}}: {{t|nmn|nàn}} {{trans-bottom}} {{trans-top|Tóc (nói tổng quát) — xem bản dịch tại ''[[tóc]]''}} {{trans-bottom}} {{-verb-}} {{pn}} # {{term|Kết hợp hạn chế}} [[theo|Theo]]. #: {{ux|vi|'''Đầu''' Phật (đi tu).}} # {{term|Khẩu ngữ}} [[đầu hàng|Đầu hàng]] (''nói tắt''). #: {{ux|vi|Thà chết không '''đầu''' giặc.}} #* [[w:Nguyễn Đình Chiểu|Nguyễn Đình Chiểu]], ''Lục Vân Tiên'' (bản Quốc ngữ 2082 câu)<sup>[https://vi.wikisource.org/wiki/L%E1%BB%A5c_V%C3%A2n_Ti%C3%AAn_(b%E1%BA%A3n_Qu%E1%BB%91c_ng%E1%BB%AF_2082_c%C3%A2u)/II]</sup>: #*: Ghét đời thúc quí phân băng,<br>Sớm '''đầu''' tối đánh lằng nhằng rối dân. {{-adj-}} {{pn}} # Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu. {{-trans-}} {{trans-top|Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu}} * {{eng}}: {{t+|en|initial}} * {{nld}}: {{t+|nl|initieel}} {{trans-mid}} * {{rus}}: {{t+|ru|начальный|tr=načálʹnyj}} * {{fra}}: {{t+|fr|initial}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Động từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} crfgj9aipzw4qh5z5hwk3qew5dt8tpa 2350645 2350445 2026-05-07T07:53:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350645 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Danh từ'') Phiên âm từ [[chữ Hán]] <big>[[頭]]</big>. {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[cổ]], [[đầu]], [[sắc]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] {{mid}} * [[夲]]: [[bản]], [[thao]], [[đầu]], [[bổn]] * [[投]]: [[đậu]], [[đầu]] * [[头]]: [[đầu]] * [[酘]]: [[đầu]], [[phân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[亠]]: [[đầu]] * [[頭]]: [[đầu]] {{mid}} * [[投]]: [[đầu]] * [[骰]]: [[đầu]] {{bottom}} {{-nôm-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[đầu]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] * [[投]]: [[đầu]], [[nhầu]] {{mid}} * [[头]]: [[đầu]] * [[㪗]]: [[đầu]] * [[酘]]: [[đầu]] * [[姚]]: [[rêu]], [[đầu]], [[riêu]], [[diêu]], [[đào]], [[dao]] {{bottom}} {{-paro-}} {{đầu}} * [[dàu]] * [[dáu]] * [[dâu]] * [[dầu]] * [[dấu]] * [[dậu]] * [[Dậu]] * [[dẩu]] * [[dẫu]] * [[đau]] * [[đàu]] * [[đâu]] * [[đấu]] * [[đậu]] * [[đẩu]] {{cuối}} {{-noun-}} {{picdic/vie/head}} [[Tập tin:Giraffa camelopardalis head (Profil).jpg|nhỏ|Phần '''đầu''' của một con hươu cao cổ.]] [[Tập tin:Locomotive at Giap Bat Station (2).jpg|nhỏ|'''Đầu''' máy xe lửa.]] {{pn}} # Phần trên cùng của [[cơ thể]] con [[người]] hay phần trước nhất của cơ thể [[động vật]], nơi có [[bộ óc]] và nhiều [[giác quan]] khác. #* '''1938''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “Chương III”, trong ''Lời thề trước miễu''<sup>[https://vi.wikisource.org/wiki/L%E1%BB%9Di_th%E1%BB%81_tr%C6%B0%E1%BB%9Bc_mi%E1%BB%85u/Ch%C6%B0%C6%A1ng_III]</sup>: #*: Ông Hương trưởng quá chén, ông gặm cái '''đầu''' gà chưa xong, nên ông cứ ép khách, chớ ông ăn không được. #* [[w:La Quán Trung|La Quán Trung]], “Hồi 33”, trong ''Tam quốc diễn nghĩa'', [[w:Phan Kế Bính|Phan Kế Bính]] dịch, [[w:Bùi Kỷ|Bùi Kỷ]] hiệu đính<sup>[https://vi.wikisource.org/wiki/Tam_qu%E1%BB%91c_di%E1%BB%85n_ngh%C4%A9a/H%E1%BB%93i_33]</sup>: #*: Đi đến Thượng Lộ thì bị Đô uý Vương Viêm giết, đem '''đầu''' đến dâng Tào Tháo. # {{term|Dùng hạn chế trong một số tổ hợp}} Đầu của con người, coi là biểu tượng của [[suy nghĩ]], [[nhận thức]]. #: {{ux|vi|Vấn đề đau '''đầu'''.}} #: {{ux|vi|Cứng '''đầu'''.}} # Phần có [[tóc]] [[mọc]] ở trên đầu con người; tóc (''nói tổng quát''). #: {{ux|vi|Gãi '''đầu''' gãi tai.''}} #: {{ux|vi|Chải '''đầu'''.}} #: {{ux|vi|Mái '''đầu''' xanh.}} #: {{ux|vi|'''Đầu''' bạc.}} #* '''1932''', [[w:Phan Khôi|Phan Khôi]], ''Tình già'', Phụ nữ tân văn, Sài Gòn, số 122<sup>[https://vi.wikisource.org/wiki/T%C3%ACnh_gi%C3%A0]</sup>: #*: Dưới ngọn đèn mờ, trong gian nhà nhỏ, hai cái '''đầu''' xanh kề nhau than thở #* [[w:Nguyễn Dữ|Nguyễn Dữ]], “Chuyện nghiệp-oan của Đào-thị”, trong ''Truyền kỳ mạn lục'', bản dịch của [[w:Trúc Khê (nhà văn)|Trúc Khê Ngô Văn Triện]]<sup>[https://vi.wikisource.org/wiki/Truy%E1%BB%81n_k%E1%BB%B3_m%E1%BA%A1n_l%E1%BB%A5c/7]</sup>: #*: Hàn-than sợ phải cạo trọc '''đầu''' và mặc đồ nâu sồng, trốn đến tu ở chùa Phật-tích, (chùa Thầy); giảng kinh thuyết kệ, chỉ mấy tháng đã lảu thông lắm. # Phần trước nhất hoặc phần trên cùng của một số [[vật]]. #: {{ux|vi|'''Đầu''' máy bay.}} #: {{ux|vi|Trên '''đầu''' tủ.}} #: {{ux|vi|Sóng bạc '''đầu'''.}} #* {{quote-book|vi|author=Thạch Lam|authorlink=Thạch Lam|title=Gió lạnh đầu mùa|url={{fullurle:s:Gió lạnh đầu mùa}}|year=1937|publisher=NXB Đời nay|passage=Chị Lan từ trong buồng đi ra, khệ nệ ôm cái thúng quần áo đặt lên '''đầu''' phản.}} # Phần có [[điểm]] [[xuất phát]] của một khoảng [[không gian]] hoặc [[thời gian]]. #: {{ux|vi|Đi từ '''đầu''' tỉnh đến cuối tỉnh.}} #: {{ux|vi|Nhà ở '''đầu''' làng.}} #: {{ux|vi|'''Đầu''' mùa thu.}} #: {{ux|vi|Những ngày '''đầu''' tháng.}} #* [[w:Phạm Đình Hổ|Phạm Đình Hổ]], “Thác oan”, trong ''Vũ trung tùy bút'', bản dịch của [[w:Nguyễn Hữu Tiến (nhà nghiên cứu)|Nguyễn Hữu Tiến]]<sup>[https://vi.wikisource.org/wiki/V%C5%A9_trung_t%C3%B9y_b%C3%BAt/Ch%C6%B0%C6%A1ng_XXXII]</sup>: #*: Ông có cái nhà tranh năm gian, '''đầu''' phía đông là phòng vợ chồng người con trưởng, tên là Doãn Bạt. # Phần ở tận cùng, giống nhau ở hai phía [[đối lập]] trên [[chiều dài]] của một vật. #: {{ux|vi|Hai bên '''đầu''' cầu.}} #: {{ux|vi|Nắm một '''đầu''' dây.}} #: {{ux|vi|Trở '''đầu''' đũa.}} #* {{quote-book|vi|author=Ngô Tất Tố|authorlink=Ngô Tất Tố|chapter=Chương IV|chapterurl={{fullurle:s:Tắt đèn/IV}}|title=Tắt đèn|url={{fullurle:s:Tắt đèn}}|year=1939|publisher=NXB Mai Lĩnh|passage=Rồi hai ông hằm hằm túm lấy '''đầu''' thừng, sền sệt điệu anh Dậu xuống thềm.}} # [[vị trí|Vị trí]] hoặc [[thời điểm]] thứ [[nhất]], trên hoặc trước tất cả những vị trí, thời điểm khác. #: {{ux|vi|Hàng ghế '''đầu'''.}} #: {{ux|vi|Lần '''đầu'''.}} #: {{ux|vi|Tập '''đầu''' của bộ sách.}} #: {{ux|vi|Đếm lại từ '''đầu'''.}} #: {{ux|vi|Dẫn '''đầu'''.}} # Từ dùng để chỉ từng [[đơn vị]] để [[tính]] [[bình quân]] về người, [[gia súc]], đơn vị [[diện tích]]. #: {{ux|vi|Sản lượng tính theo '''đầu''' người.}} #: {{ux|vi|Mỗi lao động hai '''đầu''' lợn.}} #: {{ux|vi|Tăng số phân bón trên mỗi '''đầu''' mẫu.}} # Từ dùng để chỉ từng đơn vị [[máy móc]], nói chung. #: {{ux|vi|'''Đầu''' máy khâu.}} #: {{ux|vi|'''Đầu''' video.}} #: {{ux|vi|'''Đầu''' đọc.}} #: {{ux|vi|'''Đầu''' câm.}} # {{term|Khẩu ngữ}} [[đầu video|Đầu video]] (''nói tắt''). #: {{ux|vi|'''Đầu''' đa hệ.}} {{-drv-}} {{đầu}} * [[ấm đầu]] * [[bắt đầu]] * [[cá mập đầu búa]] * [[đầu bạc răng long]] * [[đầu chày đít thớt]] * [[đầu đất]] * [[đầu đội trời chân đạp đất]] * [[đầu đuôi]] * [[đầu đường xó chợ]] * [[đầu giác]] * [[đầu gối]] * [[đầu hai thứ tóc]] * [[đầu hãn]] * [[đầu hồi]] * [[đầu hôm]] * [[đầu não]] * {{l|vi|đầu nước}} * [[đầu óc]] * [[đầu sỏ]] * [[đầu têu]] * [[đầu tóc]] * [[đầu trâu mặt ngựa]] * [[đầu trò]] * [[đầu trộm đuôi cướp]] * [[đầu trứng]] * [[đầu xuôi đuôi lọt]] * [[gội đầu]] * [[khấu đầu]] * [[khỉ đầu chó]] * [[linh dương đầu bò]] * [[nấm đầu khỉ]] * [[nước đổ đầu vịt]] * [[phủ đầu]] * [[treo đầu dê bán thịt chó]] {{cuối}} {{-trans-}} {{trans-top|Phần của cơ thể}} * {{ara}}: {{t+|ar|رَأْس|m|tr=raʾs}} ** {{arz}}: {{t|arz|راس|f|tr=rās}}, {{t|arz|دماغ|f|tr=demāḡ}} * {{aau}}: {{t+|aau|makwe}} * {{abk}}: {{t+|ab|ахы|tr=axə}} * {{adt}}: {{t+|adt|vapardla}}, {{t+|adt|ngundi}} * {{afr}}: {{t+|af|kop}} * {{agr}}: {{t+|agr|buuk}} * {{ain}}: {{t+|ain|サパ|tr=sapa}}, {{t+|ain|パケ|tr=pake}} * {{ake}}: {{t|ake|puꞌpɨ}} * {{akk}}: {{t|akk|𒊕|tr=rēšu}} * {{akl}}: {{t|akl|ueo}} * {{akz}}: {{t+|akz|isbakko}} * {{sqi}}: {{t|sq|kokë|f}}, {{t|sq|krye|n}}, {{t|sq|kaptinë|f}} * {{amh}}: {{t+|am|ራስ|tr=ras}} * {{agm}}: {{t|agm|mɨtɨho}} * {{eng}}: {{t+|en|head}}, {{t|en|caput}}, {{t|en|pate}} {{q|từ lóng}}, {{t|en|noggin}} {{q|từ lóng}}, {{t|en|loaf}} {{q|từ lóng}}, {{t|en|nut}} {{q|từ lóng}}, {{t|en|noodle}} {{q|từ lóng}}, {{t|en|bonce}} {{q|từ lóng ở Anh}} ** {{ang}}: {{t|ang|hēafod|n}}, {{t|ang|hafela|m}} ** {{enm}}: {{t|enm|heed}} * {{apy}}: {{t|apy|upuhpo}} * {{arg}}: {{t+|an|capeza}} * {{hye}}: {{t|hy|գլուխ|tr=glux}} * {{asm}}: {{t+|as|মূৰ|tr=mur}}, {{t+|as|মাথা|tr=matha}} * {{ast}}: {{t+|ast|cabeza|f}}, {{t+|ast|tiesta|f}} * {{aze}}: {{t|az|baş}} * {{pol}}: {{t+|pl|głowa|f}} * {{bak}}: {{t|ba|баш|tr=baš}} * {{eus}}: {{t|eu|buru}}, {{t|eu|kasko}}, {{t|eu|gazta}} * {{non}}: {{t|non|hǫfuð|n}} * {{isl}}: {{t|is|höfuð|n}}, {{q|ít trang trọng}} {{t|is|haus|m}} * {{langname|bor}}: {{t|bor|aora}} * {{por}}: {{t|pt|cabeça|f}} * {{bre}}: {{t|br|penn|m}} * {{bul}}: {{t|bg|глава|f|tr=glavá}} * {{cat-2}}: {{t+|ca|cap|m}} * {{chr}}: {{t|chr|ᎠᏍᎪᎵ|tr=asgoli}} * {{cic}}: {{t|cic|ishkobo}} * {{chw}}: {{t|chw|murru}} * {{dlm}}: {{t|dlm|cup|m}} * {{xda}}: {{t|xda|kamburung}} * {{xdk}}: {{t|xdk|gabara}} * {{heb}}: {{t+|he|ראש|m|tr=rosh}} * {{dlg}}: {{t|dlg|бас|tr=bas}} * {{dan}}: {{t+|da|hoved|n}} * {{deu}}: {{t|de|Kopf|m}}, {{t|de|Haupt|n}} {{q|hiếm khi được dùng}} * {{est}}: {{t|et|pea}} * {{eve}}: {{t|eve|дил|tr=ʒil}} * {{ewe}}: {{t|ee|ta}} * {{fao}}: {{t|fo|høvd|n}}, {{t|fo|høvur|n}} * {{kat}}: {{t|ka|თავი}} * {{nld}}: {{t+|nl|hoofd|n}} * {{hau}}: {{t|ha|kai}} * {{haw}}: {{t|haw|poʻo}} * {{hin}}: {{t+|hi|सिर|m|tr=sir}} * {{hun}}: {{t+|hu|fej}} * {{ell}}: {{t+|el|κεφάλι|n|tr=kefáli}} * {{ido}}: {{t+|io|kapo}} * {{ind}}: {{t+|id|kepala}}, {{t+|id|hulu}} * {{jav}}: {{t|jv|endhas}}, {{t|jv|sirah}}, {{t|jv|mustaka}} * {{kjh}}: {{t|kjh|пас|tr=pas}} * {{khm}}: {{t+|km|ក្បាល|tr=kbaal}} * {{kpy}}: {{t|kpy|лэвʼыт}} * {{lao}}: {{t+|lo|ຫົວ|tr=hūa}} * {{lat}}: {{t|la|caput|n}} * {{lzz}}: {{t|lzz|თი|tr=ti}} * {{iii}}: {{t|ii|ꀂꏾ|tr=i qi}} * {{lut}}: {{t|lut|sx̌əy̓us}} * {{khb}}: {{t|khb|ᦷᦠ|tr=ḣo}} * {{msa}}: {{t|ms|kepala}}, {{t|ms|hulu}} * {{mas}}: {{t|mas|elukunya}} * {{mkd}}: {{t|mk|глава|f|tr=glava}} * {{mlg}}: {{t|mg|loha}} * {{mal}}: {{t|ml|തല|tr=tala}} * {{mlt}}: {{t|mt|ras}} {{trans-mid}} * {{glv}}: {{t|gv|kione|m}} * {{mnc}}: {{t|mnc|ᡠᠵᡠ|tr=uju}} * {{mri}}: {{t|mi|māhunga}}, {{t|mi|māhuna}}, {{t|mi|mātenga}}, {{t|mi|pane}}, {{t|mi|upoko}}, {{t|mi|uru}} * {{mya}}: {{t|my|ခေါင်း|tr=hkaung:}} * {{mon}}: {{t|mn|толгой|tr=tolgoi}} * {{nor}}: ** {{nob}}: {{t|no|hode|n}} ** {{nno}}: {{t|nn|hovud|n}} * {{nah}}: ** {{nci}}: {{t|nci|tzontecomatl}}, {{t|nci|cuaitl}} * {{nep}}: {{t|ne|टाउको|tr=ṭāuko}}, {{t|ne|शिर|tr=śir}} * {{rus}}: {{t+|ru|голова|f|tr=golová}} * {{wuh}}: {{t|wuh|dolo}} * {{jpn}}: {{t|ja|頭|tr=あたま, atama}}, {{t|ja|頭|tr=かしら, kashira}}, {{t|ja|頭部|tr=とうぶ, tōbu}} {{q|chính thức}}, {{t|ja|頭|tr=こうべ, kōbe}} {{q|cổ}} * {{nrf}}: {{t|nrf|tête|f}} * {{nnv}}: {{t|nnv|kakarti}} * {{oci}}: {{t|oc|cap|m}}, {{t|oc|tèsta|f}} * {{ori}}: {{t|or|ଶିର|tr=śirô}} * {{orm}}: {{t|om|mataa}} * {{oss}}: {{t|os|сӕр|tr=sær}} * {{fra}}: {{t+|fr|tête|f}} ** {{fro}}: {{t|fro|teste}}, {{t|fro|chief}} * {{fin}}: {{t+|fi|pää}} * {{epo}}: {{t+|eo|kapo}} * {{rhg}}: {{t|rhg|matá}} * {{sgs}}: {{t|sgs|galva|f}} * {{sag}}: {{t|sg|li}} * {{ces}}: {{t+|cs|hlava|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|глава|f}} ** {{Latn}}: {{t|sh|glava|f}} * {{cjs}}: {{t|cjs|паш|tr=paş}} * {{sin}}: {{t|si|ඔළුව|tr=oḷuwa}} * {{slk}}: {{t|sk|hlava|f}} * {{slv}}: {{t|sl|glava|f}}, {{t|sl|buča}} * {{som}}: {{t|so|madax}} * {{sto}}: {{t|sto|pa}} * {{sux}}: {{t|sux|𒊕|tr=SAG}} * {{swa}}: {{t|sw|kichwa}} * {{tgl}}: {{t+|tl|ulo}} * {{tam}}: {{t+|ta|தலை|tr=talai}} * {{bod}}: {{t|bo|མགོ|tr=mgo}}, {{t|bo|དབུ|tr=dbu}} {{q|kính ngữ}} * {{twf}}: {{t|twf|p’ínemą}} * {{crh}}: {{t|crh|baş}} * {{spa}}: {{t|es|cabeza|f}}, {{t+|es|testa|f}}, {{t|es|maceta|f}} {{q|Guatemala|Nicaragua}}, {{t|es|marote|m}} {{q|Argentina|Uruguay}}, {{t|es|sabiola|f}} {{q|Uruguay}}, {{t|es|coco|m}} {{q|thông tục}}, {{t|es|melón|m}} {{q|thông tục}}, {{t|es|tarro|m}} {{q|thông tục}}, {{t|es|chola|f}} {{q|thông tục}} * {{tel}}: {{t|te|తల|tr=tala}} * {{tha}}: {{t+|th|หัว|tr=hǔua}}, {{t+|th|ศีรษะ|tr=sǐi-sà}} * {{tur}}: {{t|tr|baş}}, {{t|tr|kafa}} * {{swe}}: {{t|sv|huvud|n}}, {{t|sv|skalle|c}} * {{tir}}: {{t|ti|ርእሲ|tr=rəʾsi}} * {{kor}}: {{t+|ko|머리|tr=meori}} * {{zho}}: ** {{gan}}: {{t+|gan|頭}}, {{t+|gan|头|tr=teu2}} ** {{dng}}: {{t+|dng|ту|tr=tu}} ** {{hak}}: {{t+|hak|頭那}}, {{t+|hak|头那|tr=thèu-nà}} ** {{cdo}}: {{t+|cdo|頭}}, {{t+|cdo|头|tr=tàu}} ** {{nan}}: {{t+|nan|頭}}, {{t+|nan|头|tr=thâu}} ** {{wuu}}: {{t+|wuu|頭}}, {{t+|wuu|头|tr=deu}} ** {{cmn}}: {{t+|cmn|頭}}, {{t+|cmn|头|tr=tóu}}, {{t+|cmn|頭腦}}, {{t+|cmn|头脑|tr=tóunǎo}} ** {{yue}}: {{t+|yue|頭}}, {{t+|yue|头|tr=tau4}} ** {{hsn}}: {{t+|hsn|腦殼}}, {{t+|hsn|脑壳|tr=lau3 ko6}} * {{ukr}}: {{t|uk|голова|f|tr=holová}} * {{urd}}: {{t+|ur|سر|m|tr=sir}} * {{uzb}}: {{t|uz|bosh}}, {{t|uz|kalla}} * {{vec}}: {{t|vec|testa|f}}, {{t|vec|cao|m}}, {{t|vec|cavo|m}} * {{vol}}: {{t+|vo|kap}} * {{cym}}: {{t+|cy|pen|m}} * {{wln}}: {{t|wa|tiesse}} * {{wol}}: {{t|wo|boopa}} * {{xho}}: {{t|xh|intloko}} * {{ita}}: {{t+|it|testa|f}}, {{t+|it|capo|m}} * {{yid}}: {{t|yi|קאָפּ|tr=kop}} * {{yox}}: {{t|yox|頭|tr=ちぶる, chiburu}}, {{t|yox|ふらじ|tr=furazi}} * {{nmn}}: {{t|nmn|nàn}} {{trans-bottom}} {{trans-top|Tóc (nói tổng quát) — xem bản dịch tại ''[[tóc]]''}} {{trans-bottom}} {{-verb-}} {{pn}} # {{term|Kết hợp hạn chế}} [[theo|Theo]]. #: {{ux|vi|'''Đầu''' Phật (đi tu).}} # {{term|Khẩu ngữ}} [[đầu hàng|Đầu hàng]] (''nói tắt''). #: {{ux|vi|Thà chết không '''đầu''' giặc.}} #* [[w:Nguyễn Đình Chiểu|Nguyễn Đình Chiểu]], ''Lục Vân Tiên'' (bản Quốc ngữ 2082 câu)<sup>[https://vi.wikisource.org/wiki/L%E1%BB%A5c_V%C3%A2n_Ti%C3%AAn_(b%E1%BA%A3n_Qu%E1%BB%91c_ng%E1%BB%AF_2082_c%C3%A2u)/II]</sup>: #*: Ghét đời thúc quí phân băng,<br>Sớm '''đầu''' tối đánh lằng nhằng rối dân. {{-adj-}} {{pn}} # Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu. {{-trans-}} {{trans-top|Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu}} * {{eng}}: {{t+|en|initial}} * {{nld}}: {{t+|nl|initieel}} {{trans-mid}} * {{rus}}: {{t+|ru|начальный|tr=načálʹnyj}} * {{fra}}: {{t+|fr|initial}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Động từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} 5gglmp8l5w1qym5l3872x3vvrw6p95c 2350897 2350645 2026-05-07T10:39:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350897 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Danh từ'') Phiên âm từ [[chữ Hán]] <big>[[頭]]</big>. {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[cổ]], [[đầu]], [[sắc]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] {{mid}} * [[夲]]: [[bản]], [[thao]], [[đầu]], [[bổn]] * [[投]]: [[đậu]], [[đầu]] * [[头]]: [[đầu]] * [[酘]]: [[đầu]], [[phân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[亠]]: [[đầu]] * [[頭]]: [[đầu]] {{mid}} * [[投]]: [[đầu]] * [[骰]]: [[đầu]] {{bottom}} {{-nôm-}} {{top}} * [[亠]]: [[đầu]] * [[骰]]: [[đầu]] * [[頭]]: [[đầu]] * [[緰]]: [[đầu]] * [[投]]: [[đầu]], [[nhầu]] {{mid}} * [[头]]: [[đầu]] * [[㪗]]: [[đầu]] * [[酘]]: [[đầu]] * [[姚]]: [[rêu]], [[đầu]], [[riêu]], [[diêu]], [[đào]], [[dao]] {{bottom}} {{-paro-}} {{đầu}} * [[dàu]] * [[dáu]] * [[dâu]] * [[dầu]] * [[dấu]] * [[dậu]] * [[Dậu]] * [[dẩu]] * [[dẫu]] * [[đau]] * [[đàu]] * [[đâu]] * [[đấu]] * [[đậu]] * [[đẩu]] {{cuối}} {{-noun-}} {{picdic/vie/head}} [[Tập tin:Giraffa camelopardalis head (Profil).jpg|nhỏ|Phần '''đầu''' của một con hươu cao cổ.]] [[Tập tin:Locomotive at Giap Bat Station (2).jpg|nhỏ|'''Đầu''' máy xe lửa.]] {{pn}} # Phần trên cùng của [[cơ thể]] con [[người]] hay phần trước nhất của cơ thể [[động vật]], nơi có [[bộ óc]] và nhiều [[giác quan]] khác. #* '''1938''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “Chương III”, trong ''Lời thề trước miễu''<sup>[https://vi.wikisource.org/wiki/L%E1%BB%9Di_th%E1%BB%81_tr%C6%B0%E1%BB%9Bc_mi%E1%BB%85u/Ch%C6%B0%C6%A1ng_III]</sup>: #*: Ông Hương trưởng quá chén, ông gặm cái '''đầu''' gà chưa xong, nên ông cứ ép khách, chớ ông ăn không được. #* [[w:La Quán Trung|La Quán Trung]], “Hồi 33”, trong ''Tam quốc diễn nghĩa'', [[w:Phan Kế Bính|Phan Kế Bính]] dịch, [[w:Bùi Kỷ|Bùi Kỷ]] hiệu đính<sup>[https://vi.wikisource.org/wiki/Tam_qu%E1%BB%91c_di%E1%BB%85n_ngh%C4%A9a/H%E1%BB%93i_33]</sup>: #*: Đi đến Thượng Lộ thì bị Đô uý Vương Viêm giết, đem '''đầu''' đến dâng Tào Tháo. # {{term|Dùng hạn chế trong một số tổ hợp}} Đầu của con người, coi là biểu tượng của [[suy nghĩ]], [[nhận thức]]. #: {{ux|vi|Vấn đề đau '''đầu'''.}} #: {{ux|vi|Cứng '''đầu'''.}} # Phần có [[tóc]] [[mọc]] ở trên đầu con người; tóc (''nói tổng quát''). #: {{ux|vi|Gãi '''đầu''' gãi tai.''}} #: {{ux|vi|Chải '''đầu'''.}} #: {{ux|vi|Mái '''đầu''' xanh.}} #: {{ux|vi|'''Đầu''' bạc.}} #* '''1932''', [[w:Phan Khôi|Phan Khôi]], ''Tình già'', Phụ nữ tân văn, Sài Gòn, số 122<sup>[https://vi.wikisource.org/wiki/T%C3%ACnh_gi%C3%A0]</sup>: #*: Dưới ngọn đèn mờ, trong gian nhà nhỏ, hai cái '''đầu''' xanh kề nhau than thở #* [[w:Nguyễn Dữ|Nguyễn Dữ]], “Chuyện nghiệp-oan của Đào-thị”, trong ''Truyền kỳ mạn lục'', bản dịch của [[w:Trúc Khê (nhà văn)|Trúc Khê Ngô Văn Triện]]<sup>[https://vi.wikisource.org/wiki/Truy%E1%BB%81n_k%E1%BB%B3_m%E1%BA%A1n_l%E1%BB%A5c/7]</sup>: #*: Hàn-than sợ phải cạo trọc '''đầu''' và mặc đồ nâu sồng, trốn đến tu ở chùa Phật-tích, (chùa Thầy); giảng kinh thuyết kệ, chỉ mấy tháng đã lảu thông lắm. # Phần trước nhất hoặc phần trên cùng của một số [[vật]]. #: {{ux|vi|'''Đầu''' máy bay.}} #: {{ux|vi|Trên '''đầu''' tủ.}} #: {{ux|vi|Sóng bạc '''đầu'''.}} #* {{quote-book|vi|author=Thạch Lam|authorlink=Thạch Lam|title=Gió lạnh đầu mùa|url={{fullurle:s:Gió lạnh đầu mùa}}|year=1937|publisher=NXB Đời nay|passage=Chị Lan từ trong buồng đi ra, khệ nệ ôm cái thúng quần áo đặt lên '''đầu''' phản.}} # Phần có [[điểm]] [[xuất phát]] của một khoảng [[không gian]] hoặc [[thời gian]]. #: {{ux|vi|Đi từ '''đầu''' tỉnh đến cuối tỉnh.}} #: {{ux|vi|Nhà ở '''đầu''' làng.}} #: {{ux|vi|'''Đầu''' mùa thu.}} #: {{ux|vi|Những ngày '''đầu''' tháng.}} #* [[w:Phạm Đình Hổ|Phạm Đình Hổ]], “Thác oan”, trong ''Vũ trung tùy bút'', bản dịch của [[w:Nguyễn Hữu Tiến (nhà nghiên cứu)|Nguyễn Hữu Tiến]]<sup>[https://vi.wikisource.org/wiki/V%C5%A9_trung_t%C3%B9y_b%C3%BAt/Ch%C6%B0%C6%A1ng_XXXII]</sup>: #*: Ông có cái nhà tranh năm gian, '''đầu''' phía đông là phòng vợ chồng người con trưởng, tên là Doãn Bạt. # Phần ở tận cùng, giống nhau ở hai phía [[đối lập]] trên [[chiều dài]] của một vật. #: {{ux|vi|Hai bên '''đầu''' cầu.}} #: {{ux|vi|Nắm một '''đầu''' dây.}} #: {{ux|vi|Trở '''đầu''' đũa.}} #* {{quote-book|vi|author=Ngô Tất Tố|authorlink=Ngô Tất Tố|chapter=Chương IV|chapterurl={{fullurle:s:Tắt đèn/IV}}|title=Tắt đèn|url={{fullurle:s:Tắt đèn}}|year=1939|publisher=NXB Mai Lĩnh|passage=Rồi hai ông hằm hằm túm lấy '''đầu''' thừng, sền sệt điệu anh Dậu xuống thềm.}} # [[vị trí|Vị trí]] hoặc [[thời điểm]] thứ [[nhất]], trên hoặc trước tất cả những vị trí, thời điểm khác. #: {{ux|vi|Hàng ghế '''đầu'''.}} #: {{ux|vi|Lần '''đầu'''.}} #: {{ux|vi|Tập '''đầu''' của bộ sách.}} #: {{ux|vi|Đếm lại từ '''đầu'''.}} #: {{ux|vi|Dẫn '''đầu'''.}} # Từ dùng để chỉ từng [[đơn vị]] để [[tính]] [[bình quân]] về người, [[gia súc]], đơn vị [[diện tích]]. #: {{ux|vi|Sản lượng tính theo '''đầu''' người.}} #: {{ux|vi|Mỗi lao động hai '''đầu''' lợn.}} #: {{ux|vi|Tăng số phân bón trên mỗi '''đầu''' mẫu.}} # Từ dùng để chỉ từng đơn vị [[máy móc]], nói chung. #: {{ux|vi|'''Đầu''' máy khâu.}} #: {{ux|vi|'''Đầu''' video.}} #: {{ux|vi|'''Đầu''' đọc.}} #: {{ux|vi|'''Đầu''' câm.}} # {{term|Khẩu ngữ}} [[đầu video|Đầu video]] (''nói tắt''). #: {{ux|vi|'''Đầu''' đa hệ.}} {{-drv-}} {{đầu}} * [[ấm đầu]] * [[bắt đầu]] * [[cá mập đầu búa]] * [[đầu bạc răng long]] * [[đầu chày đít thớt]] * [[đầu đất]] * [[đầu đội trời chân đạp đất]] * [[đầu đuôi]] * [[đầu đường xó chợ]] * [[đầu giác]] * [[đầu gối]] * [[đầu hai thứ tóc]] * [[đầu hãn]] * [[đầu hồi]] * [[đầu hôm]] * [[đầu não]] * {{l|vi|đầu nước}} * [[đầu óc]] * [[đầu sỏ]] * [[đầu têu]] * [[đầu tóc]] * [[đầu trâu mặt ngựa]] * [[đầu trò]] * [[đầu trộm đuôi cướp]] * [[đầu trứng]] * [[đầu xuôi đuôi lọt]] * [[gội đầu]] * [[khấu đầu]] * [[khỉ đầu chó]] * [[linh dương đầu bò]] * [[nấm đầu khỉ]] * [[nước đổ đầu vịt]] * [[phủ đầu]] * [[treo đầu dê bán thịt chó]] {{cuối}} {{-trans-}} {{trans-top|Phần của cơ thể}} * {{ara}}: {{t+|ar|رَأْس|m|tr=raʾs}} ** {{arz}}: {{t|arz|راس|f|tr=rās}}, {{t|arz|دماغ|f|tr=demāḡ}} * {{aau}}: {{t+|aau|makwe}} * {{abk}}: {{t+|ab|ахы|tr=axə}} * {{adt}}: {{t+|adt|vapardla}}, {{t+|adt|ngundi}} * {{afr}}: {{t+|af|kop}} * {{agr}}: {{t+|agr|buuk}} * {{ain}}: {{t+|ain|サパ|tr=sapa}}, {{t+|ain|パケ|tr=pake}} * {{ake}}: {{t|ake|puꞌpɨ}} * {{akk}}: {{t|akk|𒊕|tr=rēšu}} * {{akl}}: {{t|akl|ueo}} * {{akz}}: {{t+|akz|isbakko}} * {{sqi}}: {{t|sq|kokë|f}}, {{t|sq|krye|n}}, {{t|sq|kaptinë|f}} * {{amh}}: {{t+|am|ራስ|tr=ras}} * {{agm}}: {{t|agm|mɨtɨho}} * {{eng}}: {{t+|en|head}}, {{t|en|caput}}, {{t|en|pate}} {{q|từ lóng}}, {{t|en|noggin}} {{q|từ lóng}}, {{t|en|loaf}} {{q|từ lóng}}, {{t|en|nut}} {{q|từ lóng}}, {{t|en|noodle}} {{q|từ lóng}}, {{t|en|bonce}} {{q|từ lóng ở Anh}} ** {{ang}}: {{t|ang|hēafod|n}}, {{t|ang|hafela|m}} ** {{enm}}: {{t|enm|heed}} * {{apy}}: {{t|apy|upuhpo}} * {{arg}}: {{t+|an|capeza}} * {{hye}}: {{t|hy|գլուխ|tr=glux}} * {{asm}}: {{t+|as|মূৰ|tr=mur}}, {{t+|as|মাথা|tr=matha}} * {{ast}}: {{t+|ast|cabeza|f}}, {{t+|ast|tiesta|f}} * {{aze}}: {{t|az|baş}} * {{pol}}: {{t+|pl|głowa|f}} * {{bak}}: {{t|ba|баш|tr=baš}} * {{eus}}: {{t|eu|buru}}, {{t|eu|kasko}}, {{t|eu|gazta}} * {{non}}: {{t|non|hǫfuð|n}} * {{isl}}: {{t|is|höfuð|n}}, {{q|ít trang trọng}} {{t|is|haus|m}} * {{langname|bor}}: {{t|bor|aora}} * {{por}}: {{t|pt|cabeça|f}} * {{bre}}: {{t|br|penn|m}} * {{bul}}: {{t|bg|глава|f|tr=glavá}} * {{cat-old}}: {{t+|ca|cap|m}} * {{chr}}: {{t|chr|ᎠᏍᎪᎵ|tr=asgoli}} * {{cic}}: {{t|cic|ishkobo}} * {{chw}}: {{t|chw|murru}} * {{dlm}}: {{t|dlm|cup|m}} * {{xda}}: {{t|xda|kamburung}} * {{xdk}}: {{t|xdk|gabara}} * {{heb}}: {{t+|he|ראש|m|tr=rosh}} * {{dlg}}: {{t|dlg|бас|tr=bas}} * {{dan}}: {{t+|da|hoved|n}} * {{deu}}: {{t|de|Kopf|m}}, {{t|de|Haupt|n}} {{q|hiếm khi được dùng}} * {{est}}: {{t|et|pea}} * {{eve}}: {{t|eve|дил|tr=ʒil}} * {{ewe}}: {{t|ee|ta}} * {{fao}}: {{t|fo|høvd|n}}, {{t|fo|høvur|n}} * {{kat}}: {{t|ka|თავი}} * {{nld}}: {{t+|nl|hoofd|n}} * {{hau}}: {{t|ha|kai}} * {{haw}}: {{t|haw|poʻo}} * {{hin}}: {{t+|hi|सिर|m|tr=sir}} * {{hun}}: {{t+|hu|fej}} * {{ell}}: {{t+|el|κεφάλι|n|tr=kefáli}} * {{ido}}: {{t+|io|kapo}} * {{ind}}: {{t+|id|kepala}}, {{t+|id|hulu}} * {{jav}}: {{t|jv|endhas}}, {{t|jv|sirah}}, {{t|jv|mustaka}} * {{kjh}}: {{t|kjh|пас|tr=pas}} * {{khm}}: {{t+|km|ក្បាល|tr=kbaal}} * {{kpy}}: {{t|kpy|лэвʼыт}} * {{lao}}: {{t+|lo|ຫົວ|tr=hūa}} * {{lat}}: {{t|la|caput|n}} * {{lzz}}: {{t|lzz|თი|tr=ti}} * {{iii}}: {{t|ii|ꀂꏾ|tr=i qi}} * {{lut}}: {{t|lut|sx̌əy̓us}} * {{khb}}: {{t|khb|ᦷᦠ|tr=ḣo}} * {{msa}}: {{t|ms|kepala}}, {{t|ms|hulu}} * {{mas}}: {{t|mas|elukunya}} * {{mkd}}: {{t|mk|глава|f|tr=glava}} * {{mlg}}: {{t|mg|loha}} * {{mal}}: {{t|ml|തല|tr=tala}} * {{mlt}}: {{t|mt|ras}} {{trans-mid}} * {{glv}}: {{t|gv|kione|m}} * {{mnc}}: {{t|mnc|ᡠᠵᡠ|tr=uju}} * {{mri}}: {{t|mi|māhunga}}, {{t|mi|māhuna}}, {{t|mi|mātenga}}, {{t|mi|pane}}, {{t|mi|upoko}}, {{t|mi|uru}} * {{mya}}: {{t|my|ခေါင်း|tr=hkaung:}} * {{mon}}: {{t|mn|толгой|tr=tolgoi}} * {{nor}}: ** {{nob}}: {{t|no|hode|n}} ** {{nno}}: {{t|nn|hovud|n}} * {{nah}}: ** {{nci}}: {{t|nci|tzontecomatl}}, {{t|nci|cuaitl}} * {{nep}}: {{t|ne|टाउको|tr=ṭāuko}}, {{t|ne|शिर|tr=śir}} * {{rus}}: {{t+|ru|голова|f|tr=golová}} * {{wuh}}: {{t|wuh|dolo}} * {{jpn}}: {{t|ja|頭|tr=あたま, atama}}, {{t|ja|頭|tr=かしら, kashira}}, {{t|ja|頭部|tr=とうぶ, tōbu}} {{q|chính thức}}, {{t|ja|頭|tr=こうべ, kōbe}} {{q|cổ}} * {{nrf}}: {{t|nrf|tête|f}} * {{nnv}}: {{t|nnv|kakarti}} * {{oci}}: {{t|oc|cap|m}}, {{t|oc|tèsta|f}} * {{ori}}: {{t|or|ଶିର|tr=śirô}} * {{orm}}: {{t|om|mataa}} * {{oss}}: {{t|os|сӕр|tr=sær}} * {{fra}}: {{t+|fr|tête|f}} ** {{fro}}: {{t|fro|teste}}, {{t|fro|chief}} * {{fin}}: {{t+|fi|pää}} * {{epo}}: {{t+|eo|kapo}} * {{rhg}}: {{t|rhg|matá}} * {{sgs}}: {{t|sgs|galva|f}} * {{sag}}: {{t|sg|li}} * {{ces}}: {{t+|cs|hlava|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|глава|f}} ** {{Latn}}: {{t|sh|glava|f}} * {{cjs}}: {{t|cjs|паш|tr=paş}} * {{sin}}: {{t|si|ඔළුව|tr=oḷuwa}} * {{slk}}: {{t|sk|hlava|f}} * {{slv}}: {{t|sl|glava|f}}, {{t|sl|buča}} * {{som}}: {{t|so|madax}} * {{sto}}: {{t|sto|pa}} * {{sux}}: {{t|sux|𒊕|tr=SAG}} * {{swa}}: {{t|sw|kichwa}} * {{tgl}}: {{t+|tl|ulo}} * {{tam}}: {{t+|ta|தலை|tr=talai}} * {{bod}}: {{t|bo|མགོ|tr=mgo}}, {{t|bo|དབུ|tr=dbu}} {{q|kính ngữ}} * {{twf}}: {{t|twf|p’ínemą}} * {{crh}}: {{t|crh|baş}} * {{spa}}: {{t|es|cabeza|f}}, {{t+|es|testa|f}}, {{t|es|maceta|f}} {{q|Guatemala|Nicaragua}}, {{t|es|marote|m}} {{q|Argentina|Uruguay}}, {{t|es|sabiola|f}} {{q|Uruguay}}, {{t|es|coco|m}} {{q|thông tục}}, {{t|es|melón|m}} {{q|thông tục}}, {{t|es|tarro|m}} {{q|thông tục}}, {{t|es|chola|f}} {{q|thông tục}} * {{tel}}: {{t|te|తల|tr=tala}} * {{tha}}: {{t+|th|หัว|tr=hǔua}}, {{t+|th|ศีรษะ|tr=sǐi-sà}} * {{tur}}: {{t|tr|baş}}, {{t|tr|kafa}} * {{swe}}: {{t|sv|huvud|n}}, {{t|sv|skalle|c}} * {{tir}}: {{t|ti|ርእሲ|tr=rəʾsi}} * {{kor}}: {{t+|ko|머리|tr=meori}} * {{zho}}: ** {{gan}}: {{t+|gan|頭}}, {{t+|gan|头|tr=teu2}} ** {{dng}}: {{t+|dng|ту|tr=tu}} ** {{hak}}: {{t+|hak|頭那}}, {{t+|hak|头那|tr=thèu-nà}} ** {{cdo}}: {{t+|cdo|頭}}, {{t+|cdo|头|tr=tàu}} ** {{nan}}: {{t+|nan|頭}}, {{t+|nan|头|tr=thâu}} ** {{wuu}}: {{t+|wuu|頭}}, {{t+|wuu|头|tr=deu}} ** {{cmn}}: {{t+|cmn|頭}}, {{t+|cmn|头|tr=tóu}}, {{t+|cmn|頭腦}}, {{t+|cmn|头脑|tr=tóunǎo}} ** {{yue}}: {{t+|yue|頭}}, {{t+|yue|头|tr=tau4}} ** {{hsn}}: {{t+|hsn|腦殼}}, {{t+|hsn|脑壳|tr=lau3 ko6}} * {{ukr}}: {{t|uk|голова|f|tr=holová}} * {{urd}}: {{t+|ur|سر|m|tr=sir}} * {{uzb}}: {{t|uz|bosh}}, {{t|uz|kalla}} * {{vec}}: {{t|vec|testa|f}}, {{t|vec|cao|m}}, {{t|vec|cavo|m}} * {{vol}}: {{t+|vo|kap}} * {{cym}}: {{t+|cy|pen|m}} * {{wln}}: {{t|wa|tiesse}} * {{wol}}: {{t|wo|boopa}} * {{xho}}: {{t|xh|intloko}} * {{ita}}: {{t+|it|testa|f}}, {{t+|it|capo|m}} * {{yid}}: {{t|yi|קאָפּ|tr=kop}} * {{yox}}: {{t|yox|頭|tr=ちぶる, chiburu}}, {{t|yox|ふらじ|tr=furazi}} * {{nmn}}: {{t|nmn|nàn}} {{trans-bottom}} {{trans-top|Tóc (nói tổng quát) — xem bản dịch tại ''[[tóc]]''}} {{trans-bottom}} {{-verb-}} {{pn}} # {{term|Kết hợp hạn chế}} [[theo|Theo]]. #: {{ux|vi|'''Đầu''' Phật (đi tu).}} # {{term|Khẩu ngữ}} [[đầu hàng|Đầu hàng]] (''nói tắt''). #: {{ux|vi|Thà chết không '''đầu''' giặc.}} #* [[w:Nguyễn Đình Chiểu|Nguyễn Đình Chiểu]], ''Lục Vân Tiên'' (bản Quốc ngữ 2082 câu)<sup>[https://vi.wikisource.org/wiki/L%E1%BB%A5c_V%C3%A2n_Ti%C3%AAn_(b%E1%BA%A3n_Qu%E1%BB%91c_ng%E1%BB%AF_2082_c%C3%A2u)/II]</sup>: #*: Ghét đời thúc quí phân băng,<br>Sớm '''đầu''' tối đánh lằng nhằng rối dân. {{-adj-}} {{pn}} # Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu. {{-trans-}} {{trans-top|Ở phía trên cùng, phía trước, ở thởi điểm trước, lúc đầu}} * {{eng}}: {{t+|en|initial}} * {{nld}}: {{t+|nl|initieel}} {{trans-mid}} * {{rus}}: {{t+|ru|начальный|tr=načálʹnyj}} * {{fra}}: {{t+|fr|initial}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Động từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} 6peqss7hfw99bimbfpdecg90a29fs79 hoa 0 2290 2350646 2284940 2026-05-07T07:53:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350646 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-alternative form-}} * {{q|Trung Bộ, Nam Bộ, cũ hoặc lỗi thời}} {{l|vi|huê}} * {{q|một số phương ngữ nhỏ miền Trung}} {{l|vi|ba}} {{-etymology-}} {{vie-etym-sino|花|hoa}}. Dạng {{mention|vi|ba}} được chứng thực trong một số phương ngữ miền Trung, đáng chú ý nhất là tên địa danh {{mention|vi|Đông Ba}}.<ref>Trần Ngọc Bảo (2017). "Từ Điển Phương Ngữ Huế".</ref> {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-hoa.wav|Âm thanh (TP.HCM)}} {{-hanviet-}} {{top}} * [[劃]]: [[hoa]], [[hoạch]] * [[骅]]: [[hoa]] * [[崇]]: [[hoa]], [[sùng]] * [[崋]]: [[hoa]] * [[划]]: [[hoa]], [[quả]], [[họa]], [[hoạch]] * [[化]]: [[hoa]], [[hóa]] * [[䔢]]: [[hoa]] * [[蘤]]: [[hoa]], [[vị]] * [[嘩]]: [[hoa]] * [[花]]: [[hoa]] * [[搳]]: [[hoa]], [[hạt]] * [[芲]]: [[hoa]] * [[錵]]: [[hoa]] * [[樺]]: [[hoa]] * [[譁]]: [[hoa]] {{mid}} * [[荂]]: [[hoa]] * [[驊]]: [[hoa]] * [[华]]: [[hoa]], [[hóa]] * [[蕐]]: [[hoa]] * [[哗]]: [[hoa]] * [[铧]]: [[hoa]] * [[摦]]: [[hoa]] * [[𠫫]]: [[hoa]] * [[桦]]: [[hoa]] * [[華]]: [[hoa]] * [[哮]]: [[hoa]], [[hao]] * [[鏵]]: [[hoa]] * [[䅿]]: [[hoa]] * [[找]]: [[hoa]], [[phạt]], [[trảo]], [[qua]] {{bottom}} {{-hanviet-t-}} {{top}} * [[譁]]: [[hoa]] * [[蘤]]: [[hoa]] * [[嘩]]: [[hoa]] * [[崋]]: [[hoa]] * [[驊]]: [[hoa]] {{mid}} * [[華]]: [[hoa]], [[hóa]] * [[花]]: [[hoa]] * [[划]]: [[hoa]] * [[樺]]: [[hoa]] * [[找]]: [[hoa]], [[trảo]] {{bottom}} {{-nôm-}} {{top}} * [[骅]]: [[hoa]] * [[崋]]: [[hoa]] * [[和]]: [[hoa]], [[họa]], [[hỏa]], [[vừa]], [[hòa]], [[hùa]], [[huề]] * [[划]]: [[hoa]], [[quả]], [[họach]] * [[化]]: [[hoa]], [[hóc]], [[góa]], [[hóa]], [[hóe]], [[huế]] * [[󰒥]]: [[hoa]] * [[蘤]]: [[hoa]], [[vị]] * [[嘩]]: [[hoa]] * [[花]]: [[hoa]], [[huê]] * [[芲]]: [[hoa]] * [[樺]]: [[hoa]] * [[譁]]: [[hoa]] * [[荂]]: [[hoa]], [[khoai]] {{mid}} * [[驊]]: [[hoa]] * [[华]]: [[hoa]], [[huê]] * [[蕐]]: [[hoa]] * [[哗]]: [[hoa]] * [[𢯘]]: [[hoa]], [[huơ]] * [[󰓧]]: [[hoa]] * [[铧]]: [[hoa]] * [[摦]]: [[hoa]] * [[葩]]: [[hoa]], [[ba]], [[pha]] * [[桦]]: [[hoa]] * [[華]]: [[hoa]], [[huê]] * [[鏵]]: [[hoa]] {{bottom}} {{-paro-}} {{đầu}} * {{l|vi|Hoa}} * {{l|vi|hòa}}/{{l|vi|hoà}} * {{l|vi|hóa}}/{{l|vi|hoá}} * {{l|vi|họa}}/{{l|vi|hoạ}} * {{l|vi|hỏa}}/{{l|vi|hoả}} {{cuối}} {{-noun-}} [[Tập tin:Flores.gif|nhỏ|Các loài '''hoa''' khác nhau.]] {{picdic |image=Flor.png |detail1= {{picdicimg|vi|image=Brunfelsia pauciflora shrub.jpg|link=thực vật}} |detail2= '''Chú thích:'''<br/> 1= {{l|vi|vòi nhụy}} 2= {{l|vi|bầu nhụy}} 3= {{l|vi|đế hoa}}<br> 4= {{l|vi|nhị}} hoa 5= {{l|vi|cánh}} hoa 6= {{l|vi|đầu nhụy}}<br> 7= {{l|vi|nhụy}} hoa 8= {{l|vi|lá đài}} 9= {{l|vi|cuống}} hoa |detail3= Một số loài hoa: {{picdicimg|vi|image=Narcissus.calcicola.7114.jpg|link=thủy tiên}} {{picdicimg|vi|image=Dahlia - roze.jpg|link=thược dược}} {{picdicimg|vi|image=LiliumBulbiferumCroceumBologna.jpg|link=loa kèn}} {{picdicimg|vi|image=Nerium oleander September 2007-1.jpg|link=trúc đào}} {{picdicimg|vi|image=Red rose.jpg|link=hồng}} {{picdicimg|vi|image=Tulipa suaveolens floriade to Canberra.jpg|link=tulip}} |scrollable=yes }} {{vie-noun|cls=[[bông]], [[đoá]]}} # [[cơ quan|Cơ quan]] [[sinh sản]] [[hữu tính]] của [[cây]] [[hạt]] [[kín]], thường có [[màu sắc]] và [[hương thơm]]. #: {{synonyms|vi|bông}} {{q|miền Trung, miền Nam}} #: {{collocation|vi|Vườn '''hoa'''.}} #: {{collocation|vi|'''Hoa''' cỏ.}} #: {{collocation|vi|Đẹp như '''hoa'''.}} #* {{w|Bà Huyện Thanh Quan}}, ''[[s:Qua đèo Ngang (Bà Huyện Thanh Quan)|Qua đèo Ngang]]'': #*: {{quote|vi|Bước tới Đèo Ngang, bóng xế tà,<br />Cỏ cây chen đá, lá chen '''hoa'''.}} #* '''1937''', {{w|T.T.Kh.}}, ''[[s:Hai sắc hoa Ti-gôn|Hai sắc hoa Ti-gôn]]'': #*: {{quote|vi|Một mùa thu trước mỗi hoàng hôn<br />Nhặt cánh '''hoa''' rơi chẳng thấy buồn}} {{head|vi|Danh từ}} # Vật có hình tựa bông hoa. #: {{collocation|vi|'''Hoa''' lửa.}} #: {{collocation|vi|Pháo '''hoa'''.}} # {{short for|vi|hoa tai}} # [[đơn vị|Đơn vị]] [[đo]] [[khối lượng]] 1/10 [[lạng]]. # [[hình|Hình]] hoa [[trang trí]]. #: {{collocation|vi|Đĩa '''hoa'''.}} #: {{collocation|vi|Đá '''hoa''' cương.}} # Dáng [[chữ]] [[đặc biệt]] [[lớn]] hơn [[chữ thường]] (ở [[đầu]] [[câu]], đầu [[danh từ riêng]]). #: {{collocation|vi|Viết '''hoa'''.}} #: {{ux|vi|Chữ A '''hoa'''.}} {{vie-noun|cls=[[cái]]}} # [[hòn dái|Hòn dái]] [[gà]] đã [[luộc]], theo cách gọi [[kiêng]] [[tránh]]. #* {{quote-web|vi|title=Mình ơi! Anh hết tiền!|url=https://bau.vn/minh-oi-anh-het-tien/|site=bau.vn|year=2014|archiveurl=https://web.archive.org/web/20230411211549/https://bau.vn/minh-oi-anh-het-tien/|archivedate=11 tháng 4 năm 2023|text=Nàng thích chành chọe với người lớn, đòi gặm đùi, cánh, đầu, xương ức và đặc biệt là món “'''hoa''' gà”.{{...}}Thấy nàng nhìn mấy đứa cháu tranh nhau chén cái “'''hoa''' gà” với tâm trạng ấm ức mà anh phì cười.}} {{-drv-}} {{đầu}} * {{vie-l|ẩn hoa}} * {{vie-l|động phòng hoa chúc}} * {{vie-l|hoa bia}} * {{vie-l|hoa bướm}} * {{vie-l|hoa cà hoa cải}} * {{vie-l|hoa hậu}} * {{vie-l|hoa hòe}}/{{vie-l|hoa hoè}} * {{vie-l|hoa hòe hoa sói}}/{{vie-l|hoa hoè hoa sói}} * {{vie-l|hoa hoét}} * {{vie-l|hoa hồng}} * {{vie-l|hoa khôi}} * {{vie-l|Hoa Kì}}/{{vie-l|Hoa Kỳ}} * {{vie-l|hoa lá}} * {{vie-l|hoa lệ}} * {{vie-l|hoa liễu}} * {{vie-l|hoa lơ}} * {{vie-l|hoa lợi}} * {{vie-l|hoa màu}} * {{vie-l|hoa mắt}} * {{vie-l|hoa mĩ}}/{{vie-l|hoa mỹ}} * {{vie-l|hoa mơ}} * {{vie-l|hoa ngôn}} * {{vie-l|hoa nguyệt}} * {{vie-l|hoa niên}} * {{vie-l|hoa nô}} * {{vie-l|hoa nương}} * {{vie-l|hoa quả}} * {{vie-l|hoa râm}} * {{vie-l|hoa tai}} * {{vie-l|hoa tay}} * {{vie-l|hoa thị}} * {{vie-l|hoa tiên}} * {{vie-l|hoa tiêu}} * {{vie-l|hoa tình}} * {{vie-l|hoa văn}} * {{vie-l|hoa viên}} * {{vie-l|hoa xòe}}/{{vie-l|hoa xoè}} * {{vie-l|hương hoa}} * {{vie-l|khai hoa}} * {{vie-l|mãn nguyệt khai hoa}} * {{vie-l|mật hoa}} * {{vie-l|nguyệt hoa}} * {{vie-l|pháo hoa}} * {{vie-l|phong hoa tuyết nguyệt}} * {{vie-l|quốc hoa}} * {{vie-l|tiên hoa}} * {{vie-l|vườn hoa}} * {{vie-l|yên hoa}} {{cuối}} {{-usage-}} * Cách gọi tên các loài hoa trong tiếng Việt: Chữ ''hoa'' + tên của loại thực vật tương ứng. Ví dụ: {{mention|vi|hoa hồng}}, ''hoa [[huệ]]'', ''hoa [[lựu]]'', ''hoa [[sen]]'', ''hoa [[sói]]'', hoa ''[[trà]]'', ''hoa [[phăng xê]]'', v.v... {{-trans-}} {{trans-top|Cơ quan sinh sản của cây hạt kín}} * {{ara}}: [[زَهْرَة]] {{f}} (''záhra''), [[زُهُور]] (''zuhūr'') {{plur}}, [[أزْهَارٌ]] (''az-hār'') {{plur}} * {{afr}}: [[blom]] * {{sqi}}: [[lule]] {{f}} * {{eng}}: [[flower]] * {{xno}}: [[flur]] {{f}} * {{hye}}: [[ծաղիկ]] (''çaġik'') * {{aze}}: [[çiçək]] * {{pol}}: [[kwiat]] {{g|m}} * {{fas}}: [[گل]] (''gol'') * {{isl}}: [[blóm]] {{n}} * {{eus}}: [[lore]] * {{bel}}: [[кветка]] (''kvétka'') {{f}} * {{ben}}: [[ফুল]] (''phul'') * {{por}}: [[flor]] {{f}} * {{ina}}: [[flor]] * {{bre}}: [[bleuñv]], [[bleuñvienn]] {{f}}, [[bleunienn]] {{f}}, [[boked]] {{g|m}}, [[fleur]] * {{bul}}: [[цвете]] (''cvéte'') {{n}} * {{cat-2}}: [[flor]] {{f}} * {{dan}}: [[blomst]] {{g|c}} * {{heb}}: [[פרח]] (''perákh'') {{g|m}} * {{dng}}: [[хуа]] (hua) * {{deu}}: [[Blume]] {{f}} * {{est}}: [[lill]] * {{fao}}: [[blóma]], [[blomstur]] * {{glg}}: [[flor]] {{f}} * {{kat}}: [[ყვავილი]] (''q’vavili'') * {{guj}}: [[ફૂલ]] (''phūl''), [[પુષ્પ]] (''puśp''), [[સુમન]] (''suman'') * {{nld}}: [[bloem]] {{fm}} * {{nld}}: [[bloem]] {{f}} * {{haw}}: [[pua]] * {{hin}}: [[फूल]] (''phūl'') {{g|m}}, [[पुष्प]] (''puśp'') {{g|m}} * {{hun}}: [[virág]] * {{ell}}: [[άνθος]] (''ánthos'') {{n}}, [[λουλούδι]] (''louloúdi'') {{n}} * {{ido}}: [[floro]] * {{ind}}: [[bunga]], [[kembang]], [[puspa]] * {{gle}}: [[bláth]], [[plúr]] {{g|m}} * {{kan}}: [[ಹೂವು]] (''hūvu'') * {{khm}}: [[ផ្កា]] (''pkā'') * {{kur}}: ** {{Latn}}: [[gul]], [[kulîlk]] ** {{Arab}}: [[گوڵ]] * {{lao}}: [[ດອກໄມ້]] (''döökmai'') * {{lat}}: [[flos]] {{g|m}} * {{lav}}: [[puķe]] {{f}}, [[zieds]] {{g|m}} * {{lit}}: [[žiedas]] {{g|m}}, [[gėlė]] {{f}} * {{ltz}}: [[Blumm]] {{f}} * {{msa}}: [[bunga]] * {{mkd}}: [[цвет]] (''cvet'') {{g|m}} * {{mal}}: [[പൂവ്]] (''pūv''), [[പുഷ്പം]] (''púṣpum''), [[ഏറ്റവും നല്ല ഭാഗം]], [[കണ്ണായ ഭാഗം]] {{giữa}} * {{mlt}}: [[fjura]] {{f}} * {{mnc}}: {{Mong char|[[ᡳᠯᡥᠠ]]}} (''ilha'') * {{nan}}: [[花]] (''hoe'', hoa), [[花蕊]] (''hoe-lúi'', hoa nhị) * {{mar}}: [[फूल]] (''phūl'') * {{mya}}: [[ပန်း]] (''pan:'') * {{mon}}: [[цэцэг]] (''tsetseg'') * {{nor}}: [[blomst]] {{g|m}} * {{nah}}: [[xochitl]] * {{rus}}: [[цветок]] {{g|m}} (''cvetók''), [[цвет]] {{g|m}} (''cvet'') * {{rus}}: [[цветок]] (''cvetók'') {{g|m}}, [[цветы]] (''cvetý'') {{plur}} * {{jpn}}: [[花]] (はな, haná, hoa) * {{pli}}: [[पुप्फ]] (''puppha'') {{n}} * {{fin}}: [[kukka]] * {{san}}: [[पुष्प]] (''púṣpa'') {{n}}, [[पुल्ल]] (''pulla'') * {{fra}}: [[fleur]] {{f}} * {{fra}}: [[fleur]] {{f}} * {{fro}}: [[flor]] {{f}}, [[flur]] {{f}} * {{frm}}: [[fleur]] {{f}} * {{cmn}}: [[花]] (''huā'', hoa), [[花兒]] (''huāér'', hoa nhi), [[花儿]] (''huār'', hoa nhi), [[花朵]] (''huāduǒ'', hoa đóa), [[花卉]] (''huāhuì'', hoa hủy) * {{yue}}: [[花]] (''fà'', hoa) * {{epo}}: [[floro]] * {{ron}}: [[floare]] {{f}} * {{ces}}: [[květ]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[цвет]] {{g|m}}, [[цвијет]] {{g|m}} ** {{Latn}}: [[cvet]] {{g|m}}, [[cvijet]] {{g|m}} * {{scn}}: [[ciuri]] {{g|m}} * {{slk}}: [[kvet]] {{g|m}} * {{slv}}: [[cvet]] {{g|m}} * {{som}}: [[ubax]] * {{swa}}: [[ua]], [[maua]] {{plur}}, [[ua]] * {{tgl}}: [[bulaklak]] * {{tam}}: [[மலர்]] (''malar''), [[பூ]] (''pū'') * {{crh}}: [[şeşek]] * {{spa}}: [[flor]] {{f}} * {{tel}}: [[పువ్వు]] (''puvvu''), [[పుష్పము]] (''puṣpamu'') * {{tha}}: [[ดอก]] (''dààwk''), [[ดอกไม้]] (''dààwk māāi''), [[บุษบา]] (''budsaba'') * {{tur}}: [[çiçek]] * {{swe}}: [[blomma]] {{g|c}} * {{kor}}: [[꽃]] (''kkot'') * {{ukr}}: [[квітка]] (''kvítka'') {{f}}, [[цвіт]] (''cvit'') {{g|m}} * {{urd}}: [[پھول]] (''phūl'') {{g|m}} * {{uig}}: [[گۈل]] (''gül'') * {{vol}}: [[flor]] * {{cym}}: [[blodyn]] {{g|m}} * {{ita}}: [[fiore]] {{g|m}} * {{yid}}: [[בלום]] (''blum'') {{f}}, [[קווייט]] (''kveyt'', ''kwejt'') {{g|m}} {{trans-bottom}} {{-verb-}} {{vie-verb}} # [[khoa|Khoa]] ([[tay chân]]). #: {{collocation|vi|'''Hoa''' chân múa tay.}} {{-adjc-}} {{vie-adj}} # Có trạng thái [[tối xẩm]], [[quáng]] [[loá]] cả [[mắt]], do [[mệt mỏi]] hoặc mắt bị [[kích thích]] [[mạnh]]. #: {{collocation|vi|'''Hoa''' mắt chóng mặt.}} #: {{collocation|vi|Nhìn '''hoa''' cả mắt.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} <references /> oaf2z2vkvfmokrf2umwiu60ytp35n4h 2350898 2350646 2026-05-07T10:39:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350898 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-alternative form-}} * {{q|Trung Bộ, Nam Bộ, cũ hoặc lỗi thời}} {{l|vi|huê}} * {{q|một số phương ngữ nhỏ miền Trung}} {{l|vi|ba}} {{-etymology-}} {{vie-etym-sino|花|hoa}}. Dạng {{mention|vi|ba}} được chứng thực trong một số phương ngữ miền Trung, đáng chú ý nhất là tên địa danh {{mention|vi|Đông Ba}}.<ref>Trần Ngọc Bảo (2017). "Từ Điển Phương Ngữ Huế".</ref> {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-hoa.wav|Âm thanh (TP.HCM)}} {{-hanviet-}} {{top}} * [[劃]]: [[hoa]], [[hoạch]] * [[骅]]: [[hoa]] * [[崇]]: [[hoa]], [[sùng]] * [[崋]]: [[hoa]] * [[划]]: [[hoa]], [[quả]], [[họa]], [[hoạch]] * [[化]]: [[hoa]], [[hóa]] * [[䔢]]: [[hoa]] * [[蘤]]: [[hoa]], [[vị]] * [[嘩]]: [[hoa]] * [[花]]: [[hoa]] * [[搳]]: [[hoa]], [[hạt]] * [[芲]]: [[hoa]] * [[錵]]: [[hoa]] * [[樺]]: [[hoa]] * [[譁]]: [[hoa]] {{mid}} * [[荂]]: [[hoa]] * [[驊]]: [[hoa]] * [[华]]: [[hoa]], [[hóa]] * [[蕐]]: [[hoa]] * [[哗]]: [[hoa]] * [[铧]]: [[hoa]] * [[摦]]: [[hoa]] * [[𠫫]]: [[hoa]] * [[桦]]: [[hoa]] * [[華]]: [[hoa]] * [[哮]]: [[hoa]], [[hao]] * [[鏵]]: [[hoa]] * [[䅿]]: [[hoa]] * [[找]]: [[hoa]], [[phạt]], [[trảo]], [[qua]] {{bottom}} {{-hanviet-t-}} {{top}} * [[譁]]: [[hoa]] * [[蘤]]: [[hoa]] * [[嘩]]: [[hoa]] * [[崋]]: [[hoa]] * [[驊]]: [[hoa]] {{mid}} * [[華]]: [[hoa]], [[hóa]] * [[花]]: [[hoa]] * [[划]]: [[hoa]] * [[樺]]: [[hoa]] * [[找]]: [[hoa]], [[trảo]] {{bottom}} {{-nôm-}} {{top}} * [[骅]]: [[hoa]] * [[崋]]: [[hoa]] * [[和]]: [[hoa]], [[họa]], [[hỏa]], [[vừa]], [[hòa]], [[hùa]], [[huề]] * [[划]]: [[hoa]], [[quả]], [[họach]] * [[化]]: [[hoa]], [[hóc]], [[góa]], [[hóa]], [[hóe]], [[huế]] * [[󰒥]]: [[hoa]] * [[蘤]]: [[hoa]], [[vị]] * [[嘩]]: [[hoa]] * [[花]]: [[hoa]], [[huê]] * [[芲]]: [[hoa]] * [[樺]]: [[hoa]] * [[譁]]: [[hoa]] * [[荂]]: [[hoa]], [[khoai]] {{mid}} * [[驊]]: [[hoa]] * [[华]]: [[hoa]], [[huê]] * [[蕐]]: [[hoa]] * [[哗]]: [[hoa]] * [[𢯘]]: [[hoa]], [[huơ]] * [[󰓧]]: [[hoa]] * [[铧]]: [[hoa]] * [[摦]]: [[hoa]] * [[葩]]: [[hoa]], [[ba]], [[pha]] * [[桦]]: [[hoa]] * [[華]]: [[hoa]], [[huê]] * [[鏵]]: [[hoa]] {{bottom}} {{-paro-}} {{đầu}} * {{l|vi|Hoa}} * {{l|vi|hòa}}/{{l|vi|hoà}} * {{l|vi|hóa}}/{{l|vi|hoá}} * {{l|vi|họa}}/{{l|vi|hoạ}} * {{l|vi|hỏa}}/{{l|vi|hoả}} {{cuối}} {{-noun-}} [[Tập tin:Flores.gif|nhỏ|Các loài '''hoa''' khác nhau.]] {{picdic |image=Flor.png |detail1= {{picdicimg|vi|image=Brunfelsia pauciflora shrub.jpg|link=thực vật}} |detail2= '''Chú thích:'''<br/> 1= {{l|vi|vòi nhụy}} 2= {{l|vi|bầu nhụy}} 3= {{l|vi|đế hoa}}<br> 4= {{l|vi|nhị}} hoa 5= {{l|vi|cánh}} hoa 6= {{l|vi|đầu nhụy}}<br> 7= {{l|vi|nhụy}} hoa 8= {{l|vi|lá đài}} 9= {{l|vi|cuống}} hoa |detail3= Một số loài hoa: {{picdicimg|vi|image=Narcissus.calcicola.7114.jpg|link=thủy tiên}} {{picdicimg|vi|image=Dahlia - roze.jpg|link=thược dược}} {{picdicimg|vi|image=LiliumBulbiferumCroceumBologna.jpg|link=loa kèn}} {{picdicimg|vi|image=Nerium oleander September 2007-1.jpg|link=trúc đào}} {{picdicimg|vi|image=Red rose.jpg|link=hồng}} {{picdicimg|vi|image=Tulipa suaveolens floriade to Canberra.jpg|link=tulip}} |scrollable=yes }} {{vie-noun|cls=[[bông]], [[đoá]]}} # [[cơ quan|Cơ quan]] [[sinh sản]] [[hữu tính]] của [[cây]] [[hạt]] [[kín]], thường có [[màu sắc]] và [[hương thơm]]. #: {{synonyms|vi|bông}} {{q|miền Trung, miền Nam}} #: {{collocation|vi|Vườn '''hoa'''.}} #: {{collocation|vi|'''Hoa''' cỏ.}} #: {{collocation|vi|Đẹp như '''hoa'''.}} #* {{w|Bà Huyện Thanh Quan}}, ''[[s:Qua đèo Ngang (Bà Huyện Thanh Quan)|Qua đèo Ngang]]'': #*: {{quote|vi|Bước tới Đèo Ngang, bóng xế tà,<br />Cỏ cây chen đá, lá chen '''hoa'''.}} #* '''1937''', {{w|T.T.Kh.}}, ''[[s:Hai sắc hoa Ti-gôn|Hai sắc hoa Ti-gôn]]'': #*: {{quote|vi|Một mùa thu trước mỗi hoàng hôn<br />Nhặt cánh '''hoa''' rơi chẳng thấy buồn}} {{head|vi|Danh từ}} # Vật có hình tựa bông hoa. #: {{collocation|vi|'''Hoa''' lửa.}} #: {{collocation|vi|Pháo '''hoa'''.}} # {{short for|vi|hoa tai}} # [[đơn vị|Đơn vị]] [[đo]] [[khối lượng]] 1/10 [[lạng]]. # [[hình|Hình]] hoa [[trang trí]]. #: {{collocation|vi|Đĩa '''hoa'''.}} #: {{collocation|vi|Đá '''hoa''' cương.}} # Dáng [[chữ]] [[đặc biệt]] [[lớn]] hơn [[chữ thường]] (ở [[đầu]] [[câu]], đầu [[danh từ riêng]]). #: {{collocation|vi|Viết '''hoa'''.}} #: {{ux|vi|Chữ A '''hoa'''.}} {{vie-noun|cls=[[cái]]}} # [[hòn dái|Hòn dái]] [[gà]] đã [[luộc]], theo cách gọi [[kiêng]] [[tránh]]. #* {{quote-web|vi|title=Mình ơi! Anh hết tiền!|url=https://bau.vn/minh-oi-anh-het-tien/|site=bau.vn|year=2014|archiveurl=https://web.archive.org/web/20230411211549/https://bau.vn/minh-oi-anh-het-tien/|archivedate=11 tháng 4 năm 2023|text=Nàng thích chành chọe với người lớn, đòi gặm đùi, cánh, đầu, xương ức và đặc biệt là món “'''hoa''' gà”.{{...}}Thấy nàng nhìn mấy đứa cháu tranh nhau chén cái “'''hoa''' gà” với tâm trạng ấm ức mà anh phì cười.}} {{-drv-}} {{đầu}} * {{vie-l|ẩn hoa}} * {{vie-l|động phòng hoa chúc}} * {{vie-l|hoa bia}} * {{vie-l|hoa bướm}} * {{vie-l|hoa cà hoa cải}} * {{vie-l|hoa hậu}} * {{vie-l|hoa hòe}}/{{vie-l|hoa hoè}} * {{vie-l|hoa hòe hoa sói}}/{{vie-l|hoa hoè hoa sói}} * {{vie-l|hoa hoét}} * {{vie-l|hoa hồng}} * {{vie-l|hoa khôi}} * {{vie-l|Hoa Kì}}/{{vie-l|Hoa Kỳ}} * {{vie-l|hoa lá}} * {{vie-l|hoa lệ}} * {{vie-l|hoa liễu}} * {{vie-l|hoa lơ}} * {{vie-l|hoa lợi}} * {{vie-l|hoa màu}} * {{vie-l|hoa mắt}} * {{vie-l|hoa mĩ}}/{{vie-l|hoa mỹ}} * {{vie-l|hoa mơ}} * {{vie-l|hoa ngôn}} * {{vie-l|hoa nguyệt}} * {{vie-l|hoa niên}} * {{vie-l|hoa nô}} * {{vie-l|hoa nương}} * {{vie-l|hoa quả}} * {{vie-l|hoa râm}} * {{vie-l|hoa tai}} * {{vie-l|hoa tay}} * {{vie-l|hoa thị}} * {{vie-l|hoa tiên}} * {{vie-l|hoa tiêu}} * {{vie-l|hoa tình}} * {{vie-l|hoa văn}} * {{vie-l|hoa viên}} * {{vie-l|hoa xòe}}/{{vie-l|hoa xoè}} * {{vie-l|hương hoa}} * {{vie-l|khai hoa}} * {{vie-l|mãn nguyệt khai hoa}} * {{vie-l|mật hoa}} * {{vie-l|nguyệt hoa}} * {{vie-l|pháo hoa}} * {{vie-l|phong hoa tuyết nguyệt}} * {{vie-l|quốc hoa}} * {{vie-l|tiên hoa}} * {{vie-l|vườn hoa}} * {{vie-l|yên hoa}} {{cuối}} {{-usage-}} * Cách gọi tên các loài hoa trong tiếng Việt: Chữ ''hoa'' + tên của loại thực vật tương ứng. Ví dụ: {{mention|vi|hoa hồng}}, ''hoa [[huệ]]'', ''hoa [[lựu]]'', ''hoa [[sen]]'', ''hoa [[sói]]'', hoa ''[[trà]]'', ''hoa [[phăng xê]]'', v.v... {{-trans-}} {{trans-top|Cơ quan sinh sản của cây hạt kín}} * {{ara}}: [[زَهْرَة]] {{f}} (''záhra''), [[زُهُور]] (''zuhūr'') {{plur}}, [[أزْهَارٌ]] (''az-hār'') {{plur}} * {{afr}}: [[blom]] * {{sqi}}: [[lule]] {{f}} * {{eng}}: [[flower]] * {{xno}}: [[flur]] {{f}} * {{hye}}: [[ծաղիկ]] (''çaġik'') * {{aze}}: [[çiçək]] * {{pol}}: [[kwiat]] {{g|m}} * {{fas}}: [[گل]] (''gol'') * {{isl}}: [[blóm]] {{n}} * {{eus}}: [[lore]] * {{bel}}: [[кветка]] (''kvétka'') {{f}} * {{ben}}: [[ফুল]] (''phul'') * {{por}}: [[flor]] {{f}} * {{ina}}: [[flor]] * {{bre}}: [[bleuñv]], [[bleuñvienn]] {{f}}, [[bleunienn]] {{f}}, [[boked]] {{g|m}}, [[fleur]] * {{bul}}: [[цвете]] (''cvéte'') {{n}} * {{cat-old}}: [[flor]] {{f}} * {{dan}}: [[blomst]] {{g|c}} * {{heb}}: [[פרח]] (''perákh'') {{g|m}} * {{dng}}: [[хуа]] (hua) * {{deu}}: [[Blume]] {{f}} * {{est}}: [[lill]] * {{fao}}: [[blóma]], [[blomstur]] * {{glg}}: [[flor]] {{f}} * {{kat}}: [[ყვავილი]] (''q’vavili'') * {{guj}}: [[ફૂલ]] (''phūl''), [[પુષ્પ]] (''puśp''), [[સુમન]] (''suman'') * {{nld}}: [[bloem]] {{fm}} * {{nld}}: [[bloem]] {{f}} * {{haw}}: [[pua]] * {{hin}}: [[फूल]] (''phūl'') {{g|m}}, [[पुष्प]] (''puśp'') {{g|m}} * {{hun}}: [[virág]] * {{ell}}: [[άνθος]] (''ánthos'') {{n}}, [[λουλούδι]] (''louloúdi'') {{n}} * {{ido}}: [[floro]] * {{ind}}: [[bunga]], [[kembang]], [[puspa]] * {{gle}}: [[bláth]], [[plúr]] {{g|m}} * {{kan}}: [[ಹೂವು]] (''hūvu'') * {{khm}}: [[ផ្កា]] (''pkā'') * {{kur}}: ** {{Latn}}: [[gul]], [[kulîlk]] ** {{Arab}}: [[گوڵ]] * {{lao}}: [[ດອກໄມ້]] (''döökmai'') * {{lat}}: [[flos]] {{g|m}} * {{lav}}: [[puķe]] {{f}}, [[zieds]] {{g|m}} * {{lit}}: [[žiedas]] {{g|m}}, [[gėlė]] {{f}} * {{ltz}}: [[Blumm]] {{f}} * {{msa}}: [[bunga]] * {{mkd}}: [[цвет]] (''cvet'') {{g|m}} * {{mal}}: [[പൂവ്]] (''pūv''), [[പുഷ്പം]] (''púṣpum''), [[ഏറ്റവും നല്ല ഭാഗം]], [[കണ്ണായ ഭാഗം]] {{giữa}} * {{mlt}}: [[fjura]] {{f}} * {{mnc}}: {{Mong char|[[ᡳᠯᡥᠠ]]}} (''ilha'') * {{nan}}: [[花]] (''hoe'', hoa), [[花蕊]] (''hoe-lúi'', hoa nhị) * {{mar}}: [[फूल]] (''phūl'') * {{mya}}: [[ပန်း]] (''pan:'') * {{mon}}: [[цэцэг]] (''tsetseg'') * {{nor}}: [[blomst]] {{g|m}} * {{nah}}: [[xochitl]] * {{rus}}: [[цветок]] {{g|m}} (''cvetók''), [[цвет]] {{g|m}} (''cvet'') * {{rus}}: [[цветок]] (''cvetók'') {{g|m}}, [[цветы]] (''cvetý'') {{plur}} * {{jpn}}: [[花]] (はな, haná, hoa) * {{pli}}: [[पुप्फ]] (''puppha'') {{n}} * {{fin}}: [[kukka]] * {{san}}: [[पुष्प]] (''púṣpa'') {{n}}, [[पुल्ल]] (''pulla'') * {{fra}}: [[fleur]] {{f}} * {{fra}}: [[fleur]] {{f}} * {{fro}}: [[flor]] {{f}}, [[flur]] {{f}} * {{frm}}: [[fleur]] {{f}} * {{cmn}}: [[花]] (''huā'', hoa), [[花兒]] (''huāér'', hoa nhi), [[花儿]] (''huār'', hoa nhi), [[花朵]] (''huāduǒ'', hoa đóa), [[花卉]] (''huāhuì'', hoa hủy) * {{yue}}: [[花]] (''fà'', hoa) * {{epo}}: [[floro]] * {{ron}}: [[floare]] {{f}} * {{ces}}: [[květ]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[цвет]] {{g|m}}, [[цвијет]] {{g|m}} ** {{Latn}}: [[cvet]] {{g|m}}, [[cvijet]] {{g|m}} * {{scn}}: [[ciuri]] {{g|m}} * {{slk}}: [[kvet]] {{g|m}} * {{slv}}: [[cvet]] {{g|m}} * {{som}}: [[ubax]] * {{swa}}: [[ua]], [[maua]] {{plur}}, [[ua]] * {{tgl}}: [[bulaklak]] * {{tam}}: [[மலர்]] (''malar''), [[பூ]] (''pū'') * {{crh}}: [[şeşek]] * {{spa}}: [[flor]] {{f}} * {{tel}}: [[పువ్వు]] (''puvvu''), [[పుష్పము]] (''puṣpamu'') * {{tha}}: [[ดอก]] (''dààwk''), [[ดอกไม้]] (''dààwk māāi''), [[บุษบา]] (''budsaba'') * {{tur}}: [[çiçek]] * {{swe}}: [[blomma]] {{g|c}} * {{kor}}: [[꽃]] (''kkot'') * {{ukr}}: [[квітка]] (''kvítka'') {{f}}, [[цвіт]] (''cvit'') {{g|m}} * {{urd}}: [[پھول]] (''phūl'') {{g|m}} * {{uig}}: [[گۈل]] (''gül'') * {{vol}}: [[flor]] * {{cym}}: [[blodyn]] {{g|m}} * {{ita}}: [[fiore]] {{g|m}} * {{yid}}: [[בלום]] (''blum'') {{f}}, [[קווייט]] (''kveyt'', ''kwejt'') {{g|m}} {{trans-bottom}} {{-verb-}} {{vie-verb}} # [[khoa|Khoa]] ([[tay chân]]). #: {{collocation|vi|'''Hoa''' chân múa tay.}} {{-adjc-}} {{vie-adj}} # Có trạng thái [[tối xẩm]], [[quáng]] [[loá]] cả [[mắt]], do [[mệt mỏi]] hoặc mắt bị [[kích thích]] [[mạnh]]. #: {{collocation|vi|'''Hoa''' mắt chóng mặt.}} #: {{collocation|vi|Nhìn '''hoa''' cả mắt.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} <references /> a6g9hdkj1i1u9anyyxervsdqwxni9mb nước 0 2359 2350647 2280763 2026-05-07T07:53:21Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350647 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} Từ {{inherited|vi|mkh-vie-pro|*ɗaːk||nước}} < {{inherited|vi|mkh-pro|*ɗaak||nước}}. Cùng gốc với {{mention|vi|nác}} trong phương ngữ Nghệ An/Hà Tĩnh, {{cognate|mtq|đác}}, {{cognate|km|ទឹក|tr=tik}}, {{cognate|bdq|đak}}, {{cognate|mng|dak}}, {{cognate|ncb|râk}}/{{mention|ncb|dâk}} và {{cognate|sat|ᱫᱟᱜ}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-nước.wav|Âm thanh (TP.HCM)}} {{-nôm-}} {{đầu}} *[[著]]: [[nước]], [[trước]], [[chước]], [[trứ]] *[[渃]]: [[nước]], [[nác]], [[nhược]] {{giữa}} *[[水]]: [[nước]], [[thủy]] *[[匿]]: [[nặc]], [[nước]], [[nác]], [[nức]], [[nắc]], [[nạc]], [[nực]] {{cuối}} {{-paro-}} * {{l|vi|nuộc}} * {{l|vi|nược}} {{-noun-}} [[Hình:Stilles Mineralwasser.jpg|nhỏ|phải|nước]] {{pn}} # [[chất lỏng|Chất lỏng]] không [[màu]], không [[mùi]] và [[trong suốt]] khi là [[nguyên chất]], [[tồn tại]] trong [[tự nhiên]] ở [[sông]] [[hồ]], ở [[biển]], v.v. #: {{ux|vi|'''Nước''' mưa.}} #: {{ux|vi|'''Nước''' lũ.}} #: {{ux|vi|'''Nước''' thuỷ triều.}} #: {{ux|vi|'''Nước''' lên.}} #: {{ux|vi|Ăn '''nước''' giếng.}} # Chất lỏng, nói chung. #: {{ux|vi|'''Nước''' mắt.}} #: {{ux|vi|'''Nước''' chè.}} #: {{ux|vi|Chanh nhiều '''nước'''.}} #: {{ux|vi|'''Nước''' thép đầu tiên.}} #: {{ux|vi|Thuốc '''nước'''.}} # [[lần|Lần]], [[lượt]] [[sử dụng]] nước, thường là [[đun]] [[sôi]], cho một [[tác dụng]] [[nhất định]] nào đó. #: {{ux|vi|Pha chè '''nước''' thứ hai.}} #: {{ux|vi|Thang thuốc đông y sắc ba '''nước'''.}} #: {{ux|vi|Rau rửa mấy '''nước''' mới sạch.}} # [[lớp|Lớp]] [[quét]], [[phủ]] [[bên ngoài]] cho [[bền]], [[đẹp]]. #: {{ux|vi|Quét hai '''nước''' vôi.}} #: {{ux|vi|'''Nước''' mạ rất bền.}} #: {{ux|vi|Tốt gỗ hơn tốt '''nước''' sơn.|q=tục ngữ}} # {{term|Kết hợp hạn chế}} Vẻ [[ánh]], [[bóng]] [[tự nhiên]] của một số [[vật]], tựa như có một lớp [[mỏng]] [[chất]] [[phản chiếu]] [[ánh sáng]] nào đó phủ bên ngoài. #: {{ux|vi|'''Nước''' ngọc.}} #: {{ux|vi|Gỗ lên '''nước''' bóng loáng.}} # [[vùng đất|Vùng đất]] trong đó những [[người]] thuộc một hay nhiều [[dân tộc]] cùng [[sống]] [[chung]] dưới một [[chế độ]] [[chính trị]] – [[xã hội]] và cùng thuộc về một [[nhà nước]] nhất định. #: {{ux|vi|'''Nước''' Việt Nam.}} #: {{ux|vi|Các '''nước''' láng giềng.}} # {{term|Kết hợp hạn chế}} [[bước|Bước]] đi, về mặt [[nhanh]] [[chậm]] (của [[ngựa]]). #: {{ux|vi|Ngựa chạy đang được '''nước'''.}} #: {{ux|vi|Phi '''nước''' đại.}} # Bước đi của [[quân cờ]], về mặt ảnh hưởng đến [[thế]] [[cờ]]. #: {{ux|vi|'''Nước''' cờ cao.}} #: {{ux|vi|Mách '''nước'''.}} #: {{ux|vi|Chơi cờ sáng '''nước'''.}} # Cách [[hành động]], [[hoạt động]] để [[tác động]] đến [[tình hình]], [[thoát khỏi]] thế [[bí]] hoặc [[tạo]] ra thế [[thuận lợi]]. #: {{ux|vi|Bị bao vây, chỉ còn '''nước''' ra đầu thú.}} #: {{ux|vi|(Tính) hết '''nước'''.}} # {{term|Khẩu ngữ}} Thế [[hơn kém]]. #: {{ux|vi|Chịu '''nước''' lép.}} #: {{ux|vi|Đến '''nước''' cùng rồi.}} #: {{ux|vi|Được '''nước''', càng làm già.}} #: {{ux|vi|Nó thì '''nước''' gì!}} # {{term|Khẩu ngữ}} [[mức độ|Mức độ]] [[khó]] có thể [[chịu đựng]] hơn. #: {{ux|vi|Độc ác đến '''nước''' ấy là cùng.}} #: {{ux|vi|(Trả đến nghìn đồng là) hết '''nước'''.}} #: {{ux|vi|Đã đến '''nước''' này thì không còn có thể từ chối được.}} {{-syn-}} * {{q|Ng. 1}} {{l|vi|nác}} {{q|phương ngữ Bắc Trung Bộ}} * {{q|Ng. 6}} {{l|vi|đất nước}}, {{l|vi|quốc gia}} {{-drv-}} {{đầu}} * {{l|vi|bóng nước}} * {{l|vi|cá nước}} * {{l|vi|cây nước}} * {{l|vi|con nước}} * {{l|vi|còn nước còn tát}} * {{l|vi|cơm nước}} * {{l|vi|dừa nước}} * {{l|vi|đất nước}} * {{l|vi|đầu nước}} * {{l|vi|gà nước}} * {{l|vi|hết nước}} * {{l|vi|khoai nước}} * {{l|vi|làng nước}} * {{l|vi|lên nước}} * {{l|vi|lúa nước}} * {{l|vi|mách nước}} * {{l|vi|máy nước}} * {{l|vi|mặt nước}} * {{l|vi|mớn nước}} * {{l|vi|ngã nước}} * {{l|vi|ngậm nước}} * {{l|vi|nhà nước}} * {{l|vi|non nước}} * {{l|vi|nước bọt}} * {{l|vi|nước chảy chỗ trũng}} * {{l|vi|nước chảy đá mòn}} * {{l|vi|nước chấm}} * {{l|vi|nước cốt dừa}} * {{l|vi|nước da}} * {{l|vi|nước dãi}} * {{l|vi|nước dùng}} * {{l|vi|nước đá}} * {{l|vi|nước đái}} * {{l|vi|nước đại}} * {{l|vi|nước đến chân mới nhảy}} * {{l|vi|nước đổ}} * {{l|vi|nước đổ đầu vịt}} * {{l|vi|nước đổ lá khoai}} * {{l|vi|nước độc}} * {{l|vi|nước đôi}} * {{l|vi|nước ép}} * {{l|vi|nước giải}} * {{l|vi|nước giải khát}} * {{l|vi|nước hàng}} * {{l|vi|nước hoa}} * {{l|vi|nước khoáng}} * {{l|vi|nước kiệu}} * {{l|vi|nước lã}} * {{l|vi|nước lèo}} * {{l|vi|nước lên}} * {{l|vi|nước lọc}} * {{l|bi|nước lợ}} * {{l|vi|nước máy}} * {{l|vi|nước mắm}} * {{l|vi|nước mắt}} * {{l|vi|nước mẹ}} * {{l|vi|nước miếng}} * {{l|vi|nước mũi}} * {{l|vi|nước ngoài}} * {{l|vi|nước ngọt}} * {{l|vi|nước nhà}} * {{l|vi|nước non}} * {{l|vi|nước nôi}} * {{l|vi|nước ối}} * {{l|vi|nước ròng}} * {{l|vi|nước tiểu}} * {{l|vi|nước tương}} * {{l|vi|nước xáo}} * {{l|vi|nước xốt}} * {{l|vi|nước xô-đa}} * {{l|vi|nước xuống}} * {{l|vi|nước xuýt}} * {{l|vi|phá nước}} * {{l|vi|rắn nước}} * {{l|vi|sạch nước cản}} * {{l|vi|trâu nước}} * {{l|vi|trứng nước}} * {{l|vi|tức nước vỡ bờ}} * {{l|vi|vòi nước}} {{cuối}} {{-trans-}} {{trans-top|Chất lỏng không màu, không mùi}} * {{eng}}: {{t|en|water}} ** {{ang}}: {{t|ang|wæter|n}} * {{pol}}: {{t|pl|woda|f}} * {{cat-2}}: {{t|ca|aigua|f}} * {{nld}}: {{t|nl|water|n}} * {{ido}}: {{t|io|aquo}} * {{khm}}: {{t|km|ទឹក}} * {{lao}}: {{t|lo|ນ້ຳ|tr=nam}} * {{mtq}}: {{t|mtq|đác}} * {{rus}}: {{t|ru|вода|f|tr=vodá}} * {{fra}}: {{t|fr|eau|f}} * {{epo}}: {{t|eo|akvo}} * {{tyz}}: {{t|tyz|nặm}} * {{spa}}: {{t|es|agua|f}} * {{kor}}: {{t|ko|물|tr=mul}} * {{zho}}: ** {{gan}}: {{t|gan|水|tr=suɨi213}} ** {{dng}}: {{t|dng|фи|tr=fi}} ** {{hak}}: {{t|hak|水|tr=súi}} ** {{mnp}}: {{t|mnp|水|tr=sṳ̌}} ** {{cdo}}: {{t|cdo|水|tr=cūi}} ** {{nan}}: {{t|nan|水|tr=chúi}} ** {{wuu}}: {{t|wuu|水|tr=sr}} ** {{cmn}}: {{t|cmn|水|tr=shuǐ}} ** {{yue}}: {{t|yue|水|tr=seoi2}} ** {{cjy}}: {{t|cjy|水|tr=suei53}} ** {{hsn}}: {{t|hsn|水|tr=ɕyei41}}, {{t|hsn|水|tr=ɕyəi42}} {{trans-bottom}} {{trans-top|Quốc gia}} * {{eng}}: [[country]], [[state]] * {{nld}}: [[land]], [[staat]] * {{rus}}: [[страна]] {{f}} (''straná''), [[государство]] {{n}} (''gosudárstvo'') * {{fra}}: [[pays]], [[état]] * {{spa}}: [[país]] {{g|m}}, [[estado]] {{g|m}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{-nuo-}} {{-pron-}} * {{IPA2|/nɨək⁷/}} {{-noun-}} {{pn}} # {{term|Cổ Liêm}} [[đất nước]]. [[Thể loại:Danh từ tiếng Nguồn]] fon7667rsqpa94kwie6jiin4ne8qqxc 2350899 2350647 2026-05-07T10:39:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350899 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} Từ {{inherited|vi|mkh-vie-pro|*ɗaːk||nước}} < {{inherited|vi|mkh-pro|*ɗaak||nước}}. Cùng gốc với {{mention|vi|nác}} trong phương ngữ Nghệ An/Hà Tĩnh, {{cognate|mtq|đác}}, {{cognate|km|ទឹក|tr=tik}}, {{cognate|bdq|đak}}, {{cognate|mng|dak}}, {{cognate|ncb|râk}}/{{mention|ncb|dâk}} và {{cognate|sat|ᱫᱟᱜ}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-nước.wav|Âm thanh (TP.HCM)}} {{-nôm-}} {{đầu}} *[[著]]: [[nước]], [[trước]], [[chước]], [[trứ]] *[[渃]]: [[nước]], [[nác]], [[nhược]] {{giữa}} *[[水]]: [[nước]], [[thủy]] *[[匿]]: [[nặc]], [[nước]], [[nác]], [[nức]], [[nắc]], [[nạc]], [[nực]] {{cuối}} {{-paro-}} * {{l|vi|nuộc}} * {{l|vi|nược}} {{-noun-}} [[Hình:Stilles Mineralwasser.jpg|nhỏ|phải|nước]] {{pn}} # [[chất lỏng|Chất lỏng]] không [[màu]], không [[mùi]] và [[trong suốt]] khi là [[nguyên chất]], [[tồn tại]] trong [[tự nhiên]] ở [[sông]] [[hồ]], ở [[biển]], v.v. #: {{ux|vi|'''Nước''' mưa.}} #: {{ux|vi|'''Nước''' lũ.}} #: {{ux|vi|'''Nước''' thuỷ triều.}} #: {{ux|vi|'''Nước''' lên.}} #: {{ux|vi|Ăn '''nước''' giếng.}} # Chất lỏng, nói chung. #: {{ux|vi|'''Nước''' mắt.}} #: {{ux|vi|'''Nước''' chè.}} #: {{ux|vi|Chanh nhiều '''nước'''.}} #: {{ux|vi|'''Nước''' thép đầu tiên.}} #: {{ux|vi|Thuốc '''nước'''.}} # [[lần|Lần]], [[lượt]] [[sử dụng]] nước, thường là [[đun]] [[sôi]], cho một [[tác dụng]] [[nhất định]] nào đó. #: {{ux|vi|Pha chè '''nước''' thứ hai.}} #: {{ux|vi|Thang thuốc đông y sắc ba '''nước'''.}} #: {{ux|vi|Rau rửa mấy '''nước''' mới sạch.}} # [[lớp|Lớp]] [[quét]], [[phủ]] [[bên ngoài]] cho [[bền]], [[đẹp]]. #: {{ux|vi|Quét hai '''nước''' vôi.}} #: {{ux|vi|'''Nước''' mạ rất bền.}} #: {{ux|vi|Tốt gỗ hơn tốt '''nước''' sơn.|q=tục ngữ}} # {{term|Kết hợp hạn chế}} Vẻ [[ánh]], [[bóng]] [[tự nhiên]] của một số [[vật]], tựa như có một lớp [[mỏng]] [[chất]] [[phản chiếu]] [[ánh sáng]] nào đó phủ bên ngoài. #: {{ux|vi|'''Nước''' ngọc.}} #: {{ux|vi|Gỗ lên '''nước''' bóng loáng.}} # [[vùng đất|Vùng đất]] trong đó những [[người]] thuộc một hay nhiều [[dân tộc]] cùng [[sống]] [[chung]] dưới một [[chế độ]] [[chính trị]] – [[xã hội]] và cùng thuộc về một [[nhà nước]] nhất định. #: {{ux|vi|'''Nước''' Việt Nam.}} #: {{ux|vi|Các '''nước''' láng giềng.}} # {{term|Kết hợp hạn chế}} [[bước|Bước]] đi, về mặt [[nhanh]] [[chậm]] (của [[ngựa]]). #: {{ux|vi|Ngựa chạy đang được '''nước'''.}} #: {{ux|vi|Phi '''nước''' đại.}} # Bước đi của [[quân cờ]], về mặt ảnh hưởng đến [[thế]] [[cờ]]. #: {{ux|vi|'''Nước''' cờ cao.}} #: {{ux|vi|Mách '''nước'''.}} #: {{ux|vi|Chơi cờ sáng '''nước'''.}} # Cách [[hành động]], [[hoạt động]] để [[tác động]] đến [[tình hình]], [[thoát khỏi]] thế [[bí]] hoặc [[tạo]] ra thế [[thuận lợi]]. #: {{ux|vi|Bị bao vây, chỉ còn '''nước''' ra đầu thú.}} #: {{ux|vi|(Tính) hết '''nước'''.}} # {{term|Khẩu ngữ}} Thế [[hơn kém]]. #: {{ux|vi|Chịu '''nước''' lép.}} #: {{ux|vi|Đến '''nước''' cùng rồi.}} #: {{ux|vi|Được '''nước''', càng làm già.}} #: {{ux|vi|Nó thì '''nước''' gì!}} # {{term|Khẩu ngữ}} [[mức độ|Mức độ]] [[khó]] có thể [[chịu đựng]] hơn. #: {{ux|vi|Độc ác đến '''nước''' ấy là cùng.}} #: {{ux|vi|(Trả đến nghìn đồng là) hết '''nước'''.}} #: {{ux|vi|Đã đến '''nước''' này thì không còn có thể từ chối được.}} {{-syn-}} * {{q|Ng. 1}} {{l|vi|nác}} {{q|phương ngữ Bắc Trung Bộ}} * {{q|Ng. 6}} {{l|vi|đất nước}}, {{l|vi|quốc gia}} {{-drv-}} {{đầu}} * {{l|vi|bóng nước}} * {{l|vi|cá nước}} * {{l|vi|cây nước}} * {{l|vi|con nước}} * {{l|vi|còn nước còn tát}} * {{l|vi|cơm nước}} * {{l|vi|dừa nước}} * {{l|vi|đất nước}} * {{l|vi|đầu nước}} * {{l|vi|gà nước}} * {{l|vi|hết nước}} * {{l|vi|khoai nước}} * {{l|vi|làng nước}} * {{l|vi|lên nước}} * {{l|vi|lúa nước}} * {{l|vi|mách nước}} * {{l|vi|máy nước}} * {{l|vi|mặt nước}} * {{l|vi|mớn nước}} * {{l|vi|ngã nước}} * {{l|vi|ngậm nước}} * {{l|vi|nhà nước}} * {{l|vi|non nước}} * {{l|vi|nước bọt}} * {{l|vi|nước chảy chỗ trũng}} * {{l|vi|nước chảy đá mòn}} * {{l|vi|nước chấm}} * {{l|vi|nước cốt dừa}} * {{l|vi|nước da}} * {{l|vi|nước dãi}} * {{l|vi|nước dùng}} * {{l|vi|nước đá}} * {{l|vi|nước đái}} * {{l|vi|nước đại}} * {{l|vi|nước đến chân mới nhảy}} * {{l|vi|nước đổ}} * {{l|vi|nước đổ đầu vịt}} * {{l|vi|nước đổ lá khoai}} * {{l|vi|nước độc}} * {{l|vi|nước đôi}} * {{l|vi|nước ép}} * {{l|vi|nước giải}} * {{l|vi|nước giải khát}} * {{l|vi|nước hàng}} * {{l|vi|nước hoa}} * {{l|vi|nước khoáng}} * {{l|vi|nước kiệu}} * {{l|vi|nước lã}} * {{l|vi|nước lèo}} * {{l|vi|nước lên}} * {{l|vi|nước lọc}} * {{l|bi|nước lợ}} * {{l|vi|nước máy}} * {{l|vi|nước mắm}} * {{l|vi|nước mắt}} * {{l|vi|nước mẹ}} * {{l|vi|nước miếng}} * {{l|vi|nước mũi}} * {{l|vi|nước ngoài}} * {{l|vi|nước ngọt}} * {{l|vi|nước nhà}} * {{l|vi|nước non}} * {{l|vi|nước nôi}} * {{l|vi|nước ối}} * {{l|vi|nước ròng}} * {{l|vi|nước tiểu}} * {{l|vi|nước tương}} * {{l|vi|nước xáo}} * {{l|vi|nước xốt}} * {{l|vi|nước xô-đa}} * {{l|vi|nước xuống}} * {{l|vi|nước xuýt}} * {{l|vi|phá nước}} * {{l|vi|rắn nước}} * {{l|vi|sạch nước cản}} * {{l|vi|trâu nước}} * {{l|vi|trứng nước}} * {{l|vi|tức nước vỡ bờ}} * {{l|vi|vòi nước}} {{cuối}} {{-trans-}} {{trans-top|Chất lỏng không màu, không mùi}} * {{eng}}: {{t|en|water}} ** {{ang}}: {{t|ang|wæter|n}} * {{pol}}: {{t|pl|woda|f}} * {{cat-old}}: {{t|ca|aigua|f}} * {{nld}}: {{t|nl|water|n}} * {{ido}}: {{t|io|aquo}} * {{khm}}: {{t|km|ទឹក}} * {{lao}}: {{t|lo|ນ້ຳ|tr=nam}} * {{mtq}}: {{t|mtq|đác}} * {{rus}}: {{t|ru|вода|f|tr=vodá}} * {{fra}}: {{t|fr|eau|f}} * {{epo}}: {{t|eo|akvo}} * {{tyz}}: {{t|tyz|nặm}} * {{spa}}: {{t|es|agua|f}} * {{kor}}: {{t|ko|물|tr=mul}} * {{zho}}: ** {{gan}}: {{t|gan|水|tr=suɨi213}} ** {{dng}}: {{t|dng|фи|tr=fi}} ** {{hak}}: {{t|hak|水|tr=súi}} ** {{mnp}}: {{t|mnp|水|tr=sṳ̌}} ** {{cdo}}: {{t|cdo|水|tr=cūi}} ** {{nan}}: {{t|nan|水|tr=chúi}} ** {{wuu}}: {{t|wuu|水|tr=sr}} ** {{cmn}}: {{t|cmn|水|tr=shuǐ}} ** {{yue}}: {{t|yue|水|tr=seoi2}} ** {{cjy}}: {{t|cjy|水|tr=suei53}} ** {{hsn}}: {{t|hsn|水|tr=ɕyei41}}, {{t|hsn|水|tr=ɕyəi42}} {{trans-bottom}} {{trans-top|Quốc gia}} * {{eng}}: [[country]], [[state]] * {{nld}}: [[land]], [[staat]] * {{rus}}: [[страна]] {{f}} (''straná''), [[государство]] {{n}} (''gosudárstvo'') * {{fra}}: [[pays]], [[état]] * {{spa}}: [[país]] {{g|m}}, [[estado]] {{g|m}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{-nuo-}} {{-pron-}} * {{IPA2|/nɨək⁷/}} {{-noun-}} {{pn}} # {{term|Cổ Liêm}} [[đất nước]]. [[Thể loại:Danh từ tiếng Nguồn]] 0opw746fc8b708ovtg1smp70utolptr radio 0 2391 2350648 2281327 2026-05-07T07:53:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350648 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Radio transmition diagram en.png|nhỏ|phải|radio]] {{-pron-}} {{vie-pron|ra|đi|ô}} {{-homo-}} * [[ra-đi-ô]] {{-etymology-}} {{etym|lang=vie|from= * [[fra:]] ** [[lat:radius]] = tia }} So sánh với {{eng|style=plain}} ''[[#Tiếng Anh|radio]]''. {{-noun-}} '''radio''' # [[kỹ thuật|Kỹ thuật]] để [[chuyển giao]] [[thông tin]] dùng cách [[biến điệu]] [[sóng điện từ]] có [[tần số]] thấp hơn tần số của [[ánh sáng]]. # [[thiết bị|Thiết bị]] [[điện tử]] dùng để [[nhận]] về các [[sóng âm]] đã được [[biến điệu]] qua [[ăng ten]] để [[khuếch đại]], [[phục hồi]] lại [[dạng]] [[âm thanh]] [[ban đầu]], và cho [[phát]] ra ở [[loa]]. {{-syn-}} ; kỹ thuật để chuyển giao thông tin * [[ra-đi-ô]] * [[truyền thanh]] ; thiết bị * [[ra-đi-ô]] * [[máy thu thanh]] {{-trans-}} ; kỹ thuật để chuyển giao thông tin {{đầu}} * {{ara}}: [[مذياع]] (''midhyaa3'') {{g|m}}, [[راديو]] (''raadyu'') {{g|m}} * {{afr}}: [[#Tiếng Afrikaans|radio]] * {{sqi}}: [[#Tiếng Albania|radio]] {{g|m}} * {{amh}}: [[ራዲዮ]] * {{eng}}: [[#Tiếng Anh|radio]], [[wireless]] {{term|cũ}} * {{hye}}: [[ռադիո]] (''ṙadio'') * {{pol}}: [[#Tiếng Ba Lan|radio]] {{n}} * {{fas}}: [[رادیو]] (''râdio'') * {{isl}}: [[útvarp]] {{n}} * {{eus}}: [[irrati]] * {{bel}}: [[радыё]] (''rádyjo'') {{n}} * {{ben}}: [[রেডিও]] (''reḑio'') * {{por}}: [[rádio]] {{g|m}} * {{bre}}: [[#Tiếng Breton|radio]] {{g|m}}, [[skingomz]] {{f}} * {{bul}}: [[радио]] {{n}} (''rádio'') * {{cat-2}}: [[ràdio]] {{f}} * {{dan}}: [[radiofoni]], [[#Tiếng Đan Mạch|radio]] * {{heb}}: [[רדיו]] (''rá’dio'') {{g|m}} * {{deu}}: [[Funk]] {{g|m}}, [[Rundfunk]] {{g|m}}, [[Radio]] {{n}}, [[Hörfunk]] {{g|m}} * {{est}}: [[raadio]] * {{gla}}: [[rèidio]] {{g|m}} * {{kat}}: [[რადიო]] (''radio'') * {{hin}}: [[रेडियो]] (''reḍiyo'') {{g|m}} * {{hun}}: [[rádió]] * {{ell}}: [[ραδιόφωνο]] (''radiófono'') {{n}}, [[ράδιο]] (''rádio'') {{n}} {{term|thông tục}} * {{ido}}: [[#Tiếng Ido|radio]] * {{ind}}: [[#Tiếng Indonesia|radio]] * {{gle}}: [[raidió]] {{g|m}} * {{kan}}: [[ರೇಡಿಯೋ]] (''reḍiyo''), [[ಬಾನುಲಿ]] (''bānuli'') * {{kaz}}: [[радио]] (''radio'') * {{khm}}: [[វិទ្យុ]] (''vittyuʔ'') * {{kir}}: [[радио]] (''radio'') * {{lao}}: [[ວິທະຍຸ]] (''wīt-tʰā-ɲū'') * {{lat}}: [[radiophonia]] {{f}} * {{lav}}: [[#Tiếng Latvia|radio]] * {{lit}}: [[radijas]] * {{ltz}}: [[Funk]] {{g|m}} * {{msa}}: [[#Tiếng Mã Lai|radio]] * {{mkd}}: [[радио]] (''rádio'') {{n}} * {{mal}}: [[റേഡിയോ]] * {{mya}}: [[ရေဒီယို]] (''rèi-dì-yò'') * {{mon}}: [[радио]] (''rádio'') * {{nav}}: [[níłchʼi bee haneʼé]] * {{rus}}: [[радио]] (''rádio'') {{n}} {{inv}}, [[радиовещание]] (''radioveščánije'') {{n}} * {{jpn}}: [[ラジオ]] (''rajio'') * {{pus}}: [[راډيو]] * {{fin}}: [[#Tiếng Phần Lan|radio]], [[radiotekniikka]] * {{fra}}: [[#Tiếng Pháp|radio]] {{f}}, [[radiodiffusion]] {{f}} * {{cmn}}: ** {{Hant}}: [[無線電]] (''wúxiàndiàn'', vô tuyến điện) ** {{Hans}}: [[无线电]] (''wúxiàndiàn'', vô tuyến điện) * {{que}}: [[ankichiy]] * {{ron}}: [[#Tiếng Romana|radio]] * {{ces}}: [[rádio]] {{n}}, [[rozhlas]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[радио|ра̑дио]] {{g|m}} ** {{Latn}}: [[#Tiếng Serbia-Croatia|rȃdio]] {{g|m}} * {{sin}}: [[ගුවන්විදුලිය]] * {{slk}}: [[rádio]] {{n}} * {{slv}}: [[#Tiếng Sloven|radio]] {{n}} * {{swa}}: [[redio]] * {{tgl}}: [[radyo]] * {{tgk}}: [[радио]] (''radio'') * {{tam}}: [[வானொலி]] (''vaanoli'') * {{spa}}: [[#Tiếng Tây Ban Nha|radio]] {{f}} * {{tel}}: [[రేడియో]] (''reḍiyo'') * {{tha}}: [[วิทยุ]] (''wít-tá-yú'') * {{tur}}: [[radyo]] * {{swe}}: [[#Tiếng Thụy Điển|radio]] {{g|c}} * {{kor}}: [[라디오]] (''radio'') * {{ukr}}: [[радіо]] {{n}} (''rádio'') * {{urd}}: [[ریڈیو]] {{g|m}} (''reḍiyo''), [[مشعہ]] * {{uzb}}: [[#Tiếng Uzbek|radio]] * {{ita}}: [[#Tiếng Ý|radio]] {{f}} * {{yid}}: [[ראדיא]] {{cuối}} ; thiết bị {{đầu}} * {{ara}}: [[راديو]] (''rádyo'') {{g|m}} * {{afr}}: [[draadloos]], [[#Tiếng Afrikaans|radio]] * {{eng}}: [[#Tiếng Anh|radio]], [[tuner]], [[receiver]], [[wireless]] {{term|ít dùng}} * {{hye}}: [[ռադիո]] (''ṙadio'') * {{pol}}: [[#Tiếng Ba Lan|radio]], [[radioodbiornik]] * {{isl}}: [[útvarpstæki]] {{n}} * {{eus}}: [[irrati]] * {{por}}: [[rádio]] {{g|m}} * {{bre}}: [[#Tiếng Breton|radio]] {{g|m}}, [[skingomzer]] {{g|m}} * {{cat-2}}: [[ràdio]] {{f}} * {{heb}}: [[רדיו]] (''rá’dio'') {{g|m}} * {{deu}}: [[Radio]] {{n}} * {{gla}}: [[rèidio]] {{g|m}} * {{nld}}: [[#Tiếng Hà Lan|radio]] {{g|m}} * {{hin}}: [[रेडियो]] (''reḍiyo'') {{g|m}} * {{hun}}: [[rádió]] * {{ell}}: [[ραδιόφωνο]] (''radiófono'') {{n}}, [[ράδιο]] (''rádio'') {{n}} {{term|thông tục}} * {{kur}}: [[ڕادیۆ]] * {{lav}}: [[#Tiếng Latvia|radio]], [[radiouztvērējs]] {{g|m}} * {{ltz}}: [[Radio]] {{g|m}} * {{mkd}}: [[радио]] (''rádio'') {{n}}, [[радиоприемник]] {{g|m}} (''radiopríemnik''), [[радиоапарат]] (''radioaparát'') {{g|m}} * {{mya}}: [[ရေဒီယုိ]] (''rè.dì.yò'') * {{nav}}: [[béésh halneʼé]] * {{rus}}: [[радио]] (''rádio'') {{n}}, [[радиоприёмник]] (''radioprijómnik'') {{g|m}} * {{jpn}}: [[無線]] (むせん, ''musen'', vô tuyến), [[ラジオ]] (''rajio'') * {{fin}}: [[#Tiếng Phần Lan|radio]], [[radiovastaanotin]] * {{fra}}: [[#Tiếng Pháp|radio]] {{f}} * {{cmn}}: ** {{Hant}}: [[收音機]] (''shōuyīnjī'', thu âm cơ) ** {{Hans}}: [[收音机]] (''shōuyīnjī'', thu âm cơ) * {{ron}}: [[#Tiếng Romana|radio]] {{n}}, [[radioreceptor]] {{n}}, [[aparat de radio]] {{n}} * {{ces}}: [[rádio]] {{n}} * {{hbs}}: ** {{Cyrl}}: [[радиопријемник|радиопри́је̄мнӣк]] {{g|m}}, [[радио|ра̑дио]] {{g|m}} ** {{Latn}}: [[radioprijemnik|radiopríjēmnīk]] {{g|m}}, [[#Tiếng Serbia-Croatia|radio|rȃdio]] {{g|m}} * {{swa}}: [[redio]] * {{tgl}}: [[radyo]] * {{tam}}: [[வானொலி]] (''vaanoli'') * {{spa}}: [[#Tiếng Tây Ban Nha|radio]] {{f}} * {{swe}}: [[#Tiếng Thụy Điển|radio]] {{g|c}}, [[radioapparat]] {{g|c}} * {{kor}}: [[라디오]] (''radio'') * {{urd}}: [[ریڈیو]] (''reḍiyo'') {{g|m}} * {{ita}}: [[#Tiếng Ý|radio]] {{f}} {{cuối}} {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈɹeɪ.di.ˌəʊ/}} {{term|Anh}}, {{IPA-old|/ˈɹeɪ.di.ˌoʊ/}} {{term|Mỹ}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-radio.ogg |pron=ˈɹeɪ.di.ˌoʊ}} {{-etymology-}} {{etym|lang=eng|from= * [[fra:radio]] ** [[lat:radius]] = tia }} {{-noun-}} {{eng-noun|s|-}} # [[#Tiếng Việt|Radio]], [[ra-đi-ô]], [[truyền thanh]], [[truyền thanh vô tuyến]]. # [[máy thu thanh|Máy thu thanh]], [[máy]] [[#Tiếng Việt|radio]], máy [[ra-đi-ô]]. # {{@|vật lí}} [[#Tiếng Việt|Radio]], [[ra-đi-ô]], [[vô tuyến]]. {{-tr-verb-}} '''radio''' # [[truyền|Truyền]] đi bằng [[#Tiếng Việt|radio]], [[thông tin]] bằng [[#Tiếng Việt|radio]], [[phát thanh]] bằng [[#Tiếng Việt|radio]]; [[đánh điện]] bằng [[#Tiếng Việt|radio]] (cho ai). {{-forms-}} {{eng-verb}} {{-dan-}} {{-etymology-}} {{etym|lang=dan|from= * [[lat:radius]] = tia }} {{-noun-}} '''radio''' # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-nld-}} {{nl-biến danh|radio's|radiootje}} {{-noun-}} {{nld-noun|m|radio's|radiootje}} # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-fra-}} {{-noun-}} '''radio''' {{f}} # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-crh-}} {{-etymology-}} {{etym|lang=crh|from= * [[lat:radius]] = tia }} {{-noun-}} '''radio''' # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/raː.ðjo/}} {{-etymology-}} {{etym|lang=spa|from= * [[lat:radius]] = tia }} {{-noun-}} {{spa-noun|mf}} # {{g|m}} [[#Tiếng Việt|Radio]], [[truyền thanh]]. # {{f}} [[#Tiếng Việt|Radio]], [[máy thu thanh]]. # {{g|m}} {{@|hóa học}} [[rađi|Rađi]]. # {{g|m}} {{@|giải phẫu}} [[xương|Xương]] [[quay]]. # {{g|m}} {{@|toán học}} [[bán kính|Bán kính]]. {{-syn-}} ; truyền thanh * [[aparato de radio]] * [[radioemisor]] * [[radioemisora]] ; máy thu thanh * [[aparato de radio]] * [[radiorreceptor]] * [[transistor]] {{-verb-}} '''radio''' # {{form of|es|hiện tại số ít ở ngôi thứ nhất|radiar}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Ngoại động từ tiếng Anh]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Tatar Crưm]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] 1joes7eunvv16xjg47yrnm5rwbw3q9a 2350900 2350648 2026-05-07T10:39:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350900 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Radio transmition diagram en.png|nhỏ|phải|radio]] {{-pron-}} {{vie-pron|ra|đi|ô}} {{-homo-}} * [[ra-đi-ô]] {{-etymology-}} {{etym|lang=vie|from= * [[fra:]] ** [[lat:radius]] = tia }} So sánh với {{eng|style=plain}} ''[[#Tiếng Anh|radio]]''. {{-noun-}} '''radio''' # [[kỹ thuật|Kỹ thuật]] để [[chuyển giao]] [[thông tin]] dùng cách [[biến điệu]] [[sóng điện từ]] có [[tần số]] thấp hơn tần số của [[ánh sáng]]. # [[thiết bị|Thiết bị]] [[điện tử]] dùng để [[nhận]] về các [[sóng âm]] đã được [[biến điệu]] qua [[ăng ten]] để [[khuếch đại]], [[phục hồi]] lại [[dạng]] [[âm thanh]] [[ban đầu]], và cho [[phát]] ra ở [[loa]]. {{-syn-}} ; kỹ thuật để chuyển giao thông tin * [[ra-đi-ô]] * [[truyền thanh]] ; thiết bị * [[ra-đi-ô]] * [[máy thu thanh]] {{-trans-}} ; kỹ thuật để chuyển giao thông tin {{đầu}} * {{ara}}: [[مذياع]] (''midhyaa3'') {{g|m}}, [[راديو]] (''raadyu'') {{g|m}} * {{afr}}: [[#Tiếng Afrikaans|radio]] * {{sqi}}: [[#Tiếng Albania|radio]] {{g|m}} * {{amh}}: [[ራዲዮ]] * {{eng}}: [[#Tiếng Anh|radio]], [[wireless]] {{term|cũ}} * {{hye}}: [[ռադիո]] (''ṙadio'') * {{pol}}: [[#Tiếng Ba Lan|radio]] {{n}} * {{fas}}: [[رادیو]] (''râdio'') * {{isl}}: [[útvarp]] {{n}} * {{eus}}: [[irrati]] * {{bel}}: [[радыё]] (''rádyjo'') {{n}} * {{ben}}: [[রেডিও]] (''reḑio'') * {{por}}: [[rádio]] {{g|m}} * {{bre}}: [[#Tiếng Breton|radio]] {{g|m}}, [[skingomz]] {{f}} * {{bul}}: [[радио]] {{n}} (''rádio'') * {{cat-old}}: [[ràdio]] {{f}} * {{dan}}: [[radiofoni]], [[#Tiếng Đan Mạch|radio]] * {{heb}}: [[רדיו]] (''rá’dio'') {{g|m}} * {{deu}}: [[Funk]] {{g|m}}, [[Rundfunk]] {{g|m}}, [[Radio]] {{n}}, [[Hörfunk]] {{g|m}} * {{est}}: [[raadio]] * {{gla}}: [[rèidio]] {{g|m}} * {{kat}}: [[რადიო]] (''radio'') * {{hin}}: [[रेडियो]] (''reḍiyo'') {{g|m}} * {{hun}}: [[rádió]] * {{ell}}: [[ραδιόφωνο]] (''radiófono'') {{n}}, [[ράδιο]] (''rádio'') {{n}} {{term|thông tục}} * {{ido}}: [[#Tiếng Ido|radio]] * {{ind}}: [[#Tiếng Indonesia|radio]] * {{gle}}: [[raidió]] {{g|m}} * {{kan}}: [[ರೇಡಿಯೋ]] (''reḍiyo''), [[ಬಾನುಲಿ]] (''bānuli'') * {{kaz}}: [[радио]] (''radio'') * {{khm}}: [[វិទ្យុ]] (''vittyuʔ'') * {{kir}}: [[радио]] (''radio'') * {{lao}}: [[ວິທະຍຸ]] (''wīt-tʰā-ɲū'') * {{lat}}: [[radiophonia]] {{f}} * {{lav}}: [[#Tiếng Latvia|radio]] * {{lit}}: [[radijas]] * {{ltz}}: [[Funk]] {{g|m}} * {{msa}}: [[#Tiếng Mã Lai|radio]] * {{mkd}}: [[радио]] (''rádio'') {{n}} * {{mal}}: [[റേഡിയോ]] * {{mya}}: [[ရေဒီယို]] (''rèi-dì-yò'') * {{mon}}: [[радио]] (''rádio'') * {{nav}}: [[níłchʼi bee haneʼé]] * {{rus}}: [[радио]] (''rádio'') {{n}} {{inv}}, [[радиовещание]] (''radioveščánije'') {{n}} * {{jpn}}: [[ラジオ]] (''rajio'') * {{pus}}: [[راډيو]] * {{fin}}: [[#Tiếng Phần Lan|radio]], [[radiotekniikka]] * {{fra}}: [[#Tiếng Pháp|radio]] {{f}}, [[radiodiffusion]] {{f}} * {{cmn}}: ** {{Hant}}: [[無線電]] (''wúxiàndiàn'', vô tuyến điện) ** {{Hans}}: [[无线电]] (''wúxiàndiàn'', vô tuyến điện) * {{que}}: [[ankichiy]] * {{ron}}: [[#Tiếng Romana|radio]] * {{ces}}: [[rádio]] {{n}}, [[rozhlas]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[радио|ра̑дио]] {{g|m}} ** {{Latn}}: [[#Tiếng Serbia-Croatia|rȃdio]] {{g|m}} * {{sin}}: [[ගුවන්විදුලිය]] * {{slk}}: [[rádio]] {{n}} * {{slv}}: [[#Tiếng Sloven|radio]] {{n}} * {{swa}}: [[redio]] * {{tgl}}: [[radyo]] * {{tgk}}: [[радио]] (''radio'') * {{tam}}: [[வானொலி]] (''vaanoli'') * {{spa}}: [[#Tiếng Tây Ban Nha|radio]] {{f}} * {{tel}}: [[రేడియో]] (''reḍiyo'') * {{tha}}: [[วิทยุ]] (''wít-tá-yú'') * {{tur}}: [[radyo]] * {{swe}}: [[#Tiếng Thụy Điển|radio]] {{g|c}} * {{kor}}: [[라디오]] (''radio'') * {{ukr}}: [[радіо]] {{n}} (''rádio'') * {{urd}}: [[ریڈیو]] {{g|m}} (''reḍiyo''), [[مشعہ]] * {{uzb}}: [[#Tiếng Uzbek|radio]] * {{ita}}: [[#Tiếng Ý|radio]] {{f}} * {{yid}}: [[ראדיא]] {{cuối}} ; thiết bị {{đầu}} * {{ara}}: [[راديو]] (''rádyo'') {{g|m}} * {{afr}}: [[draadloos]], [[#Tiếng Afrikaans|radio]] * {{eng}}: [[#Tiếng Anh|radio]], [[tuner]], [[receiver]], [[wireless]] {{term|ít dùng}} * {{hye}}: [[ռադիո]] (''ṙadio'') * {{pol}}: [[#Tiếng Ba Lan|radio]], [[radioodbiornik]] * {{isl}}: [[útvarpstæki]] {{n}} * {{eus}}: [[irrati]] * {{por}}: [[rádio]] {{g|m}} * {{bre}}: [[#Tiếng Breton|radio]] {{g|m}}, [[skingomzer]] {{g|m}} * {{cat-old}}: [[ràdio]] {{f}} * {{heb}}: [[רדיו]] (''rá’dio'') {{g|m}} * {{deu}}: [[Radio]] {{n}} * {{gla}}: [[rèidio]] {{g|m}} * {{nld}}: [[#Tiếng Hà Lan|radio]] {{g|m}} * {{hin}}: [[रेडियो]] (''reḍiyo'') {{g|m}} * {{hun}}: [[rádió]] * {{ell}}: [[ραδιόφωνο]] (''radiófono'') {{n}}, [[ράδιο]] (''rádio'') {{n}} {{term|thông tục}} * {{kur}}: [[ڕادیۆ]] * {{lav}}: [[#Tiếng Latvia|radio]], [[radiouztvērējs]] {{g|m}} * {{ltz}}: [[Radio]] {{g|m}} * {{mkd}}: [[радио]] (''rádio'') {{n}}, [[радиоприемник]] {{g|m}} (''radiopríemnik''), [[радиоапарат]] (''radioaparát'') {{g|m}} * {{mya}}: [[ရေဒီယုိ]] (''rè.dì.yò'') * {{nav}}: [[béésh halneʼé]] * {{rus}}: [[радио]] (''rádio'') {{n}}, [[радиоприёмник]] (''radioprijómnik'') {{g|m}} * {{jpn}}: [[無線]] (むせん, ''musen'', vô tuyến), [[ラジオ]] (''rajio'') * {{fin}}: [[#Tiếng Phần Lan|radio]], [[radiovastaanotin]] * {{fra}}: [[#Tiếng Pháp|radio]] {{f}} * {{cmn}}: ** {{Hant}}: [[收音機]] (''shōuyīnjī'', thu âm cơ) ** {{Hans}}: [[收音机]] (''shōuyīnjī'', thu âm cơ) * {{ron}}: [[#Tiếng Romana|radio]] {{n}}, [[radioreceptor]] {{n}}, [[aparat de radio]] {{n}} * {{ces}}: [[rádio]] {{n}} * {{hbs}}: ** {{Cyrl}}: [[радиопријемник|радиопри́је̄мнӣк]] {{g|m}}, [[радио|ра̑дио]] {{g|m}} ** {{Latn}}: [[radioprijemnik|radiopríjēmnīk]] {{g|m}}, [[#Tiếng Serbia-Croatia|radio|rȃdio]] {{g|m}} * {{swa}}: [[redio]] * {{tgl}}: [[radyo]] * {{tam}}: [[வானொலி]] (''vaanoli'') * {{spa}}: [[#Tiếng Tây Ban Nha|radio]] {{f}} * {{swe}}: [[#Tiếng Thụy Điển|radio]] {{g|c}}, [[radioapparat]] {{g|c}} * {{kor}}: [[라디오]] (''radio'') * {{urd}}: [[ریڈیو]] (''reḍiyo'') {{g|m}} * {{ita}}: [[#Tiếng Ý|radio]] {{f}} {{cuối}} {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/ˈɹeɪ.di.ˌəʊ/}} {{term|Anh}}, {{IPA-old|/ˈɹeɪ.di.ˌoʊ/}} {{term|Mỹ}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-radio.ogg |pron=ˈɹeɪ.di.ˌoʊ}} {{-etymology-}} {{etym|lang=eng|from= * [[fra:radio]] ** [[lat:radius]] = tia }} {{-noun-}} {{eng-noun|s|-}} # [[#Tiếng Việt|Radio]], [[ra-đi-ô]], [[truyền thanh]], [[truyền thanh vô tuyến]]. # [[máy thu thanh|Máy thu thanh]], [[máy]] [[#Tiếng Việt|radio]], máy [[ra-đi-ô]]. # {{@|vật lí}} [[#Tiếng Việt|Radio]], [[ra-đi-ô]], [[vô tuyến]]. {{-tr-verb-}} '''radio''' # [[truyền|Truyền]] đi bằng [[#Tiếng Việt|radio]], [[thông tin]] bằng [[#Tiếng Việt|radio]], [[phát thanh]] bằng [[#Tiếng Việt|radio]]; [[đánh điện]] bằng [[#Tiếng Việt|radio]] (cho ai). {{-forms-}} {{eng-verb}} {{-dan-}} {{-etymology-}} {{etym|lang=dan|from= * [[lat:radius]] = tia }} {{-noun-}} '''radio''' # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-nld-}} {{nl-biến danh|radio's|radiootje}} {{-noun-}} {{nld-noun|m|radio's|radiootje}} # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-fra-}} {{-noun-}} '''radio''' {{f}} # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-crh-}} {{-etymology-}} {{etym|lang=crh|from= * [[lat:radius]] = tia }} {{-noun-}} '''radio''' # [[#Tiếng Việt|Radio]], [[truyền thanh]]. # [[#Tiếng Việt|Radio]], [[máy thu thanh]]. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA-old|/raː.ðjo/}} {{-etymology-}} {{etym|lang=spa|from= * [[lat:radius]] = tia }} {{-noun-}} {{spa-noun|mf}} # {{g|m}} [[#Tiếng Việt|Radio]], [[truyền thanh]]. # {{f}} [[#Tiếng Việt|Radio]], [[máy thu thanh]]. # {{g|m}} {{@|hóa học}} [[rađi|Rađi]]. # {{g|m}} {{@|giải phẫu}} [[xương|Xương]] [[quay]]. # {{g|m}} {{@|toán học}} [[bán kính|Bán kính]]. {{-syn-}} ; truyền thanh * [[aparato de radio]] * [[radioemisor]] * [[radioemisora]] ; máy thu thanh * [[aparato de radio]] * [[radiorreceptor]] * [[transistor]] {{-verb-}} '''radio''' # {{form of|es|hiện tại số ít ở ngôi thứ nhất|radiar}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Ngoại động từ tiếng Anh]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Tatar Crưm]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] ls33fjrl6ull33ne8v96xlc8axuri17 thuốc lá 0 2443 2350649 2113087 2026-05-07T07:53:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350649 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Patch of Tobacco (Nicotiana tabacum ) in a field in Intercourse, Pennsylvania..jpg|nhỏ|''Nicotiana tabacum''.]] [[Tập tin:Cigarette-s x.jpeg|nhỏ|Một điếu '''thuốc lá'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # {{term|Thực vật học}} Bất kỳ một loài [[thực vật]] nào trong [[chi]] ''[[Nicotiana]]''. ## ''[[Nicotiana tabacum]]'', một loài thực vật thuộc chi ''Nicotiana'', họ ''[[Solanaceae]]''. # {{term|Nông phẩm}} Một [[sản phẩm]] [[nông nghiệp]] [[thu hoạch]] bằng cách lấy [[lá]] của những loài thực vật thuộc chi ''Nicotiana''. # Sản phẩm được làm từ lá của cây thuốc lá, có dạng hình trụ. #: {{ux|vi|Hút '''thuốc lá''' sẽ gây hại cho sức khỏe.}} #: {{ux|vi|Căn phòng sặc mùi khói '''thuốc lá'''.}} #* {{quote-book|vi|year=1969|author=Nguyễn Thụy Long|title=Kinh nước đen|publisher=Tạp chí thứ tư|page=563|text=Anh quân nhân tiếp tục bước ra ngoài lộ, anh ta nhìn theo hai người, châm một điếu '''thuốc lá''', nhả khói.}} {{-syn-}} * (''Nghĩa 3'') [[thuốc]] (''nói tắt'') {{-related-}} * [[thuốc lào]] * [[xì gà]] {{-drv-}} * [[thuốc lá điện tử]] {{-trans-}} {{trans-top|Bất kỳ loài cây trong chi ''Nicotiana''}} * {{eng}}: {{t+|en|tobacco}} * {{nld}}: {{t+|nl|tabak|m}}, {{t+|nl|tabaksplant|f}} * {{khm}}: {{t+|km|ថ្នាំជក់}} {{trans-mid}} * {{rus}}: {{t+|ru|табак|m|tr=tabák}} * {{fra}}: {{t+|fr|tabac|m}} {{trans-bottom}} {{trans-top|Sản phẩm được làm từ lá của cây thuốc lá, có dạng hình trụ}} * {{ara}}: {{t+|ar|سيجارة|f|tr=sigāra}} * {{afr}}: {{t+|af|sigaret}} * {{sqi}}: {{t+|sq|cigare|f}} * {{amh}}: {{t+|am|ሲጃራ|tr=siǧara}}, {{t+|am|ሲጋራ|tr=sigara}} * {{eng}}: {{t+|en|cigarette}} * {{hye}}: {{t+|hy|ծխախոտ|tr=cxaxot}}, {{t+|hy|սիգարետ|tr=sigaret}} * {{asm}}: {{t+|as|চিগাৰেট|tr=sigaret}} * {{aze}}: {{t+|az|papiros}}, {{t+|az|siqaret}} * {{bak}}: {{t+|ba|тәмәке|tr=tämäke}} * {{bel}}: {{t+|be|цыгарэта|f|tr=cyharéta}}, {{t+|be|папяроса|f|tr=papjarósa}} * {{ben}}: {{t+|bn|সিগারেট|tr=śigareṭ}} * {{bul}}: {{t+|bg|цигара|f|tr=cigára}} * {{cat-2}}: {{t+|ca|cigarreta|f}} * {{ceb}}: {{t+|ceb|sigarilyo}} * {{che}}: {{t+|ce|сигарет|tr=sigaret}} * {{chr}}: {{t+|chr|ᎪᎦᏍᏗ|tr=gogasdi}} * {{chv}}: {{t+|cv|сигарет|tr=sigaret}}, {{t+|cv|пирус|tr=pirus}} * {{cor}}: {{t+|kw|cigarik|m}} * {{nld}}: {{t+|nl|sigaret|mf}} * {{ell}}: {{t+|el|τσιγάρο|n|tr=tsigáro}} {{trans-mid}} * {{kxd}}: {{t+|kxd|sigup}} * {{mya}}: {{t+|my|စီးကရက်|tr=ci:ka.rak}}, {{t+|my|စီးကလိပ်|tr=ci:ka.lip}}, {{t+|my|ဆေးလိပ်|tr=hce:lip}} * {{jpn}}: {{t+|ja|紙巻きたばこ|tr=kamimaki tabako}} * {{fra}}: {{t+|fr|cigarette|f}} * {{ces}}: {{t+|cs|cigareta|f}} * {{spa}}: {{t+|es|cigarrillo|m}} * {{zho}}: *: {{dng}}: {{t+|dng|янбонбонзы|tr=i͡anbonbonzɨ}}, {{t+|dng|янбонбор|tr=i͡anbonbor}}, {{t+|dng|янбонбон|tr=i͡anbonbon}} *: {{hak}}: {{t+|hak|煙仔}}, {{t+|hak|菸仔}}, {{t+|hak|烟仔|tr=yan1 zai3}} *: {{cdo}}: {{t+|cdo|薰囝|tr=hŏng-giāng}} *: {{nan}}: {{t+|nan|薰枝|tr=hun-ki}}, {{t+|nan|薰|tr=hun}} *: {{wuu}}: {{t+|wuu|香煙}}, {{t+|wuu|香烟|tr=xian i}} *: {{cmn}}: {{t+|cmn|香煙}}, {{t+|cmn|香烟|tr=xiāngyān}}, {{t+|cmn|紙煙}}, {{t+|cmn|纸烟|tr=zhǐyān}}, {{t+|cmn|捲煙}}, {{t+|cmn|卷烟|tr=juǎnyān}}, {{t+|cmn|煙}}, {{t+|cmn|烟|tr=yān}} <!-- 烟 can also be used on its own, e.g.: 他给我一支烟 (by user atitarev)-->, {{t+|cmn|煙捲兒}}, {{t+|cmn|烟卷儿|tr=yānjuǎnr}} (''thông tục'') *: {{yue}}: {{t+|yue|煙仔}}, {{t+|yue|烟仔|tr=jin1 zai2}}, {{t+|yue|煙}}, {{t+|yue|烟|tr=jin1}}, {{t+|yue|香煙}}, {{t+|yue|香烟|tr=hoeng1 jin1}} * {{ita}}: {{t+|it|sigaretta|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Thực vật]] 66m1nllgqu4obt07z6uwbtihn70g804 2350901 2350649 2026-05-07T10:39:21Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350901 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Patch of Tobacco (Nicotiana tabacum ) in a field in Intercourse, Pennsylvania..jpg|nhỏ|''Nicotiana tabacum''.]] [[Tập tin:Cigarette-s x.jpeg|nhỏ|Một điếu '''thuốc lá'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # {{term|Thực vật học}} Bất kỳ một loài [[thực vật]] nào trong [[chi]] ''[[Nicotiana]]''. ## ''[[Nicotiana tabacum]]'', một loài thực vật thuộc chi ''Nicotiana'', họ ''[[Solanaceae]]''. # {{term|Nông phẩm}} Một [[sản phẩm]] [[nông nghiệp]] [[thu hoạch]] bằng cách lấy [[lá]] của những loài thực vật thuộc chi ''Nicotiana''. # Sản phẩm được làm từ lá của cây thuốc lá, có dạng hình trụ. #: {{ux|vi|Hút '''thuốc lá''' sẽ gây hại cho sức khỏe.}} #: {{ux|vi|Căn phòng sặc mùi khói '''thuốc lá'''.}} #* {{quote-book|vi|year=1969|author=Nguyễn Thụy Long|title=Kinh nước đen|publisher=Tạp chí thứ tư|page=563|text=Anh quân nhân tiếp tục bước ra ngoài lộ, anh ta nhìn theo hai người, châm một điếu '''thuốc lá''', nhả khói.}} {{-syn-}} * (''Nghĩa 3'') [[thuốc]] (''nói tắt'') {{-related-}} * [[thuốc lào]] * [[xì gà]] {{-drv-}} * [[thuốc lá điện tử]] {{-trans-}} {{trans-top|Bất kỳ loài cây trong chi ''Nicotiana''}} * {{eng}}: {{t+|en|tobacco}} * {{nld}}: {{t+|nl|tabak|m}}, {{t+|nl|tabaksplant|f}} * {{khm}}: {{t+|km|ថ្នាំជក់}} {{trans-mid}} * {{rus}}: {{t+|ru|табак|m|tr=tabák}} * {{fra}}: {{t+|fr|tabac|m}} {{trans-bottom}} {{trans-top|Sản phẩm được làm từ lá của cây thuốc lá, có dạng hình trụ}} * {{ara}}: {{t+|ar|سيجارة|f|tr=sigāra}} * {{afr}}: {{t+|af|sigaret}} * {{sqi}}: {{t+|sq|cigare|f}} * {{amh}}: {{t+|am|ሲጃራ|tr=siǧara}}, {{t+|am|ሲጋራ|tr=sigara}} * {{eng}}: {{t+|en|cigarette}} * {{hye}}: {{t+|hy|ծխախոտ|tr=cxaxot}}, {{t+|hy|սիգարետ|tr=sigaret}} * {{asm}}: {{t+|as|চিগাৰেট|tr=sigaret}} * {{aze}}: {{t+|az|papiros}}, {{t+|az|siqaret}} * {{bak}}: {{t+|ba|тәмәке|tr=tämäke}} * {{bel}}: {{t+|be|цыгарэта|f|tr=cyharéta}}, {{t+|be|папяроса|f|tr=papjarósa}} * {{ben}}: {{t+|bn|সিগারেট|tr=śigareṭ}} * {{bul}}: {{t+|bg|цигара|f|tr=cigára}} * {{cat-old}}: {{t+|ca|cigarreta|f}} * {{ceb}}: {{t+|ceb|sigarilyo}} * {{che}}: {{t+|ce|сигарет|tr=sigaret}} * {{chr}}: {{t+|chr|ᎪᎦᏍᏗ|tr=gogasdi}} * {{chv}}: {{t+|cv|сигарет|tr=sigaret}}, {{t+|cv|пирус|tr=pirus}} * {{cor}}: {{t+|kw|cigarik|m}} * {{nld}}: {{t+|nl|sigaret|mf}} * {{ell}}: {{t+|el|τσιγάρο|n|tr=tsigáro}} {{trans-mid}} * {{kxd}}: {{t+|kxd|sigup}} * {{mya}}: {{t+|my|စီးကရက်|tr=ci:ka.rak}}, {{t+|my|စီးကလိပ်|tr=ci:ka.lip}}, {{t+|my|ဆေးလိပ်|tr=hce:lip}} * {{jpn}}: {{t+|ja|紙巻きたばこ|tr=kamimaki tabako}} * {{fra}}: {{t+|fr|cigarette|f}} * {{ces}}: {{t+|cs|cigareta|f}} * {{spa}}: {{t+|es|cigarrillo|m}} * {{zho}}: *: {{dng}}: {{t+|dng|янбонбонзы|tr=i͡anbonbonzɨ}}, {{t+|dng|янбонбор|tr=i͡anbonbor}}, {{t+|dng|янбонбон|tr=i͡anbonbon}} *: {{hak}}: {{t+|hak|煙仔}}, {{t+|hak|菸仔}}, {{t+|hak|烟仔|tr=yan1 zai3}} *: {{cdo}}: {{t+|cdo|薰囝|tr=hŏng-giāng}} *: {{nan}}: {{t+|nan|薰枝|tr=hun-ki}}, {{t+|nan|薰|tr=hun}} *: {{wuu}}: {{t+|wuu|香煙}}, {{t+|wuu|香烟|tr=xian i}} *: {{cmn}}: {{t+|cmn|香煙}}, {{t+|cmn|香烟|tr=xiāngyān}}, {{t+|cmn|紙煙}}, {{t+|cmn|纸烟|tr=zhǐyān}}, {{t+|cmn|捲煙}}, {{t+|cmn|卷烟|tr=juǎnyān}}, {{t+|cmn|煙}}, {{t+|cmn|烟|tr=yān}} <!-- 烟 can also be used on its own, e.g.: 他给我一支烟 (by user atitarev)-->, {{t+|cmn|煙捲兒}}, {{t+|cmn|烟卷儿|tr=yānjuǎnr}} (''thông tục'') *: {{yue}}: {{t+|yue|煙仔}}, {{t+|yue|烟仔|tr=jin1 zai2}}, {{t+|yue|煙}}, {{t+|yue|烟|tr=jin1}}, {{t+|yue|香煙}}, {{t+|yue|香烟|tr=hoeng1 jin1}} * {{ita}}: {{t+|it|sigaretta|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Thực vật]] 8gzwdkgobu0fng2mf3cq3n7ijlalp57 tiếng Hà Lan 0 2821 2350650 2284732 2026-05-07T07:53:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350650 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Hà|Lan}} {{-noun-}} '''tiếng Hà Lan''', '''tiếng Hà-Lan''' '''tiếng Hòa Lan''', '''tiếng Hoà Lan''' # [[ngôn ngữ|Ngôn ngữ]] chính của [[Hoà Lan]] và [[Flăng-đrơ]] (miền bắc của nước [[Bỉ]]). {{-trans-}} {{đầu}} * {{ara}}: [[هولندية]] * {{afr}}: [[Nederlands]] * {{sqi}}: [[Hollandisht]] * {{eng}}: [[Dutch]] * {{arg}}: [[olandés]] * {{hye}}: [[Հոլանդական]], [[Հոլանդերեն]] * {{aze}}: [[Нидерланд]] * {{fas}}: [[هلندى]] * {{eus}}: [[Nederlandera]], [[Holandera]] * {{bel}}: [[Галяндзкай]], [[Галяндзкая]], [[Галанская]] * {{por}}: [[holandês]], [[neerlandês]] * {{ina}}: [[hollandese]], [[nederlandese]] * {{bre}}: [[Nederlandeg]] * {{bul}}: [[Холандски]] * {{cat-2}}: [[holandès]], [[neerlandès]] * {{chr}}: [[ᏁᏓᎳ]] * {{cor}}: [[Iseldiryek]] * {{hrv}}: [[Nizozemski]] * {{dan}}: [[Nederlandsk]] * {{heb}}: [[הולנדית]] * {{deu}}: [[Niederländisch]] {{n}}, [[Holländisch]] {{n}} * {{est}}: [[hollandikeel]] * {{fao}}: [[Hollendskt]] * {{fry}}: [[Nederlânsk]], [[Hollânsk]] * {{glg}}: [[Neerlandés]] * {{kat}}: [[ჰოლანდიური]] * {{nld}}: [[Nederlands]] * {{kor}}: [[네델란드어]] * {{hun}}: [[holland]] * {{ell}}: [[Ολλανδικά]] {{n}} {{p}} * {{ind}}: [[bahasa Belanda]] * {{gle}}: [[Ollainnis]] * {{khm}}: [[ភាសាហុលឍង់េដ]] * {{kur}}: [[Holendî]] {{giữa}} * {{lav}}: [[Holandiešu]] * {{lit}}: [[Olandų]], [[Olandiškai]] * {{msa}}: [[Bahasa Belanda]] * {{mkd}}: [[Холандски]] * {{mlt}}: [[Olandiż]] * {{mdf}}: [[Голандонь]] * {{mon}}: [[Голланд]], [[Голланди]] * {{nor}}: [[Nederlandsk]] * {{nep}}: [[डच]] * {{rus}}: [[Голландский]] * {{jpn}}: [[オランダ語]] (''oranda-go'') * {{oci}}: [[Neerlandès]] * {{fin}}: [[hollanti]] * {{fra}}: [[néerlandais]] {{g|m}}, [[hollandais]] {{g|m}} * {{epo}}: [[Nederlanda]] * {{ron}}: [[Olandeză]] {{f}} * {{ces}}: [[nizozemština]] {{f}}, [[holandština]] {{f}} * {{srp}}: [[Холандски]] * {{slk}}: [[Holandský]] * {{slv}}: [[nizozemščina]] {{f}} * {{wen}}: [[Holandšćina]] * {{tam}}: [[டட்ச்]] * {{tat}}: [[Голланд]] * {{spa}}: [[holandés]] {{g|m}} * {{tha}}: [[ภาษาฮอลันดา]] * {{tur}}: [[Hollandaca]] * {{swe}}: [[nederländska]], [[holländska]] * {{zho}}: [[荷兰语]] ([[Hà Lan]] [[ngữ]], ''hélán yŭ'') * {{ukr}}: [[Голландський]] * {{urd}}: [[ڈچ]] * {{cym}}: [[Iseldireg]] * {{ita}}: [[olandese]] * {{zul}}: [[Isiholandi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hòa Lan]] [[Thể loại:Danh từ tiếng Việt]] 63yxd2t2fc8jf0dbgae95tefclc5zfw 2350902 2350650 2026-05-07T10:39:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350902 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Hà|Lan}} {{-noun-}} '''tiếng Hà Lan''', '''tiếng Hà-Lan''' '''tiếng Hòa Lan''', '''tiếng Hoà Lan''' # [[ngôn ngữ|Ngôn ngữ]] chính của [[Hoà Lan]] và [[Flăng-đrơ]] (miền bắc của nước [[Bỉ]]). {{-trans-}} {{đầu}} * {{ara}}: [[هولندية]] * {{afr}}: [[Nederlands]] * {{sqi}}: [[Hollandisht]] * {{eng}}: [[Dutch]] * {{arg}}: [[olandés]] * {{hye}}: [[Հոլանդական]], [[Հոլանդերեն]] * {{aze}}: [[Нидерланд]] * {{fas}}: [[هلندى]] * {{eus}}: [[Nederlandera]], [[Holandera]] * {{bel}}: [[Галяндзкай]], [[Галяндзкая]], [[Галанская]] * {{por}}: [[holandês]], [[neerlandês]] * {{ina}}: [[hollandese]], [[nederlandese]] * {{bre}}: [[Nederlandeg]] * {{bul}}: [[Холандски]] * {{cat-old}}: [[holandès]], [[neerlandès]] * {{chr}}: [[ᏁᏓᎳ]] * {{cor}}: [[Iseldiryek]] * {{hrv}}: [[Nizozemski]] * {{dan}}: [[Nederlandsk]] * {{heb}}: [[הולנדית]] * {{deu}}: [[Niederländisch]] {{n}}, [[Holländisch]] {{n}} * {{est}}: [[hollandikeel]] * {{fao}}: [[Hollendskt]] * {{fry}}: [[Nederlânsk]], [[Hollânsk]] * {{glg}}: [[Neerlandés]] * {{kat}}: [[ჰოლანდიური]] * {{nld}}: [[Nederlands]] * {{kor}}: [[네델란드어]] * {{hun}}: [[holland]] * {{ell}}: [[Ολλανδικά]] {{n}} {{p}} * {{ind}}: [[bahasa Belanda]] * {{gle}}: [[Ollainnis]] * {{khm}}: [[ភាសាហុលឍង់េដ]] * {{kur}}: [[Holendî]] {{giữa}} * {{lav}}: [[Holandiešu]] * {{lit}}: [[Olandų]], [[Olandiškai]] * {{msa}}: [[Bahasa Belanda]] * {{mkd}}: [[Холандски]] * {{mlt}}: [[Olandiż]] * {{mdf}}: [[Голандонь]] * {{mon}}: [[Голланд]], [[Голланди]] * {{nor}}: [[Nederlandsk]] * {{nep}}: [[डच]] * {{rus}}: [[Голландский]] * {{jpn}}: [[オランダ語]] (''oranda-go'') * {{oci}}: [[Neerlandès]] * {{fin}}: [[hollanti]] * {{fra}}: [[néerlandais]] {{g|m}}, [[hollandais]] {{g|m}} * {{epo}}: [[Nederlanda]] * {{ron}}: [[Olandeză]] {{f}} * {{ces}}: [[nizozemština]] {{f}}, [[holandština]] {{f}} * {{srp}}: [[Холандски]] * {{slk}}: [[Holandský]] * {{slv}}: [[nizozemščina]] {{f}} * {{wen}}: [[Holandšćina]] * {{tam}}: [[டட்ச்]] * {{tat}}: [[Голланд]] * {{spa}}: [[holandés]] {{g|m}} * {{tha}}: [[ภาษาฮอลันดา]] * {{tur}}: [[Hollandaca]] * {{swe}}: [[nederländska]], [[holländska]] * {{zho}}: [[荷兰语]] ([[Hà Lan]] [[ngữ]], ''hélán yŭ'') * {{ukr}}: [[Голландський]] * {{urd}}: [[ڈچ]] * {{cym}}: [[Iseldireg]] * {{ita}}: [[olandese]] * {{zul}}: [[Isiholandi]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Hòa Lan]] [[Thể loại:Danh từ tiếng Việt]] 3a3dhhey5aesoidge33132zr5hnm6ya tiếng Nhật 0 2899 2350806 2284736 2026-05-07T08:07:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350806 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Nhật}} {{-noun-}} '''[[tiếng]] [[Nhật]]''' # [[ngôn ngữ|Ngôn ngữ]] của nước [[Nhật Bản]]. {{-syn-}} *[[tiếng Nhật Bản]] *[[Nhật ngữ]] {{-trans-}} {{đầu}} *{{bs}}: [[japanski]] {{g|m}} *{{cat-2}}: [[japonès]] *{{zh}}: [[日语]]/[[日語]] (pinyin: Rìyǔ) *{{cs}}: [[japonština]] {{f}} *{{da}}: [[japansk]] *{{nl}}: [[Japans]] *{{eo}}: [[japana]] (lingvo) *{{fa}}: [[ژاپنی]] (Zhaponi) *{{fi}}: [[japani]] *{{fr}}: [[japonais]] {{g|m}} *{{de}}: [[Japanisch]] {{n}} *{{hu}}: [[japán]] *{{hi}}: [[japani]] *{{id}}: [[bahasa Jepang]] *{{it}}: [[giapponese]] {{g|m}} *{{ja}}: [[日本語]] ([[にほんご]], nihongo) {{giữa}} *{{ko}}: [[일본어]] ([[日本語]], ilbon-eo), [[일어]] ([[日語]], il-eo) *{{la}}: [[lingua Iaponica]] {{f}} *{{lt}}: [[japonų kalba]] {{f}} *{{ms}}: [[bahasa Jepun]] *{{no}}: [[japansk]] *{{pl}}: język [[japoński]] *{{pt}}: [[japonês]] {{g|m}} *{{ro}}: [[japoneză]] {{f}} *{{ru}}: [[японский язык|японский <nowiki>[язык]</nowiki>]] (japónskij <nowiki>[jazýk]</nowiki>) {{g|m}} *{{sr}}: **Chữ Cyrillic: [[јапански#Serbian|јапански]] {{g|m}} **Chữ Latinh: [[japanski#Serbian|japanski]] {{g|m}} *{{sk}}: [[japončina]] {{f}} *{{es}}: [[japonés]] {{g|m}} *{{sv}}: [[japanska]] *{{th}}: [[ภาษาญี่ปุ่น]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Nhật]] s1qy8lgo3szl9017v06vl3mxjt617ft 2350903 2350806 2026-05-07T10:39:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350903 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Nhật}} {{-noun-}} '''[[tiếng]] [[Nhật]]''' # [[ngôn ngữ|Ngôn ngữ]] của nước [[Nhật Bản]]. {{-syn-}} *[[tiếng Nhật Bản]] *[[Nhật ngữ]] {{-trans-}} {{đầu}} *{{bs}}: [[japanski]] {{g|m}} *{{cat-old}}: [[japonès]] *{{zh}}: [[日语]]/[[日語]] (pinyin: Rìyǔ) *{{cs}}: [[japonština]] {{f}} *{{da}}: [[japansk]] *{{nl}}: [[Japans]] *{{eo}}: [[japana]] (lingvo) *{{fa}}: [[ژاپنی]] (Zhaponi) *{{fi}}: [[japani]] *{{fr}}: [[japonais]] {{g|m}} *{{de}}: [[Japanisch]] {{n}} *{{hu}}: [[japán]] *{{hi}}: [[japani]] *{{id}}: [[bahasa Jepang]] *{{it}}: [[giapponese]] {{g|m}} *{{ja}}: [[日本語]] ([[にほんご]], nihongo) {{giữa}} *{{ko}}: [[일본어]] ([[日本語]], ilbon-eo), [[일어]] ([[日語]], il-eo) *{{la}}: [[lingua Iaponica]] {{f}} *{{lt}}: [[japonų kalba]] {{f}} *{{ms}}: [[bahasa Jepun]] *{{no}}: [[japansk]] *{{pl}}: język [[japoński]] *{{pt}}: [[japonês]] {{g|m}} *{{ro}}: [[japoneză]] {{f}} *{{ru}}: [[японский язык|японский <nowiki>[язык]</nowiki>]] (japónskij <nowiki>[jazýk]</nowiki>) {{g|m}} *{{sr}}: **Chữ Cyrillic: [[јапански#Serbian|јапански]] {{g|m}} **Chữ Latinh: [[japanski#Serbian|japanski]] {{g|m}} *{{sk}}: [[japončina]] {{f}} *{{es}}: [[japonés]] {{g|m}} *{{sv}}: [[japanska]] *{{th}}: [[ภาษาญี่ปุ่น]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Nhật]] k9tquunuq2zyqwt3eutyfpcdx3antxb nhà thơ 0 3108 2350651 2123181 2026-05-07T07:53:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350651 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhà thơ''' # Người [[sáng tác]] [[thơ]], có [[tài năng]] và có [[tác phẩm]] được biết đến [[rộng rãi]]. {{-syn-}} * [[thi nhân]] * [[thi sĩ]] {{-related-}} * [[nhà văn]] {{-trans-}} {{trans-top|Người sáng tác thơ}} * {{afr}}: {{t+|af|digter}} * {{sqi}}: {{t+|sq|poet|m}} * {{eng}}: {{t+|en|poet}} * {{aze}}: {{t+|az|şair}} * {{cat-2}}: {{t+|ca|poeta|mf}} * {{dan}}: {{t+|da|digter|c}} * {{deu}}: {{t+|de|Poet|m}} * {{nld}}: {{t+|nl|dichter|m}}, {{t+|nl|poëet|m}} {{trans-mid}} * {{fra}}: {{t+|fr|poète|m}} * {{zho}}: *: {{dng}}: {{t+|dng|сыжын|tr=sɨřɨn}} *: {{nan}}: {{t+|nan|詩人}}, {{t|nan|诗人|tr=si-lîn / si-jîn}} *: {{cmn}}: {{t+|cmn|詩人}}, {{t+|cmn|诗人|tr=shīrén}} *: {{yue}}: {{t+|yue|詩人}}, {{t+|yue|诗人|tr=si1 jan4}} * {{ita}}: {{t+|it|poeta|m}}, {{t+|it|poetessa|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] l145icrqxhhdmnsfadmgrur788wqie4 2350904 2350651 2026-05-07T10:39:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350904 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhà thơ''' # Người [[sáng tác]] [[thơ]], có [[tài năng]] và có [[tác phẩm]] được biết đến [[rộng rãi]]. {{-syn-}} * [[thi nhân]] * [[thi sĩ]] {{-related-}} * [[nhà văn]] {{-trans-}} {{trans-top|Người sáng tác thơ}} * {{afr}}: {{t+|af|digter}} * {{sqi}}: {{t+|sq|poet|m}} * {{eng}}: {{t+|en|poet}} * {{aze}}: {{t+|az|şair}} * {{cat-old}}: {{t+|ca|poeta|mf}} * {{dan}}: {{t+|da|digter|c}} * {{deu}}: {{t+|de|Poet|m}} * {{nld}}: {{t+|nl|dichter|m}}, {{t+|nl|poëet|m}} {{trans-mid}} * {{fra}}: {{t+|fr|poète|m}} * {{zho}}: *: {{dng}}: {{t+|dng|сыжын|tr=sɨřɨn}} *: {{nan}}: {{t+|nan|詩人}}, {{t|nan|诗人|tr=si-lîn / si-jîn}} *: {{cmn}}: {{t+|cmn|詩人}}, {{t+|cmn|诗人|tr=shīrén}} *: {{yue}}: {{t+|yue|詩人}}, {{t+|yue|诗人|tr=si1 jan4}} * {{ita}}: {{t+|it|poeta|m}}, {{t+|it|poetessa|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] cp69fo1f429jdwjd8h6hcl14s6yewwk bạch kim 0 3620 2350652 2280894 2026-05-07T07:53:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350652 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Electron shell 078 platinum.png|nhỏ|phải|bạch kim]] {{-pron-}} {{vie-pron|bạch|kim}} {{-noun-}} '''bạch kim''' # {{term|Hóa học}} [[kim loại|Kim loại]] [[quý]], màu [[trắng]] [[xám]], không [[gỉ]], rất ít bị [[ăn mòn]], chịu được [[nhiệt độ]] cao hơn [[bạc]]; một [[nguyên tố]] [[hóa học]] trong [[bảng]] [[tuần hoàn]] nguyên tố có [[kí hiệu]] là [[Pt]] và [[số hiệu]] [[nguyên tử]] bằng 78. {{-syn-}} * [[platin]] * [[Pt]] {{-trans-}} {{đầu}} * {{ara}}: [[بلاتين]] (''blá:tin'') {{g|m}} * {{afr}}: [[platinum]] * {{sqi}}: [[platin]] * {{eng}}: [[platinum]] * {{hye}}: [[platin]] * {{pol}}: [[platyna]] {{f}} * {{isl}}: [[platína]] * {{eus}}: [[platinoa]] * {{bel}}: [[плацiна]] (''plátsina'') {{f}} * {{por}}: [[platina]] {{f}} * {{bos}}: platinum * {{bre}}: [[platin]] * {{bul}}: [[платина]] (''plátina'') {{f}} * {{cat-2}}: [[platí]] {{g|m}} * {{cor}}: [[platynum]] * {{hrv}}: [[platina]] * {{dan}}: [[platin]] * {{heb}}: [[פלטינה]] (''platína'') * {{deu}}: [[Platin]] {{n}} * {{est}}: [[plaatina]] * {{fao}}: [[platin]] * {{fur}}: [[platin]] * {{fry}}: [[platina]] {{n}} * {{glg}}: [[platino]] * {{kat}}: [[platina]] * {{nld}}: [[platina]] {{n}} * {{hun}}: [[platina]] * {{ell}}: [[λευκόχρυσος]] (''levkókhrysos'') {{g|m}} * {{gle}}: [[platanam]] * {{lat}}: [[platinum]] {{giữa}} * {{lav}}: [[platīns]] * {{lit}}: [[platina]] * {{ltz}}: [[platin]] * {{msa}}: platinum, [[platina]] * {{mkd}}: [[платина]] (''plátina'') {{f}} * {{mlt}}: platinum * {{mon}}: [[платин]] (''platin''), [[цагаан]] (tsagaan) * {{nor}}: [[platina]] * {{rus}}: [[платина]] (''plátina'') {{f}} * {{jpn}}: [[プラチナ]] (''purachina''), [[白金]] (はっきん, ''hakkin'', [[bạch kim]]) * {{fin}}: [[platina]] * {{fra}}: [[platine]] {{g|m}} * {{epo}}: [[plateno]] * {{ron}}: [[platinâ]] {{f}} * {{ces}}: [[platina]] * {{srp}}: ** {{Cyrl}}: [[платина]] {{f}} ** {{Latn}}: [[platina]] {{f}} * {{slk}}: [[platina]] * {{slv}}: [[platina]] {{f}} * {{tam}}: [[paļāţţinam]] * {{spa}}: [[platino]] {{g|m}} * {{tha}}: [[แพลทินัม]] (''plaetínam'') * {{tur}}: [[platin]] * {{swe}}: [[platina]] * {{kor}}: [[paeggeum]] * {{zho}}: [[白金]] (''báijīn'', [[bạch kim]]) * {{ukr}}: [[платина]] (''plátina'') {{f}} * {{cym}}: [[platinwm]] * {{ita}}: [[platino]] {{g|m}} {{cuối}} {{-adj-}} '''bạch kim''' # [[màu|Màu]] [[trắng]] [[bạc]] [[tự nhiên]], [[đặc biệt]] của [[tóc]], khác với màu [[tóc bạc]]. {{-trans-}} {{đầu}} *{{zho}}: **{{Hans}}: [[铂]] **{{Hant}}: [[鉑]] (''bó'', [[bạc]]) {{giữa}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Nguyên tố]] {{C|vi|Màu sắc}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] 1r0ofu2yzippo99qi5twav1qm2zold5 2350905 2350652 2026-05-07T10:39:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350905 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Electron shell 078 platinum.png|nhỏ|phải|bạch kim]] {{-pron-}} {{vie-pron|bạch|kim}} {{-noun-}} '''bạch kim''' # {{term|Hóa học}} [[kim loại|Kim loại]] [[quý]], màu [[trắng]] [[xám]], không [[gỉ]], rất ít bị [[ăn mòn]], chịu được [[nhiệt độ]] cao hơn [[bạc]]; một [[nguyên tố]] [[hóa học]] trong [[bảng]] [[tuần hoàn]] nguyên tố có [[kí hiệu]] là [[Pt]] và [[số hiệu]] [[nguyên tử]] bằng 78. {{-syn-}} * [[platin]] * [[Pt]] {{-trans-}} {{đầu}} * {{ara}}: [[بلاتين]] (''blá:tin'') {{g|m}} * {{afr}}: [[platinum]] * {{sqi}}: [[platin]] * {{eng}}: [[platinum]] * {{hye}}: [[platin]] * {{pol}}: [[platyna]] {{f}} * {{isl}}: [[platína]] * {{eus}}: [[platinoa]] * {{bel}}: [[плацiна]] (''plátsina'') {{f}} * {{por}}: [[platina]] {{f}} * {{bos}}: platinum * {{bre}}: [[platin]] * {{bul}}: [[платина]] (''plátina'') {{f}} * {{cat-old}}: [[platí]] {{g|m}} * {{cor}}: [[platynum]] * {{hrv}}: [[platina]] * {{dan}}: [[platin]] * {{heb}}: [[פלטינה]] (''platína'') * {{deu}}: [[Platin]] {{n}} * {{est}}: [[plaatina]] * {{fao}}: [[platin]] * {{fur}}: [[platin]] * {{fry}}: [[platina]] {{n}} * {{glg}}: [[platino]] * {{kat}}: [[platina]] * {{nld}}: [[platina]] {{n}} * {{hun}}: [[platina]] * {{ell}}: [[λευκόχρυσος]] (''levkókhrysos'') {{g|m}} * {{gle}}: [[platanam]] * {{lat}}: [[platinum]] {{giữa}} * {{lav}}: [[platīns]] * {{lit}}: [[platina]] * {{ltz}}: [[platin]] * {{msa}}: platinum, [[platina]] * {{mkd}}: [[платина]] (''plátina'') {{f}} * {{mlt}}: platinum * {{mon}}: [[платин]] (''platin''), [[цагаан]] (tsagaan) * {{nor}}: [[platina]] * {{rus}}: [[платина]] (''plátina'') {{f}} * {{jpn}}: [[プラチナ]] (''purachina''), [[白金]] (はっきん, ''hakkin'', [[bạch kim]]) * {{fin}}: [[platina]] * {{fra}}: [[platine]] {{g|m}} * {{epo}}: [[plateno]] * {{ron}}: [[platinâ]] {{f}} * {{ces}}: [[platina]] * {{srp}}: ** {{Cyrl}}: [[платина]] {{f}} ** {{Latn}}: [[platina]] {{f}} * {{slk}}: [[platina]] * {{slv}}: [[platina]] {{f}} * {{tam}}: [[paļāţţinam]] * {{spa}}: [[platino]] {{g|m}} * {{tha}}: [[แพลทินัม]] (''plaetínam'') * {{tur}}: [[platin]] * {{swe}}: [[platina]] * {{kor}}: [[paeggeum]] * {{zho}}: [[白金]] (''báijīn'', [[bạch kim]]) * {{ukr}}: [[платина]] (''plátina'') {{f}} * {{cym}}: [[platinwm]] * {{ita}}: [[platino]] {{g|m}} {{cuối}} {{-adj-}} '''bạch kim''' # [[màu|Màu]] [[trắng]] [[bạc]] [[tự nhiên]], [[đặc biệt]] của [[tóc]], khác với màu [[tóc bạc]]. {{-trans-}} {{đầu}} *{{zho}}: **{{Hans}}: [[铂]] **{{Hant}}: [[鉑]] (''bó'', [[bạc]]) {{giữa}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Nguyên tố]] {{C|vi|Màu sắc}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] 8flp5nxfvf7lwomr4yddnlnav7lusee võ thuật 0 5926 2350653 2280948 2026-05-07T07:53:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350653 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym|lang=vie|from= * [[Hani:武術]] (võ thuật) ** [[武]] (võ) ** [[術]] (thuật) }} ==== Giải thích ==== * '''Võ''' trong danh từ ''"võ thuật, võ công, văn võ"''... là hoạt động theo một hình thức nào đó để chiến đấu. * '''Thuật''' trong danh từ ''"mỹ thuật, nghệ thuật, thuật số"''... là thực hiện theo hình thức biến hóa nào đó mà không thể phân thành cấp độ. {{-verb-}} '''võ thuật''' # [[hoạt động|Hoạt động]] theo một [[hình thức]] để [[chiến đấu]] một cách [[biến hóa]]. #: '''''Võ thuật''' cao cường.'' #: ''Cô này '''võ thuật''' không thua ai.'' #: ''Vị võ sư này '''võ thuật''' thuộc hàng nhất nhì trong thiên hạ.'' #: ''Cố [[Võ sư Trần Tiến]] đã dạy '''võ thuật''' cho Đặt Công, Công An,...'' {{-syn-}} * [[ủ su]] * [[vũ thuật]] * [[võ nghệ]] * [[võ công]] {{-noun-}} '''võ thuật''' # Một [[hoạt động]] [[thể thao]] và [[chiến đấu]] [[đối kháng]] giữa các [[cá nhân]], có thể [[kèm theo]] hoặc không các [[khí cụ]] võ thuật. {{-syn-}} * [[ủ su]] * [[vũ thuật]] * [[võ nghệ]] * [[võ công]] {{-trans-}} {{đầu}} * {{sqi}}: [[arti luftarak]] * {{eng}}: [[martial arts]] {{plur}}, [[martial art]] * {{ast}}: [[arte marcial]] * {{aze}}: [[döyüş sənəti]] * {{pol}}: [[sztuki walki]] * {{fas}}: [[هنر رزمی]] (''honar-e razmi'') * {{isl}}: [[bardagaíþrótt]] * {{por}}: [[artes marciais]] * {{bul}}: [[бойно изкуство]] * {{cat-2}}: [[art marcial]] * {{hrv}}: [[borilačke vještine]] * {{dan}}: [[kampsport]] * {{heb}}: [[אמנות לחימה]] * {{deu}}: [[Kampfkunst, Kampfsport]] * {{glg}}: [[arte marcial]] * {{nld}}: [[gevechtskunst]] {{f}}, [[gevechtssport]] {{f}}, [[krijgskunst]] * {{hun}}: [[harcművészet]] * {{ell}}: [[πολεμικές τέχνες]] * {{gle}}: [[ealaín oscartha]] * {{mlt}}: [[arti marzjali]] * {{nor}}: [[kampsport]], [[kampaktivitet]], [[kampkunst]] * {{rus}}: [[единоборства]] * {{jpn}}: [[格闘技]] (かくとうぎ, cách chùa kỹ) * {{fin}}: [[taistelulaji]], [[kamppailulaji]] * {{fra}}: [[art martial]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[武术]] (''wǔshù'', võ thuật) ** {{Hant}}: [[武術]] (''wǔshù'', võ thuật) * {{ron}}: [[artă marțială]] * {{ces}}: [[bojové umění]] * {{slk}}: [[bojové umenie]] * {{slv}}: [[borilne veščine]], [[umetnosti bojevanja]] * {{spa}}: [[arte marcial]] {{g|m}} * {{tur}}: [[dövüş sanatı]] * {{swe}}: [[kampsport]] * {{kor}}: [[무예]] (武藝) * {{ita}}: [[arti marziali]] {{cuối}} {{-related-}} {{đầu}} * [[kung fu]] * [[công phu]] * [[Quyền thuật]] * [[Kiếm thuật]] * [[Nghệ thuật]] * [[Mĩ thuật]] * [[Võ Tàu]] * [[Võ Đang]] * [[Võ Thiếu Lâm]] * [[Võ Ta]] * [[Võ Bình Định]] * [[Khí công]] * [[Nội công]] * [[Khinh công]] {{cuối}} [[Thể loại:Võ thuật/Tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] [[Thể loại:Danh từ tiếng Việt]] 4iuu85ntj475cnbwrsjcymxdiu7e2mu 2350906 2350653 2026-05-07T10:39:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350906 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym|lang=vie|from= * [[Hani:武術]] (võ thuật) ** [[武]] (võ) ** [[術]] (thuật) }} ==== Giải thích ==== * '''Võ''' trong danh từ ''"võ thuật, võ công, văn võ"''... là hoạt động theo một hình thức nào đó để chiến đấu. * '''Thuật''' trong danh từ ''"mỹ thuật, nghệ thuật, thuật số"''... là thực hiện theo hình thức biến hóa nào đó mà không thể phân thành cấp độ. {{-verb-}} '''võ thuật''' # [[hoạt động|Hoạt động]] theo một [[hình thức]] để [[chiến đấu]] một cách [[biến hóa]]. #: '''''Võ thuật''' cao cường.'' #: ''Cô này '''võ thuật''' không thua ai.'' #: ''Vị võ sư này '''võ thuật''' thuộc hàng nhất nhì trong thiên hạ.'' #: ''Cố [[Võ sư Trần Tiến]] đã dạy '''võ thuật''' cho Đặt Công, Công An,...'' {{-syn-}} * [[ủ su]] * [[vũ thuật]] * [[võ nghệ]] * [[võ công]] {{-noun-}} '''võ thuật''' # Một [[hoạt động]] [[thể thao]] và [[chiến đấu]] [[đối kháng]] giữa các [[cá nhân]], có thể [[kèm theo]] hoặc không các [[khí cụ]] võ thuật. {{-syn-}} * [[ủ su]] * [[vũ thuật]] * [[võ nghệ]] * [[võ công]] {{-trans-}} {{đầu}} * {{sqi}}: [[arti luftarak]] * {{eng}}: [[martial arts]] {{plur}}, [[martial art]] * {{ast}}: [[arte marcial]] * {{aze}}: [[döyüş sənəti]] * {{pol}}: [[sztuki walki]] * {{fas}}: [[هنر رزمی]] (''honar-e razmi'') * {{isl}}: [[bardagaíþrótt]] * {{por}}: [[artes marciais]] * {{bul}}: [[бойно изкуство]] * {{cat-old}}: [[art marcial]] * {{hrv}}: [[borilačke vještine]] * {{dan}}: [[kampsport]] * {{heb}}: [[אמנות לחימה]] * {{deu}}: [[Kampfkunst, Kampfsport]] * {{glg}}: [[arte marcial]] * {{nld}}: [[gevechtskunst]] {{f}}, [[gevechtssport]] {{f}}, [[krijgskunst]] * {{hun}}: [[harcművészet]] * {{ell}}: [[πολεμικές τέχνες]] * {{gle}}: [[ealaín oscartha]] * {{mlt}}: [[arti marzjali]] * {{nor}}: [[kampsport]], [[kampaktivitet]], [[kampkunst]] * {{rus}}: [[единоборства]] * {{jpn}}: [[格闘技]] (かくとうぎ, cách chùa kỹ) * {{fin}}: [[taistelulaji]], [[kamppailulaji]] * {{fra}}: [[art martial]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[武术]] (''wǔshù'', võ thuật) ** {{Hant}}: [[武術]] (''wǔshù'', võ thuật) * {{ron}}: [[artă marțială]] * {{ces}}: [[bojové umění]] * {{slk}}: [[bojové umenie]] * {{slv}}: [[borilne veščine]], [[umetnosti bojevanja]] * {{spa}}: [[arte marcial]] {{g|m}} * {{tur}}: [[dövüş sanatı]] * {{swe}}: [[kampsport]] * {{kor}}: [[무예]] (武藝) * {{ita}}: [[arti marziali]] {{cuối}} {{-related-}} {{đầu}} * [[kung fu]] * [[công phu]] * [[Quyền thuật]] * [[Kiếm thuật]] * [[Nghệ thuật]] * [[Mĩ thuật]] * [[Võ Tàu]] * [[Võ Đang]] * [[Võ Thiếu Lâm]] * [[Võ Ta]] * [[Võ Bình Định]] * [[Khí công]] * [[Nội công]] * [[Khinh công]] {{cuối}} [[Thể loại:Võ thuật/Tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] [[Thể loại:Danh từ tiếng Việt]] tfgm0ujdo3oorlxo32r4zo5jwyeed7f para 0 21739 2350833 2183895 2026-05-07T08:14:38Z Kateru Zakuro 34522 2350833 wikitext text/x-wiki {{-sqi-}} {{-etymology-}} ; [[#Giới từ|giới từ]] : {{etym-from | term = përpara | from = {{etym-from | lang = sqj-proto | attested = 0 | term = pər-parə-a | from = {{etym-from | lang = ine-proto | attested = 0 | term = pr̥H-e/o-s | meaning = trước }} }} }} ; [[#Danh từ|danh từ]] : {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} {{-prep-}} '''para''' # {{term|+ động từ tòng cách}} [[trước|Trước]], [[trước mắt]], [[trước mặt]]. {{-noun-}} '''para''' # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-eng-}} {{-paro-}} * [[para-]] * [[-para]] {{-pron-}} ; lính nhảy dù, đoạn, [[#Tính từ|tính từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpæ.rə/}} ; đơn vị tiền tệ : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpɑːr.ə/}} {{-etymology-}} ; lính nhảy dù : {{etym-abbr | term = paratrooper }} ; đoạn : {{etym-abbr | term = paragraph }} ; đơn vị tiền tệ : {{etym-from | lang = hbs | term = па̀ра | rom = pàra | from = {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} }} ; [[#Tính từ|tính từ]] : {{etym-abbr | term = paralytic }} {{-noun-}} {{eng-noun}} # {{@|thông tục}} [[lính|Lính]] [[nhảy dù]]. # [[đoạn|Đoạn]] ([[văn]], [[sách]]...). # {{@|cũ}} [[đơn vị|Đơn vị]] [[tiền tệ]] [[cũ]] của một số [[quốc gia]] ở các [[vùng]] [[Ottoman]]/[[Thổ Nhĩ Kỳ]] và [[Nam Tư]]. {{-adj-}} {{eng-adj}} # {{@|Úc||lóng}} [[say mèm|Say mèm]]. {{-ref-}} {{R:FVDP}} {{-pol-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|[ˈpa.ra]}} {{pron-audio |place=Ba Lan (nam giới) |file=Pl-para.ogg |pron=ˈpa.ra}} {{-noun-}} '''para''' {{f}} ({{plur}} [[pary]]) # [[hơi nước|Hơi nước]]. # [[đôi|Đôi]] [[vợ chồng]], [[cặp]] vợ chồng; cặp [[nam nữ]] (đã [[lấy nhau]] hoặc đã [[đính hôn]]). # [[đôi|Đôi]], [[cặp]]. {{-por-}} {{-paro-}} ; [[#Động từ|động từ]] * [[pára]] {{term|cũ}} {{-pron-}} ; [[#Giới từ 2|giới từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpa.ɾa/}}, {{IPA|/ˈpa.ɾɐ/}} {{term|Brasil}}; {{IPA|/ˈpɐ.ɾɐ/}} {{term|Bồ Đào Nha}}; {{IPA|/pɾa/}}, {{IPA|/pɾɐ/}} {{term|thông tục; chủ yếu Brasil}}; {{IPA|/pa/}} {{term|thông tục; chủ yếu châu Phi}} ; [[#Động từ|động từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpa.ɾa/}}, {{IPA|/ˈpa.ɾɐ/}} {{term|Brasil}}; {{IPA|/ˈpa.ɾɐ/}} {{term|Bồ Đào Nha}} {{-homo-}} ; [[#Động từ|động từ]] * [[pára]] {{term|cũ}} {{-etymology-}} ; [[#Giới từ 2|giới từ]] : {{etym-from | lang = roa-ptg | term = pera | from = {{etym-from | lang = lat | term = per | meaning = qua | 2 term = ad | 2 meaning = tới }} }} {{-prep-}} '''para''' # [[cho|Cho]]. # [[đến nỗi|Đến nỗi]] mà. # [[đến|Đến]], đi đến. {{-drv-}} * [[estar para]] * [[para com]] * [[para já]] * [[para que]] * [[pra]] (''para'' + [[a#Tiếng Bồ Đào Nha|a]]) {{term|phương ngữ}} * [[pro]] (''para'' + [[o#Tiếng Bồ Đào Nha|o]]) {{term|phương ngữ}} {{-related-}} * [[pelo]] {{-verb-}} '''para''' # {{third-person singular of|parar|lang=por}} {{-syn-}} * [[pára]] {{term|cũ}} {{-cat-}} {{-verb-}} '''para''' # {{third-person singular of|parar|lang=cat-2}} # {{second-person singular of|parar|lang=cat-2}} {{-gag-}} {{-noun-}} {{pn}} # [[tiền bạc]]. [[Thể loại:Danh từ tiếng Gagauz]] {{-glg-}} {{-prep-}} '''para''' # [[cho|Cho]]. # [[vì|Vì]], [[bởi vì]]. # [[đến|Đến]], đi đến. # [[đối với|Đối với]], [[về phần]]. # [[so với|So với]], [[đối với]], theo [[tỷ lệ]]. # {{term|[[estar]] +}} [[sắp|Sắp]], [[sắp sửa]]. {{-drv-}} * [[pró]] {{-noun-}} '''para''' {{f}} ({{plur}} [[paras]]) # [[vỏ|Vỏ]] [[cây]]; vỏ [[quả]]. {{-syn-}} * [[carapa]] * [[carapela]] * [[casca]] * [[monda]] * [[paraza]] * [[pel]] * [[pela]] * [[peladura]] * [[peleca]] * [[pelica]] * [[plana]] * [[tona]] {{-grn-}} {{-noun-}} '''para''' # [[biển|Biển]]. {{-hun-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpɒ.rɒ/}} {{-etymology-}} ; tiền : {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} {{-noun-}} '''para''' ({{plur}} [[parák]]) # [[sube|Sube]]; ([[mô]]) [[bần]]. # {{@|lóng}} Sự [[sợ]], sự [[sợ hãi]]. # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-drv-}} ; sube * [[parás]] * [[parázik]] * [[parafa]] * [[paratölgy]] ; tiền * [[parányi]] {{-ind-}} {{-etymology-}} Từ {{kế thừa|id|poz-pro|*paRa|pos=trợ từ tập hợp}}. So sánh với {{cognate|ace|para|t=lũ, đám}}. {{-pron-}} * {{IPA4|id|/ˈpa.ra/}} {{-part-}} {{head|id|Trợ từ}} # Được dùng để biểu thị [[số nhiều]]. #: {{ux|inline=1|id|'''para''' siswa|'''những''' học sinh}} {{-usage-}} * Trợ từ này chỉ được dùng cho danh từ chỉ người. Dạng số nhiều của các danh từ chỉ đối tượng khác được hình thành bằng phương thức lặp. {{-see also-}} * {{l|id|itu}} {{-lat-}} {{-verb-}} '''parā''' # {{form of|la|mệnh lệnh chủ động hiện tại số ít ở ngôi thứ hai|paro|parō}} {{-lit-}} {{-noun-}} {{lit-noun|f|paros}} # [[ngày|Ngày]] ([[thời kỳ]] bằng 24 [[giờ]]). #: ''Aš manau kad užtruks apie vieną parą.'' — Tôi nghĩ nó sẽ mất vào khoảng một ngày. {{-fra-}} {{-verb-}} '''para''' # {{form of|fr|quá khứ lịch sử số ít ở ngôi thứ ba|parer}} {{-tgl-}} {{-etymology-}} ; [[#Liên từ|liên từ]], [[#Giới từ 4|giới từ]] : {{etym-from | lang = spa | term = para | meaning = để }} ; [[#Thán từ|thán từ]] : {{etym-from | lang = spa | term = para | meaning = dừng lại! | from = {{etym-from | term = parar | meaning = dừng }} }} {{-pron-}} {{tl-pr|+<audio:Tl-PH-para.ogg>}} {{-conj-}} {{tl-head|Liên từ|b=+}} # [[để|Để]], [[mục đích]] để. # [[để mà|Để mà]], [[cốt]] để mà. #: ''Tumakbo ako '''para''' makaabot sa kanila.'' — Tôi đã chạy theo kịp họ. {{-synonym-}} * [[upang]] {{-prep-}} {{tl-prep|b=+}} # [[cho|Cho]]. #: ''Nagtatrabaho si Ate Virgie '''para''' sa kanyang pamilya.'' — Virgie làm việc cho già đình. {{-interj-}} {{tl-head|Thán từ|b=+}} # [[dừng|Dừng]] lại. {{-usage-}} Hành khách xe ''[[jeepney]]'' thường kêu ra ''[[para ho]]'' (với từ kính trọng) để xin dừng lại xe để họ bước ra. {{-synonym-}} * [[tigil]] {{-crh-}} {{-noun-}} '''para''' # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-syn-}} * [[aqça]] {{-spa-}} {{-etymology-}} ; [[#Giới từ 5|giới từ]], [[#Liên từ 2|liên từ]] : {{etym-from | term = pora | from = {{etym-from | term = por | from = {{etym-from | lang = lat | term = pro }} | 2 term = a | from = {{etym-from | lang = lat | term = par }} }} }} Xem thêm ''[[par#Tiếng Tây Ban Nha|par]]''. {{-prep-}} '''para''' # [[vì|Vì]], [[bởi vì]]. #: ''Lo hago '''para''' tu bien.'' — Anh làm vậy vì lợi ích của em. # [[để|Để]]. #: ''zapatillas '''para''' trotar'' — đôi dép để chạy lóc cóc # [[cho|Cho]]. #: ''Esta pelota es '''para''' Juan.'' — Quả banh này cho Juan. # [[về|Về]]. #: ''ser bueno '''para''' la pelota'' — giỏi về đá banh; đá banh giỏi # [[đến|Đến]], đi đến. #: ''Voy '''para''' Madrid.'' — Tôi đi đến Madrid. # [[vào|Vào]], [[vào khoảng]]. #: ''Nos veremos '''para''' el Año Nuevo.'' — Hãy gặp nhau lại vào năm mới. #: ''Te pagaré '''para''' la próxima semana.'' — Anh sẽ trả tiền cho em vào tuần tới. # [[trong|Trong]] ([[thời gian]]). #: ''Vuelve más tarde, tengo '''para''' largo con este problema.'' — Hãy trở lại sau, vấn đề này sẽ tốn nhiều thì giờ của tôi. # {{term|[[estar]] +}} [[sắp|Sắp]], [[sắp sửa]]. #: ''Ya no estoy '''para''' esos trotes.'' — {{term|thông tục}} Tôi già quá không thể làm nổi. #: ''Esta ropa está '''para''' tirarla.'' — Dây này sắp sửa rách. #: ''Estoy '''para''' marcharme.'' — Tôi sắp bỏ đi. # [[so với|So với]], [[đối với]], theo [[tỷ lệ]]. #: ''Se ve demasiado bien, '''para''' alguien de quien se dice que está enfermo de cáncer.'' — Ông nhìn quá khỏe mà người ta lại nói rằng ông có bệnh ung thư. #: ''Le pagan poco '''para''' lo que trabaja.'' — Họ trả anh ấy quá ít đối với công việc của anh ấy. # {{term|+ đại từ nhân xưng}} Tỏ ý [[nội tâm]]; [[tự]]. #: ''Pensé '''para''' mí.'' — Tôi đã tự suy nghĩ. # {{@|kết hợp hạn chế}} [[mua|Mua]] [[cho]], [[tặng]] cho, [[nộp]] cho. #: ''Le dieron '''para''' sus libros de estudio.'' — Họ đã mua (tặng) sách vở cho anh ấy. # [[đối với|Đối với]], [[về phần]]. #: '''''Para''' Juan Dios sí existe.'' — Đối với Juan thì Chúa có tồn tại. #: '''''Para''' nosotros eso no es de interés.'' — Chúng ta (chúng tôi) không quan tâm đến chuyện này. # [[kém|Kém]] ([[phút]] [[đồng hồ]]). #: ''Son cinco '''para''' las dos. (Es la una cincuenta y cinco.)'' — Bây giờ hai giờ kém năm phút. (Bây giờ một giờ năm mươi lăm.) {{-syn-}} ; để * [[de]] ; đến * [[a#Tiếng Tây Ban Nha|a]] * [[hacia]] ; sắp * [[por#Tiếng Tây Ban Nha|por]] {{-related-}} ; cho * [[por]] ; kém * [[menos]] {{-conj-}} '''para''' # [[để mà|Để mà]], [[cốt]] để mà. # Với [[kết quả]] [[bất ngờ]] rằng. #: ''Con todo lo que me costó, ¡'''''para''''' que más encima te quejes!'' — Mẹ chịu khó quá sức mà con rên rỉ càng thêm! {{-syn-}} * [[pa']] {{term|thông tục}} * [[pa]] {{term|thông tục}} {{-verb-}} '''para''' # {{third-person singular of|parar|lang=spa}} # {{@|thân mật}} {{form of|es|mệnh lệnh khẳng định số ít ở ngôi thứ hai|parar}} # {{form of|es|cầu khẩn hiện tại số ít ở ngôi thứ nhất|parir}} # {{form of|es|cầu khẩn hiện tại số ít ở ngôi thứ ba|parir}} {{-tur-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑ.ˈɾɑ/}} {{-etymology-}} {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} {{-noun-}} '''para''' ({{plur}} [[paralar]]) # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-swe-}} {{-etymology-}} {{etym-from | term = par | 2 term = -a }} {{-verb-}} '''para''' # [[ghép|Ghép]] [[đôi]], ghép [[cặp]]. # [[phủ|Phủ]] ([[chim]], [[gà]]); [[giao cấu]] ([[động vật]]). {{-related-}} * [[parning]] {{-ita-}} {{-noun-}} '''para''' {{f}} ({{plur}} [[pare]]) # [[cao su|Cao su]] [[trong]] làm [[đế]] [[giày]]. {{-verb-}} '''para''' # {{third-person singular of|parare|lang=ita}} # {{form of|it|mệnh lệnh số ít ở ngôi thứ ba|parare}} [[Thể loại:Giới từ tiếng Albani]] [[Thể loại:Danh từ tiếng Albani]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Tính từ tiếng Anh]] [[Thể loại:Danh từ tiếng Ba Lan]] [[Thể loại:Giới từ tiếng Bồ Đào Nha]] [[Thể loại:Giới từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Guaraní]] [[Thể loại:Danh từ tiếng Hungaryary]] [[Thể loại:Danh từ tiếng Litva]] [[Thể loại:Danh từ tiếng Tatar Crưm]] [[Thể loại:Giới từ tiếng Tây Ban Nha]] [[Thể loại:Liên từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Thổ Nhĩ Kỳ]] [[Thể loại:Động từ tiếng Thụy Điển]] [[Thể loại:Danh từ tiếng Ý]] ibo7c4sj74evge62uyd01dcx85jrkyo 2351078 2350833 2026-05-07T10:50:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351078 wikitext text/x-wiki {{-sqi-}} {{-etymology-}} ; [[#Giới từ|giới từ]] : {{etym-from | term = përpara | from = {{etym-from | lang = sqj-proto | attested = 0 | term = pər-parə-a | from = {{etym-from | lang = ine-proto | attested = 0 | term = pr̥H-e/o-s | meaning = trước }} }} }} ; [[#Danh từ|danh từ]] : {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} {{-prep-}} '''para''' # {{term|+ động từ tòng cách}} [[trước|Trước]], [[trước mắt]], [[trước mặt]]. {{-noun-}} '''para''' # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-eng-}} {{-paro-}} * [[para-]] * [[-para]] {{-pron-}} ; lính nhảy dù, đoạn, [[#Tính từ|tính từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpæ.rə/}} ; đơn vị tiền tệ : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpɑːr.ə/}} {{-etymology-}} ; lính nhảy dù : {{etym-abbr | term = paratrooper }} ; đoạn : {{etym-abbr | term = paragraph }} ; đơn vị tiền tệ : {{etym-from | lang = hbs | term = па̀ра | rom = pàra | from = {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} }} ; [[#Tính từ|tính từ]] : {{etym-abbr | term = paralytic }} {{-noun-}} {{eng-noun}} # {{@|thông tục}} [[lính|Lính]] [[nhảy dù]]. # [[đoạn|Đoạn]] ([[văn]], [[sách]]...). # {{@|cũ}} [[đơn vị|Đơn vị]] [[tiền tệ]] [[cũ]] của một số [[quốc gia]] ở các [[vùng]] [[Ottoman]]/[[Thổ Nhĩ Kỳ]] và [[Nam Tư]]. {{-adj-}} {{eng-adj}} # {{@|Úc||lóng}} [[say mèm|Say mèm]]. {{-ref-}} {{R:FVDP}} {{-pol-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|[ˈpa.ra]}} {{pron-audio |place=Ba Lan (nam giới) |file=Pl-para.ogg |pron=ˈpa.ra}} {{-noun-}} '''para''' {{f}} ({{plur}} [[pary]]) # [[hơi nước|Hơi nước]]. # [[đôi|Đôi]] [[vợ chồng]], [[cặp]] vợ chồng; cặp [[nam nữ]] (đã [[lấy nhau]] hoặc đã [[đính hôn]]). # [[đôi|Đôi]], [[cặp]]. {{-por-}} {{-paro-}} ; [[#Động từ|động từ]] * [[pára]] {{term|cũ}} {{-pron-}} ; [[#Giới từ 2|giới từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpa.ɾa/}}, {{IPA|/ˈpa.ɾɐ/}} {{term|Brasil}}; {{IPA|/ˈpɐ.ɾɐ/}} {{term|Bồ Đào Nha}}; {{IPA|/pɾa/}}, {{IPA|/pɾɐ/}} {{term|thông tục; chủ yếu Brasil}}; {{IPA|/pa/}} {{term|thông tục; chủ yếu châu Phi}} ; [[#Động từ|động từ]] : [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpa.ɾa/}}, {{IPA|/ˈpa.ɾɐ/}} {{term|Brasil}}; {{IPA|/ˈpa.ɾɐ/}} {{term|Bồ Đào Nha}} {{-homo-}} ; [[#Động từ|động từ]] * [[pára]] {{term|cũ}} {{-etymology-}} ; [[#Giới từ 2|giới từ]] : {{etym-from | lang = roa-ptg | term = pera | from = {{etym-from | lang = lat | term = per | meaning = qua | 2 term = ad | 2 meaning = tới }} }} {{-prep-}} '''para''' # [[cho|Cho]]. # [[đến nỗi|Đến nỗi]] mà. # [[đến|Đến]], đi đến. {{-drv-}} * [[estar para]] * [[para com]] * [[para já]] * [[para que]] * [[pra]] (''para'' + [[a#Tiếng Bồ Đào Nha|a]]) {{term|phương ngữ}} * [[pro]] (''para'' + [[o#Tiếng Bồ Đào Nha|o]]) {{term|phương ngữ}} {{-related-}} * [[pelo]] {{-verb-}} '''para''' # {{third-person singular of|parar|lang=por}} {{-syn-}} * [[pára]] {{term|cũ}} {{-cat-}} {{-verb-}} '''para''' # {{third-person singular of|parar|lang=cat-old}} # {{second-person singular of|parar|lang=cat-old}} {{-gag-}} {{-noun-}} {{pn}} # [[tiền bạc]]. [[Thể loại:Danh từ tiếng Gagauz]] {{-glg-}} {{-prep-}} '''para''' # [[cho|Cho]]. # [[vì|Vì]], [[bởi vì]]. # [[đến|Đến]], đi đến. # [[đối với|Đối với]], [[về phần]]. # [[so với|So với]], [[đối với]], theo [[tỷ lệ]]. # {{term|[[estar]] +}} [[sắp|Sắp]], [[sắp sửa]]. {{-drv-}} * [[pró]] {{-noun-}} '''para''' {{f}} ({{plur}} [[paras]]) # [[vỏ|Vỏ]] [[cây]]; vỏ [[quả]]. {{-syn-}} * [[carapa]] * [[carapela]] * [[casca]] * [[monda]] * [[paraza]] * [[pel]] * [[pela]] * [[peladura]] * [[peleca]] * [[pelica]] * [[plana]] * [[tona]] {{-grn-}} {{-noun-}} '''para''' # [[biển|Biển]]. {{-hun-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpɒ.rɒ/}} {{-etymology-}} ; tiền : {{etym-from | lang = ota | term = پاره | rom = pare, para | script = Arab | from = {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} }} {{-noun-}} '''para''' ({{plur}} [[parák]]) # [[sube|Sube]]; ([[mô]]) [[bần]]. # {{@|lóng}} Sự [[sợ]], sự [[sợ hãi]]. # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-drv-}} ; sube * [[parás]] * [[parázik]] * [[parafa]] * [[paratölgy]] ; tiền * [[parányi]] {{-ind-}} {{-etymology-}} Từ {{kế thừa|id|poz-pro|*paRa|pos=trợ từ tập hợp}}. So sánh với {{cognate|ace|para|t=lũ, đám}}. {{-pron-}} * {{IPA4|id|/ˈpa.ra/}} {{-part-}} {{head|id|Trợ từ}} # Được dùng để biểu thị [[số nhiều]]. #: {{ux|inline=1|id|'''para''' siswa|'''những''' học sinh}} {{-usage-}} * Trợ từ này chỉ được dùng cho danh từ chỉ người. Dạng số nhiều của các danh từ chỉ đối tượng khác được hình thành bằng phương thức lặp. {{-see also-}} * {{l|id|itu}} {{-lat-}} {{-verb-}} '''parā''' # {{form of|la|mệnh lệnh chủ động hiện tại số ít ở ngôi thứ hai|paro|parō}} {{-lit-}} {{-noun-}} {{lit-noun|f|paros}} # [[ngày|Ngày]] ([[thời kỳ]] bằng 24 [[giờ]]). #: ''Aš manau kad užtruks apie vieną parą.'' — Tôi nghĩ nó sẽ mất vào khoảng một ngày. {{-fra-}} {{-verb-}} '''para''' # {{form of|fr|quá khứ lịch sử số ít ở ngôi thứ ba|parer}} {{-tgl-}} {{-etymology-}} ; [[#Liên từ|liên từ]], [[#Giới từ 4|giới từ]] : {{etym-from | lang = spa | term = para | meaning = để }} ; [[#Thán từ|thán từ]] : {{etym-from | lang = spa | term = para | meaning = dừng lại! | from = {{etym-from | term = parar | meaning = dừng }} }} {{-pron-}} {{tl-pr|+<audio:Tl-PH-para.ogg>}} {{-conj-}} {{tl-head|Liên từ|b=+}} # [[để|Để]], [[mục đích]] để. # [[để mà|Để mà]], [[cốt]] để mà. #: ''Tumakbo ako '''para''' makaabot sa kanila.'' — Tôi đã chạy theo kịp họ. {{-synonym-}} * [[upang]] {{-prep-}} {{tl-prep|b=+}} # [[cho|Cho]]. #: ''Nagtatrabaho si Ate Virgie '''para''' sa kanyang pamilya.'' — Virgie làm việc cho già đình. {{-interj-}} {{tl-head|Thán từ|b=+}} # [[dừng|Dừng]] lại. {{-usage-}} Hành khách xe ''[[jeepney]]'' thường kêu ra ''[[para ho]]'' (với từ kính trọng) để xin dừng lại xe để họ bước ra. {{-synonym-}} * [[tigil]] {{-crh-}} {{-noun-}} '''para''' # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-syn-}} * [[aqça]] {{-spa-}} {{-etymology-}} ; [[#Giới từ 5|giới từ]], [[#Liên từ 2|liên từ]] : {{etym-from | term = pora | from = {{etym-from | term = por | from = {{etym-from | lang = lat | term = pro }} | 2 term = a | from = {{etym-from | lang = lat | term = par }} }} }} Xem thêm ''[[par#Tiếng Tây Ban Nha|par]]''. {{-prep-}} '''para''' # [[vì|Vì]], [[bởi vì]]. #: ''Lo hago '''para''' tu bien.'' — Anh làm vậy vì lợi ích của em. # [[để|Để]]. #: ''zapatillas '''para''' trotar'' — đôi dép để chạy lóc cóc # [[cho|Cho]]. #: ''Esta pelota es '''para''' Juan.'' — Quả banh này cho Juan. # [[về|Về]]. #: ''ser bueno '''para''' la pelota'' — giỏi về đá banh; đá banh giỏi # [[đến|Đến]], đi đến. #: ''Voy '''para''' Madrid.'' — Tôi đi đến Madrid. # [[vào|Vào]], [[vào khoảng]]. #: ''Nos veremos '''para''' el Año Nuevo.'' — Hãy gặp nhau lại vào năm mới. #: ''Te pagaré '''para''' la próxima semana.'' — Anh sẽ trả tiền cho em vào tuần tới. # [[trong|Trong]] ([[thời gian]]). #: ''Vuelve más tarde, tengo '''para''' largo con este problema.'' — Hãy trở lại sau, vấn đề này sẽ tốn nhiều thì giờ của tôi. # {{term|[[estar]] +}} [[sắp|Sắp]], [[sắp sửa]]. #: ''Ya no estoy '''para''' esos trotes.'' — {{term|thông tục}} Tôi già quá không thể làm nổi. #: ''Esta ropa está '''para''' tirarla.'' — Dây này sắp sửa rách. #: ''Estoy '''para''' marcharme.'' — Tôi sắp bỏ đi. # [[so với|So với]], [[đối với]], theo [[tỷ lệ]]. #: ''Se ve demasiado bien, '''para''' alguien de quien se dice que está enfermo de cáncer.'' — Ông nhìn quá khỏe mà người ta lại nói rằng ông có bệnh ung thư. #: ''Le pagan poco '''para''' lo que trabaja.'' — Họ trả anh ấy quá ít đối với công việc của anh ấy. # {{term|+ đại từ nhân xưng}} Tỏ ý [[nội tâm]]; [[tự]]. #: ''Pensé '''para''' mí.'' — Tôi đã tự suy nghĩ. # {{@|kết hợp hạn chế}} [[mua|Mua]] [[cho]], [[tặng]] cho, [[nộp]] cho. #: ''Le dieron '''para''' sus libros de estudio.'' — Họ đã mua (tặng) sách vở cho anh ấy. # [[đối với|Đối với]], [[về phần]]. #: '''''Para''' Juan Dios sí existe.'' — Đối với Juan thì Chúa có tồn tại. #: '''''Para''' nosotros eso no es de interés.'' — Chúng ta (chúng tôi) không quan tâm đến chuyện này. # [[kém|Kém]] ([[phút]] [[đồng hồ]]). #: ''Son cinco '''para''' las dos. (Es la una cincuenta y cinco.)'' — Bây giờ hai giờ kém năm phút. (Bây giờ một giờ năm mươi lăm.) {{-syn-}} ; để * [[de]] ; đến * [[a#Tiếng Tây Ban Nha|a]] * [[hacia]] ; sắp * [[por#Tiếng Tây Ban Nha|por]] {{-related-}} ; cho * [[por]] ; kém * [[menos]] {{-conj-}} '''para''' # [[để mà|Để mà]], [[cốt]] để mà. # Với [[kết quả]] [[bất ngờ]] rằng. #: ''Con todo lo que me costó, ¡'''''para''''' que más encima te quejes!'' — Mẹ chịu khó quá sức mà con rên rỉ càng thêm! {{-syn-}} * [[pa']] {{term|thông tục}} * [[pa]] {{term|thông tục}} {{-verb-}} '''para''' # {{third-person singular of|parar|lang=spa}} # {{@|thân mật}} {{form of|es|mệnh lệnh khẳng định số ít ở ngôi thứ hai|parar}} # {{form of|es|cầu khẩn hiện tại số ít ở ngôi thứ nhất|parir}} # {{form of|es|cầu khẩn hiện tại số ít ở ngôi thứ ba|parir}} {{-tur-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑ.ˈɾɑ/}} {{-etymology-}} {{etym-from | lang = fas | term = پاره | rom = pâre | meaning = mảnh }} {{-noun-}} '''para''' ({{plur}} [[paralar]]) # [[tiền|Tiền]], [[tiền tệ]]. # [[tiền|Tiền]], [[tiền bạc]]. {{-swe-}} {{-etymology-}} {{etym-from | term = par | 2 term = -a }} {{-verb-}} '''para''' # [[ghép|Ghép]] [[đôi]], ghép [[cặp]]. # [[phủ|Phủ]] ([[chim]], [[gà]]); [[giao cấu]] ([[động vật]]). {{-related-}} * [[parning]] {{-ita-}} {{-noun-}} '''para''' {{f}} ({{plur}} [[pare]]) # [[cao su|Cao su]] [[trong]] làm [[đế]] [[giày]]. {{-verb-}} '''para''' # {{third-person singular of|parare|lang=ita}} # {{form of|it|mệnh lệnh số ít ở ngôi thứ ba|parare}} [[Thể loại:Giới từ tiếng Albani]] [[Thể loại:Danh từ tiếng Albani]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Tính từ tiếng Anh]] [[Thể loại:Danh từ tiếng Ba Lan]] [[Thể loại:Giới từ tiếng Bồ Đào Nha]] [[Thể loại:Giới từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Guaraní]] [[Thể loại:Danh từ tiếng Hungaryary]] [[Thể loại:Danh từ tiếng Litva]] [[Thể loại:Danh từ tiếng Tatar Crưm]] [[Thể loại:Giới từ tiếng Tây Ban Nha]] [[Thể loại:Liên từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Thổ Nhĩ Kỳ]] [[Thể loại:Động từ tiếng Thụy Điển]] [[Thể loại:Danh từ tiếng Ý]] olsmyn4udfv0m5z5cyc03v9d5g205c9 dồi dào 0 26967 2350654 2120525 2026-05-07T07:53:48Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350654 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-adj-}} '''dồi dào''' # [[Rất nhiều]], [[dư thừa]] [[so với]] [[nhu cầu]]. #: ''Hàng hóa '''dồi dào'''.'' #: ''Sức khỏe '''dồi dào'''.'' {{-trans-}} * {{eng}}: [[plentiful]]; [[abundant]] * {{cat-2}}: [[abundant]] * {{fra}}: [[abondant]] {{-ref-}} {{R:FVDP}} [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Từ láy tiếng Việt]] pbd2qqe0ynrzgwmjh0l8fl62ycw5ta0 2350907 2350654 2026-05-07T10:39:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350907 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-adj-}} '''dồi dào''' # [[Rất nhiều]], [[dư thừa]] [[so với]] [[nhu cầu]]. #: ''Hàng hóa '''dồi dào'''.'' #: ''Sức khỏe '''dồi dào'''.'' {{-trans-}} * {{eng}}: [[plentiful]]; [[abundant]] * {{cat-old}}: [[abundant]] * {{fra}}: [[abondant]] {{-ref-}} {{R:FVDP}} [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Từ láy tiếng Việt]] 8nru6nqjmuvn4ocjg8yxbtr56b52nie chuồn chuồn 0 27485 2350655 2210677 2026-05-07T07:53:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350655 wikitext text/x-wiki == {{langname|vi}} == [[Hình:Sympetrum flaveolum - side (aka).jpg|nhỏ|phải|chuồn chuồn]] === {{ĐM|pron}} === {{vie-pron|chuồn|chuồn}} === {{ĐM|noun}} === '''chuồn chuồn''' # [[loài|Loài]] [[sâu bọ]] [[cánh]] rất [[mỏng]], [[thân]] [[chia]] làm [[ba]] [[phần]], có [[đuôi]] [[dài]]. #: ''Tháng bảy heo may, '''chuồn chuồn''' bay thì bão. ([[tục ngữ]])'' === {{ĐM|trans}} === {{đầu}} * {{afr}}: [[naaldekoker]] * {{sqi}}: [[pilivesë]] * {{eng}}: [[dragonfly]] * {{cat-2}}: [[libèl·lula]] {{f}} * {{ido}}: [[libelulo]] * {{fra}}: [[libellule]] {{f}} * {{tgl}}: [[tutubi]] * {{cym}}: [[gwas y neidr]] {{m}} {{cuối}} === {{ĐM|ref}} === {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Từ láy tiếng Việt]] 95f5jdohailw29srk8mkxwdsxwqwlhw 2350908 2350655 2026-05-07T10:39:46Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350908 wikitext text/x-wiki == {{langname|vi}} == [[Hình:Sympetrum flaveolum - side (aka).jpg|nhỏ|phải|chuồn chuồn]] === {{ĐM|pron}} === {{vie-pron|chuồn|chuồn}} === {{ĐM|noun}} === '''chuồn chuồn''' # [[loài|Loài]] [[sâu bọ]] [[cánh]] rất [[mỏng]], [[thân]] [[chia]] làm [[ba]] [[phần]], có [[đuôi]] [[dài]]. #: ''Tháng bảy heo may, '''chuồn chuồn''' bay thì bão. ([[tục ngữ]])'' === {{ĐM|trans}} === {{đầu}} * {{afr}}: [[naaldekoker]] * {{sqi}}: [[pilivesë]] * {{eng}}: [[dragonfly]] * {{cat-old}}: [[libèl·lula]] {{f}} * {{ido}}: [[libelulo]] * {{fra}}: [[libellule]] {{f}} * {{tgl}}: [[tutubi]] * {{cym}}: [[gwas y neidr]] {{m}} {{cuối}} === {{ĐM|ref}} === {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Từ láy tiếng Việt]] bkhoeh2f92ryuprgn77q92246og3bla chào 0 27495 2350656 2149079 2026-05-07T07:53:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350656 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|chào}} {{-nôm-}} {{top}} *[[嘲]]: [[ràu]], [[thều]], [[nhào]], [[chầu]], [[trều]], [[chiều]], [[trêu]], [[dàu]], [[trào]], [[rầu]], [[chào]] *[[朝]]: [[triều]], [[chìu]], [[giàu]], [[giầu]], [[chầu]], [[trều]], [[dèo]], [[chiều]], [[triêu]], [[trèo]], [[tràu]], [[trào]], [[chào]] {{bottom}} {{-paro-}} {{đầu}} :* [[cháo]] :* [[chảo]] :* [[chạo]] {{giữa}} :* [[chão]] :* [[chao]] {{cuối}} {{-interj-}} '''chào''' # Dùng để [[bắt đầu]] cuộc [[nói chuyện]]. # Dùng để [[tỏ]] [[lòng]] [[kính trọng]], [[thân thiết]]. #: '''''Chào''' ông già bà lão.'' #: '''''Chào''' thầy cô giáo.'' # Dùng để [[tỏ]] sự [[kính cẩn]] trước cái [[cao quý]], [[thiêng liêng]]. #: '''''Chào''' cờ.'' # Dùng để [[mời]] [[khách]] vào [[ăn uống]], [[mua bán]]. {{-synonym-}} * [[xin chào]] {{-trans-}} ; dùng để bắt đầu cuộc nói chuyện {{đầu}} * {{ara}}: [[مرحبا|مرحبًا]] (''marħában'') * {{afr}}: [[hallo]] * {{sqi}}: [[tungjatjeta]] * {{eng}}: [[hello]], [[g'day]] {{term|Úc; thông tục}}, [[hallo]] {{term|Anh; thông tục}}, [[hey]] {{term|Mỹ; Anh; thông tục}}, [[hi]] {{term|Mỹ; Anh; thông tục}}, [[howdy]] {{term|Mỹ; thông tục}}, [[howzit]] {{term|Nam Phi; thông tục}}, [[wassup]] {{term|lóng}}, [[what's up]] {{term|lóng}}, [[yo]] {{term|lóng}}, [[sup]] {{term|lóng}} * {{hye}}: [[բարև]] (''barev''), [[ողջույն]] (''oghǰuyn'') * {{ast}}: [[hola]] * {{pol}}: [[cześć]] {{term|thông tục}}, [[witaj]], [[witajcie]], [[witam]] {{term|nghi thức hơn}}, [[dzień dobry]] {{term|nghi thức}} * {{fas}}: [[سلام]] (''salâm''), [[سلام علیکم]] (''salamon alaikum'') {{term|tôn giáo}}, [[درود]] (''dorood'') {{term|thơ ca}}, [[صبح بخیر]] (''sobh bekhair'') {{term|ban sáng}}, [[ظهر بخیر]] (''zohr bekhair'') {{term|ban chiều}}, [[عصر بخیر]] (''asr bekhair'') {{term|ban đêm}} * {{isl}}: [[halló]], [[hæ]] * {{eus}}: [[kaixo]] * {{por}}: [[oi]], [[olá]], [[bom dia]] * {{ina}}: [[bon die]] * {{bos}}: [[zdravo#Tiếng Bosnia|zdravo]], [[ćao#Tiếng Bosnia|ćao]], [[merhaba#Tiếng Bosnia|merhaba]], [[selam#Tiếng Bosnia|selam]] * {{bul}}: [[здравей]] (''zdrávej'') {{term|thân mật}}, [[здравейте]] (''zdrávejte'') {{term|nghi thức}} * {{cat-2}}: [[hola]] * {{hrv}}: [[zdravo#Tiếng Croat|zdravo]], [[ćao#Tiếng Croat|ćao]], [[bok#Tiếng Croat|bok]], [[bog]] * {{dan}}: [[hej]], [[dav]], [[god dag]] {{term|nghi tục}} * {{heb}}: [[שלום|שָׁלוֹם]] (''shalóm'') * {{deu}}: [[hallo]], [[guten Tag]] * {{est}}: [[tere]] * {{fao}}: [[hey]], [[halló]] * {{fij}}: [[bula]] * {{fry}}: [[hallo]], [[hoi]] * {{glg}}: [[ola]] * {{kat}}: [[გამარჯობა]] (''gamardžoba'') * {{nld}}: [[hallo]], [[hoi]], [[dag]] {{term|thông tục}}, [[goede dag]] {{term|nghi tục}} * {{haw}}: [[aloha]] * {{hin}}: [[नमस्ते]] (''namasté'') * {{hun}}: [[szia]], [[sziasztok]] {{p}} {{term|thông tục}}; [[szervusz]], [[szervusztok]] {{p}} {{term|nghi tục}} * {{ell}}: [[γειά]] (''yeiá''), [[γειά σου]] (''yeiá sou''), [[γειά σας]] (''yeiá sas'') {{term|nghi tục}}, [[χαίρετε]] (''kherete'') * {{grc}}: [[χαίρε]] (''khere''), [[χαίρε και υγίαινε]] (''khere ke iyiene'') * {{ind}}: [[hai]] {{giữa}} * {{gle}}: [[dia dhuit]], [[dia is muire dhuit]] * {{lat}}: [[salve]], [[ave]] * {{lit}}: [[labas]], [[sveikas]] {{term|thông tục}}, [[sveiki]] {{term|nghi tục}} * {{mlt}}: [[bonġu]] {{term|ban sáng}}, [[bonswa]] {{term|ban chiều}} * {{nor}}: [[hallo]], [[hei]], [[god dag]] {{term|nghi tục}}, [[halla]] {{term|thông tục}} * {{rus}}: [[привет]] (''privét'') {{term|thông tục}}, [[здравствуйте]] (''zdrávstvujte'') {{term|nghi tục}}, [[добрый день]] (''dóbryj den’'') * {{wuu}}: [[你好]] (''non ho'', [[nhĩ]] [[hảo]]) * {{jpn}}: [[おはようございます]] (''ohayō gozaimásu'') {{term|ban sáng; lịch sự}}, [[こんにちは]] (''kónnichi wa''), [[こんばんは]] (''kómban wa'') {{term|ban đêm}}, [[おはよう]] (''ohayō'') {{term|ban sáng; thông tục}} * {{fin}}: [[terve]], [[moi]], [[hei]], [[moikka]] * {{san}}: [[नमस्कार]] (''namaskāram'') * {{fra}}: [[salut]] {{term|thông tục}}, [[bonjour]] * {{cmn}}: [[你好]] (''nǐ hǎo'', [[nhĩ]] [[hảo]]), [[您好]] (''nín hǎo'', [[nâm]] hảo) {{term|nghi tục}} * {{yue}}: [[你好]] (''nei<sup>5</sup> hou<sup>2</sup>'', [[nhĩ]] [[hảo]]) * {{epo}}: [[saluton]] * {{ron}}: [[salut]], [[bun]]ă, [[noroc]] (''thông tục''), [[bună ziua]] {{term|nghi tục}} * {{ces}}: [[ahoj]], [[nazdar]] {{term|thông tục}}, [[dobrý den]] {{term|nghi tục}} * {{srp}}: ** {{Cyrl}}: [[здраво#Tiếng Serbi|здраво]], [[ћао#Tiếng Serbi|ћао]] ** {{Latn}}: [[zdravo#Tiếng Serbi|zdravo]], [[ćao#Tiếng Serbi|ćao]] * {{scn}}: [[ciao]], [[salutamu]] * {{slk}}: [[ahoj]], [[servus]], [[nazdar]] {{term|thông tục}}, [[dobrý deň]] {{term|nghi tục}} * {{slv}}: [[živjo]], [[zdravo]] {{term|thông tục}}; [[dober dan]], [[pozdravljeni]] {{term|nghi tục}} * {{swa}}: [[jambo]] * {{tgl}}: [[kamusta]], [[kumusta]] * {{tam}}: [[வணக்கம்]] (''vanakkam'') * {{spa}}: ¡[[hola]]!, ¡[[buenos días]]! * {{tha}}: [[สวัสดีครับ]] (''sàwàtdee kráp'') {{m}}, [[สวัสดีค่ะ]] (''sàwàtdee kâ'') {{f}} * {{tur}}: [[merhaba]] * {{swe}}: [[hallå]], [[hej]], [[god dag]] {{term|nghi tục}}, [[tjena]], [[hejsan]] {{term|thông tục}} * {{kor}}: [[안녕하십니까]] (''annyeonghasimnikka'') {{term|nghi tục}}, [[안녕하세요]] (''annyeonghaseyo'') {{term|nghi tục}}, [[안녕]] (''annyeong'') {{term|thông tục}} * {{ukr}}: [[привіт]] (''pryvít'') {{term|thông tục}}, [[добрий день]] (''dobry den'') {{term|nghi tục}} * {{cym}}: [[helo]], [[bore da]] {{term|ban sáng}}, [[dydd da]] * {{ita}}: [[ciao]], [[salve]], [[buongiorno]] * {{zul}}: [[sawubona]] {{cuối}} {{-related-}} * [[a lô]]! {{-verb-}} '''chào''' # [[nói|Nói]] hoặc [[ra hiệu]] [[bằng]] [[các]] [[cử chỉ]], [[tỏ]] [[lòng]] [[kính trọng]], [[thân thiết]]. # [[tỏ|Tỏ]] sự [[kính cẩn]] trước cái [[cao quý]], [[thiêng liêng]]. # [[mời|Mời]] [[khách]] vào [[ăn uống]], [[mua bán]]. #: ''Nhà hàng '''chào''' khách.'' {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Thán từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] lnmesxupzz0u198da9k20jebi5kkwpr 2350909 2350656 2026-05-07T10:39:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350909 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|chào}} {{-nôm-}} {{top}} *[[嘲]]: [[ràu]], [[thều]], [[nhào]], [[chầu]], [[trều]], [[chiều]], [[trêu]], [[dàu]], [[trào]], [[rầu]], [[chào]] *[[朝]]: [[triều]], [[chìu]], [[giàu]], [[giầu]], [[chầu]], [[trều]], [[dèo]], [[chiều]], [[triêu]], [[trèo]], [[tràu]], [[trào]], [[chào]] {{bottom}} {{-paro-}} {{đầu}} :* [[cháo]] :* [[chảo]] :* [[chạo]] {{giữa}} :* [[chão]] :* [[chao]] {{cuối}} {{-interj-}} '''chào''' # Dùng để [[bắt đầu]] cuộc [[nói chuyện]]. # Dùng để [[tỏ]] [[lòng]] [[kính trọng]], [[thân thiết]]. #: '''''Chào''' ông già bà lão.'' #: '''''Chào''' thầy cô giáo.'' # Dùng để [[tỏ]] sự [[kính cẩn]] trước cái [[cao quý]], [[thiêng liêng]]. #: '''''Chào''' cờ.'' # Dùng để [[mời]] [[khách]] vào [[ăn uống]], [[mua bán]]. {{-synonym-}} * [[xin chào]] {{-trans-}} ; dùng để bắt đầu cuộc nói chuyện {{đầu}} * {{ara}}: [[مرحبا|مرحبًا]] (''marħában'') * {{afr}}: [[hallo]] * {{sqi}}: [[tungjatjeta]] * {{eng}}: [[hello]], [[g'day]] {{term|Úc; thông tục}}, [[hallo]] {{term|Anh; thông tục}}, [[hey]] {{term|Mỹ; Anh; thông tục}}, [[hi]] {{term|Mỹ; Anh; thông tục}}, [[howdy]] {{term|Mỹ; thông tục}}, [[howzit]] {{term|Nam Phi; thông tục}}, [[wassup]] {{term|lóng}}, [[what's up]] {{term|lóng}}, [[yo]] {{term|lóng}}, [[sup]] {{term|lóng}} * {{hye}}: [[բարև]] (''barev''), [[ողջույն]] (''oghǰuyn'') * {{ast}}: [[hola]] * {{pol}}: [[cześć]] {{term|thông tục}}, [[witaj]], [[witajcie]], [[witam]] {{term|nghi thức hơn}}, [[dzień dobry]] {{term|nghi thức}} * {{fas}}: [[سلام]] (''salâm''), [[سلام علیکم]] (''salamon alaikum'') {{term|tôn giáo}}, [[درود]] (''dorood'') {{term|thơ ca}}, [[صبح بخیر]] (''sobh bekhair'') {{term|ban sáng}}, [[ظهر بخیر]] (''zohr bekhair'') {{term|ban chiều}}, [[عصر بخیر]] (''asr bekhair'') {{term|ban đêm}} * {{isl}}: [[halló]], [[hæ]] * {{eus}}: [[kaixo]] * {{por}}: [[oi]], [[olá]], [[bom dia]] * {{ina}}: [[bon die]] * {{bos}}: [[zdravo#Tiếng Bosnia|zdravo]], [[ćao#Tiếng Bosnia|ćao]], [[merhaba#Tiếng Bosnia|merhaba]], [[selam#Tiếng Bosnia|selam]] * {{bul}}: [[здравей]] (''zdrávej'') {{term|thân mật}}, [[здравейте]] (''zdrávejte'') {{term|nghi thức}} * {{cat-old}}: [[hola]] * {{hrv}}: [[zdravo#Tiếng Croat|zdravo]], [[ćao#Tiếng Croat|ćao]], [[bok#Tiếng Croat|bok]], [[bog]] * {{dan}}: [[hej]], [[dav]], [[god dag]] {{term|nghi tục}} * {{heb}}: [[שלום|שָׁלוֹם]] (''shalóm'') * {{deu}}: [[hallo]], [[guten Tag]] * {{est}}: [[tere]] * {{fao}}: [[hey]], [[halló]] * {{fij}}: [[bula]] * {{fry}}: [[hallo]], [[hoi]] * {{glg}}: [[ola]] * {{kat}}: [[გამარჯობა]] (''gamardžoba'') * {{nld}}: [[hallo]], [[hoi]], [[dag]] {{term|thông tục}}, [[goede dag]] {{term|nghi tục}} * {{haw}}: [[aloha]] * {{hin}}: [[नमस्ते]] (''namasté'') * {{hun}}: [[szia]], [[sziasztok]] {{p}} {{term|thông tục}}; [[szervusz]], [[szervusztok]] {{p}} {{term|nghi tục}} * {{ell}}: [[γειά]] (''yeiá''), [[γειά σου]] (''yeiá sou''), [[γειά σας]] (''yeiá sas'') {{term|nghi tục}}, [[χαίρετε]] (''kherete'') * {{grc}}: [[χαίρε]] (''khere''), [[χαίρε και υγίαινε]] (''khere ke iyiene'') * {{ind}}: [[hai]] {{giữa}} * {{gle}}: [[dia dhuit]], [[dia is muire dhuit]] * {{lat}}: [[salve]], [[ave]] * {{lit}}: [[labas]], [[sveikas]] {{term|thông tục}}, [[sveiki]] {{term|nghi tục}} * {{mlt}}: [[bonġu]] {{term|ban sáng}}, [[bonswa]] {{term|ban chiều}} * {{nor}}: [[hallo]], [[hei]], [[god dag]] {{term|nghi tục}}, [[halla]] {{term|thông tục}} * {{rus}}: [[привет]] (''privét'') {{term|thông tục}}, [[здравствуйте]] (''zdrávstvujte'') {{term|nghi tục}}, [[добрый день]] (''dóbryj den’'') * {{wuu}}: [[你好]] (''non ho'', [[nhĩ]] [[hảo]]) * {{jpn}}: [[おはようございます]] (''ohayō gozaimásu'') {{term|ban sáng; lịch sự}}, [[こんにちは]] (''kónnichi wa''), [[こんばんは]] (''kómban wa'') {{term|ban đêm}}, [[おはよう]] (''ohayō'') {{term|ban sáng; thông tục}} * {{fin}}: [[terve]], [[moi]], [[hei]], [[moikka]] * {{san}}: [[नमस्कार]] (''namaskāram'') * {{fra}}: [[salut]] {{term|thông tục}}, [[bonjour]] * {{cmn}}: [[你好]] (''nǐ hǎo'', [[nhĩ]] [[hảo]]), [[您好]] (''nín hǎo'', [[nâm]] hảo) {{term|nghi tục}} * {{yue}}: [[你好]] (''nei<sup>5</sup> hou<sup>2</sup>'', [[nhĩ]] [[hảo]]) * {{epo}}: [[saluton]] * {{ron}}: [[salut]], [[bun]]ă, [[noroc]] (''thông tục''), [[bună ziua]] {{term|nghi tục}} * {{ces}}: [[ahoj]], [[nazdar]] {{term|thông tục}}, [[dobrý den]] {{term|nghi tục}} * {{srp}}: ** {{Cyrl}}: [[здраво#Tiếng Serbi|здраво]], [[ћао#Tiếng Serbi|ћао]] ** {{Latn}}: [[zdravo#Tiếng Serbi|zdravo]], [[ćao#Tiếng Serbi|ćao]] * {{scn}}: [[ciao]], [[salutamu]] * {{slk}}: [[ahoj]], [[servus]], [[nazdar]] {{term|thông tục}}, [[dobrý deň]] {{term|nghi tục}} * {{slv}}: [[živjo]], [[zdravo]] {{term|thông tục}}; [[dober dan]], [[pozdravljeni]] {{term|nghi tục}} * {{swa}}: [[jambo]] * {{tgl}}: [[kamusta]], [[kumusta]] * {{tam}}: [[வணக்கம்]] (''vanakkam'') * {{spa}}: ¡[[hola]]!, ¡[[buenos días]]! * {{tha}}: [[สวัสดีครับ]] (''sàwàtdee kráp'') {{m}}, [[สวัสดีค่ะ]] (''sàwàtdee kâ'') {{f}} * {{tur}}: [[merhaba]] * {{swe}}: [[hallå]], [[hej]], [[god dag]] {{term|nghi tục}}, [[tjena]], [[hejsan]] {{term|thông tục}} * {{kor}}: [[안녕하십니까]] (''annyeonghasimnikka'') {{term|nghi tục}}, [[안녕하세요]] (''annyeonghaseyo'') {{term|nghi tục}}, [[안녕]] (''annyeong'') {{term|thông tục}} * {{ukr}}: [[привіт]] (''pryvít'') {{term|thông tục}}, [[добрий день]] (''dobry den'') {{term|nghi tục}} * {{cym}}: [[helo]], [[bore da]] {{term|ban sáng}}, [[dydd da]] * {{ita}}: [[ciao]], [[salve]], [[buongiorno]] * {{zul}}: [[sawubona]] {{cuối}} {{-related-}} * [[a lô]]! {{-verb-}} '''chào''' # [[nói|Nói]] hoặc [[ra hiệu]] [[bằng]] [[các]] [[cử chỉ]], [[tỏ]] [[lòng]] [[kính trọng]], [[thân thiết]]. # [[tỏ|Tỏ]] sự [[kính cẩn]] trước cái [[cao quý]], [[thiêng liêng]]. # [[mời|Mời]] [[khách]] vào [[ăn uống]], [[mua bán]]. #: ''Nhà hàng '''chào''' khách.'' {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Thán từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] 7anivlypf1fod0e5d8bpx3yzijdo0bg giai cấp 0 28130 2350657 2176710 2026-05-07T07:54:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350657 wikitext text/x-wiki {{-vie-}} {{-etymology-}} {{vi-etym-sino|階級}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # Những [[tập đoàn]] [[người]] trong [[xã hội]], có [[địa vị]] [[khác nhau]], có [[quan hệ]] [[sản xuất]] khác nhau, có quan hệ [[tư liệu sản xuất]] khác nhau, có [[phương thức]] [[hưởng thụ]] khác nhau về [[tài sản]] xã hội. #: {{ux|vi|'''Giai cấp''' công nhân.}} #: {{ux|vi|'''Giai cấp''' nông dân.}} {{-trans-}} {{đầu}} * {{eng}}: [[class]] * {{cat-2}}: [[classe]] {{f}} * {{fra}}: [[classe]] {{f}} * {{rus}}: [[класс]] {{m}} (klass) * {{kor}}: [[계급]] {{cuối}} {{-ref-}} {{R:FVDP}} j4p721blrwpb1krj48nd07h18nwd3yf 2350910 2350657 2026-05-07T10:39:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350910 wikitext text/x-wiki {{-vie-}} {{-etymology-}} {{vi-etym-sino|階級}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # Những [[tập đoàn]] [[người]] trong [[xã hội]], có [[địa vị]] [[khác nhau]], có [[quan hệ]] [[sản xuất]] khác nhau, có quan hệ [[tư liệu sản xuất]] khác nhau, có [[phương thức]] [[hưởng thụ]] khác nhau về [[tài sản]] xã hội. #: {{ux|vi|'''Giai cấp''' công nhân.}} #: {{ux|vi|'''Giai cấp''' nông dân.}} {{-trans-}} {{đầu}} * {{eng}}: [[class]] * {{cat-old}}: [[classe]] {{f}} * {{fra}}: [[classe]] {{f}} * {{rus}}: [[класс]] {{m}} (klass) * {{kor}}: [[계급]] {{cuối}} {{-ref-}} {{R:FVDP}} 652r8ltexpp23dj2jx5nmimd2ezy52l giá cả 0 28142 2350658 2106295 2026-05-07T07:54:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350658 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-paro-}} :* [[già cả]] {{-noun-}} {{head|vi|Danh từ}} # [[giá|Giá]] [[hàng hoá]] [[nói chung]]. #: '''''Giá cả''' ổn định.'' #: ''Lâu không đi chợ không biết '''giá cả''' dạo này ra sao.'' {{-trans-}} {{đầu}} * {{eng}}: {{t+|en|price}} * {{hye}}: {{t+|hy|գին}} * {{pol}}: {{t+|pl|cena|f}} * {{bak}}: {{t|ba|хаҡ}} * {{cat-2}}: {{t+|ca|preu|m}} * {{kat}}: {{t|ka|ფასი}} * {{nld}}: {{t+|nl|prijs|m}} * {{hun}}: {{t+|hu|ár}} * {{khm}}: {{t+|km|តម្លៃ}}, {{t+|km|ថ្លៃ}} * {{lao}}: {{t+|lo|ຄ່າ}} {{giữa}} * {{khb}}: {{t|khb|ᦅᦱᧈ}} * {{msa}}: {{t+|ms|harga}} * {{mya}}: {{t+|my|ဈေးနှုန်း}}, {{t+|my|ဈေး}} * {{fra}}: {{t+|fr|prix|m}} * {{fin}}: {{t+|fi|hinta}} * {{ces}}: {{t+|cs|cena|f}} * {{swa}}: {{t+|sw|bei}} * {{bod}}: {{t|bo|གོང}} * {{tha}}: {{t+|th|ค่า}} * {{blt}}: {{t|blt|ꪁ꪿ꪱ}} {{cuối}} {{-ref-}} {{R:FVDP}} kk80s583xxoxvkmgcaetjl0gphlalzj 2350911 2350658 2026-05-07T10:39:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350911 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-paro-}} :* [[già cả]] {{-noun-}} {{head|vi|Danh từ}} # [[giá|Giá]] [[hàng hoá]] [[nói chung]]. #: '''''Giá cả''' ổn định.'' #: ''Lâu không đi chợ không biết '''giá cả''' dạo này ra sao.'' {{-trans-}} {{đầu}} * {{eng}}: {{t+|en|price}} * {{hye}}: {{t+|hy|գին}} * {{pol}}: {{t+|pl|cena|f}} * {{bak}}: {{t|ba|хаҡ}} * {{cat-old}}: {{t+|ca|preu|m}} * {{kat}}: {{t|ka|ფასი}} * {{nld}}: {{t+|nl|prijs|m}} * {{hun}}: {{t+|hu|ár}} * {{khm}}: {{t+|km|តម្លៃ}}, {{t+|km|ថ្លៃ}} * {{lao}}: {{t+|lo|ຄ່າ}} {{giữa}} * {{khb}}: {{t|khb|ᦅᦱᧈ}} * {{msa}}: {{t+|ms|harga}} * {{mya}}: {{t+|my|ဈေးနှုန်း}}, {{t+|my|ဈေး}} * {{fra}}: {{t+|fr|prix|m}} * {{fin}}: {{t+|fi|hinta}} * {{ces}}: {{t+|cs|cena|f}} * {{swa}}: {{t+|sw|bei}} * {{bod}}: {{t|bo|གོང}} * {{tha}}: {{t+|th|ค่า}} * {{blt}}: {{t|blt|ꪁ꪿ꪱ}} {{cuối}} {{-ref-}} {{R:FVDP}} 1b9dg967w3ko1rjcshdfgyis1br7a6b gà mái 0 28210 2350659 2128056 2026-05-07T07:54:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350659 wikitext text/x-wiki {{-vie-}} [[Hình:Hen1.jpg|nhỏ|gà mái]] {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # [[gà|Gà]] [[đẻ]] [[trứng]]. #: {{ux|vi|Có con '''gà mái''' đẻ mỗi lứa gần hai chục trứng.}} {{-trans-}} {{đầu}} * {{eng}}: {{t|en|hen}} * {{por}}: {{t|pt|gallina|f}} * {{cat-2}}: {{t|ca|gallina|f}} * {{khm}}: {{t|km|មាន់ញី}} {{giữa}} * {{lat}}: [[gallina#Tiếng Latinh|gallīna]] {{f}} * {{spa}}: {{t|es|gallina|f}} * {{ita}}: {{t|it|gallina|f}} {{cuối}} {{-see also-}} * [[gà trống]] {{-ref-}} {{R:FVDP}} {{catname|Danh từ|tiếng Việt}} [[Thể loại:Gà/Tiếng Việt]] 5k7kp29o9fwd6yvtcvdb8ymwo65gjcd 2350912 2350659 2026-05-07T10:39:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350912 wikitext text/x-wiki {{-vie-}} [[Hình:Hen1.jpg|nhỏ|gà mái]] {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # [[gà|Gà]] [[đẻ]] [[trứng]]. #: {{ux|vi|Có con '''gà mái''' đẻ mỗi lứa gần hai chục trứng.}} {{-trans-}} {{đầu}} * {{eng}}: {{t|en|hen}} * {{por}}: {{t|pt|gallina|f}} * {{cat-old}}: {{t|ca|gallina|f}} * {{khm}}: {{t|km|មាន់ញី}} {{giữa}} * {{lat}}: [[gallina#Tiếng Latinh|gallīna]] {{f}} * {{spa}}: {{t|es|gallina|f}} * {{ita}}: {{t|it|gallina|f}} {{cuối}} {{-see also-}} * [[gà trống]] {{-ref-}} {{R:FVDP}} {{catname|Danh từ|tiếng Việt}} [[Thể loại:Gà/Tiếng Việt]] 9n0eh1r7i7rjbkohmkosx9zjpyv8t5j hải đăng 0 28433 2350660 2220294 2026-05-07T07:54:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350660 wikitext text/x-wiki {{-vie-}} {{-info-}} [[File:FI sector light Notö.JPG|nhỏ|Một ngọn '''hải đăng'''.]] {{-etym-}} Phiên âm từ [[chữ Hán]]: <big>[[海]]</big> (“hải”: biển); <big>[[燈]]</big> (“đăng”: đèn). {{-pron-}} {{vie-pron}} {{-paro-}} * {{l|vi|hải đằng}} {{-noun-}} {{pn}} # [[đèn pha|Đèn pha]] đặt ở [[bờ biển]], [[hải đảo]] để giúp [[tàu thuyền]] [[định hướng]] đi trong [[đêm tối]]. #: {{ux|vi|Ngọn '''hải đăng''' trên biển.}} #* {{quote-book|vi|year=2003|author=Ủy ban nhân dân tỉnh Phú Yên|title=Địa chí Phú Yên|publisher=NXB Chính trị quốc gia|page=408|text=Trên mũi có ngọn '''hải đăng''' được xây dựng từ thời Pháp thuộc.}} #* '''2017''', Tư Huynh, ''[https://vnexpress.net/lang-chai-khe-ga-voi-hai-dang-hon-tram-tuoi-o-binh-thuan-3534064.html Làng chài Khe Gà với hải đăng hơn trăm tuổi ở Bình Thuận]'', {{w|VnExpress}}: #*: {{quote|vi|Mọi vật liệu để xây '''hải đăng''' đều được vận chuyển từ Pháp sang. Sau 2 năm thi công, ngọn '''hải đăng''' được hoàn thành.}} {{-syn-}} * {{l|vi|đèn biển}} {{-trans-}} {{trans-top|Đèn pha đặt ở bờ biển, hải đảo để giúp tàu thuyền định hướng đi trong đêm tối}} * {{ara}}: {{t|ar|منارة|f|tr=manāra}}, {{t|ar|منار|m|tr=manār}}, {{t|ar|فنار|m|tr=fanār}} ** {{arz}}: {{t|arz|منارة|f|tr=manāra}}, {{t|arz|فنار|m|tr=fanār}} ** {{acw}}: {{t|acw|منارة|f|tr=manāra}} * {{afr}}: {{t|af|vuurtoring}}, {{t|af|ligtoring}} * {{sqi}}: {{t|sq|far|m}}, {{t|sq|fanar|m}} * {{eng}}: {{t|en|lighthouse}} ** {{ang}}: {{t|ang|fyrtorr|m}} * {{hye}}: {{t|hy|փարոս|tr=pʿaros}} * {{ast}}: {{t|ast|faru|m}} * {{aze}}: {{t|az|mayak}}, {{t|az|dəniz fənəri}} * {{pol}}: {{t|pl|latarnia morska|f}} * {{fas}}: {{t|fa|فانوس دریایی|tr=fânus-e daryâyi}} * {{eus}}: {{t|eu|itsasargi}} * {{isl}}: {{t|is|viti|m}}, {{t|is|vitaturn|m}} * {{bel}}: {{t|be|маяк|m|tr=maják}} * {{ben}}: {{t|bn|বাতিঘর|tr=batighôr}} * {{por}}: {{t|pt|farol|m}} {{q|Brasil}}, {{t|pt|faro|m}} * {{ina}}: {{t|ia|pharo}} * {{bre}}: {{t|br|tour-tan}} * {{bul}}: {{t|bg|фар|m|tr=far}} * {{cat-2}}: {{t|ca|far|m}} * {{che}}: {{t|ce|маяк|tr=majak}} * {{cor}}: {{t|kw|golowji}} * {{heb}}: {{t|he|מגדלור|m|tr=migdalór}} * {{uig}}: {{t|ug|ماياك|tr=mayak}} * {{dan}}: {{t|da|fyr|n}}, {{t|da|fyrtårn|n}} * {{deu}}: {{t|de|Leuchtturm|m}} * {{est}}: {{t|et|tuletorn}}, {{t|et|majakas}} * {{fao}}: {{t|fo|viti|m}} * {{fry}}: {{t|fy|fjoertoer|c}} * {{gla}}: {{t|gd|taigh-solais|m}} * {{glg}}: {{t|gl|faro|m}} * {{kal}}: {{t|kl|naaralaartitsivik}} * {{kat}}: {{t|ka|შუქური|tr=šukuri}} * {{guj}}: {{t|gu|દીવાદાંડી|f|tr=dīvādā̃ḍī}} * {{pdt}}: {{t|pdt|Lichttorm|m}} * {{nld}}: {{t|nl|vuurtoren|m}} * {{haw}}: {{t|haw|hale ipukukui}} * {{hin}}: {{t|hi|रोशनीघर|m|tr=rośnīghar}}, {{t|hi|दीपगृह|tr=dīpgŕh}} * {{hun}}: {{t|hu|világítótorony}} * {{ell}}: {{t|el|φάρος|m|tr=fáros}} * {{ido}}: {{t|io|faro}} * {{ind}}: {{t|id|mercusuar}}, {{t|id|menara api}} * {{gle}}: {{t|ga|teach solais|m}} * {{kan}}: {{t|kn|ಕಡಲಬೆಳಕು|tr=kaḍalabeḷaku}} * {{kaz}}: {{t|kk|шамшырақ|tr=şamşıraq}}, {{t|kk|маяк|tr=mayak}} * {{khm}}: {{t|km|សើន|tr=saən}}, {{t|km|ប្រទីប|tr=prɑtiip}}, {{t|km|ហ្វារ|tr=faa}} * {{kur}}: ** {{kmr}}: {{t|kmr|fanûsgeh}} * {{kir}}: {{t|ky|маяк|tr=mayaq}} * {{lao}}: {{t|lo|ປະພາຄານ|tr=pa phā khān}} * {{lat}}: {{t|la|pharus}} * {{lav}}: {{t|lv|bāka|f}} * {{lit}}: {{t|lt|švyturys|m}} * {{ltz}}: {{t|lb|Liichttuerm|m}}, {{t|lb|Phar|m}} * {{msa}}: {{t|ms|rumah api}} * {{mal}}: {{t|ml|വിളക്കുമാടം|tr=viḷakkumāṭaṃ}} * {{mlt}}: {{t|mt|fanal|m}} * {{glv}}: {{t|gv|thie soilshee|m}}, {{t|gv|thie sollysh|m}} * {{mri}}: {{t|mi|whare rama}}, {{t|mi|whare tūrama}} * {{mar}}: {{t|mr|दीपस्तंभ|tr=dīpastambha}} * {{mya}}: {{t|my|မီးပြတိုက်|tr=mi:pra.tuik}} * {{mon}}: ** {{Cyrl}}: {{t|mn|гэрэлт цамхаг|tr=gerelt tsamkhag}} * {{nor}}: ** {{nob}}: {{t|nb|fyr|n}}, {{t|nb|fyrtårn|n}} ** {{nno}}: {{t|nn|fyr|n}}, {{t|nn|fyrtårn|n}} * {{nep}}: {{t|ne|प्रकाशस्तम्भ|tr=prakāśastambha}} * {{rus}}: {{t|ru|маяк|m|tr=maják}} * {{jpn}}: {{t|ja|灯台|tr=とうだい, tōdai}} * {{nrf}}: {{t|nrf|veue|f}} * {{oci}}: {{t|oc|far|m}} * {{san}}: {{t|sa|दीपस्तंभ|tr=dīpastaṃbha}} * {{fra}}: {{t|fr|phare|m}} * {{fin}}: {{t|fi|majakka}} * {{epo}}: {{t|eo|lumturo}} * {{ron}}: {{t|ro|far|n}} * {{sme}}: {{t|se|čuovgatoardna}} * {{ces}}: {{t|cs|maják|m}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|светионик|m}}, {{t|sh|свјетионик|m}}, {{t|sh|светиља|f}} ** {{Latn}}: {{t|sh|svetionik|m}}, {{t|sh|svjetionik|m}}, {{t|sh|svetilja|f}} * {{sin}}: {{t|si|ප්‍රදීපාගාරය|tr=pradīpāgāraya}}, {{t|si|ප්රදීපාගාරය|tr=pradīpāgāraya}} * {{slk}}: {{t|sk|maják|m}} * {{slv}}: {{t|sl|svetilnik|m}} * {{swa}}: {{t|sw|mnara}} * {{tgl}}: {{t|tl|parola}} * {{tgk}}: {{t|tg|мино|tr=mino}}, {{t|tg|минои баҳрӣ|tr=minoyi bahrī}}, {{t|tg|маяк|tr=mayak}}, {{t|tg|фонуси дарёӣ|tr=fonusi daryoyī}} * {{tam}}: {{t|ta|கலங்கரைவிளக்கம்|tr=kalaṅkaraiviḷakkam}} * {{tat}}: {{t|tt|маяк|tr=mayak}} * {{spa}}: {{t|es|faro|m}} * {{tel}}: {{t|te|దీపస్తంభం|tr=dīpastambhaṁ}} * {{tha}}: {{t|th|ประภาคาร|tr=bprà-paa-kaan}}, {{t|th|กระโจมไฟ|tr=grà-joom-fai}}, {{t|th|เรือนตะเกียง|tr=rʉʉan-dtà-giiang}}, {{t|th|เรือนไฟ|tr=rʉʉan-fai}} * {{tur}}: {{t|tr|fener}}, {{t|tr|fener kulesi}}, {{t|tr|deniz feneri}} * {{swe}}: {{t|sv|fyr|c}}, {{t|sv|fyrtorn|n}} * {{tir}}: {{t|ti|መናራ|tr=mänara}} * {{kor}}: {{t|ko|등대|tr=deungdae}} * {{zho}}: ** {{dng}}: {{t|dng|дынтэ|tr=dɨnte}} ** {{nan}}: {{t|nan|燈塔|sc=Hani}}, {{t|nan|灯塔|tr=teng-thah|sc=Hani}} ** {{cmn}}: {{t|zh|燈塔|sc=Hani}}, {{t|zh|灯塔|tr=dēngtǎ|sc=Hani}}, {{t|zh|岸標|sc=Hani}}, {{t|zh|岸标|tr=ànbiāo|sc=Hani}} ** {{yue}}: {{t|yue|燈塔|sc=Hani}}, {{t|yue|灯塔|tr=dang1 taap3|sc=Hani}} * {{tuk}}: {{t|tk|maýak}} * {{ukr}}: {{t|uk|маяк|m|tr=maják}} * {{urd}}: {{t|ur|منارہ|tr=manāra}}, {{t|ur|روشنی گھر|m|tr=rośanī ghar}} * {{uzb}}: {{t|uz|mayak}} * {{vep}}: {{t|vep|majak}} * {{vol}}: {{t|vo|far}} * {{cym}}: {{t|cy|goleudy|m}} * {{ita}}: {{t|it|faro|m}} * {{yid}}: {{t|yi|לײַכטטורעם|m|tr=laykhtturem}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} [[Thể loại:Mục từ Hán-Việt]] {{catname|Danh từ|tiếng Việt}} {{C|vi|Tòa nhà|Nguồn ánh sáng}} 51fr1mt3q9xx761xdhn593tp159qi2l 2350913 2350660 2026-05-07T10:40:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350913 wikitext text/x-wiki {{-vie-}} {{-info-}} [[File:FI sector light Notö.JPG|nhỏ|Một ngọn '''hải đăng'''.]] {{-etym-}} Phiên âm từ [[chữ Hán]]: <big>[[海]]</big> (“hải”: biển); <big>[[燈]]</big> (“đăng”: đèn). {{-pron-}} {{vie-pron}} {{-paro-}} * {{l|vi|hải đằng}} {{-noun-}} {{pn}} # [[đèn pha|Đèn pha]] đặt ở [[bờ biển]], [[hải đảo]] để giúp [[tàu thuyền]] [[định hướng]] đi trong [[đêm tối]]. #: {{ux|vi|Ngọn '''hải đăng''' trên biển.}} #* {{quote-book|vi|year=2003|author=Ủy ban nhân dân tỉnh Phú Yên|title=Địa chí Phú Yên|publisher=NXB Chính trị quốc gia|page=408|text=Trên mũi có ngọn '''hải đăng''' được xây dựng từ thời Pháp thuộc.}} #* '''2017''', Tư Huynh, ''[https://vnexpress.net/lang-chai-khe-ga-voi-hai-dang-hon-tram-tuoi-o-binh-thuan-3534064.html Làng chài Khe Gà với hải đăng hơn trăm tuổi ở Bình Thuận]'', {{w|VnExpress}}: #*: {{quote|vi|Mọi vật liệu để xây '''hải đăng''' đều được vận chuyển từ Pháp sang. Sau 2 năm thi công, ngọn '''hải đăng''' được hoàn thành.}} {{-syn-}} * {{l|vi|đèn biển}} {{-trans-}} {{trans-top|Đèn pha đặt ở bờ biển, hải đảo để giúp tàu thuyền định hướng đi trong đêm tối}} * {{ara}}: {{t|ar|منارة|f|tr=manāra}}, {{t|ar|منار|m|tr=manār}}, {{t|ar|فنار|m|tr=fanār}} ** {{arz}}: {{t|arz|منارة|f|tr=manāra}}, {{t|arz|فنار|m|tr=fanār}} ** {{acw}}: {{t|acw|منارة|f|tr=manāra}} * {{afr}}: {{t|af|vuurtoring}}, {{t|af|ligtoring}} * {{sqi}}: {{t|sq|far|m}}, {{t|sq|fanar|m}} * {{eng}}: {{t|en|lighthouse}} ** {{ang}}: {{t|ang|fyrtorr|m}} * {{hye}}: {{t|hy|փարոս|tr=pʿaros}} * {{ast}}: {{t|ast|faru|m}} * {{aze}}: {{t|az|mayak}}, {{t|az|dəniz fənəri}} * {{pol}}: {{t|pl|latarnia morska|f}} * {{fas}}: {{t|fa|فانوس دریایی|tr=fânus-e daryâyi}} * {{eus}}: {{t|eu|itsasargi}} * {{isl}}: {{t|is|viti|m}}, {{t|is|vitaturn|m}} * {{bel}}: {{t|be|маяк|m|tr=maják}} * {{ben}}: {{t|bn|বাতিঘর|tr=batighôr}} * {{por}}: {{t|pt|farol|m}} {{q|Brasil}}, {{t|pt|faro|m}} * {{ina}}: {{t|ia|pharo}} * {{bre}}: {{t|br|tour-tan}} * {{bul}}: {{t|bg|фар|m|tr=far}} * {{cat-old}}: {{t|ca|far|m}} * {{che}}: {{t|ce|маяк|tr=majak}} * {{cor}}: {{t|kw|golowji}} * {{heb}}: {{t|he|מגדלור|m|tr=migdalór}} * {{uig}}: {{t|ug|ماياك|tr=mayak}} * {{dan}}: {{t|da|fyr|n}}, {{t|da|fyrtårn|n}} * {{deu}}: {{t|de|Leuchtturm|m}} * {{est}}: {{t|et|tuletorn}}, {{t|et|majakas}} * {{fao}}: {{t|fo|viti|m}} * {{fry}}: {{t|fy|fjoertoer|c}} * {{gla}}: {{t|gd|taigh-solais|m}} * {{glg}}: {{t|gl|faro|m}} * {{kal}}: {{t|kl|naaralaartitsivik}} * {{kat}}: {{t|ka|შუქური|tr=šukuri}} * {{guj}}: {{t|gu|દીવાદાંડી|f|tr=dīvādā̃ḍī}} * {{pdt}}: {{t|pdt|Lichttorm|m}} * {{nld}}: {{t|nl|vuurtoren|m}} * {{haw}}: {{t|haw|hale ipukukui}} * {{hin}}: {{t|hi|रोशनीघर|m|tr=rośnīghar}}, {{t|hi|दीपगृह|tr=dīpgŕh}} * {{hun}}: {{t|hu|világítótorony}} * {{ell}}: {{t|el|φάρος|m|tr=fáros}} * {{ido}}: {{t|io|faro}} * {{ind}}: {{t|id|mercusuar}}, {{t|id|menara api}} * {{gle}}: {{t|ga|teach solais|m}} * {{kan}}: {{t|kn|ಕಡಲಬೆಳಕು|tr=kaḍalabeḷaku}} * {{kaz}}: {{t|kk|шамшырақ|tr=şamşıraq}}, {{t|kk|маяк|tr=mayak}} * {{khm}}: {{t|km|សើន|tr=saən}}, {{t|km|ប្រទីប|tr=prɑtiip}}, {{t|km|ហ្វារ|tr=faa}} * {{kur}}: ** {{kmr}}: {{t|kmr|fanûsgeh}} * {{kir}}: {{t|ky|маяк|tr=mayaq}} * {{lao}}: {{t|lo|ປະພາຄານ|tr=pa phā khān}} * {{lat}}: {{t|la|pharus}} * {{lav}}: {{t|lv|bāka|f}} * {{lit}}: {{t|lt|švyturys|m}} * {{ltz}}: {{t|lb|Liichttuerm|m}}, {{t|lb|Phar|m}} * {{msa}}: {{t|ms|rumah api}} * {{mal}}: {{t|ml|വിളക്കുമാടം|tr=viḷakkumāṭaṃ}} * {{mlt}}: {{t|mt|fanal|m}} * {{glv}}: {{t|gv|thie soilshee|m}}, {{t|gv|thie sollysh|m}} * {{mri}}: {{t|mi|whare rama}}, {{t|mi|whare tūrama}} * {{mar}}: {{t|mr|दीपस्तंभ|tr=dīpastambha}} * {{mya}}: {{t|my|မီးပြတိုက်|tr=mi:pra.tuik}} * {{mon}}: ** {{Cyrl}}: {{t|mn|гэрэлт цамхаг|tr=gerelt tsamkhag}} * {{nor}}: ** {{nob}}: {{t|nb|fyr|n}}, {{t|nb|fyrtårn|n}} ** {{nno}}: {{t|nn|fyr|n}}, {{t|nn|fyrtårn|n}} * {{nep}}: {{t|ne|प्रकाशस्तम्भ|tr=prakāśastambha}} * {{rus}}: {{t|ru|маяк|m|tr=maják}} * {{jpn}}: {{t|ja|灯台|tr=とうだい, tōdai}} * {{nrf}}: {{t|nrf|veue|f}} * {{oci}}: {{t|oc|far|m}} * {{san}}: {{t|sa|दीपस्तंभ|tr=dīpastaṃbha}} * {{fra}}: {{t|fr|phare|m}} * {{fin}}: {{t|fi|majakka}} * {{epo}}: {{t|eo|lumturo}} * {{ron}}: {{t|ro|far|n}} * {{sme}}: {{t|se|čuovgatoardna}} * {{ces}}: {{t|cs|maják|m}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|светионик|m}}, {{t|sh|свјетионик|m}}, {{t|sh|светиља|f}} ** {{Latn}}: {{t|sh|svetionik|m}}, {{t|sh|svjetionik|m}}, {{t|sh|svetilja|f}} * {{sin}}: {{t|si|ප්‍රදීපාගාරය|tr=pradīpāgāraya}}, {{t|si|ප්රදීපාගාරය|tr=pradīpāgāraya}} * {{slk}}: {{t|sk|maják|m}} * {{slv}}: {{t|sl|svetilnik|m}} * {{swa}}: {{t|sw|mnara}} * {{tgl}}: {{t|tl|parola}} * {{tgk}}: {{t|tg|мино|tr=mino}}, {{t|tg|минои баҳрӣ|tr=minoyi bahrī}}, {{t|tg|маяк|tr=mayak}}, {{t|tg|фонуси дарёӣ|tr=fonusi daryoyī}} * {{tam}}: {{t|ta|கலங்கரைவிளக்கம்|tr=kalaṅkaraiviḷakkam}} * {{tat}}: {{t|tt|маяк|tr=mayak}} * {{spa}}: {{t|es|faro|m}} * {{tel}}: {{t|te|దీపస్తంభం|tr=dīpastambhaṁ}} * {{tha}}: {{t|th|ประภาคาร|tr=bprà-paa-kaan}}, {{t|th|กระโจมไฟ|tr=grà-joom-fai}}, {{t|th|เรือนตะเกียง|tr=rʉʉan-dtà-giiang}}, {{t|th|เรือนไฟ|tr=rʉʉan-fai}} * {{tur}}: {{t|tr|fener}}, {{t|tr|fener kulesi}}, {{t|tr|deniz feneri}} * {{swe}}: {{t|sv|fyr|c}}, {{t|sv|fyrtorn|n}} * {{tir}}: {{t|ti|መናራ|tr=mänara}} * {{kor}}: {{t|ko|등대|tr=deungdae}} * {{zho}}: ** {{dng}}: {{t|dng|дынтэ|tr=dɨnte}} ** {{nan}}: {{t|nan|燈塔|sc=Hani}}, {{t|nan|灯塔|tr=teng-thah|sc=Hani}} ** {{cmn}}: {{t|zh|燈塔|sc=Hani}}, {{t|zh|灯塔|tr=dēngtǎ|sc=Hani}}, {{t|zh|岸標|sc=Hani}}, {{t|zh|岸标|tr=ànbiāo|sc=Hani}} ** {{yue}}: {{t|yue|燈塔|sc=Hani}}, {{t|yue|灯塔|tr=dang1 taap3|sc=Hani}} * {{tuk}}: {{t|tk|maýak}} * {{ukr}}: {{t|uk|маяк|m|tr=maják}} * {{urd}}: {{t|ur|منارہ|tr=manāra}}, {{t|ur|روشنی گھر|m|tr=rośanī ghar}} * {{uzb}}: {{t|uz|mayak}} * {{vep}}: {{t|vep|majak}} * {{vol}}: {{t|vo|far}} * {{cym}}: {{t|cy|goleudy|m}} * {{ita}}: {{t|it|faro|m}} * {{yid}}: {{t|yi|לײַכטטורעם|m|tr=laykhtturem}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} [[Thể loại:Mục từ Hán-Việt]] {{catname|Danh từ|tiếng Việt}} {{C|vi|Tòa nhà|Nguồn ánh sáng}} 10cbofm448j8x1nmikqc3e22kuguo31 Kinh Thánh 0 28608 2350661 2229342 2026-05-07T07:54:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350661 wikitext text/x-wiki == {{langname|vi}} == === {{ĐM|etym}} === {{affix|vi|kinh|thánh}}, {{calque|nocap=y|vi|zh|聖經|tr={{mention|vi|Thánh Kinh}}}}, theo cấu trúc yếu tố chính đứng đầu của tiếng Việt, thay vì theo cấu trúc yếu tố chính đứng chót của ngôn ngữ gốc. Đối chiếu với {{mention|vi|Kinh Dịch}}, {{mention|vi|Kinh Thi}} – những thuật ngữ phổ biến hơn nhiều so với phiên bản theo cấu trúc yếu tố chính đứng chót của ngôn gữ gốc. === {{ĐM|pron}} === {{vi-IPA}} === Danh từ === {{vi-noun|head=[[kinh|Kinh]] [[thánh|Thánh]]|經聖}} # [[bản văn|Bản văn]] [[tôn giáo]] [[chính yếu]] của [[Kitô giáo]]. #: {{synonym|vi|Thánh Kinh}} # [[sách|Sách]] [[thánh]] của [[Do Thái giáo]]. ===== Bản dịch ===== {{trans-top|sách thánh của Kitô giáo}} {{đầu}} * {{abk}}: [[Абиблиа]] * {{afr}}: [[Bybel]] * {{aka}}: [[Bibel]] * {{amh}}: [[መጽሐፍ ቅዱስ]] * {{ang}}: [[Biblioþēce]] * {{arg}}: [[Biblia]] * {{ara}}: [[الكتاب المقدس]] * {{arz}}: [[الكتاب المقدس]] * {{ast}}: [[Biblia]] * {{aym}}: [[Biblia]] * {{aze}}: [[Bibliya]] * {{bar}}: [[Bibel]] * {{sgs}}: [[Biblėjė]] * {{bak}}: [[Библия]] * {{bel}}: [[Біблія]] * {{bul}}: [[Библия]] * {{bis}}: [[Baebol]] * {{ben}}: [[বাইবেল]] * {{bre}}: [[Bibl]] * {{bos}}: [[Biblija]] * {{cat-2}}: [[Bíblia]] * {{cdo}}: [[Séng-gĭng]] * {{ceb}}: [[Bibliya]] * {{che}}: [[Библи]] * {{csb}}: [[Biblëjô]] * {{chv}}: [[Библи]] * {{dan}}: [[Bibelen]] * {{deu}}: [[Bibel]] * {{div}}: [[ބައިބަލް]] * {{ewe}}: [[Biblia]] * {{eng}}: [[Bible]] * {{epo}}: [[Biblio]] * {{spa}}: [[Biblia]] * {{est}}: [[Piibel]] * {{fin}}: [[Raamattu]] * {{fij}}: [[Ai Vola Tabu]] * {{fao}}: [[Bíblian]] * {{fur}}: [[Biblie]] * {{fry}}: [[Bibel]] * {{gan}}: [[聖經]] * {{gle}}: [[An Bíobla]] * {{gla}}: [[Bìoball]] * {{glg}}: [[Biblia]] * {{grn}}: [[Tupã ñe'ẽngue ryru]] * {{guj}}: [[બાઇબલ]] * {{glv}}: [[Yn Vible]] * {{hak}}: [[Sṳn-kîn]] * {{hau}}: [[Baibûl]] * {{haw}}: [[Paipala]] * {{heb}}: [[ביבליה]] * {{hin}}: [[बाइबिल]] * {{hrv}}: [[Biblija]] * {{hat}}: [[Bib]] * {{hun}}: [[Biblia]] * {{ina}}: [[Biblia]] * {{ind}}: [[Alkitab]] * {{ile}}: [[Bible]] * {{ilo}}: [[Biblia]] * {{ido}}: [[Biblo]] * {{ita}}: [[Bibbia]] * {{jpn}}: [[聖書]] * {{jav}}: [[Alkitab]] * {{kaz}}: [[Библия]] * {{kal}}: [[Biibili]] * {{khm}}: [[ព្រះគម្ពីរ]] * {{kan}}: [[ಬೈಬಲ್]] * {{kor}}: [[성경]] * {{kur}}: [[Încîl]] * {{cor}}: [[Bibel]] * {{kir}}: [[Библия]] * {{lad}}: [[Biblia]] * {{lat}}: [[Biblia]] * {{ltz}}: [[Bibel]] * {{lim}}: [[Biebel]] * {{lmo}}: [[Bibia]] * {{lao}}: [[ພະຄຳພີ]] * {{lit}}: [[Biblija]] * {{lav}}: [[Bībele]] * {{mal}}: [[ബൈബിൾ]] * {{mon}}: [[Библи]] * {{mnw}}: [[သၠပတ်သမ္မာ]] * {{mar}}: [[बायबल]] * {{mlt}}: [[Bibbja]] * {{nah}}: [[Teōāmoxtli]] * {{nap}}: [[Bibbia]] * {{nau}}: [[Bibel]] * {{nds}}: [[Bibel]] * {{nep}}: [[बाइबल]] * {{dut}}: [[Bijbel]] * {{nno}}: [[Bibelen]] * {{nov}}: [[Bible]] * {{nor}}: [[Bibelen]] * {{oci}}: [[Bíblia]] * {{orm}}: [[Kitaaba]] * {{oss}}: [[Библи]] * {{pap}}: [[Beibel]] * {{pan}}: [[ਬਾਈਬਲ]] * {{pol}}: [[Biblia]] * {{pms}}: [[Bibia]] * {{pus}}: [[بائبل]] * {{por}}: [[Bíblia]] * {{que}}: [[Apuyaya Simin]] * {{roh}}: [[Bibla]] * {{rup}}: [[Biblia Ayia]] * {{rum}}: [[Biblia]] * {{rue}}: [[Біблія]] * {{rus}}: [[Библия]] * {{sah}}: [[Биибилийэ]] * {{scn}}: [[Bibbia]] * {{sco}}: [[Bible]] * {{srd}}: [[Bibbia]] * {{sme}}: [[Biibbal]] * {{sag}}: [[Bible]] * {{sin}}: [[බයිබලය]] * {{slv}}: [[Sveto pismo]] * {{sna}}: [[Bhaibheri]] * {{som}}: [[Kitaabka quduska]] * {{srp}}: [[Библија]] * {{sot}}: [[Bebele]] * {{sun}}: [[Alkitab]] * {{swe}}: [[Bibeln]] * {{swa}}: [[Biblia ya Kikristo]] * {{tam}}: [[விவிலியம்]] * {{tel}}: [[బైబిల్]] * {{tgk}}: [[Китоби Муқаддас]] * {{tha}}: [[คัมภีร์ไบเบิล]] * {{tir}}: [[መጽሓፍ ቅዱስ]] * {{tuk}}: [[Injil]] * {{tgl}}: [[Bibliya]] * {{ton}}: [[Tohitapu]] * {{tpi}}: [[Baibel]] * {{tur}}: [[Kitâb-ı Mukaddes]] * {{tat}}: [[Библия]] * {{twi}}: [[Twere Kronkron]] * {{uig}}: [[ئىنجىل]] * {{ukr}}: [[Біблія]] * {{urd}}: [[بائبل]] * {{uzb}}: [[Bibliya]] * {{vec}}: [[Bibia]] * {{vol}}: [[Bib]] * {{wln}}: [[Bibe]] * {{wol}}: [[Biibël]] * {{wuu}}: [[圣经]] * {{xal}}: [[Библь]] * {{xho}}: [[IBhayibhile]] * {{yid}}: [[ביבל]] * {{yor}}: [[Bíbélì Mímọ́]] * {{nan}}: [[Sèng-keng]] * {{yue}}: [[聖經]] * {{zul}}: [[IBhayibheli]] {{trans-bottom}} {{trans-see|sách thánh của Do Thái giáo|Tanakh}} r1wp1ngzdwas3ui3v0yo88ups9ryrbl 2350914 2350661 2026-05-07T10:40:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350914 wikitext text/x-wiki == {{langname|vi}} == === {{ĐM|etym}} === {{affix|vi|kinh|thánh}}, {{calque|nocap=y|vi|zh|聖經|tr={{mention|vi|Thánh Kinh}}}}, theo cấu trúc yếu tố chính đứng đầu của tiếng Việt, thay vì theo cấu trúc yếu tố chính đứng chót của ngôn ngữ gốc. Đối chiếu với {{mention|vi|Kinh Dịch}}, {{mention|vi|Kinh Thi}} – những thuật ngữ phổ biến hơn nhiều so với phiên bản theo cấu trúc yếu tố chính đứng chót của ngôn gữ gốc. === {{ĐM|pron}} === {{vi-IPA}} === Danh từ === {{vi-noun|head=[[kinh|Kinh]] [[thánh|Thánh]]|經聖}} # [[bản văn|Bản văn]] [[tôn giáo]] [[chính yếu]] của [[Kitô giáo]]. #: {{synonym|vi|Thánh Kinh}} # [[sách|Sách]] [[thánh]] của [[Do Thái giáo]]. ===== Bản dịch ===== {{trans-top|sách thánh của Kitô giáo}} {{đầu}} * {{abk}}: [[Абиблиа]] * {{afr}}: [[Bybel]] * {{aka}}: [[Bibel]] * {{amh}}: [[መጽሐፍ ቅዱስ]] * {{ang}}: [[Biblioþēce]] * {{arg}}: [[Biblia]] * {{ara}}: [[الكتاب المقدس]] * {{arz}}: [[الكتاب المقدس]] * {{ast}}: [[Biblia]] * {{aym}}: [[Biblia]] * {{aze}}: [[Bibliya]] * {{bar}}: [[Bibel]] * {{sgs}}: [[Biblėjė]] * {{bak}}: [[Библия]] * {{bel}}: [[Біблія]] * {{bul}}: [[Библия]] * {{bis}}: [[Baebol]] * {{ben}}: [[বাইবেল]] * {{bre}}: [[Bibl]] * {{bos}}: [[Biblija]] * {{cat-old}}: [[Bíblia]] * {{cdo}}: [[Séng-gĭng]] * {{ceb}}: [[Bibliya]] * {{che}}: [[Библи]] * {{csb}}: [[Biblëjô]] * {{chv}}: [[Библи]] * {{dan}}: [[Bibelen]] * {{deu}}: [[Bibel]] * {{div}}: [[ބައިބަލް]] * {{ewe}}: [[Biblia]] * {{eng}}: [[Bible]] * {{epo}}: [[Biblio]] * {{spa}}: [[Biblia]] * {{est}}: [[Piibel]] * {{fin}}: [[Raamattu]] * {{fij}}: [[Ai Vola Tabu]] * {{fao}}: [[Bíblian]] * {{fur}}: [[Biblie]] * {{fry}}: [[Bibel]] * {{gan}}: [[聖經]] * {{gle}}: [[An Bíobla]] * {{gla}}: [[Bìoball]] * {{glg}}: [[Biblia]] * {{grn}}: [[Tupã ñe'ẽngue ryru]] * {{guj}}: [[બાઇબલ]] * {{glv}}: [[Yn Vible]] * {{hak}}: [[Sṳn-kîn]] * {{hau}}: [[Baibûl]] * {{haw}}: [[Paipala]] * {{heb}}: [[ביבליה]] * {{hin}}: [[बाइबिल]] * {{hrv}}: [[Biblija]] * {{hat}}: [[Bib]] * {{hun}}: [[Biblia]] * {{ina}}: [[Biblia]] * {{ind}}: [[Alkitab]] * {{ile}}: [[Bible]] * {{ilo}}: [[Biblia]] * {{ido}}: [[Biblo]] * {{ita}}: [[Bibbia]] * {{jpn}}: [[聖書]] * {{jav}}: [[Alkitab]] * {{kaz}}: [[Библия]] * {{kal}}: [[Biibili]] * {{khm}}: [[ព្រះគម្ពីរ]] * {{kan}}: [[ಬೈಬಲ್]] * {{kor}}: [[성경]] * {{kur}}: [[Încîl]] * {{cor}}: [[Bibel]] * {{kir}}: [[Библия]] * {{lad}}: [[Biblia]] * {{lat}}: [[Biblia]] * {{ltz}}: [[Bibel]] * {{lim}}: [[Biebel]] * {{lmo}}: [[Bibia]] * {{lao}}: [[ພະຄຳພີ]] * {{lit}}: [[Biblija]] * {{lav}}: [[Bībele]] * {{mal}}: [[ബൈബിൾ]] * {{mon}}: [[Библи]] * {{mnw}}: [[သၠပတ်သမ္မာ]] * {{mar}}: [[बायबल]] * {{mlt}}: [[Bibbja]] * {{nah}}: [[Teōāmoxtli]] * {{nap}}: [[Bibbia]] * {{nau}}: [[Bibel]] * {{nds}}: [[Bibel]] * {{nep}}: [[बाइबल]] * {{dut}}: [[Bijbel]] * {{nno}}: [[Bibelen]] * {{nov}}: [[Bible]] * {{nor}}: [[Bibelen]] * {{oci}}: [[Bíblia]] * {{orm}}: [[Kitaaba]] * {{oss}}: [[Библи]] * {{pap}}: [[Beibel]] * {{pan}}: [[ਬਾਈਬਲ]] * {{pol}}: [[Biblia]] * {{pms}}: [[Bibia]] * {{pus}}: [[بائبل]] * {{por}}: [[Bíblia]] * {{que}}: [[Apuyaya Simin]] * {{roh}}: [[Bibla]] * {{rup}}: [[Biblia Ayia]] * {{rum}}: [[Biblia]] * {{rue}}: [[Біблія]] * {{rus}}: [[Библия]] * {{sah}}: [[Биибилийэ]] * {{scn}}: [[Bibbia]] * {{sco}}: [[Bible]] * {{srd}}: [[Bibbia]] * {{sme}}: [[Biibbal]] * {{sag}}: [[Bible]] * {{sin}}: [[බයිබලය]] * {{slv}}: [[Sveto pismo]] * {{sna}}: [[Bhaibheri]] * {{som}}: [[Kitaabka quduska]] * {{srp}}: [[Библија]] * {{sot}}: [[Bebele]] * {{sun}}: [[Alkitab]] * {{swe}}: [[Bibeln]] * {{swa}}: [[Biblia ya Kikristo]] * {{tam}}: [[விவிலியம்]] * {{tel}}: [[బైబిల్]] * {{tgk}}: [[Китоби Муқаддас]] * {{tha}}: [[คัมภีร์ไบเบิล]] * {{tir}}: [[መጽሓፍ ቅዱስ]] * {{tuk}}: [[Injil]] * {{tgl}}: [[Bibliya]] * {{ton}}: [[Tohitapu]] * {{tpi}}: [[Baibel]] * {{tur}}: [[Kitâb-ı Mukaddes]] * {{tat}}: [[Библия]] * {{twi}}: [[Twere Kronkron]] * {{uig}}: [[ئىنجىل]] * {{ukr}}: [[Біблія]] * {{urd}}: [[بائبل]] * {{uzb}}: [[Bibliya]] * {{vec}}: [[Bibia]] * {{vol}}: [[Bib]] * {{wln}}: [[Bibe]] * {{wol}}: [[Biibël]] * {{wuu}}: [[圣经]] * {{xal}}: [[Библь]] * {{xho}}: [[IBhayibhile]] * {{yid}}: [[ביבל]] * {{yor}}: [[Bíbélì Mímọ́]] * {{nan}}: [[Sèng-keng]] * {{yue}}: [[聖經]] * {{zul}}: [[IBhayibheli]] {{trans-bottom}} {{trans-see|sách thánh của Do Thái giáo|Tanakh}} mjpa2is1mctx5eiba43u77qkmwl1otg ngọc trai 0 28923 2350662 2126888 2026-05-07T07:54:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350662 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:White pearl necklace.jpg|nhỏ|Vòng cổ '''ngọc trai'''.]] {{-etym-}} Từ ghép giữa {{ghép|vi|ngọc|trai}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|cls=[[viên]], [[hòn]]}} # Thứ [[ngọc]] [[lấy]] trong con [[trai]]. #: {{ux|vi|Nuôi trai để lấy '''ngọc trai'''.}} {{-synonym-}} * {{vi-l|châu}} * {{vi-l|trân châu}} {{-trans-}} {{trans-top|Thứ ngọc lấy trong con trai}} * {{ara}}: {{t|ar|لُؤْلُؤَة|f}}, {{t+|ar|جَوْهَر|m}} * {{abq}}: {{t|abq|налкъвыт-налма́с}}, {{t|abq|налькъвыт-нальма́с}} * {{ady}}: {{t|ady|налмэс-налкъут}}, {{t|ady|налъкъут}} * {{afr}}: {{t|af|pêrel}} * {{sqi}}: {{t+|sq|rruazë|f}} * {{amh}}: {{t|am|ሉል}} * {{eng}}: {{t+|en|pearl}} * {{an}}: {{t|an|perla|f}} * {{hye}}: {{t+|hy|մարգարիտ}} * {{ast}}: {{t+|ast|perlla|f}}, {{t+|ast|perla|f}} * {{ava}}: {{t|av|маргъал}} * {{aze}}: {{t+|az|mirvari}}, {{t+|az|inci}} * {{bal}}: {{t|bal|گوھر}} * {{ba}}: {{t|ba|ынйы}} * {{eus}}: {{t|eu|perla}}, {{t|eu|altiste}} * {{bbl}}: {{t|bbl|მარგალიტ}}, {{t|bbl|მარგლიტ}} * {{ben}}: {{t+|bn|মুক্তা}}, {{t+|bn|মোতি}} * {{bth}}: {{t|bth|mutiyaraa}} * {{bul}}: {{t+|bg|би́сер|m}}, {{t+|bg|пе́рла|f}}, {{t|bg|маргари́т|m}} * {{bua}}: {{t|bua|субад}} * {{cat-2}}: {{t+|ca|perla|f}} * {{chr}}: {{t|chr|ᏓᎬᎾ}} * {{chv}}: {{t|cv|ӗнчӗ}}, {{t|cv|мерчен}} * {{cop}}: {{t|cop|ⲙⲁⲣⲅⲁⲣⲓⲧⲏⲥ}} * {{kw}}: {{t|kw|perl|m}} * {{co}}: {{t|co|perla|f}}, {{t|co|perula|f}} * {{dan}}: {{t|da|perle|c}} * {{deu}}: {{t+|de|Perle|f}} * {{gsw}}: {{t|gsw|Pärla}} * {{myv}}: {{t|myv|жемчуг}} * {{est}}: {{t|et|pärl}} * {{evn}}: {{t|evn|жемчуг}} * {{gur}}: {{t|gur|kug-sõnnɛ}} * {{fao}}: {{t|fo|perla|f}} * {{fur}}: {{t|fur|perle|f}} * {{gl}}: {{t+|gl|perla|f}} * {{kat}}: {{t|ka|მარგალიტი}} * {{got}}: {{t|got|𐌼𐌰𐍂𐌹𐌺𐍂𐌴𐌹𐍄𐌿𐍃|m}} * {{nl}}: {{t+|nl|parel|c}} * {{mya}}: {{t+|my|ပုလဲ}} * {{fr}}: {{t+|fr|perle|f}} * {{fin}}: {{t+|fi|helmi}} * {{epo}}: {{t|eo|perlo}} * {{cs}}: {{t+|cs|perla|f}} * {{zh}}: ** {{dng}}: {{t|dng|җынҗў}} ** {{hak}}: {{t|hak|珍珠|tr=chṳ̂n-chû}} ** {{cdo}}: {{t|cdo|珍珠|tr=dĭng-ciŏ / cĭng-ciŏ}} ** {{nan}}: {{t+|nan|珍珠|tr=chin-chu}} ** {{wuu}}: {{t|wuu|珍珠}} ** {{cmn}}: {{t+|cmn|珍珠|tr=zhēnzhū}}, {{t+|cmn|璣|tr=jī}} ** {{yue}}: {{t|yue|珍珠|tr=zan1 zyu1}} * {{ita}}: {{t+|it|perla|f}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Đá quý}} k8625k79vhmpv75ti72w2htadgg636y 2350915 2350662 2026-05-07T10:40:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350915 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:White pearl necklace.jpg|nhỏ|Vòng cổ '''ngọc trai'''.]] {{-etym-}} Từ ghép giữa {{ghép|vi|ngọc|trai}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|cls=[[viên]], [[hòn]]}} # Thứ [[ngọc]] [[lấy]] trong con [[trai]]. #: {{ux|vi|Nuôi trai để lấy '''ngọc trai'''.}} {{-synonym-}} * {{vi-l|châu}} * {{vi-l|trân châu}} {{-trans-}} {{trans-top|Thứ ngọc lấy trong con trai}} * {{ara}}: {{t|ar|لُؤْلُؤَة|f}}, {{t+|ar|جَوْهَر|m}} * {{abq}}: {{t|abq|налкъвыт-налма́с}}, {{t|abq|налькъвыт-нальма́с}} * {{ady}}: {{t|ady|налмэс-налкъут}}, {{t|ady|налъкъут}} * {{afr}}: {{t|af|pêrel}} * {{sqi}}: {{t+|sq|rruazë|f}} * {{amh}}: {{t|am|ሉል}} * {{eng}}: {{t+|en|pearl}} * {{an}}: {{t|an|perla|f}} * {{hye}}: {{t+|hy|մարգարիտ}} * {{ast}}: {{t+|ast|perlla|f}}, {{t+|ast|perla|f}} * {{ava}}: {{t|av|маргъал}} * {{aze}}: {{t+|az|mirvari}}, {{t+|az|inci}} * {{bal}}: {{t|bal|گوھر}} * {{ba}}: {{t|ba|ынйы}} * {{eus}}: {{t|eu|perla}}, {{t|eu|altiste}} * {{bbl}}: {{t|bbl|მარგალიტ}}, {{t|bbl|მარგლიტ}} * {{ben}}: {{t+|bn|মুক্তা}}, {{t+|bn|মোতি}} * {{bth}}: {{t|bth|mutiyaraa}} * {{bul}}: {{t+|bg|би́сер|m}}, {{t+|bg|пе́рла|f}}, {{t|bg|маргари́т|m}} * {{bua}}: {{t|bua|субад}} * {{cat-old}}: {{t+|ca|perla|f}} * {{chr}}: {{t|chr|ᏓᎬᎾ}} * {{chv}}: {{t|cv|ӗнчӗ}}, {{t|cv|мерчен}} * {{cop}}: {{t|cop|ⲙⲁⲣⲅⲁⲣⲓⲧⲏⲥ}} * {{kw}}: {{t|kw|perl|m}} * {{co}}: {{t|co|perla|f}}, {{t|co|perula|f}} * {{dan}}: {{t|da|perle|c}} * {{deu}}: {{t+|de|Perle|f}} * {{gsw}}: {{t|gsw|Pärla}} * {{myv}}: {{t|myv|жемчуг}} * {{est}}: {{t|et|pärl}} * {{evn}}: {{t|evn|жемчуг}} * {{gur}}: {{t|gur|kug-sõnnɛ}} * {{fao}}: {{t|fo|perla|f}} * {{fur}}: {{t|fur|perle|f}} * {{gl}}: {{t+|gl|perla|f}} * {{kat}}: {{t|ka|მარგალიტი}} * {{got}}: {{t|got|𐌼𐌰𐍂𐌹𐌺𐍂𐌴𐌹𐍄𐌿𐍃|m}} * {{nl}}: {{t+|nl|parel|c}} * {{mya}}: {{t+|my|ပုလဲ}} * {{fr}}: {{t+|fr|perle|f}} * {{fin}}: {{t+|fi|helmi}} * {{epo}}: {{t|eo|perlo}} * {{cs}}: {{t+|cs|perla|f}} * {{zh}}: ** {{dng}}: {{t|dng|җынҗў}} ** {{hak}}: {{t|hak|珍珠|tr=chṳ̂n-chû}} ** {{cdo}}: {{t|cdo|珍珠|tr=dĭng-ciŏ / cĭng-ciŏ}} ** {{nan}}: {{t+|nan|珍珠|tr=chin-chu}} ** {{wuu}}: {{t|wuu|珍珠}} ** {{cmn}}: {{t+|cmn|珍珠|tr=zhēnzhū}}, {{t+|cmn|璣|tr=jī}} ** {{yue}}: {{t|yue|珍珠|tr=zan1 zyu1}} * {{ita}}: {{t+|it|perla|f}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Đá quý}} 78r66lpp88w8npz08ajuhf2bgsbzesa thung lũng 0 29547 2350663 2015407 2026-05-07T07:54:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350663 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Fljótsdalur.jpg|thumb|thung lũng]] {{-pron-}} {{vie-pron}} {{-noun-}} '''thung lũng''' # [[dải đất|Dải đất]] [[trũng]] xuống và [[kéo dài]], nằm giữa hai [[sườn núi]]. #: '''''Thung lũng''' Điện Biên.'' {{-trans-}} {{đầu}} * {{eng}}: [[valley]] * {{pol}}: [[dolina]] {{f}} * {{cat-2}}: [[vall]] {{giữa}} * {{fra}}: [[vallée]] {{f}} * {{ron}}: [[vale]] {{f}} * {{tur}}: [[vadi]] * {{ita}}: [[valle]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 2k4d5790vg7ufpth98rasn7wfnnt4os 2350916 2350663 2026-05-07T10:40:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350916 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Fljótsdalur.jpg|thumb|thung lũng]] {{-pron-}} {{vie-pron}} {{-noun-}} '''thung lũng''' # [[dải đất|Dải đất]] [[trũng]] xuống và [[kéo dài]], nằm giữa hai [[sườn núi]]. #: '''''Thung lũng''' Điện Biên.'' {{-trans-}} {{đầu}} * {{eng}}: [[valley]] * {{pol}}: [[dolina]] {{f}} * {{cat-old}}: [[vall]] {{giữa}} * {{fra}}: [[vallée]] {{f}} * {{ron}}: [[vale]] {{f}} * {{tur}}: [[vadi]] * {{ita}}: [[valle]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 7htrho4ii6fm87ssbebodi7mmvzzcj9 thủ đô 0 29679 2350664 2281337 2026-05-07T07:54:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350664 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Hanoi Montage.jpg|nhỏ|Hà Nội, '''thủ đô''' của Việt Nam.]] {{-etym-}} {{etym-translit|lang=Hani|term=首都}} {{-pron-}} {{vie-pron}} {{-noun-}} '''thủ đô''' # [[trung tâm|Trung tâm]] [[chính trị]] của một [[nước]], nơi [[làm việc]] của [[chính phủ]] và các [[cơ quan]] [[trung ương]]. #: {{ux|vi|Xây dựng '''thủ đô''' văn minh, giàu đẹp.}} #: {{ux|vi|Seoul là '''thủ đô''' của Hàn Quốc từ triều đại Joson cách đây 600 năm.}} {{-syn-}} “Thủ đô” đồng nghĩa với các từ sau nếu nói về trung tâm hành chính của một nước phong kiến: * [[kinh đô]] * [[kinh thành]] * [[kinh sư]] * [[kinh kỳ]] {{-trans-}} {{trans-top|Trung tâm chính trị của một nước, nơi làm việc của chính phủ và các cơ quan trung ương}} * {{ara}}: [[عَاصِمَة]] {{f}} (ʿāṣima), [[حَاضِرَة‎]] {{f}} (ḥāḍira) * {{afr}}: [[hoofstad]] * {{aka}}: [[ahenkuro]] * {{sqi}}: [[kryeqytet]] {{g|m}} * {{amh}}: [[ዋና ከተማ]] (wana kätäma) * {{eng}}: [[capital]], [[capital city]] * {{ang}}: [[heafodburg]] {{f}} * {{hye}}: [[մայրաքաղաք]] (mayrakʿałakʿ) * {{ast}}: [[capital]] {{f}} * {{ava}}: [[тахшагьар]] (taχšahar) * {{aze}}: [[baş şəhəri]], [[paytaxt]] * {{pol}}: [[stolica]] {{f}} * {{bak}}: [[башҡала]] (bašqala) * {{eus}}: [[hiriburu]] * {{fas}}: [[پایتخت‎]] (pâytaxt) * {{bar}}: [[Haptstod]], [[Hauptstod]] * {{isl}}: [[höfuðborg]] {{f}} * {{bel}}: [[сталіца]] {{f}} (stalica) * {{ben}}: [[রাজধানী]] (rajdhani) * {{por}}: [[capital]] {{g|m}} hoặc {{f}} * {{bre}}: [[kêrbenn]] * {{bul}}: [[столица]] {{f}} (stólica) * {{cat-2}}: [[capital]] {{f}} * {{chv}}: [[тĕп хула]] (tĕp hula) * {{heb}}: [[בירה]] {{f}} (birá) * {{dan}}: [[hovedstad]] * {{deu}}: [[Hauptstadt]] {{f}} * {{myv}}: [[прявтош]] (prjavtoš) * {{est}}: [[pealinn]] * {{fao}}: [[høvuðsstaður]] {{g|m}} * {{fur}}: [[capitâl]] {{f}} * {{gla}}: [[prìomh-bhaile]] * {{glg}}: [[capital]] * {{kat}}: [[დედაქალაქი]] (dedakalaki) * {{grn}}: [[tavusu]] * {{guj}}: [[રાજધાની]] (rājdhānī) * {{nld}}: [[hoofdstad]] {{g|m}} hoặc {{f}} * {{haw}}: [[kapikala]] * {{hin}}: [[राजधानी#Tiếng Hindi|राजधानी]] {{f}} (rājdhānī) * {{hun}}: [[főváros]] * {{ell}}: [[πρωτεύουσα]] {{f}} (protévousa) * {{ido}}: [[chef-urbo]] * {{ind}}: [[ibu kota]] * {{gle}}: [[príomhchathair]] {{f}} * {{jav}}: [[kutha krajan]], [[kutha karajan]] * {{xal}}: [[хотл балһсн]] (xotl balhsn) * {{kan}}: [[ರಾಜಧಾನಿ]] (rājadhāni) * {{csb}}: [[stolëca]] {{f}} * {{kaz}}: [[астана]] (astana), [[елорда]] (elorda) * {{lao}}: [[ນະຄອນຫລວງ]] (na khǭn lūang), [[ກຸງ]] (kung) * {{lav}}: [[galvaspilsēta]] {{f}} * {{lit}}: [[sostinė]] {{f}} * {{ltz}}: [[Haaptstad]] {{f}} {{trans-mid}} * {{mkd}}: [[престолнина]] {{f}} (prestolnina) * {{mlg}}: [[renivohitra]] * {{msa}}: [[ibu negara]] * {{mal}}: [[തലസ്ഥാനം]] (talasthānaṃ) * {{mlt}}: [[belt kapitali]] * {{glv}}: [[ard-valley]] {{g|m}}, [[preeu-valley]] {{g|m}} * {{mri}}: [[tāone matua]] * {{mar}}: [[राजधानी#Tiếng Marathi|राजधानी]] {{f}} (rājdhānī) * {{mya}}: [[မြို့တော်]] (mrui.tau) * {{mon}}: [[нийслэл хот]] (niislel khot) * {{nor}}: ** {{nob}}: [[hovedstad]] {{g|m}} ** {{nno}}: [[hovudstad]] {{g|m}} * {{rus}}: [[столица]] {{f}} (stolíca) * {{jpn}}: [[首都]] (しゅと, shuto) * {{oci}}: [[capitala]] * {{oss}}: [[сӕйраг сахар]] (sæjrag saxar) * {{pus}}: [[پلازمېنه]] {{f}} (plâzmena) * {{fra}}: [[capitale]] {{f}} * {{fin}}: [[pääkaupunki]] * {{epo}}: [[ĉefurbo]] * {{rue}}: [[головне місто]] {{n}} (holovne misto) * {{sme}}: [[oaivegávpot]] * {{sat}}: [[ᱨᱟᱡᱽᱜᱟᱲ]] (rajᱽgaṛ) * {{sco}}: [[caipital ceety]] * {{ces}}: [[hlavní město]] {{n}} * {{scn}}: [[capitali]] * {{sin}}: [[අගනුවර]] (aganuwara) * {{slk}}: [[hlavné mesto]] {{n}} * {{slv}}: [[glavno mesto]] {{n}}, [[prestolnica]] {{f}} * {{tgl}}: [[kapital]] * {{tgk}}: [[пойтахт]] (poytaxt) * {{tam}}: [[தலைநகர்]] (talainakar) * {{tat}}: [[башкала]] (başkala) * {{spa}}: [[capital]] {{f}} * {{tel}}: [[రాజధాని]] (rājadhāni) * {{tha}}: [[เมืองหลวง]] (mʉʉang-lǔuang) * {{tur}}: [[başkent]] * {{swe}}: [[huvudstad]] {{g|c}} * {{tir}}: [[ርእሲ ከተማ]] (rəʾsi kätäma) * {{zha}}: [[soujduh]] * {{zho}}: [[首都]] * {{kor}}: [[수도]] * {{tuk}}: [[paýtagt]] * {{udm}}: [[шоркар]] (šorkar) * {{ukr}}: [[столиця]] {{f}} * {{urd}}: [[دارالحکومت‎]] (dār-ul-hukūmat) * {{uzb}}: [[poytaxt]] * {{vec}}: [[cavedal]] * {{vol}}: [[cifazif]] * {{cym}}: [[prifddinas]] {{f}} * {{ita}}: [[capitale]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 5nuyloi1id82s82c3arjo1fl8ztytkv 2350917 2350664 2026-05-07T10:40:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350917 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Hanoi Montage.jpg|nhỏ|Hà Nội, '''thủ đô''' của Việt Nam.]] {{-etym-}} {{etym-translit|lang=Hani|term=首都}} {{-pron-}} {{vie-pron}} {{-noun-}} '''thủ đô''' # [[trung tâm|Trung tâm]] [[chính trị]] của một [[nước]], nơi [[làm việc]] của [[chính phủ]] và các [[cơ quan]] [[trung ương]]. #: {{ux|vi|Xây dựng '''thủ đô''' văn minh, giàu đẹp.}} #: {{ux|vi|Seoul là '''thủ đô''' của Hàn Quốc từ triều đại Joson cách đây 600 năm.}} {{-syn-}} “Thủ đô” đồng nghĩa với các từ sau nếu nói về trung tâm hành chính của một nước phong kiến: * [[kinh đô]] * [[kinh thành]] * [[kinh sư]] * [[kinh kỳ]] {{-trans-}} {{trans-top|Trung tâm chính trị của một nước, nơi làm việc của chính phủ và các cơ quan trung ương}} * {{ara}}: [[عَاصِمَة]] {{f}} (ʿāṣima), [[حَاضِرَة‎]] {{f}} (ḥāḍira) * {{afr}}: [[hoofstad]] * {{aka}}: [[ahenkuro]] * {{sqi}}: [[kryeqytet]] {{g|m}} * {{amh}}: [[ዋና ከተማ]] (wana kätäma) * {{eng}}: [[capital]], [[capital city]] * {{ang}}: [[heafodburg]] {{f}} * {{hye}}: [[մայրաքաղաք]] (mayrakʿałakʿ) * {{ast}}: [[capital]] {{f}} * {{ava}}: [[тахшагьар]] (taχšahar) * {{aze}}: [[baş şəhəri]], [[paytaxt]] * {{pol}}: [[stolica]] {{f}} * {{bak}}: [[башҡала]] (bašqala) * {{eus}}: [[hiriburu]] * {{fas}}: [[پایتخت‎]] (pâytaxt) * {{bar}}: [[Haptstod]], [[Hauptstod]] * {{isl}}: [[höfuðborg]] {{f}} * {{bel}}: [[сталіца]] {{f}} (stalica) * {{ben}}: [[রাজধানী]] (rajdhani) * {{por}}: [[capital]] {{g|m}} hoặc {{f}} * {{bre}}: [[kêrbenn]] * {{bul}}: [[столица]] {{f}} (stólica) * {{cat-old}}: [[capital]] {{f}} * {{chv}}: [[тĕп хула]] (tĕp hula) * {{heb}}: [[בירה]] {{f}} (birá) * {{dan}}: [[hovedstad]] * {{deu}}: [[Hauptstadt]] {{f}} * {{myv}}: [[прявтош]] (prjavtoš) * {{est}}: [[pealinn]] * {{fao}}: [[høvuðsstaður]] {{g|m}} * {{fur}}: [[capitâl]] {{f}} * {{gla}}: [[prìomh-bhaile]] * {{glg}}: [[capital]] * {{kat}}: [[დედაქალაქი]] (dedakalaki) * {{grn}}: [[tavusu]] * {{guj}}: [[રાજધાની]] (rājdhānī) * {{nld}}: [[hoofdstad]] {{g|m}} hoặc {{f}} * {{haw}}: [[kapikala]] * {{hin}}: [[राजधानी#Tiếng Hindi|राजधानी]] {{f}} (rājdhānī) * {{hun}}: [[főváros]] * {{ell}}: [[πρωτεύουσα]] {{f}} (protévousa) * {{ido}}: [[chef-urbo]] * {{ind}}: [[ibu kota]] * {{gle}}: [[príomhchathair]] {{f}} * {{jav}}: [[kutha krajan]], [[kutha karajan]] * {{xal}}: [[хотл балһсн]] (xotl balhsn) * {{kan}}: [[ರಾಜಧಾನಿ]] (rājadhāni) * {{csb}}: [[stolëca]] {{f}} * {{kaz}}: [[астана]] (astana), [[елорда]] (elorda) * {{lao}}: [[ນະຄອນຫລວງ]] (na khǭn lūang), [[ກຸງ]] (kung) * {{lav}}: [[galvaspilsēta]] {{f}} * {{lit}}: [[sostinė]] {{f}} * {{ltz}}: [[Haaptstad]] {{f}} {{trans-mid}} * {{mkd}}: [[престолнина]] {{f}} (prestolnina) * {{mlg}}: [[renivohitra]] * {{msa}}: [[ibu negara]] * {{mal}}: [[തലസ്ഥാനം]] (talasthānaṃ) * {{mlt}}: [[belt kapitali]] * {{glv}}: [[ard-valley]] {{g|m}}, [[preeu-valley]] {{g|m}} * {{mri}}: [[tāone matua]] * {{mar}}: [[राजधानी#Tiếng Marathi|राजधानी]] {{f}} (rājdhānī) * {{mya}}: [[မြို့တော်]] (mrui.tau) * {{mon}}: [[нийслэл хот]] (niislel khot) * {{nor}}: ** {{nob}}: [[hovedstad]] {{g|m}} ** {{nno}}: [[hovudstad]] {{g|m}} * {{rus}}: [[столица]] {{f}} (stolíca) * {{jpn}}: [[首都]] (しゅと, shuto) * {{oci}}: [[capitala]] * {{oss}}: [[сӕйраг сахар]] (sæjrag saxar) * {{pus}}: [[پلازمېنه]] {{f}} (plâzmena) * {{fra}}: [[capitale]] {{f}} * {{fin}}: [[pääkaupunki]] * {{epo}}: [[ĉefurbo]] * {{rue}}: [[головне місто]] {{n}} (holovne misto) * {{sme}}: [[oaivegávpot]] * {{sat}}: [[ᱨᱟᱡᱽᱜᱟᱲ]] (rajᱽgaṛ) * {{sco}}: [[caipital ceety]] * {{ces}}: [[hlavní město]] {{n}} * {{scn}}: [[capitali]] * {{sin}}: [[අගනුවර]] (aganuwara) * {{slk}}: [[hlavné mesto]] {{n}} * {{slv}}: [[glavno mesto]] {{n}}, [[prestolnica]] {{f}} * {{tgl}}: [[kapital]] * {{tgk}}: [[пойтахт]] (poytaxt) * {{tam}}: [[தலைநகர்]] (talainakar) * {{tat}}: [[башкала]] (başkala) * {{spa}}: [[capital]] {{f}} * {{tel}}: [[రాజధాని]] (rājadhāni) * {{tha}}: [[เมืองหลวง]] (mʉʉang-lǔuang) * {{tur}}: [[başkent]] * {{swe}}: [[huvudstad]] {{g|c}} * {{tir}}: [[ርእሲ ከተማ]] (rəʾsi kätäma) * {{zha}}: [[soujduh]] * {{zho}}: [[首都]] * {{kor}}: [[수도]] * {{tuk}}: [[paýtagt]] * {{udm}}: [[шоркар]] (šorkar) * {{ukr}}: [[столиця]] {{f}} * {{urd}}: [[دارالحکومت‎]] (dār-ul-hukūmat) * {{uzb}}: [[poytaxt]] * {{vec}}: [[cavedal]] * {{vol}}: [[cifazif]] * {{cym}}: [[prifddinas]] {{f}} * {{ita}}: [[capitale]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] gzltoyzf34cjlguvdjh67s7k215gpgq khai hoa 0 31374 2350665 2252247 2026-05-07T07:54:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350665 wikitext text/x-wiki {{-vie-}} {{-etym-}} {{vie-etym-sino|開|[[nở]]|花|bông [[hoa]]}}. {{-pron-}} {{vie-pron}} {{-paro-}} * {{l|vi|khai hóa}} * {{l|vi|khai hỏa}} {{-verb-}} {{vie-verb}} # (''Văn chương'') [[nở|Nở]] [[hoa]]. #: {{ux|vi|Đào đã '''khai hoa'''.}} #* '''2013''', Linh Chi, ''[https://web.archive.org/web/20220114132048/http://www.baoyenbai.com.vn/12/105615/Nghe_trong_dao_o_Van_Chan.htm Nghề trồng đào ở Văn Chấn]'', Báo Yên Bái: #*: {{quote|vi|Thời điểm này, rất nhiều nhà vườn chuyên trồng đào ở các xã, thôn, bản huyện [[w:Văn Chấn|Văn Chấn]] đang tích cực chăm sóc, tuốt lá, tỉa cành để cây '''khai hoa''' đúng dịp xuân về.}} # (''Nghĩa bóng'') [[đẻ|Đẻ]] [[con]]. #: {{ux|vi|Đến kỳ mãn nguyệt '''khai hoa'''.}} #* '''1923''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “[[s:Tỉnh mộng/Chương 9|Chương 9]]”, trong ''Tỉnh mộng''<sup>[https://vi.wikisource.org/wiki/T%E1%BB%89nh_m%E1%BB%99ng]</sup>: #*: {{quote|vi|Bước qua đầu tháng chín, bà Phủ tính Yến-Tuyết đã gần tới ngày '''khai hoa''' rồi.}} {{-drv-}} {{đầu}} * [[khai hoa kết quả]] * [[khai hoa kết trái]] * [[khai hoa nở nhụy]] * [[mãn nguyệt khai hoa]] * [[nở nhụy khai hoa]] {{cuối}} {{-trans-}} {{trans-top|Nở hoa}} * {{eng}}: {{t+|en|blossom}}, {{t+|en|bloom}}, {{t+|en|flower}} * {{pol}}: {{t+|pl|kwitnąć}} * {{cat-2}}: {{t+|ca|florir}} * {{deu}}: {{t+|de|blühen}} * {{nld}}: {{t+|nl|bloeien}} * {{mri}}: {{t+|mi|pua}} * {{nor}}: ** {{nob}}: {{t+|nb|blomstre}} ** {{nno}}: {{t+|nn|blomstre}}, {{t+|nn|bløme}} {{trans-mid}} * {{rus}}: {{t+|ru|цвести|tr=cvestí}}, {{t+|ru|расцветать|tr=rascvetátʹ}}, {{t+|ru|расцвести|tr=rascvestí}} * {{jpn}}: {{t+|ja|咲く|tr=さく, saku}} * {{fra}}: {{t+|fr|fleurir}} * {{spa}}: {{t+|es|florecer}} * {{kor}}: {{t+|ko|피다|tr=pida}} * {{zho}}: ** {{cmn}}: {{t+|cmn|開花}}, {{t+|cmn|开花|tr=kāihuā}}, {{t+|cmn|開}}, {{t+|cmn|开|tr=kāi}} * {{ita}}: {{t+|it|fiorire}} {{trans-bottom}} {{trans-top|Đẻ con}} * {{nld}}: {{t+|nl|baren}} * {{fra}}: {{t+|fr|accoucher}} * {{spa}}: {{t+|es|dar a luz}}, {{t+|es|parir}} {{trans-mid}} * {{zho}}: ** {{cmn}}: {{t+|cmn|生|tr=shēng}}, {{t+|cmn|生育|tr=shēngyù}}, {{t+|cmn|產}}, {{t+|cmn|产|tr=chǎn}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} 9gz98wi8owul8d6lev8c2vc2w3fwgpb 2350918 2350665 2026-05-07T10:40:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350918 wikitext text/x-wiki {{-vie-}} {{-etym-}} {{vie-etym-sino|開|[[nở]]|花|bông [[hoa]]}}. {{-pron-}} {{vie-pron}} {{-paro-}} * {{l|vi|khai hóa}} * {{l|vi|khai hỏa}} {{-verb-}} {{vie-verb}} # (''Văn chương'') [[nở|Nở]] [[hoa]]. #: {{ux|vi|Đào đã '''khai hoa'''.}} #* '''2013''', Linh Chi, ''[https://web.archive.org/web/20220114132048/http://www.baoyenbai.com.vn/12/105615/Nghe_trong_dao_o_Van_Chan.htm Nghề trồng đào ở Văn Chấn]'', Báo Yên Bái: #*: {{quote|vi|Thời điểm này, rất nhiều nhà vườn chuyên trồng đào ở các xã, thôn, bản huyện [[w:Văn Chấn|Văn Chấn]] đang tích cực chăm sóc, tuốt lá, tỉa cành để cây '''khai hoa''' đúng dịp xuân về.}} # (''Nghĩa bóng'') [[đẻ|Đẻ]] [[con]]. #: {{ux|vi|Đến kỳ mãn nguyệt '''khai hoa'''.}} #* '''1923''', [[w:Hồ Biểu Chánh|Hồ Biểu Chánh]], “[[s:Tỉnh mộng/Chương 9|Chương 9]]”, trong ''Tỉnh mộng''<sup>[https://vi.wikisource.org/wiki/T%E1%BB%89nh_m%E1%BB%99ng]</sup>: #*: {{quote|vi|Bước qua đầu tháng chín, bà Phủ tính Yến-Tuyết đã gần tới ngày '''khai hoa''' rồi.}} {{-drv-}} {{đầu}} * [[khai hoa kết quả]] * [[khai hoa kết trái]] * [[khai hoa nở nhụy]] * [[mãn nguyệt khai hoa]] * [[nở nhụy khai hoa]] {{cuối}} {{-trans-}} {{trans-top|Nở hoa}} * {{eng}}: {{t+|en|blossom}}, {{t+|en|bloom}}, {{t+|en|flower}} * {{pol}}: {{t+|pl|kwitnąć}} * {{cat-old}}: {{t+|ca|florir}} * {{deu}}: {{t+|de|blühen}} * {{nld}}: {{t+|nl|bloeien}} * {{mri}}: {{t+|mi|pua}} * {{nor}}: ** {{nob}}: {{t+|nb|blomstre}} ** {{nno}}: {{t+|nn|blomstre}}, {{t+|nn|bløme}} {{trans-mid}} * {{rus}}: {{t+|ru|цвести|tr=cvestí}}, {{t+|ru|расцветать|tr=rascvetátʹ}}, {{t+|ru|расцвести|tr=rascvestí}} * {{jpn}}: {{t+|ja|咲く|tr=さく, saku}} * {{fra}}: {{t+|fr|fleurir}} * {{spa}}: {{t+|es|florecer}} * {{kor}}: {{t+|ko|피다|tr=pida}} * {{zho}}: ** {{cmn}}: {{t+|cmn|開花}}, {{t+|cmn|开花|tr=kāihuā}}, {{t+|cmn|開}}, {{t+|cmn|开|tr=kāi}} * {{ita}}: {{t+|it|fiorire}} {{trans-bottom}} {{trans-top|Đẻ con}} * {{nld}}: {{t+|nl|baren}} * {{fra}}: {{t+|fr|accoucher}} * {{spa}}: {{t+|es|dar a luz}}, {{t+|es|parir}} {{trans-mid}} * {{zho}}: ** {{cmn}}: {{t+|cmn|生|tr=shēng}}, {{t+|cmn|生育|tr=shēngyù}}, {{t+|cmn|產}}, {{t+|cmn|产|tr=chǎn}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} f1lohqs2a92uq3xkl5tbieeukd296u1 kilôgam 0 31514 2350666 1864532 2026-05-07T07:54:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350666 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|ki|lô|gam}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:kilogramme]] }} {{-noun-}} '''kilôgam''', '''ki-lô-gam''' # [[đơn vị|Đơn vị]] [[khối lượng]] [[bằng]] 1.000 [[gam]]. {{-syn-}} * [[ki-lô]] * [[ki-lộ]] * [[kí lô]] * [[ký]] {{term|địa phương}} {{-trans-}} {{đầu}} * {{ara}}: [[كيلوغرام]] (''kiluġrām'', ''kilugram'') {{m}} * {{afr}}: [[kilogram]] * {{eng}}: [[kilogram]], [[kilo]] {{term|thông tục}} * {{hye}}: [[կիլոգրամ]] (''kilogram''), [[կիլո]] (''kilo'') {{term|thông tục}} * {{pol}}: [[kilogram]] {{m}}, [[kilo]] {{n}} * {{fas}}: [[کیلوگرم]] (''kilogram'') * {{bel}}: [[кілаграм]] (''kilahrám'') {{m}} * {{ben}}: [[কিলো]] (''kilō'') * {{por}}: [[quilograma]] {{m}} * {{bul}}: [[килограм]] (''kilográm'') {{m}} * {{cat-2}}: [[quilogram]] {{m}} * {{dan}}: [[kilogram]] {{n}} * {{deu}}: [[Kilogramm]] {{n}} * {{est}}: [[kilogramm]] * {{fao}}: [[kilogramm]] {{n}} * {{glg}}: [[quilogramo]] {{m}} * {{kat}}: [[კილოგრამი]] (''kilogrami'') * {{nld}}: [[kilogram]] {{m}} * {{hin}}: [[किलो]] (''kilo''), [[किलोग्राम]] (''kilogrām'') {{m}} * {{hun}}: [[kilogramm]] * {{ell}}: [[χιλιόγραμμο]] (''chiliógrammo'') {{n}}, [[κιλό]] (''kiló'') {{n}} * {{ind}}: [[kilogram]] * {{khm}}: [[គីឡូក្រាម]] (''kiiloo kraam'') * {{lav}}: [[kilograms]] {{m}}, [[kilo]] {{m}} * {{lit}}: [[kilogramas]] {{m}} * {{msa}}: [[kilogram]] * {{rus}}: [[килограмм]] (''kilográmm'') {{m}}, [[кило]] {{n}} (''kiló'') * {{jpn}}: [[キログラム]] (''kiroguramu''), [[キロ]] (''kiro'') * {{fin}}: [[kilogramma]] * {{fra}}: [[kilogramme]] {{m}}, [[kilo]] {{m}} * {{cmn}}: [[公斤]] (''gōngjīn'', công cân), [[千克]] (''qiān kè'', thiên khắc) * {{epo}}: [[kilogramo]] * {{ron}}: [[kilogram]] {{n}} * {{ces}}: [[kilogram]] {{m}} * {{slk}}: [[kilogram]] {{m}} * {{sot}}: [[kilogeramo]] * {{tat}}: [[kilogram]] * {{spa}}: [[kilogramo]] {{m}} * {{tel}}: [[కిలోగ్రాము]] * {{tha}}: [[กิโลกรัม]] (''gì loh gram'') * {{tur}}: [[kilogram]], [[kilo]] * {{swe}}: [[kilogram]], [[kilo]] * {{kor}}: [[킬로그램]] (''killogeuraem'') * {{ukr}}: [[кілограм]] (''kilohrám'') {{m}} * {{urd}}: [[کلوگرام]] (''kilogrām'') {{m}} * {{ita}}: [[chilogrammo]] {{m}}, [[chilo]] {{m}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] elmdw8obt6so622nflivr7n5lfx453q 2350919 2350666 2026-05-07T10:40:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350919 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|ki|lô|gam}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:kilogramme]] }} {{-noun-}} '''kilôgam''', '''ki-lô-gam''' # [[đơn vị|Đơn vị]] [[khối lượng]] [[bằng]] 1.000 [[gam]]. {{-syn-}} * [[ki-lô]] * [[ki-lộ]] * [[kí lô]] * [[ký]] {{term|địa phương}} {{-trans-}} {{đầu}} * {{ara}}: [[كيلوغرام]] (''kiluġrām'', ''kilugram'') {{m}} * {{afr}}: [[kilogram]] * {{eng}}: [[kilogram]], [[kilo]] {{term|thông tục}} * {{hye}}: [[կիլոգրամ]] (''kilogram''), [[կիլո]] (''kilo'') {{term|thông tục}} * {{pol}}: [[kilogram]] {{m}}, [[kilo]] {{n}} * {{fas}}: [[کیلوگرم]] (''kilogram'') * {{bel}}: [[кілаграм]] (''kilahrám'') {{m}} * {{ben}}: [[কিলো]] (''kilō'') * {{por}}: [[quilograma]] {{m}} * {{bul}}: [[килограм]] (''kilográm'') {{m}} * {{cat-old}}: [[quilogram]] {{m}} * {{dan}}: [[kilogram]] {{n}} * {{deu}}: [[Kilogramm]] {{n}} * {{est}}: [[kilogramm]] * {{fao}}: [[kilogramm]] {{n}} * {{glg}}: [[quilogramo]] {{m}} * {{kat}}: [[კილოგრამი]] (''kilogrami'') * {{nld}}: [[kilogram]] {{m}} * {{hin}}: [[किलो]] (''kilo''), [[किलोग्राम]] (''kilogrām'') {{m}} * {{hun}}: [[kilogramm]] * {{ell}}: [[χιλιόγραμμο]] (''chiliógrammo'') {{n}}, [[κιλό]] (''kiló'') {{n}} * {{ind}}: [[kilogram]] * {{khm}}: [[គីឡូក្រាម]] (''kiiloo kraam'') * {{lav}}: [[kilograms]] {{m}}, [[kilo]] {{m}} * {{lit}}: [[kilogramas]] {{m}} * {{msa}}: [[kilogram]] * {{rus}}: [[килограмм]] (''kilográmm'') {{m}}, [[кило]] {{n}} (''kiló'') * {{jpn}}: [[キログラム]] (''kiroguramu''), [[キロ]] (''kiro'') * {{fin}}: [[kilogramma]] * {{fra}}: [[kilogramme]] {{m}}, [[kilo]] {{m}} * {{cmn}}: [[公斤]] (''gōngjīn'', công cân), [[千克]] (''qiān kè'', thiên khắc) * {{epo}}: [[kilogramo]] * {{ron}}: [[kilogram]] {{n}} * {{ces}}: [[kilogram]] {{m}} * {{slk}}: [[kilogram]] {{m}} * {{sot}}: [[kilogeramo]] * {{tat}}: [[kilogram]] * {{spa}}: [[kilogramo]] {{m}} * {{tel}}: [[కిలోగ్రాము]] * {{tha}}: [[กิโลกรัม]] (''gì loh gram'') * {{tur}}: [[kilogram]], [[kilo]] * {{swe}}: [[kilogram]], [[kilo]] * {{kor}}: [[킬로그램]] (''killogeuraem'') * {{ukr}}: [[кілограм]] (''kilohrám'') {{m}} * {{urd}}: [[کلوگرام]] (''kilogrām'') {{m}} * {{ita}}: [[chilogrammo]] {{m}}, [[chilo]] {{m}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] tkdbub0iuw5prrfdmuk64jvyktpi8fw máy chém 0 31940 2350667 2157752 2026-05-07T07:54:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350667 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:French era guillotine, Hoa Lo Prison Museum, Hanoi (2) (37608437105).jpg|nhỏ|'''Máy chém'''.]] {{-etymology-}} Từ ghép giữa {{compound|vi|máy|chém}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[máy|Máy]] dùng để [[chặt đầu]] [[người]] có [[án]] [[tử hình]]. #* '''1936''', [[w:Phan Khôi|Phan Khôi]], [[s:Thời sự trong tuần lễ/Kỳ 6|''Thời sự trong tuần lễ''/Kỳ 6]], Sông Hương: #*: {{quote|vi|Vì đơn xin chống án bên Pháp của Trị bị bác, nên ngày 5 [[octobre|Octobre]] vừa rồi tội nhân đã lên '''máy chém''' để trả nợ xã hội.}} #* {{quote-book|vi|author=[[w:Lê Minh Quốc|Lê Minh Quốc]]|title=Nguyễn Thái Học|publisher=NXB Văn học|year=1995|page=155|passage=Nửa đêm về sáng của ngày 21/11/1931 thực dân đã đưa anh rời khỏi xà lim để lên '''máy chém'''.}} # {{label|vi|thông tục}} Người [[bán hàng]] với [[giá]] quá [[đắt]]. {{-synonym-}} * (''Nghĩa 1'') {{l|vi|đoạn đầu đài}} {{q|từ cũ}} {{-trans-}} {{trans-top|Máy dùng để chặt đầu người có án tử hình}} * {{ara}}: {{t|ar|مقصلة|f|tr=miqṣala}} * {{eng}}: {{t+|en|guillotine}} * {{hye}}: {{t+|hy|գիլյոտին}}, {{t+|hy|կառափնատ}} * {{aze}}: {{t|az|gilyotin}} * {{pol}}: {{t+|pl|gilotyna|f}} * {{fas}}: {{t+|fa|گیوتین}} * {{por}}: {{t+|pt|guilhotina|f}} * {{ina}}: {{t|ia|guillotina}} * {{cat-2}}: {{t+|ca|guillotina|f}} * {{heb}}: {{t|he|גיליוטינה|f|tr=giliotína}} * {{dan}}: {{t|da|guillotine|c}} * {{deu}}: {{t+|de|Guillotine|f}}, {{t+|de|Fallbeil|n}} * {{kat}}: {{t|ka|გილიოტინა}} * {{nld}}: {{t+|nl|guillotine|f}}, {{t+|nl|valbijl|f}} * {{hun}}: {{t+|hu|nyaktiló}}, {{t+|hu|guillotine}} * {{ell}}: {{t+|el|λαιμητόμος|f}}, {{t+|el|γκιλοτίνα|f}}, {{t+|el|καρμανιόλα|f}} * {{ido}}: {{t+|io|gilotino}} * {{isl}}: {{t|is|fallöxi}} * {{kur}}: ** {{kmr}}: {{t|kmr|meşneqe}}, {{t|kmr|giyotîn}} * {{lad}}: {{t|lad|giyotina|f}} * {{msa}}: {{t|ms|gilotin}} * {{rus}}: {{t+|ru|гильотина|f}} {{trans-mid}} * {{jpn}}: {{t+|ja|ギロチン|tr=girochin}} * {{nrf}}: {{t|nrf|dgilliotinne|f}} * {{fra}}: {{t+|fr|guillotine|f}} * {{fin}}: {{t+|fi|giljotiini}} * {{epo}}: {{t|eo|gilotino}} * {{ron}}: {{t+|ro|ghilotină|f}} * {{ces}}: {{t+|cs|gilotina|f}} * {{slk}}: {{t+|sk|gilotína|f}} * {{slv}}: {{t+|sl|giljotina|f}} * {{tgl}}: {{t|tl|gilyotina}} * {{tgk}}: {{t|tg|гилйотина}} * {{spa}}: {{t+|es|guillotina|f}} * {{tha}}: {{t+|th|กิโยตีน|tr=gì-yoo-dtiin}} * {{tur}}: {{t+|tr|giyotin}} * {{swe}}: {{t+|sv|giljotin|f}} * {{kor}}: {{t+|ko|단두대}}, {{t+|ko|기요틴}} * {{zho}}: ** {{cmn}}: {{t+|cmn|斷頭台|tr=duàntóutái}} ** {{yue}}: {{t|yue|斷頭台}} * {{ukr}}: {{t|uk|гільйотина}} * {{vec}}: {{t+|vec|ghiƚotina|f}} * {{vol}}: {{t|vo|gilyoten}} * {{ita}}: {{t+|it|ghigliottina|f}} * {{yid}}: {{t|yi|גיליאָטין|f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{topics|vi|Tử hình}} dr9s1w32vwi47yq43bzql73idunebil 2350920 2350667 2026-05-07T10:40:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350920 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:French era guillotine, Hoa Lo Prison Museum, Hanoi (2) (37608437105).jpg|nhỏ|'''Máy chém'''.]] {{-etymology-}} Từ ghép giữa {{compound|vi|máy|chém}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[máy|Máy]] dùng để [[chặt đầu]] [[người]] có [[án]] [[tử hình]]. #* '''1936''', [[w:Phan Khôi|Phan Khôi]], [[s:Thời sự trong tuần lễ/Kỳ 6|''Thời sự trong tuần lễ''/Kỳ 6]], Sông Hương: #*: {{quote|vi|Vì đơn xin chống án bên Pháp của Trị bị bác, nên ngày 5 [[octobre|Octobre]] vừa rồi tội nhân đã lên '''máy chém''' để trả nợ xã hội.}} #* {{quote-book|vi|author=[[w:Lê Minh Quốc|Lê Minh Quốc]]|title=Nguyễn Thái Học|publisher=NXB Văn học|year=1995|page=155|passage=Nửa đêm về sáng của ngày 21/11/1931 thực dân đã đưa anh rời khỏi xà lim để lên '''máy chém'''.}} # {{label|vi|thông tục}} Người [[bán hàng]] với [[giá]] quá [[đắt]]. {{-synonym-}} * (''Nghĩa 1'') {{l|vi|đoạn đầu đài}} {{q|từ cũ}} {{-trans-}} {{trans-top|Máy dùng để chặt đầu người có án tử hình}} * {{ara}}: {{t|ar|مقصلة|f|tr=miqṣala}} * {{eng}}: {{t+|en|guillotine}} * {{hye}}: {{t+|hy|գիլյոտին}}, {{t+|hy|կառափնատ}} * {{aze}}: {{t|az|gilyotin}} * {{pol}}: {{t+|pl|gilotyna|f}} * {{fas}}: {{t+|fa|گیوتین}} * {{por}}: {{t+|pt|guilhotina|f}} * {{ina}}: {{t|ia|guillotina}} * {{cat-old}}: {{t+|ca|guillotina|f}} * {{heb}}: {{t|he|גיליוטינה|f|tr=giliotína}} * {{dan}}: {{t|da|guillotine|c}} * {{deu}}: {{t+|de|Guillotine|f}}, {{t+|de|Fallbeil|n}} * {{kat}}: {{t|ka|გილიოტინა}} * {{nld}}: {{t+|nl|guillotine|f}}, {{t+|nl|valbijl|f}} * {{hun}}: {{t+|hu|nyaktiló}}, {{t+|hu|guillotine}} * {{ell}}: {{t+|el|λαιμητόμος|f}}, {{t+|el|γκιλοτίνα|f}}, {{t+|el|καρμανιόλα|f}} * {{ido}}: {{t+|io|gilotino}} * {{isl}}: {{t|is|fallöxi}} * {{kur}}: ** {{kmr}}: {{t|kmr|meşneqe}}, {{t|kmr|giyotîn}} * {{lad}}: {{t|lad|giyotina|f}} * {{msa}}: {{t|ms|gilotin}} * {{rus}}: {{t+|ru|гильотина|f}} {{trans-mid}} * {{jpn}}: {{t+|ja|ギロチン|tr=girochin}} * {{nrf}}: {{t|nrf|dgilliotinne|f}} * {{fra}}: {{t+|fr|guillotine|f}} * {{fin}}: {{t+|fi|giljotiini}} * {{epo}}: {{t|eo|gilotino}} * {{ron}}: {{t+|ro|ghilotină|f}} * {{ces}}: {{t+|cs|gilotina|f}} * {{slk}}: {{t+|sk|gilotína|f}} * {{slv}}: {{t+|sl|giljotina|f}} * {{tgl}}: {{t|tl|gilyotina}} * {{tgk}}: {{t|tg|гилйотина}} * {{spa}}: {{t+|es|guillotina|f}} * {{tha}}: {{t+|th|กิโยตีน|tr=gì-yoo-dtiin}} * {{tur}}: {{t+|tr|giyotin}} * {{swe}}: {{t+|sv|giljotin|f}} * {{kor}}: {{t+|ko|단두대}}, {{t+|ko|기요틴}} * {{zho}}: ** {{cmn}}: {{t+|cmn|斷頭台|tr=duàntóutái}} ** {{yue}}: {{t|yue|斷頭台}} * {{ukr}}: {{t|uk|гільйотина}} * {{vec}}: {{t+|vec|ghiƚotina|f}} * {{vol}}: {{t|vo|gilyoten}} * {{ita}}: {{t+|it|ghigliottina|f}} * {{yid}}: {{t|yi|גיליאָטין|f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{topics|vi|Tử hình}} bj7wux1bkye1p3q6np52wkvnatbv68d ngành 0 32163 2350668 2223922 2026-05-07T07:54:34Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350668 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[行]]: [[hảng]], [[hạnh]], [[hanh]], [[ngành]], [[hăng]], [[hãng]], [[hàng]], [[hành]] *[[梗]]: [[ngáng]], [[ngánh]], [[cảnh]], [[cánh]], [[ngạnh]], [[chành]], [[ngành]], [[gánh]], [[ghềnh]], [[nhánh]], [[nhành]], [[cạnh]], [[cành]] {{bottom}} {{-paro-}} :* [[ngảnh]] :* [[ngạnh]] {{-noun-}} {{vie-noun}} # [[bộ phận|Bộ phận]] lớn trong một [[dòng họ]]. #:'''''ngành''' trên'' #:'''''ngành''' trưởng'' # [[đơn vị|Đơn vị]] [[phân loại]] [[sinh học]], dưới [[giới]], trên [[lớp]]. #:'''''ngành''' thực vật hạt kín'' #:''lớp thú thuộc '''ngành''' động vật có xương sống'' # [[Hệ thống]] [[cơ quan]] [[chuyên môn]] của [[nhà nước]] từ [[trung ương]] đến [[địa phương]]. #:'''''ngành''' bưu chính viễn thông'' #:''cơ quan liên '''ngành''''' # [[lĩnh vực|Lĩnh vực]] [[hoạt động]] về chuyên môn, [[khoa học]], [[văn hoá]], [[kinh tế]]. #:'''''ngành''' công nghiệp'' #:'''''ngành''' kinh tế'' #:'''''ngành''' dệt may'' {{-trans-}} {{trans-top|Kinh tế}} * {{eng}}: [[sector]] {{trans-bottom}} {{trans-top|Danh từ phân loại sinh học}} * {{eng}}: [[phylum]] * {{cat-2}}: [[fílum]] {{m}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} {{R:WinVNKey:Lê Sơn Thanh}} kvj9csoxb5zgbcijfc9e2r5d4q55e1r 2350921 2350668 2026-05-07T10:40:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350921 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[行]]: [[hảng]], [[hạnh]], [[hanh]], [[ngành]], [[hăng]], [[hãng]], [[hàng]], [[hành]] *[[梗]]: [[ngáng]], [[ngánh]], [[cảnh]], [[cánh]], [[ngạnh]], [[chành]], [[ngành]], [[gánh]], [[ghềnh]], [[nhánh]], [[nhành]], [[cạnh]], [[cành]] {{bottom}} {{-paro-}} :* [[ngảnh]] :* [[ngạnh]] {{-noun-}} {{vie-noun}} # [[bộ phận|Bộ phận]] lớn trong một [[dòng họ]]. #:'''''ngành''' trên'' #:'''''ngành''' trưởng'' # [[đơn vị|Đơn vị]] [[phân loại]] [[sinh học]], dưới [[giới]], trên [[lớp]]. #:'''''ngành''' thực vật hạt kín'' #:''lớp thú thuộc '''ngành''' động vật có xương sống'' # [[Hệ thống]] [[cơ quan]] [[chuyên môn]] của [[nhà nước]] từ [[trung ương]] đến [[địa phương]]. #:'''''ngành''' bưu chính viễn thông'' #:''cơ quan liên '''ngành''''' # [[lĩnh vực|Lĩnh vực]] [[hoạt động]] về chuyên môn, [[khoa học]], [[văn hoá]], [[kinh tế]]. #:'''''ngành''' công nghiệp'' #:'''''ngành''' kinh tế'' #:'''''ngành''' dệt may'' {{-trans-}} {{trans-top|Kinh tế}} * {{eng}}: [[sector]] {{trans-bottom}} {{trans-top|Danh từ phân loại sinh học}} * {{eng}}: [[phylum]] * {{cat-old}}: [[fílum]] {{m}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} {{R:WinVNKey:Lê Sơn Thanh}} objlmcc7s9zxqqs0psmhc7mi5237ixr nhà xuất bản 0 32291 2350807 2164828 2026-05-07T08:08:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350807 wikitext text/x-wiki {{-vie-}} {{-alter form-}} * {{alter|vi|NXB|Nxb|q=viết tắt}} {{-etymology-}} Từ {{compound|vi|nhà|xuất bản}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[nhà]] [[xuất bản]]}} # [[cơ quan|Cơ quan]] [[xuất bản]] [[sách báo]], [[tranh ảnh]]. {{-trans-}} {{trans-top|Cơ quan xuất bản sách báo, tranh ảnh}} * {{ar}}: {{t|ar|دَار نَشْر|f}}, {{t|ar|نَشْر|m}} * {{af}}: {{t|af|uitgewery}} * {{en}}: {{t+|en|publisher}}, {{t+|en|publishing house}} * {{hy}}: {{t+|hy|հրատարակչություն}} * {{az}}: {{t|az|nəşriyyat}} * {{pl}}: {{t+|pl|wydawnictwo|n}} * {{ba}}: {{t|ba|нәшриәт}} * {{be}}: {{t|be|выдаве́цтва|n}} * {{pt}}: {{t+|pt|editora|f}}, {{t+|pt|editorial|m}} * {{bg}}: {{t|bg|издателска къща|f}} * {{cat-2}}: {{t+|ca|editorial|f}} * {{de}}: {{t+|de|Verlag|m}}, {{t+|de|Verlagshaus|n}}, {{t|de|Verlagsgesellschaft|f}} * {{nl}}: {{t+|nl|uitgeverij|f}} * {{hu}}: {{t+|hu|kiadó}} * {{el}}: {{t|el|εκδοτικός οίκος|m}} * {{kk}} {{t|kk|баспа}} * {{lt}}: {{t+|lt|leidykla|f}} * {{my}}: {{t+|my|ပုံနှိပ်တိုက်}} * {{no}}: *: {{nb}}: {{t|nb|forlag|n}} *: {{nn}}: {{t|nn|forlag|n}} * {{ru}}: {{t+|ru|изда́тельство|n}} * {{ja}}: {{t+|ja|出版社|tr=しゅっぱんしゃ, shuppansha}} * {{nog}}: {{t|nog|баспа}} * {{fr}}: {{t+|fr|maison d'édition|f}} * {{fi}}: {{t+|fi|kustantamo}}, {{t|fi|kirjankustantamo}} * {{ro}}: {{t+|ro|editură|f}} * {{cs}}: {{t+|cs|nakladatelství|n}} * {{sk}} {{t|sk|nakladateľstvo|n}} * {{ta}}: {{t+|ta|பதிப்பகம்}} * {{es}}: {{t+|es|editorial|f}} * {{sv}}: {{t+|sv|förlag|n}} * {{za}}: {{t|za|cuzbanjse}} * {{ko}}: {{t+|ko|출판사(出版社)}} * {{zh}}: *: {{cmn}}: {{t+|cmn|出版社|tr=chūbǎnshè}}, {{t+|cmn|書局|tr=shūjú}}, {{t+|cmn|書社|tr=shūshè}} * {{uk}}: {{t|uk|видавни́цтво|n}} * {{it}}: {{t|it|casa editrice|f}}, {{t+|it|editore|m}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Xuất bản}} fzomhpoymxyxijhqd9jnxzwwqyr3b97 2350922 2350807 2026-05-07T10:40:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350922 wikitext text/x-wiki {{-vie-}} {{-alter form-}} * {{alter|vi|NXB|Nxb|q=viết tắt}} {{-etymology-}} Từ {{compound|vi|nhà|xuất bản}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[nhà]] [[xuất bản]]}} # [[cơ quan|Cơ quan]] [[xuất bản]] [[sách báo]], [[tranh ảnh]]. {{-trans-}} {{trans-top|Cơ quan xuất bản sách báo, tranh ảnh}} * {{ar}}: {{t|ar|دَار نَشْر|f}}, {{t|ar|نَشْر|m}} * {{af}}: {{t|af|uitgewery}} * {{en}}: {{t+|en|publisher}}, {{t+|en|publishing house}} * {{hy}}: {{t+|hy|հրատարակչություն}} * {{az}}: {{t|az|nəşriyyat}} * {{pl}}: {{t+|pl|wydawnictwo|n}} * {{ba}}: {{t|ba|нәшриәт}} * {{be}}: {{t|be|выдаве́цтва|n}} * {{pt}}: {{t+|pt|editora|f}}, {{t+|pt|editorial|m}} * {{bg}}: {{t|bg|издателска къща|f}} * {{cat-old}}: {{t+|ca|editorial|f}} * {{de}}: {{t+|de|Verlag|m}}, {{t+|de|Verlagshaus|n}}, {{t|de|Verlagsgesellschaft|f}} * {{nl}}: {{t+|nl|uitgeverij|f}} * {{hu}}: {{t+|hu|kiadó}} * {{el}}: {{t|el|εκδοτικός οίκος|m}} * {{kk}} {{t|kk|баспа}} * {{lt}}: {{t+|lt|leidykla|f}} * {{my}}: {{t+|my|ပုံနှိပ်တိုက်}} * {{no}}: *: {{nb}}: {{t|nb|forlag|n}} *: {{nn}}: {{t|nn|forlag|n}} * {{ru}}: {{t+|ru|изда́тельство|n}} * {{ja}}: {{t+|ja|出版社|tr=しゅっぱんしゃ, shuppansha}} * {{nog}}: {{t|nog|баспа}} * {{fr}}: {{t+|fr|maison d'édition|f}} * {{fi}}: {{t+|fi|kustantamo}}, {{t|fi|kirjankustantamo}} * {{ro}}: {{t+|ro|editură|f}} * {{cs}}: {{t+|cs|nakladatelství|n}} * {{sk}} {{t|sk|nakladateľstvo|n}} * {{ta}}: {{t+|ta|பதிப்பகம்}} * {{es}}: {{t+|es|editorial|f}} * {{sv}}: {{t+|sv|förlag|n}} * {{za}}: {{t|za|cuzbanjse}} * {{ko}}: {{t+|ko|출판사(出版社)}} * {{zh}}: *: {{cmn}}: {{t+|cmn|出版社|tr=chūbǎnshè}}, {{t+|cmn|書局|tr=shūjú}}, {{t+|cmn|書社|tr=shūshè}} * {{uk}}: {{t|uk|видавни́цтво|n}} * {{it}}: {{t|it|casa editrice|f}}, {{t+|it|editore|m}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Xuất bản}} sfgg1xjfwuvxrcyxma9l0mmq1bol5s8 nói lái 0 32456 2350669 2313021 2026-05-07T07:54:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350669 wikitext text/x-wiki {{-vie-}} {{wp}} {{examples|{{l|vi|đại|Đại}} {{l|vi|phong}} nghĩa là {{l|vi|gió}} {{l|vi|lớn}}<br>''{{l|vi|gió|Gió}} {{l|vi|lớn}}'' thì ''{{l|vi|đổ}} {{l|vi|chùa}}''<br>''{{l|vi|đổ|Đổ}} {{l|vi|chùa}}'' thì ''{{l|vi|tượng}} {{l|vi|lo}}''<br>{{l|vi|tượng|Tượng}} {{l|vi|lo}} nói lái là {{l|vi|lọ}} {{l|vi|tương}}<br>''({{lw|vi|Trạng Quỳnh}})''<br><br>Đơn giản thôi. ''An Chi'' là nói lái từ “{{l|vi|y chang}}” theo cách của người Nam Bộ. Y chang nghĩa là y nguyên, đúng như nguyên bản.<br>''({{lw|vi|An Chi}})''<br><br>''{{l|vi|thầy giáo|Thầy giáo}}'' ''{{l|vi|tháo}} {{l|vi|giày}}'', ''{{l|vi|tháo}} cả {{l|vi|ủng}}'', ''{{l|vi|thủng}} cả {{l|vi|áo}}'', lấy ''{{l|vi|giáo án}}'' ''{{l|vi|dán}} {{l|vi|áo}}''.<br>''{{l|vi|nhà trường|Nhà trường}}'' ''{{l|vi|nhường}} {{l|vi|trà}}'', ''{{l|vi|nhường}} cả {{l|vi|hoa}}'', ''{{l|vi|nhoà}} cả {{l|vi|hương}}'', {{l|vi|lĩnh}} ''{{l|vi|lương hưu}}'' ''{{l|vi|lưu}} {{l|vi|hương}}''.<br><br>''{{l|vi|tam giác|Tam giác}}'' là ''{{l|vi|tát|tác}} {{l|vi|giam}}''<br>{{l|vi|tát|Tác}} là {{l|vi|đánh}}, {{l|vi|giam}} là {{l|vi|nhốt}}<br>''{{l|vi|đánh|Đánh}} {{l|vi|nhốt}}'' là ''{{l|vi|đốt}} {{l|vi|nhánh}}''<br>{{l|vi|đốt|Đốt}} là {{l|vi|thiêu|thiu}}, {{l|vi|nhánh}} là {{l|vi|cành}}<br>''{{l|vi|thiêu|Thiu}} {{l|vi|cành}}'' là ''{{l|en|thank you|thanh kìu}}''<br><br>''{{l|vi|hiện đại|Hiện đại}}'' nỗi gì ? Có mà ''{{l|vi|hại}} {{l|vi|điện}}'' ấy !<br><br>Tối qua mới ''{{l|vi|dấm đài}}'' hay sao {{l|vi|vậy|dợ}} ?<br>}} {{-pron-}} {{vie-pron}} {{-verb-}} '''nói lái''' # [[nói|Nói]] khác đi một [[tổ hợp]] [[hai]] [[ba]] [[âm tiết]] bằng cách [[chuyển đổi]] [[riêng]] [[phần]] [[vần]] hay là phần [[phụ âm]] [[đầu]], hoặc phần [[thanh điệu]], có thể có [[đổi]] cả [[trật tự]] các [[âm tiết]], để [[bông đùa]] hoặc [[chơi chữ]], [[châm biếm]]. #: ''Nói "đấu tranh, thì tránh đâu" là dùng lối '''nói lái'''.'' {{-syn-}} * [[nói trại]] {{-trans-}} {{đầu}} * {{eng}}: [[spoonerism]], [[marrowsky]] * {{pol}}: [[spuneryzm]] * {{isl}}: [[kristmennska]] * {{por}}: [[trocadilho]] {{m}}, [[spoonerismo]] {{m}}, [[antístrofe]] * {{bre}}: [[treuzviezadenn]] {{f}} * {{cat-2}}: [[contrapet]] {{m}} * {{dan}}: [[bakke snagvendt]] * {{heb}}: [[ביטוי משוכל]] * {{deu}}: [[Schüttelreim]], [[Spoonerismus]] * {{glg}}: [[retruécano]] * {{nld}}: [[spoonerisme]] {{n}} * {{ell}}: [[παραδρομή γλώσσας]] (''paradromí glóssas'') {{f}} * {{ido}}: [[vort-alterigo]] * {{mal}}: [[മറിച്ചു ചൊല്ലൽ]] * {{rus}}: [[спунеризм]] * {{jpn}}: [[語音転換]] * {{fin}}: [[sananmuunnos]] * {{fra}}: [[contrepèterie]] {{f}}, [[contrepet]] {{m}} * {{epo}}: [[kontraŭknalo]] * {{slv}}: [[spunerizem]] * {{tha}}: [[คำผวน]] {{n}} * {{ita}}: [[spoonerismo]] {{cuối}} {{-related-}} * [[nói lịu]] * [[nói nhịu]] {{-ref-}} {{R:FVDP}} [[Thể loại:Động từ tiếng Việt]] jjxwepv6mpl9tfwy2ml10aqnhii8pz4 2350923 2350669 2026-05-07T10:40:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350923 wikitext text/x-wiki {{-vie-}} {{wp}} {{examples|{{l|vi|đại|Đại}} {{l|vi|phong}} nghĩa là {{l|vi|gió}} {{l|vi|lớn}}<br>''{{l|vi|gió|Gió}} {{l|vi|lớn}}'' thì ''{{l|vi|đổ}} {{l|vi|chùa}}''<br>''{{l|vi|đổ|Đổ}} {{l|vi|chùa}}'' thì ''{{l|vi|tượng}} {{l|vi|lo}}''<br>{{l|vi|tượng|Tượng}} {{l|vi|lo}} nói lái là {{l|vi|lọ}} {{l|vi|tương}}<br>''({{lw|vi|Trạng Quỳnh}})''<br><br>Đơn giản thôi. ''An Chi'' là nói lái từ “{{l|vi|y chang}}” theo cách của người Nam Bộ. Y chang nghĩa là y nguyên, đúng như nguyên bản.<br>''({{lw|vi|An Chi}})''<br><br>''{{l|vi|thầy giáo|Thầy giáo}}'' ''{{l|vi|tháo}} {{l|vi|giày}}'', ''{{l|vi|tháo}} cả {{l|vi|ủng}}'', ''{{l|vi|thủng}} cả {{l|vi|áo}}'', lấy ''{{l|vi|giáo án}}'' ''{{l|vi|dán}} {{l|vi|áo}}''.<br>''{{l|vi|nhà trường|Nhà trường}}'' ''{{l|vi|nhường}} {{l|vi|trà}}'', ''{{l|vi|nhường}} cả {{l|vi|hoa}}'', ''{{l|vi|nhoà}} cả {{l|vi|hương}}'', {{l|vi|lĩnh}} ''{{l|vi|lương hưu}}'' ''{{l|vi|lưu}} {{l|vi|hương}}''.<br><br>''{{l|vi|tam giác|Tam giác}}'' là ''{{l|vi|tát|tác}} {{l|vi|giam}}''<br>{{l|vi|tát|Tác}} là {{l|vi|đánh}}, {{l|vi|giam}} là {{l|vi|nhốt}}<br>''{{l|vi|đánh|Đánh}} {{l|vi|nhốt}}'' là ''{{l|vi|đốt}} {{l|vi|nhánh}}''<br>{{l|vi|đốt|Đốt}} là {{l|vi|thiêu|thiu}}, {{l|vi|nhánh}} là {{l|vi|cành}}<br>''{{l|vi|thiêu|Thiu}} {{l|vi|cành}}'' là ''{{l|en|thank you|thanh kìu}}''<br><br>''{{l|vi|hiện đại|Hiện đại}}'' nỗi gì ? Có mà ''{{l|vi|hại}} {{l|vi|điện}}'' ấy !<br><br>Tối qua mới ''{{l|vi|dấm đài}}'' hay sao {{l|vi|vậy|dợ}} ?<br>}} {{-pron-}} {{vie-pron}} {{-verb-}} '''nói lái''' # [[nói|Nói]] khác đi một [[tổ hợp]] [[hai]] [[ba]] [[âm tiết]] bằng cách [[chuyển đổi]] [[riêng]] [[phần]] [[vần]] hay là phần [[phụ âm]] [[đầu]], hoặc phần [[thanh điệu]], có thể có [[đổi]] cả [[trật tự]] các [[âm tiết]], để [[bông đùa]] hoặc [[chơi chữ]], [[châm biếm]]. #: ''Nói "đấu tranh, thì tránh đâu" là dùng lối '''nói lái'''.'' {{-syn-}} * [[nói trại]] {{-trans-}} {{đầu}} * {{eng}}: [[spoonerism]], [[marrowsky]] * {{pol}}: [[spuneryzm]] * {{isl}}: [[kristmennska]] * {{por}}: [[trocadilho]] {{m}}, [[spoonerismo]] {{m}}, [[antístrofe]] * {{bre}}: [[treuzviezadenn]] {{f}} * {{cat-old}}: [[contrapet]] {{m}} * {{dan}}: [[bakke snagvendt]] * {{heb}}: [[ביטוי משוכל]] * {{deu}}: [[Schüttelreim]], [[Spoonerismus]] * {{glg}}: [[retruécano]] * {{nld}}: [[spoonerisme]] {{n}} * {{ell}}: [[παραδρομή γλώσσας]] (''paradromí glóssas'') {{f}} * {{ido}}: [[vort-alterigo]] * {{mal}}: [[മറിച്ചു ചൊല്ലൽ]] * {{rus}}: [[спунеризм]] * {{jpn}}: [[語音転換]] * {{fin}}: [[sananmuunnos]] * {{fra}}: [[contrepèterie]] {{f}}, [[contrepet]] {{m}} * {{epo}}: [[kontraŭknalo]] * {{slv}}: [[spunerizem]] * {{tha}}: [[คำผวน]] {{n}} * {{ita}}: [[spoonerismo]] {{cuối}} {{-related-}} * [[nói lịu]] * [[nói nhịu]] {{-ref-}} {{R:FVDP}} [[Thể loại:Động từ tiếng Việt]] fbrdtzjeyeovqcjhzwztn9ctoc4knee số học 0 33040 2350670 2017423 2026-05-07T07:54:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350670 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} Phiên âm từ chữ Hán [[數學]]. {{-pron-}} {{vie-pron}} {{-paro-}} :* [[sơ học]] {{-noun-}} '''số học''' # Ngành [[toán học]] chuyên [[nghiên cứu]] [[tính chất]] của các [[số]] và các [[phép tính]] về các số. {{-trans-}} {{đầu}} * {{eng}}: [[arithmetic]] * {{cat-2}}: [[aritmètica]] * {{fra}}: [[arithmétique]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vi:Số học]] m6y6f70tz54fkqldxkov8lc4jptdt0m 2350924 2350670 2026-05-07T10:40:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350924 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} Phiên âm từ chữ Hán [[數學]]. {{-pron-}} {{vie-pron}} {{-paro-}} :* [[sơ học]] {{-noun-}} '''số học''' # Ngành [[toán học]] chuyên [[nghiên cứu]] [[tính chất]] của các [[số]] và các [[phép tính]] về các số. {{-trans-}} {{đầu}} * {{eng}}: [[arithmetic]] * {{cat-old}}: [[aritmètica]] * {{fra}}: [[arithmétique]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vi:Số học]] aikrnld9k2pwkg612sg6y28rvadjbyq thang máy 0 33101 2350671 2281339 2026-05-07T07:54:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350671 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Borough tube station lifts 01.jpg|nhỏ|phải|thang máy]] {{-pron-}} {{vie-pron|thang|máy}} {{-paro-}} :* [[thang mây]] {{-etymology-}} {{etym-from | term = cầu thang | 2 term = máy }} {{-noun-}} {{pn}} # [[máy|Máy]] [[đưa]] [[người]], [[hàng hoá]] [[lên]] xuống các [[tầng]] trong một [[khu]] [[nhà]] có nhiều tầng hay trong [[hầm mỏ]], có [[dạng]] [[băng]] [[chuyền]] hoặc [[buồng]] [[di động]] [[thẳng đứng]]. {{-syn-}} * [[cầu thang máy ]] {{-trans-}} {{trans-top|máy đưa người và vật lên xuống các tầng gác}} * {{ara}}: [[مصعد]] (''míS`ad'') {{g|m}} * {{sqi}}: [[ashensor]] * {{eng}}: [[elevator]], [[lift]] {{term|Anh}} * {{hye}}: [[վերելակ]] (''verelak'') * {{pol}}: [[winda]], [[silos zbożowy]] * {{isl}}: [[lyfta]] {{f}} * {{por}}: [[elevador]] * {{bos}}: [[lift]] {{g|m}} * {{cat-2}}: [[ascensor]] {{g|m}} * {{dan}}: [[elevator]] {{g|c}} * {{deu}}: [[Fahrstuhl]] {{g|m}}, [[Lift]] {{g|m}}, [[Aufzug]] {{g|m}} * {{nld}}: [[lift]] * {{hun}}: [[lift]], [[felvonó]], [[személyfelvonó]] * {{ell}}: [[ανελκυστήρας]] (''anelkystíras'') {{g|m}}, [[ασανσέρ]] (''asansér'') {{n}} * {{mkd}}: [[лифт]] (''lift'') {{g|m}} * {{nor}}: [[heis]] {{g|m}} * {{rus}}: [[лифт]] (''lift'') {{g|m}}, [[элеватор]] (''elevátor'') {{g|m}} * {{jpn}}: [[エレベーター]] (''erebētā'') * {{fin}}: [[hissi]], [[viljasiilo]] * {{fra}}: [[ascenseur]] {{g|m}}, [[lift]] * {{cmn}}: ** {{Hant}}: [[電梯]] (''diàntī'', điện thê) ** {{Hans}}: [[电梯]] (''diàntī'', điện thê) * {{epo}}: [[lifto]] * {{ron}}: [[elevator]] {{n}} * {{ces}}: [[výtah]] {{g|m}} * {{srp}}: [[лифт]] (''lift'') {{g|m}} * {{slk}}: [[výťah]] {{g|m}}, [[lift]] {{g|m}} * {{swa}}: [[eleveta]] * {{spa}}: [[ascensor]] {{g|m}}, [[elevador]] {{g|m}} {{term|Mexico, Puerto Rico}} * {{tur}}: [[asansör]] * {{swe}}: [[hiss]] {{g|c}} * {{ita}}: [[ascensore]] {{g|m}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Danh từ|tiếng Việt}} 36b9ktz0za0ufrvxy34pqk8w0lmbeaq 2350925 2350671 2026-05-07T10:40:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350925 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Borough tube station lifts 01.jpg|nhỏ|phải|thang máy]] {{-pron-}} {{vie-pron|thang|máy}} {{-paro-}} :* [[thang mây]] {{-etymology-}} {{etym-from | term = cầu thang | 2 term = máy }} {{-noun-}} {{pn}} # [[máy|Máy]] [[đưa]] [[người]], [[hàng hoá]] [[lên]] xuống các [[tầng]] trong một [[khu]] [[nhà]] có nhiều tầng hay trong [[hầm mỏ]], có [[dạng]] [[băng]] [[chuyền]] hoặc [[buồng]] [[di động]] [[thẳng đứng]]. {{-syn-}} * [[cầu thang máy ]] {{-trans-}} {{trans-top|máy đưa người và vật lên xuống các tầng gác}} * {{ara}}: [[مصعد]] (''míS`ad'') {{g|m}} * {{sqi}}: [[ashensor]] * {{eng}}: [[elevator]], [[lift]] {{term|Anh}} * {{hye}}: [[վերելակ]] (''verelak'') * {{pol}}: [[winda]], [[silos zbożowy]] * {{isl}}: [[lyfta]] {{f}} * {{por}}: [[elevador]] * {{bos}}: [[lift]] {{g|m}} * {{cat-old}}: [[ascensor]] {{g|m}} * {{dan}}: [[elevator]] {{g|c}} * {{deu}}: [[Fahrstuhl]] {{g|m}}, [[Lift]] {{g|m}}, [[Aufzug]] {{g|m}} * {{nld}}: [[lift]] * {{hun}}: [[lift]], [[felvonó]], [[személyfelvonó]] * {{ell}}: [[ανελκυστήρας]] (''anelkystíras'') {{g|m}}, [[ασανσέρ]] (''asansér'') {{n}} * {{mkd}}: [[лифт]] (''lift'') {{g|m}} * {{nor}}: [[heis]] {{g|m}} * {{rus}}: [[лифт]] (''lift'') {{g|m}}, [[элеватор]] (''elevátor'') {{g|m}} * {{jpn}}: [[エレベーター]] (''erebētā'') * {{fin}}: [[hissi]], [[viljasiilo]] * {{fra}}: [[ascenseur]] {{g|m}}, [[lift]] * {{cmn}}: ** {{Hant}}: [[電梯]] (''diàntī'', điện thê) ** {{Hans}}: [[电梯]] (''diàntī'', điện thê) * {{epo}}: [[lifto]] * {{ron}}: [[elevator]] {{n}} * {{ces}}: [[výtah]] {{g|m}} * {{srp}}: [[лифт]] (''lift'') {{g|m}} * {{slk}}: [[výťah]] {{g|m}}, [[lift]] {{g|m}} * {{swa}}: [[eleveta]] * {{spa}}: [[ascensor]] {{g|m}}, [[elevador]] {{g|m}} {{term|Mexico, Puerto Rico}} * {{tur}}: [[asansör]] * {{swe}}: [[hiss]] {{g|c}} * {{ita}}: [[ascensore]] {{g|m}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Danh từ|tiếng Việt}} d1zjzmbqm9rnv6bzrmri234fz1pgz1w tê giác 0 33640 2350672 2019381 2026-05-07T07:54:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350672 wikitext text/x-wiki {{-vie-}} {{-etymology-}} Trước năm 1954, trong phương ngữ tiếng Việt miền Bắc con tê giác được gọi là “[[tê ngưu]]” (chữ Hán: [[犀牛]]) hoặc con “[[tê]]”, cái sừng của con tê ngưu được gọi là “tê giác” ([[犀角]]), trong đó “giác” là từ Hán-Việt ([[角]]), có nghĩa là cái sừng. Về sau nhiều người không biết “tê giác” chỉ cái sừng của con tê ngưu, nhầm tưởng tê giác là tên gọi của con vật có sừng, nên đã gọi con tê ngưu là “tê giác”. {{-info-}} [[Hình:Tê giác.jpg|thumb|'''Tê giác''' được nuôi ở Việt Nam.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''tê giác''' # {{term|Cổ}} [[sừng|Sừng]] của con [[tê ngưu]]. # [[thú|Thú]] có [[guốc]] [[ngón]] [[lẻ]], [[chân]] có ba [[ngón]], [[da]] [[dày]], có một hay hai [[sừng]] [[mọc]] trên [[mũi]]. {{-trans-}} {{trans-top|Thú có guốc ngón lẻ}} * {{afr}}: [[renoster]] * {{sqi}}: [[rinoceront]] {{m}} * {{eng}}: [[rhinoceros]] * {{ast}}: [[rinoceronte]] {{m}} * {{aze}}: [[kərgədan]] * {{eus}}: [[errinozero]] * {{bre}}: [[frikorneg]] {{m}} * {{bul}}: [[носорог#Tiếng Bulgari|носорог]] {{m}} (nosoróg) * {{cat-2}}: [[rinoceront]] {{m}} * {{dan}}: [[næsehorn]] {{n}} * {{nld}}: [[neushoorn]] {{m}} * {{ido}}: [[rinocero]] * {{ind}}: [[badak]] * {{mkd}}: [[носорог#Tiếng Macedoni|носорог]] {{m}} (nosorog) * {{fra}}: [[rhinocéros]] {{m}} * {{fin}}: [[sarvikuono]] * {{spa}}: [[rinoceronte]] {{m}} * {{tur}}: [[gergedan]] {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] nrei2hcm7c709766gtg5zqxh9pa5ad1 2350926 2350672 2026-05-07T10:40:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350926 wikitext text/x-wiki {{-vie-}} {{-etymology-}} Trước năm 1954, trong phương ngữ tiếng Việt miền Bắc con tê giác được gọi là “[[tê ngưu]]” (chữ Hán: [[犀牛]]) hoặc con “[[tê]]”, cái sừng của con tê ngưu được gọi là “tê giác” ([[犀角]]), trong đó “giác” là từ Hán-Việt ([[角]]), có nghĩa là cái sừng. Về sau nhiều người không biết “tê giác” chỉ cái sừng của con tê ngưu, nhầm tưởng tê giác là tên gọi của con vật có sừng, nên đã gọi con tê ngưu là “tê giác”. {{-info-}} [[Hình:Tê giác.jpg|thumb|'''Tê giác''' được nuôi ở Việt Nam.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''tê giác''' # {{term|Cổ}} [[sừng|Sừng]] của con [[tê ngưu]]. # [[thú|Thú]] có [[guốc]] [[ngón]] [[lẻ]], [[chân]] có ba [[ngón]], [[da]] [[dày]], có một hay hai [[sừng]] [[mọc]] trên [[mũi]]. {{-trans-}} {{trans-top|Thú có guốc ngón lẻ}} * {{afr}}: [[renoster]] * {{sqi}}: [[rinoceront]] {{m}} * {{eng}}: [[rhinoceros]] * {{ast}}: [[rinoceronte]] {{m}} * {{aze}}: [[kərgədan]] * {{eus}}: [[errinozero]] * {{bre}}: [[frikorneg]] {{m}} * {{bul}}: [[носорог#Tiếng Bulgari|носорог]] {{m}} (nosoróg) * {{cat-old}}: [[rinoceront]] {{m}} * {{dan}}: [[næsehorn]] {{n}} * {{nld}}: [[neushoorn]] {{m}} * {{ido}}: [[rinocero]] * {{ind}}: [[badak]] * {{mkd}}: [[носорог#Tiếng Macedoni|носорог]] {{m}} (nosorog) * {{fra}}: [[rhinocéros]] {{m}} * {{fin}}: [[sarvikuono]] * {{spa}}: [[rinoceronte]] {{m}} * {{tur}}: [[gergedan]] {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] jqfri5imo6h5owsnyz9xd6azv5aqh4r ung thư 0 33809 2350673 2125409 2026-05-07T07:54:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350673 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} {{vie-etym-sino|癰疽|[[áp xe]], [[loét]]}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # {{label|vi|y học}} [[u|U]] [[ác tính]], thường có [[di căn]], dễ gây [[tử vong]]. #: {{ux|vi|'''Ung thư''' phổi.}} {{-derived-}} {{columns|vi|2||ung thư buồng trứng |ung thư cổ tử cung |ung thư da |ung thư dạ dày |ung thư gan |ung thư học |ung thư phổi |ung thư thực quản |ung thư vòm họng |ung thư vú }} {{-trans-}} {{trans-top|U ác tính, thường có di căn, dễ gây tử vong}} * {{afr}}: {{t|af|kanker}} * {{eng}}: {{t+|en|cancer}} * {{aze}}: {{t+|az|xərçəng}} * {{eus}}: {{t+|eu|minbizi}} * {{cat-2}}: {{t+|ca|càncer|m}} * {{chr}}: {{t|chr|ᎠᏓᏰᏍᎩ}} * {{dan}}: {{t+|da|kræft|c}}, {{t+|da|cancer|c}} * {{nld}}: {{t+|nl|kanker|m}} * {{lao}}: {{t|lo|ມະເຮັງ}} * {{jpn}}: {{t+|ja|癌|tr=がん, gan}} * {{ces}}: {{t+|cs|rakovina|f}} * {{spa}}: {{t+|es|cáncer|m}} * {{tha}}: {{t+|th|มะเร็ง}} * {{vol}}: {{t+|vo|kanser}} * {{ita}}: {{t+|it|cancro|m}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} 49regwfu9dyrtmyrq8vxcdri05vax7u 2350927 2350673 2026-05-07T10:40:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350927 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etymology-}} {{vie-etym-sino|癰疽|[[áp xe]], [[loét]]}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # {{label|vi|y học}} [[u|U]] [[ác tính]], thường có [[di căn]], dễ gây [[tử vong]]. #: {{ux|vi|'''Ung thư''' phổi.}} {{-derived-}} {{columns|vi|2||ung thư buồng trứng |ung thư cổ tử cung |ung thư da |ung thư dạ dày |ung thư gan |ung thư học |ung thư phổi |ung thư thực quản |ung thư vòm họng |ung thư vú }} {{-trans-}} {{trans-top|U ác tính, thường có di căn, dễ gây tử vong}} * {{afr}}: {{t|af|kanker}} * {{eng}}: {{t+|en|cancer}} * {{aze}}: {{t+|az|xərçəng}} * {{eus}}: {{t+|eu|minbizi}} * {{cat-old}}: {{t+|ca|càncer|m}} * {{chr}}: {{t|chr|ᎠᏓᏰᏍᎩ}} * {{dan}}: {{t+|da|kræft|c}}, {{t+|da|cancer|c}} * {{nld}}: {{t+|nl|kanker|m}} * {{lao}}: {{t|lo|ມະເຮັງ}} * {{jpn}}: {{t+|ja|癌|tr=がん, gan}} * {{ces}}: {{t+|cs|rakovina|f}} * {{spa}}: {{t+|es|cáncer|m}} * {{tha}}: {{t+|th|มะเร็ง}} * {{vol}}: {{t+|vo|kanser}} * {{ita}}: {{t+|it|cancro|m}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} crih0srsmxdbro6sqq36dj3dos70l97 vườn bách thú 0 33837 2350674 2145794 2026-05-07T07:54:59Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350674 wikitext text/x-wiki {{-vie-}} {{wikipedia}} [[Hình:Chimpanzee in zoo AB.jpg|nhỏ|phải|Tinh tinh được nuôi nhốt trong '''vườn bách thú'''.]] {{-etymology-}} Từ {{ghép|vi|vườn|bách thú}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[vườn]] [[bách thú]]}} # {{nhãn|vi|formal}} [[vườn|Vườn]] [[công cộng]] [[tập hợp]] nhiều loài [[động vật]] khác nhau để làm nơi [[tham quan]] và [[nghiên cứu]]. #: {{synonyms|vi|vườn thú|sở thú}} #* {{quote-journal|vi|5/2/2013|Vũ Hà|Ngủ với rắn để đón Tết|w:VnExpress|url=https://vnexpress.net/ngu-voi-ran-de-don-tet-2423308.html|archiveurl=https://web.archive.org/web/20240205182235/https://vnexpress.net/ngu-voi-ran-de-don-tet-2423308.html|archivedate=5/2/2024|passage=Một ông chủ '''vườn bách thú''' ở Philippines đưa ra một quyết định táo bạo là đi ngủ cùng bộ sưu tập rắn của mình để chào đón năm mới Quý Tỵ.}} {{-trans-}} {{trans-top|Vườn công cộng tập hợp nhiều loài động vật khác nhau}} * {{ara}}: {{t|ar|حَدِيقَة الْحَيَوَان|tr=ḥadīqat al-ḥayawānāt|f}} *: {{arz}}: {{t|arz|جنينة الحيوانات|tr=genenet el-ḥayawanat|f|}} * {{afr}}: {{t+|af|dieretuin}} * {{sqi}}: {{t|sq|kopësht zoologjik|m}} * {{amh}}: {{t|am|መካነ አራዊት}} * {{eng}}: {{t+|en|zoo}} * {{hye}}: {{qualifier|trang trọng}} {{t+|hy|կենդանաբանական այգի}}, {{qualifier|không trang trọng}} {{t+|hy|գազանանոց}} * {{asm}}: {{t|as|চিৰিয়াখানা}} * {{ast}}: {{t|ast|zoolóxicu|m}} * {{aze}}: {{t|az|zoologiya parkı}} * {{pol}}: {{t+|pl|ogród zoologiczny|m}}, {{t+|pl|zoo|n}}, {{t+|pl|zoolog|m}}, {{t+|pl|zwierzyniec|m}} * {{fas}}: {{t+|fa|باغِ وَحْش|tr=bâğ-e vahš}} * {{bel}}: {{t|be|заапа́рк|m}}, {{t|be|заалагі́чны парк|m}} * {{ben}}: {{t+|bn|চিড়িয়াখানা}} * {{por}}: {{t+|pt|zoológico|m}}, {{t|pt|jardim zoológico|m}}, {{t+|pt|zoo|m}} {{qualifier|không phổ biến}} * {{bul}}: {{t|bg|зоопа́рк|m}}, {{t|bg|зоологи́ческа гради́на|f}} * {{cat-2}}: {{t|ca|zoològic|m}} * {{chr}}: {{t|chr|ᏧᎾᏓᎴᎸᏓᏧᏂᏙᏗ}} * {{kw}}: {{t|kw|milva|f}} * {{heb}}: {{t+|he|גַּן חַיּוֹת|m|tr=gan khayót}}, {{t|he|גן זואולוגי|m|tr=gan zo'ológi}} * {{dan}}: {{t|da|zoo|c}}, {{t|da|zoologisk have|c}} * {{deu}}: {{t+|de|Zoo|m}}, {{t+|de|Tiergarten|m}}, {{t+|de|Tierpark|m}} * {{est}}: {{t+|et|loomaaed}} * {{myv}}: {{t|myv|ракшапире}} * {{gl}}: {{t|gl|zoolóxico|m}}, {{t|gl|parque zoolóxico|m}}, {{t+|gl|zoo|m}} * {{kat}}: {{t+|ka|ზოოპარკი}} * {{nld}}: {{t+|nl|dierentuin}}, {{t+|nl|zoo}} * {{pdt}}: {{t|pdt|Tiabood|f}}, {{t|pdt|Tiagoaden|m}} * {{hin}}: {{t+|hi|चिड़ियाघर|m}}, {{t|hi|चिड़ियाख़ाना|m}}, {{t|hi|पशु-वाटिका|m}}, {{t|hi|जीवादि वाटिका|m}} * {{hun}}: {{t+|hu|állatkert}} * {{ell}}: {{t+|el|ζωολογικός κήπος|m}} *: {{grc}}: {{t|grc|θηριοτροφεῖον|n}}, {{t|grc|ζωγρεῖον|n}} * {{isl}}: {{t+|is|dýragarður|m}} * {{ido}}: {{t+|io|zoo}}, {{t+|io|menajerio}}, {{t|io|animalparko}} * {{ind}}: {{t+|id|kebun binatang}}, {{t|id|bonbin}} {{qualifier|colloquial}} * {{gle}}: {{t+|ga|zú|m}}, {{t|ga|gairdín ainmhithe|m}} * {{kk}}: {{t|kk|хайуанаттар бағы}}, {{t|kk|хайуанатхана}} * {{khm}}: {{t|km|សួនសត្វ}}, {{t|km|ឧទ្យានសត្វ}} * {{kur}}: *: {{kmr}}: {{t+|kmr|baxçeyê heywanan}} * {{ky}}: {{t+|ky|ажайыпкана}}, {{t|ky|аң бакчасы}} * {{lao}}: {{t+|lo|ສວນສັດ}} * {{lat}}: {{t|la|vīvārium|n}} * {{lav}}: {{t|lv|zooloģiskais dārzs|m}}, {{t|lv|zoodārzs|m}} * {{lit}}: {{t|lt|zoologijos sodas|m}} * {{mkd}}: {{t|mk|зоолошка градина|f}} * {{ms}}: {{t+|ms|zoo}}, {{t|ms|kebun binatang}}, {{t|ms|taman haiwan}} * {{mt}}: {{t|mt|żu|m}} * {{mya}}: {{t+|my|တိရစ္ဆာန်ရုံ}}, {{t+|my|တိရစ္ဆာန်ဥယျာဉ်}} * {{mon}}: *: {{Cyrl}}: {{t|mn|амьтны хүрээлэн}} * {{mtq}}: {{t|mtq|wần bách thủ}} * {{nor}}: *: {{nob}}: {{t|nb|dyrehage|m}} *: {{nno}}: {{t|nn|dyrehage|m}} * {{rus}}: {{t+|ru|зоопа́рк|m}}, {{t|ru|зоологи́ческий сад|m}}, {{t+|ru|зооса́д|m}}, {{t+|ru|звери́нец|m}} {{qualifier|bầy thú của gánh xiếc}} * {{jpn}}: {{t+|ja|動物園|tr=どうぶつえん, dōbutsuen}} * {{or}}: {{t|or|ଚିଡିଆଖାନ}} * {{ps}}: {{t+|ps|ژوبڼ|m|tr=žobaṇ}} * {{fra}}: {{t+|fr|zoo|m}} * {{fin}}: {{t+|fi|eläintarha}} * {{qu}}: {{t|qu|k'ita uywap wasin}} * {{epo}}: {{t+|eo|zoo}}, {{t|eo|bestoĝardeno}}, {{t|eo|zoologia ĝardeno}} * {{ron}}: {{t+|ro|zoo|f}}, {{t+|ro|parc zoologic|n}}, {{t+|ro|grădină zoologică|f}}, {{t+|ro|zooparc|n}} * {{smn}}: {{t|smn|elleekärdi}} * {{ces}}: {{t+|cs|zoo|f}}, {{t+|cs|zoologická zahrada|f}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|зоо̀лошкӣ вр̏т|m}}, {{t|sh|зверињак|m}} *: {{Latn}}: {{t|sh|zoòloškī vȑt|m}}, {{t|sh|zverinjak|m}} * {{shn}}: {{t|shn|သူၼ်သတ်း}} * {{slk}}: {{t|sk|zoologická záhrada|f}}, {{t|sk|zoo|m}} * {{slv}}: {{t|sl|živalski vrt|m}} * {{swa}}: {{t|sw|bustani ya wanyama}} * {{tgl}}: {{t|tl|hayupan}} * {{tg}}: {{t|tg|боғи ҳайвонот}}, {{t|tg|боғи ваҳш}} * {{spa}}: {{t+|es|zoo|m}}, {{t|es|jardín zoo|m}}, {{t+|es|zoológico|m}} * {{aii}}: {{t|aii|ܓܲܢܬܵܐ ܕܚܲܝܘܵܬܹ̈ܐ|f|tr=gantā d-ḵaywātē}} * {{tel}}: {{t|te|జంతుప్రదర్శనశాల}} * {{tha}}: {{t+|th|สวนสัตว์}} * {{tur}}: {{t+|tr|hayvanat bahçesi}} * {{swe}}: {{t+|sv|zoo|n}}, {{t+|sv|djurpark|c}} * {{dtp}}: {{t|dtp|zoo}} * {{mel}}: {{t|mel|zoo}} * {{kor}}: {{t+|ko|동물원(動物園)}} * {{zho}}: *: {{nan}}: {{t+|nan|動物園|tr=tōng-bu̍t-hn̂g}} *: {{cmn}}: {{t+|cmn|動物園|tr=dòngwùyuán}} *: {{yue}}: {{t|yue|動物園|tr=dung6 mat6 jyun4}} * {{tuk}}: {{t|tk|haýwanat bagy}} * {{ukr}}: {{t|uk|зоопа́рк|m}}, {{t+|uk|звіри́нець|m|lit=menagerie}} * {{urd}}: {{t|ur|چِڑْیا گَھر|m}}, {{t|ur|چِڑْیا خانَہ|m}} * {{ug}}: {{t|ug|ھايۋانات باغچىسى}} * {{uz}}: {{t|uz|hayvonot bogʻi}}, {{t|uz|hayvonot bogʻlari}} * {{cym}}: {{t|cy|sw|m}}, {{t|cy|milodfa|f}} * {{wa}}: {{t+|wa|zô|m}}, {{t|wa|djårdén zolodjike|m}}, {{t|wa|djårdén d' aclimataedje|m}} * {{ita}}: {{t+|it|zoo|m}} * {{yid}}: {{t|yi|זאָאָגאָרטן|m}}, {{t|yi|זאָאָלאָגישער גאָרטן|m}}, {{t|yi|זאָאָפּאַרק|m}} {{trans-bottom}} {{-see also-}} * {{l|vi|vườn bách thảo}} * {{l|vi|thảo cầm viên}} {{-reference-}} {{R:FVDP}} 5i6309atv6uz8xep47apfewn3s4d1q3 2350928 2350674 2026-05-07T10:40:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350928 wikitext text/x-wiki {{-vie-}} {{wikipedia}} [[Hình:Chimpanzee in zoo AB.jpg|nhỏ|phải|Tinh tinh được nuôi nhốt trong '''vườn bách thú'''.]] {{-etymology-}} Từ {{ghép|vi|vườn|bách thú}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[vườn]] [[bách thú]]}} # {{nhãn|vi|formal}} [[vườn|Vườn]] [[công cộng]] [[tập hợp]] nhiều loài [[động vật]] khác nhau để làm nơi [[tham quan]] và [[nghiên cứu]]. #: {{synonyms|vi|vườn thú|sở thú}} #* {{quote-journal|vi|5/2/2013|Vũ Hà|Ngủ với rắn để đón Tết|w:VnExpress|url=https://vnexpress.net/ngu-voi-ran-de-don-tet-2423308.html|archiveurl=https://web.archive.org/web/20240205182235/https://vnexpress.net/ngu-voi-ran-de-don-tet-2423308.html|archivedate=5/2/2024|passage=Một ông chủ '''vườn bách thú''' ở Philippines đưa ra một quyết định táo bạo là đi ngủ cùng bộ sưu tập rắn của mình để chào đón năm mới Quý Tỵ.}} {{-trans-}} {{trans-top|Vườn công cộng tập hợp nhiều loài động vật khác nhau}} * {{ara}}: {{t|ar|حَدِيقَة الْحَيَوَان|tr=ḥadīqat al-ḥayawānāt|f}} *: {{arz}}: {{t|arz|جنينة الحيوانات|tr=genenet el-ḥayawanat|f|}} * {{afr}}: {{t+|af|dieretuin}} * {{sqi}}: {{t|sq|kopësht zoologjik|m}} * {{amh}}: {{t|am|መካነ አራዊት}} * {{eng}}: {{t+|en|zoo}} * {{hye}}: {{qualifier|trang trọng}} {{t+|hy|կենդանաբանական այգի}}, {{qualifier|không trang trọng}} {{t+|hy|գազանանոց}} * {{asm}}: {{t|as|চিৰিয়াখানা}} * {{ast}}: {{t|ast|zoolóxicu|m}} * {{aze}}: {{t|az|zoologiya parkı}} * {{pol}}: {{t+|pl|ogród zoologiczny|m}}, {{t+|pl|zoo|n}}, {{t+|pl|zoolog|m}}, {{t+|pl|zwierzyniec|m}} * {{fas}}: {{t+|fa|باغِ وَحْش|tr=bâğ-e vahš}} * {{bel}}: {{t|be|заапа́рк|m}}, {{t|be|заалагі́чны парк|m}} * {{ben}}: {{t+|bn|চিড়িয়াখানা}} * {{por}}: {{t+|pt|zoológico|m}}, {{t|pt|jardim zoológico|m}}, {{t+|pt|zoo|m}} {{qualifier|không phổ biến}} * {{bul}}: {{t|bg|зоопа́рк|m}}, {{t|bg|зоологи́ческа гради́на|f}} * {{cat-old}}: {{t|ca|zoològic|m}} * {{chr}}: {{t|chr|ᏧᎾᏓᎴᎸᏓᏧᏂᏙᏗ}} * {{kw}}: {{t|kw|milva|f}} * {{heb}}: {{t+|he|גַּן חַיּוֹת|m|tr=gan khayót}}, {{t|he|גן זואולוגי|m|tr=gan zo'ológi}} * {{dan}}: {{t|da|zoo|c}}, {{t|da|zoologisk have|c}} * {{deu}}: {{t+|de|Zoo|m}}, {{t+|de|Tiergarten|m}}, {{t+|de|Tierpark|m}} * {{est}}: {{t+|et|loomaaed}} * {{myv}}: {{t|myv|ракшапире}} * {{gl}}: {{t|gl|zoolóxico|m}}, {{t|gl|parque zoolóxico|m}}, {{t+|gl|zoo|m}} * {{kat}}: {{t+|ka|ზოოპარკი}} * {{nld}}: {{t+|nl|dierentuin}}, {{t+|nl|zoo}} * {{pdt}}: {{t|pdt|Tiabood|f}}, {{t|pdt|Tiagoaden|m}} * {{hin}}: {{t+|hi|चिड़ियाघर|m}}, {{t|hi|चिड़ियाख़ाना|m}}, {{t|hi|पशु-वाटिका|m}}, {{t|hi|जीवादि वाटिका|m}} * {{hun}}: {{t+|hu|állatkert}} * {{ell}}: {{t+|el|ζωολογικός κήπος|m}} *: {{grc}}: {{t|grc|θηριοτροφεῖον|n}}, {{t|grc|ζωγρεῖον|n}} * {{isl}}: {{t+|is|dýragarður|m}} * {{ido}}: {{t+|io|zoo}}, {{t+|io|menajerio}}, {{t|io|animalparko}} * {{ind}}: {{t+|id|kebun binatang}}, {{t|id|bonbin}} {{qualifier|colloquial}} * {{gle}}: {{t+|ga|zú|m}}, {{t|ga|gairdín ainmhithe|m}} * {{kk}}: {{t|kk|хайуанаттар бағы}}, {{t|kk|хайуанатхана}} * {{khm}}: {{t|km|សួនសត្វ}}, {{t|km|ឧទ្យានសត្វ}} * {{kur}}: *: {{kmr}}: {{t+|kmr|baxçeyê heywanan}} * {{ky}}: {{t+|ky|ажайыпкана}}, {{t|ky|аң бакчасы}} * {{lao}}: {{t+|lo|ສວນສັດ}} * {{lat}}: {{t|la|vīvārium|n}} * {{lav}}: {{t|lv|zooloģiskais dārzs|m}}, {{t|lv|zoodārzs|m}} * {{lit}}: {{t|lt|zoologijos sodas|m}} * {{mkd}}: {{t|mk|зоолошка градина|f}} * {{ms}}: {{t+|ms|zoo}}, {{t|ms|kebun binatang}}, {{t|ms|taman haiwan}} * {{mt}}: {{t|mt|żu|m}} * {{mya}}: {{t+|my|တိရစ္ဆာန်ရုံ}}, {{t+|my|တိရစ္ဆာန်ဥယျာဉ်}} * {{mon}}: *: {{Cyrl}}: {{t|mn|амьтны хүрээлэн}} * {{mtq}}: {{t|mtq|wần bách thủ}} * {{nor}}: *: {{nob}}: {{t|nb|dyrehage|m}} *: {{nno}}: {{t|nn|dyrehage|m}} * {{rus}}: {{t+|ru|зоопа́рк|m}}, {{t|ru|зоологи́ческий сад|m}}, {{t+|ru|зооса́д|m}}, {{t+|ru|звери́нец|m}} {{qualifier|bầy thú của gánh xiếc}} * {{jpn}}: {{t+|ja|動物園|tr=どうぶつえん, dōbutsuen}} * {{or}}: {{t|or|ଚିଡିଆଖାନ}} * {{ps}}: {{t+|ps|ژوبڼ|m|tr=žobaṇ}} * {{fra}}: {{t+|fr|zoo|m}} * {{fin}}: {{t+|fi|eläintarha}} * {{qu}}: {{t|qu|k'ita uywap wasin}} * {{epo}}: {{t+|eo|zoo}}, {{t|eo|bestoĝardeno}}, {{t|eo|zoologia ĝardeno}} * {{ron}}: {{t+|ro|zoo|f}}, {{t+|ro|parc zoologic|n}}, {{t+|ro|grădină zoologică|f}}, {{t+|ro|zooparc|n}} * {{smn}}: {{t|smn|elleekärdi}} * {{ces}}: {{t+|cs|zoo|f}}, {{t+|cs|zoologická zahrada|f}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|зоо̀лошкӣ вр̏т|m}}, {{t|sh|зверињак|m}} *: {{Latn}}: {{t|sh|zoòloškī vȑt|m}}, {{t|sh|zverinjak|m}} * {{shn}}: {{t|shn|သူၼ်သတ်း}} * {{slk}}: {{t|sk|zoologická záhrada|f}}, {{t|sk|zoo|m}} * {{slv}}: {{t|sl|živalski vrt|m}} * {{swa}}: {{t|sw|bustani ya wanyama}} * {{tgl}}: {{t|tl|hayupan}} * {{tg}}: {{t|tg|боғи ҳайвонот}}, {{t|tg|боғи ваҳш}} * {{spa}}: {{t+|es|zoo|m}}, {{t|es|jardín zoo|m}}, {{t+|es|zoológico|m}} * {{aii}}: {{t|aii|ܓܲܢܬܵܐ ܕܚܲܝܘܵܬܹ̈ܐ|f|tr=gantā d-ḵaywātē}} * {{tel}}: {{t|te|జంతుప్రదర్శనశాల}} * {{tha}}: {{t+|th|สวนสัตว์}} * {{tur}}: {{t+|tr|hayvanat bahçesi}} * {{swe}}: {{t+|sv|zoo|n}}, {{t+|sv|djurpark|c}} * {{dtp}}: {{t|dtp|zoo}} * {{mel}}: {{t|mel|zoo}} * {{kor}}: {{t+|ko|동물원(動物園)}} * {{zho}}: *: {{nan}}: {{t+|nan|動物園|tr=tōng-bu̍t-hn̂g}} *: {{cmn}}: {{t+|cmn|動物園|tr=dòngwùyuán}} *: {{yue}}: {{t|yue|動物園|tr=dung6 mat6 jyun4}} * {{tuk}}: {{t|tk|haýwanat bagy}} * {{ukr}}: {{t|uk|зоопа́рк|m}}, {{t+|uk|звіри́нець|m|lit=menagerie}} * {{urd}}: {{t|ur|چِڑْیا گَھر|m}}, {{t|ur|چِڑْیا خانَہ|m}} * {{ug}}: {{t|ug|ھايۋانات باغچىسى}} * {{uz}}: {{t|uz|hayvonot bogʻi}}, {{t|uz|hayvonot bogʻlari}} * {{cym}}: {{t|cy|sw|m}}, {{t|cy|milodfa|f}} * {{wa}}: {{t+|wa|zô|m}}, {{t|wa|djårdén zolodjike|m}}, {{t|wa|djårdén d' aclimataedje|m}} * {{ita}}: {{t+|it|zoo|m}} * {{yid}}: {{t|yi|זאָאָגאָרטן|m}}, {{t|yi|זאָאָלאָגישער גאָרטן|m}}, {{t|yi|זאָאָפּאַרק|m}} {{trans-bottom}} {{-see also-}} * {{l|vi|vườn bách thảo}} * {{l|vi|thảo cầm viên}} {{-reference-}} {{R:FVDP}} k90sdul6ntmhgeyma6thpvs6qxocrn2 át 0 33909 2350675 2280350 2026-05-07T07:55:02Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350675 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “at”}} {{-vie-}} {{-info-}} [[Tập tin:Ace playing cards.jpg|nhỏ|Bốn lá bài '''át''' trong bộ bài Tây.]] {{-etym-}} * {{q|ng. dt.}} {{bor+|vi|fr|as}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-át.wav}} {{-homo-}} * [[ác]] {{-hanviet-}} {{top}} * [[齾]]: [[át]], [[ngạt]] * [[圠]]: [[át]] * [[揠]]: [[át]], [[yển]], [[yết]], [[loát]] * [[遏]]: [[át]] * [[頜]]: [[cáp]], [[hàm]], [[át]], [[hạp]] * [[餲]]: [[ế]], [[ái]], [[át]], [[hạt]] * [[輵]]: [[cát]], [[át]] {{mid}} * [[阏]]: [[yên]], [[át]] * [[曷]]: [[át]], [[hạt]] * [[胺]]: [[át]], [[an]] * [[洝]]: [[án]], [[át]] * [[閼]]: [[yên]], [[át]] * [[頞]]: [[át]] {{bottom}} {{-hanviet-t-}} {{top}} * [[胺]]: [[án]], [[át]], [[an]] * [[餲]]: [[ái]], [[át]], [[ế]] * [[閼]]: [[yên]], [[át]] {{mid}} * [[遏]]: [[át]] * [[頞]]: [[át]] {{bottom}} {{-nôm-}} {{top}} * [[握]]: [[ốc]], [[ác]], [[át]] * [[圠]]: [[át]] * [[󰐴]]: [[át]] * [[𣿌]]: [[át]], [[ướt]], [[hạt]], [[ạt]] * [[遏]]: [[át]], [[ớt]], [[ướt]], [[ợt]] * [[𢖮]]: [[ắt]], [[át]] * [[輵]]: [[át]] * [[阏]]: [[yên]], [[át]] {{mid}} * [[曷]]: [[át]], [[hạt]], [[hột]], [[hợt]] * [[乙]]: [[ặc]], [[ắc]], [[ắt]], [[át]], [[hắt]], [[ất]], [[lớt]], [[ít]] * [[齾]]: [[át]], [[ngạt]] * [[謁]]: [[át]], [[yết]], [[ét]] * [[胺]]: [[ươn]], [[an]], [[át]], [[ườn]] * [[洝]]: [[át]] * [[閼]]: [[yên]], [[át]] * [[頞]]: [[át]] {{bottom}} {{-paro-}} {{đầu}} * [[ắt]] * [[ất]] {{cuối}} {{-noun-}} {{vie-noun}} # (''Trò chơi bài'') Tên gọi của con [[bài]] chỉ mang có một [[dấu]] [[quy ước]] trong bộ [[bài Tây]], thường là con bài có [[giá trị]] [[cao]] nhất. #: {{ux|vi|Con '''át''' chủ.}} {{-syn-}} * [[ách]] * [[xì]] {{-drv-}} {{đầu}} * [[át bích]] * [[át chủ bài]] * [[át cơ]] * [[át nhép]] * [[át rô]] {{cuối}} {{-trans-}} {{trans-top|Tên gọi con bài}} * {{ara}}: {{t|ar|آس|m|tr=ʾās}} * {{eng}}: {{t|en|ace}} * {{pol}}: {{t|pl|as|m}} * {{por}}: {{t|pt|ás|m}} * {{cat-2}}: {{t|ca|as|m}} * {{heb}}: {{t|he|אס|m}} * {{dan}}: {{t|da|es|n}} * {{deu}}: {{t|de|Ass|n}} * {{est}}: {{t|et|äss}} * {{fao}}: {{t|fo|ess|n}} * {{glg}}: {{t|gl|ás|m}} * {{kat}}: {{t|ka|ტუზი|tr=ṭuzi}} * {{nld}}: {{t|nl|aas}} * {{hau}}: {{t|ha|sarki|m}} * {{hin}}: {{t|hi|इक्का|tr=ikkā|m}} * {{hun}}: {{t|hu|ász}} * {{ell}}: {{t|el|άσος|tr=ásos|m}} * {{ido}}: {{t|io|aso}} * {{gle}}: {{t|ga|aon}} * {{ltz}}: {{t|lb|Ass|m}}, {{t|lb|Äss|m}} * {{mon}}: {{t|mn|тамга|tr=tamga}} * {{nor}}: ** {{nob}}: {{t|nb|ess|n}} ** {{nno}}: {{t|nn|ess|n}} * {{rus}}: {{t|ru|туз|m|tr=tuz}} * {{jpn}}: {{t|ja|エース|tr=ēsu}} * {{fra}}: {{t|fr|as|m}} * {{fin}}: {{t|fi|ässä}} * {{epo}}: {{t|eo|aso}} * {{ces}}: {{t|cs|eso|n}} * {{swa}}: {{t|sw|ree}}, {{t|sw|rea}}, {{t|sw|rei}} * {{tgl}}: {{t|tl|alas}} * {{spa}}: {{t|es|as|m}} * {{tel}}: {{t|te|ఆసు|tr=āsu}} * {{swe}}: {{t|sv|ess|n}}, {{t|sv|äss|n}} * {{zho}}: ** {{cmn}}: {{t|cmn|尖兒|sc=Hani}}, {{t|cmn|尖儿|tr=jiānr|sc=Hani}} ** {{yue}}: {{t|yue|煙士|sc=Hani}}, {{t|yue|烟士|tr=jin1 si6-2|sc=Hani}}, {{t|yue|煙|sc=Hani}}, {{t|yue|烟|tr=jin1|sc=Hani}} * {{ukr}}: {{t|uk|туз|m|tr=tuz}} * {{cym}}: {{t|cy|as}} * {{ita}}: {{t|it|asso|m}} {{trans-bottom}} {{-see also-}} {{bảng:bộ bài Tây/vi}} {{-verb-}} {{vie-verb}} # Làm cho [[che lấp]] và [[đánh bạt]] đi bằng một [[tác động]] [[mạnh]] hơn. #: {{ux|vi|Nói '''át''' giọng người khác.}} #: {{ux|vi|'''Át''' cả tiếng sóng.}} #: {{ux|vi|Mắng '''át''' đi.}} {{-drv-}} * [[át vía]] * [[lấn át]] {{-adjc-}} {{vie-adj}} # {{label|vi|cổ}} [[ướt|Ướt]]. #* [[s:Phật thuyết đại báo phụ mẫu ân trọng kinh|Phật thuyết đại báo phụ mẫu ân trọng kinh]], tr. 18a: #: {{ux|vi|...chốn ráo con nằm, chốn '''át''' cho nạ nằm.}} #* [[s:Phật thuyết đại báo phụ mẫu ân trọng kinh|Phật thuyết đại báo phụ mẫu ân trọng kinh]], tr. 14a: #: {{ux|vi|...rời chốn ráo đến chốn '''át'''.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{R:Vương Lộc}} {{-non-}} {{-etymology-}} {{root|non|ine-pro|*h₁ed-}} Có liên quan đến {{mention|non|eta}}. Nguồn gốc cuối cùng từ {{derived|non|ine-pro|*h₁ed-||ăn}}. {{-noun-}} {{non-noun|n}} # Hành động [[ăn]]. # [[đồ ăn|Đồ ăn]], [[thức ăn]]. {{-decl-}} {{non-decl-n-a|át|gs=áz}} {{-desc-}} * {{desc|is|át}} * {{desc|nn|åt}} * {{desc|nb|åt}} {{-see also-}} * {{l|non|áta}} {{-reference-}} * [https://archive.org/stream/concisedictionar001857#page/38 át], ''A Concise Dictionary of Old Icelandic'', G. T. Zoëga, Clarendon Press, 1910, tại [https://archive.org/details/concisedictionar001857 Internet Archive]. 0qf2sgqljppe753b1pbzxj70id4768a 2350929 2350675 2026-05-07T10:40:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350929 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “at”}} {{-vie-}} {{-info-}} [[Tập tin:Ace playing cards.jpg|nhỏ|Bốn lá bài '''át''' trong bộ bài Tây.]] {{-etym-}} * {{q|ng. dt.}} {{bor+|vi|fr|as}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-át.wav}} {{-homo-}} * [[ác]] {{-hanviet-}} {{top}} * [[齾]]: [[át]], [[ngạt]] * [[圠]]: [[át]] * [[揠]]: [[át]], [[yển]], [[yết]], [[loát]] * [[遏]]: [[át]] * [[頜]]: [[cáp]], [[hàm]], [[át]], [[hạp]] * [[餲]]: [[ế]], [[ái]], [[át]], [[hạt]] * [[輵]]: [[cát]], [[át]] {{mid}} * [[阏]]: [[yên]], [[át]] * [[曷]]: [[át]], [[hạt]] * [[胺]]: [[át]], [[an]] * [[洝]]: [[án]], [[át]] * [[閼]]: [[yên]], [[át]] * [[頞]]: [[át]] {{bottom}} {{-hanviet-t-}} {{top}} * [[胺]]: [[án]], [[át]], [[an]] * [[餲]]: [[ái]], [[át]], [[ế]] * [[閼]]: [[yên]], [[át]] {{mid}} * [[遏]]: [[át]] * [[頞]]: [[át]] {{bottom}} {{-nôm-}} {{top}} * [[握]]: [[ốc]], [[ác]], [[át]] * [[圠]]: [[át]] * [[󰐴]]: [[át]] * [[𣿌]]: [[át]], [[ướt]], [[hạt]], [[ạt]] * [[遏]]: [[át]], [[ớt]], [[ướt]], [[ợt]] * [[𢖮]]: [[ắt]], [[át]] * [[輵]]: [[át]] * [[阏]]: [[yên]], [[át]] {{mid}} * [[曷]]: [[át]], [[hạt]], [[hột]], [[hợt]] * [[乙]]: [[ặc]], [[ắc]], [[ắt]], [[át]], [[hắt]], [[ất]], [[lớt]], [[ít]] * [[齾]]: [[át]], [[ngạt]] * [[謁]]: [[át]], [[yết]], [[ét]] * [[胺]]: [[ươn]], [[an]], [[át]], [[ườn]] * [[洝]]: [[át]] * [[閼]]: [[yên]], [[át]] * [[頞]]: [[át]] {{bottom}} {{-paro-}} {{đầu}} * [[ắt]] * [[ất]] {{cuối}} {{-noun-}} {{vie-noun}} # (''Trò chơi bài'') Tên gọi của con [[bài]] chỉ mang có một [[dấu]] [[quy ước]] trong bộ [[bài Tây]], thường là con bài có [[giá trị]] [[cao]] nhất. #: {{ux|vi|Con '''át''' chủ.}} {{-syn-}} * [[ách]] * [[xì]] {{-drv-}} {{đầu}} * [[át bích]] * [[át chủ bài]] * [[át cơ]] * [[át nhép]] * [[át rô]] {{cuối}} {{-trans-}} {{trans-top|Tên gọi con bài}} * {{ara}}: {{t|ar|آس|m|tr=ʾās}} * {{eng}}: {{t|en|ace}} * {{pol}}: {{t|pl|as|m}} * {{por}}: {{t|pt|ás|m}} * {{cat-old}}: {{t|ca|as|m}} * {{heb}}: {{t|he|אס|m}} * {{dan}}: {{t|da|es|n}} * {{deu}}: {{t|de|Ass|n}} * {{est}}: {{t|et|äss}} * {{fao}}: {{t|fo|ess|n}} * {{glg}}: {{t|gl|ás|m}} * {{kat}}: {{t|ka|ტუზი|tr=ṭuzi}} * {{nld}}: {{t|nl|aas}} * {{hau}}: {{t|ha|sarki|m}} * {{hin}}: {{t|hi|इक्का|tr=ikkā|m}} * {{hun}}: {{t|hu|ász}} * {{ell}}: {{t|el|άσος|tr=ásos|m}} * {{ido}}: {{t|io|aso}} * {{gle}}: {{t|ga|aon}} * {{ltz}}: {{t|lb|Ass|m}}, {{t|lb|Äss|m}} * {{mon}}: {{t|mn|тамга|tr=tamga}} * {{nor}}: ** {{nob}}: {{t|nb|ess|n}} ** {{nno}}: {{t|nn|ess|n}} * {{rus}}: {{t|ru|туз|m|tr=tuz}} * {{jpn}}: {{t|ja|エース|tr=ēsu}} * {{fra}}: {{t|fr|as|m}} * {{fin}}: {{t|fi|ässä}} * {{epo}}: {{t|eo|aso}} * {{ces}}: {{t|cs|eso|n}} * {{swa}}: {{t|sw|ree}}, {{t|sw|rea}}, {{t|sw|rei}} * {{tgl}}: {{t|tl|alas}} * {{spa}}: {{t|es|as|m}} * {{tel}}: {{t|te|ఆసు|tr=āsu}} * {{swe}}: {{t|sv|ess|n}}, {{t|sv|äss|n}} * {{zho}}: ** {{cmn}}: {{t|cmn|尖兒|sc=Hani}}, {{t|cmn|尖儿|tr=jiānr|sc=Hani}} ** {{yue}}: {{t|yue|煙士|sc=Hani}}, {{t|yue|烟士|tr=jin1 si6-2|sc=Hani}}, {{t|yue|煙|sc=Hani}}, {{t|yue|烟|tr=jin1|sc=Hani}} * {{ukr}}: {{t|uk|туз|m|tr=tuz}} * {{cym}}: {{t|cy|as}} * {{ita}}: {{t|it|asso|m}} {{trans-bottom}} {{-see also-}} {{bảng:bộ bài Tây/vi}} {{-verb-}} {{vie-verb}} # Làm cho [[che lấp]] và [[đánh bạt]] đi bằng một [[tác động]] [[mạnh]] hơn. #: {{ux|vi|Nói '''át''' giọng người khác.}} #: {{ux|vi|'''Át''' cả tiếng sóng.}} #: {{ux|vi|Mắng '''át''' đi.}} {{-drv-}} * [[át vía]] * [[lấn át]] {{-adjc-}} {{vie-adj}} # {{label|vi|cổ}} [[ướt|Ướt]]. #* [[s:Phật thuyết đại báo phụ mẫu ân trọng kinh|Phật thuyết đại báo phụ mẫu ân trọng kinh]], tr. 18a: #: {{ux|vi|...chốn ráo con nằm, chốn '''át''' cho nạ nằm.}} #* [[s:Phật thuyết đại báo phụ mẫu ân trọng kinh|Phật thuyết đại báo phụ mẫu ân trọng kinh]], tr. 14a: #: {{ux|vi|...rời chốn ráo đến chốn '''át'''.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{R:Vương Lộc}} {{-non-}} {{-etymology-}} {{root|non|ine-pro|*h₁ed-}} Có liên quan đến {{mention|non|eta}}. Nguồn gốc cuối cùng từ {{derived|non|ine-pro|*h₁ed-||ăn}}. {{-noun-}} {{non-noun|n}} # Hành động [[ăn]]. # [[đồ ăn|Đồ ăn]], [[thức ăn]]. {{-decl-}} {{non-decl-n-a|át|gs=áz}} {{-desc-}} * {{desc|is|át}} * {{desc|nn|åt}} * {{desc|nb|åt}} {{-see also-}} * {{l|non|áta}} {{-reference-}} * [https://archive.org/stream/concisedictionar001857#page/38 át], ''A Concise Dictionary of Old Icelandic'', G. T. Zoëga, Clarendon Press, 1910, tại [https://archive.org/details/concisedictionar001857 Internet Archive]. 9dsvxfji9yi352sejivhhxxzobsth1x đa giác 0 33970 2350808 1950338 2026-05-07T08:08:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350808 wikitext text/x-wiki {{-info-}} {{-vie-}} [[Hình:Simple polygon.png|nhỏ|đa giác]] {{-pron-}} {{vie-pron|đa|giác}} {{-noun-}} '''đa giác''' # [[hình|Hình]] [[do]] một [[đường]] [[gấp khúc]] [[khép kín]] [[tạo thành]]. #:'''''Đa giác''' đều''. #:'''''Đa giác''' lõm''. {{-trans-}} {{đầu}} *{{cat-2}}: [[polígon]] *{{cs}}: [[mnohoúhelník]] *{{da}}: [[polygon]] *{{de}}: [[Polygon]] *{{et}}: [[hulknurk]] *{{en}}: [[polygon]] *{{es}}: [[polígono]] *{{eo}}: [[plurlatero]] *{{fr}}: [[polygone]] *{{gl}}: [[polígono]] *{{io}}: [[poligono]] *{{it}}: [[poligono]] (trong ngữ cảnh [[hình học]]) {{giữa}} *{{he}}: [[מצולע]] *{{nl}}: [[veelhoek]] *{{ja}}: [[多角形]] *{{pl}}: [[wielokąt]] *{{pt}}: [[polígono]] *{{ru}}: [[Многоугольник]] *{{sl}}: [[mnogokotnik]] *{{fi}}: [[monikulmio]] *{{sv}}: [[polygon]] *{{ta}}: [[பல்கோணம்]] *{{th}}: [[รูปหลายเหลี่ยม]] *{{zh}}: [[多边形]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Hình học]] [[Thể loại:Danh từ tiếng Việt]] bfe869ziohzsgwnea9u90ay82ncpfgr 2350930 2350808 2026-05-07T10:40:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350930 wikitext text/x-wiki {{-info-}} {{-vie-}} [[Hình:Simple polygon.png|nhỏ|đa giác]] {{-pron-}} {{vie-pron|đa|giác}} {{-noun-}} '''đa giác''' # [[hình|Hình]] [[do]] một [[đường]] [[gấp khúc]] [[khép kín]] [[tạo thành]]. #:'''''Đa giác''' đều''. #:'''''Đa giác''' lõm''. {{-trans-}} {{đầu}} *{{cat-old}}: [[polígon]] *{{cs}}: [[mnohoúhelník]] *{{da}}: [[polygon]] *{{de}}: [[Polygon]] *{{et}}: [[hulknurk]] *{{en}}: [[polygon]] *{{es}}: [[polígono]] *{{eo}}: [[plurlatero]] *{{fr}}: [[polygone]] *{{gl}}: [[polígono]] *{{io}}: [[poligono]] *{{it}}: [[poligono]] (trong ngữ cảnh [[hình học]]) {{giữa}} *{{he}}: [[מצולע]] *{{nl}}: [[veelhoek]] *{{ja}}: [[多角形]] *{{pl}}: [[wielokąt]] *{{pt}}: [[polígono]] *{{ru}}: [[Многоугольник]] *{{sl}}: [[mnogokotnik]] *{{fi}}: [[monikulmio]] *{{sv}}: [[polygon]] *{{ta}}: [[பல்கோணம்]] *{{th}}: [[รูปหลายเหลี่ยม]] *{{zh}}: [[多边形]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Hình học]] [[Thể loại:Danh từ tiếng Việt]] 1jmarsi19ly3tuvfuvrslai2o38dzzq đà điểu 0 33981 2350809 1950448 2026-05-07T08:08:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350809 wikitext text/x-wiki {{-info-}} {{-vie-}} [[Hình:Masai ostrich.jpg|thumb|đà điểu]] {{-pron-}} {{vie-pron|đà|điểu}} {{-noun-}} '''đà điểu''' # [[chim|Chim]] rất [[to]] [[sống]] ở một [[số]] [[vùng]] [[nhiệt đới]], [[cổ]] [[dài]], [[chân]] [[cao]], [[chạy]] [[nhanh]]. {{-trans-}} {{đầu}} *{{af}}: [[volstruis]] *{{ang}}: [[strȳta]] *{{ar}}: [[نعامة]] *{{ms}}: [[Burung Unta]] *{{bg}}: [[Щраус]] *{{cat-2}}: [[estruç]] *{{da}}: [[struds]] *{{de}}: [[Afrikanischer Strauß]] *{{en}}: [[ostrich]] *{{es}}: [[struthio camelus]] *{{eo}}: [[struto]] *{{fr}}: [[autruche]] *{{hr}}: [[noj]] *{{io}}: [[strucho]] *{{it}}: [[struthio camelus]] {{giữa}} *{{he}}: [[יען]] *{{sw}}: [[mbuni]] *{{lt}}: [[afrikinis strutis]] *{{li}}: [[stroes]] *{{nl}}: [[struisvogel]] *{{ja}}: [[ダチョウ]] *{{pl}}: [[struś]] *{{pt}}: [[avestruz]] *{{ru}}: [[страус]] *{{sl}}: [[noj]] *{{sr}}: [[hој]] *{{fi}}: [[strutsi]] *{{sv}}: [[struts]] *{{th}}: [[นกกระจอกเทศ]] *{{zh}}: [[鸵鸟]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] g01jaoa1fjf9lod6atua7fb4iq0p3tq 2350931 2350809 2026-05-07T10:40:56Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350931 wikitext text/x-wiki {{-info-}} {{-vie-}} [[Hình:Masai ostrich.jpg|thumb|đà điểu]] {{-pron-}} {{vie-pron|đà|điểu}} {{-noun-}} '''đà điểu''' # [[chim|Chim]] rất [[to]] [[sống]] ở một [[số]] [[vùng]] [[nhiệt đới]], [[cổ]] [[dài]], [[chân]] [[cao]], [[chạy]] [[nhanh]]. {{-trans-}} {{đầu}} *{{af}}: [[volstruis]] *{{ang}}: [[strȳta]] *{{ar}}: [[نعامة]] *{{ms}}: [[Burung Unta]] *{{bg}}: [[Щраус]] *{{cat-old}}: [[estruç]] *{{da}}: [[struds]] *{{de}}: [[Afrikanischer Strauß]] *{{en}}: [[ostrich]] *{{es}}: [[struthio camelus]] *{{eo}}: [[struto]] *{{fr}}: [[autruche]] *{{hr}}: [[noj]] *{{io}}: [[strucho]] *{{it}}: [[struthio camelus]] {{giữa}} *{{he}}: [[יען]] *{{sw}}: [[mbuni]] *{{lt}}: [[afrikinis strutis]] *{{li}}: [[stroes]] *{{nl}}: [[struisvogel]] *{{ja}}: [[ダチョウ]] *{{pl}}: [[struś]] *{{pt}}: [[avestruz]] *{{ru}}: [[страус]] *{{sl}}: [[noj]] *{{sr}}: [[hој]] *{{fi}}: [[strutsi]] *{{sv}}: [[struts]] *{{th}}: [[นกกระจอกเทศ]] *{{zh}}: [[鸵鸟]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] gn12gbilv624d611wcrmhbqambipri6 dương cầm 0 34332 2350676 2032386 2026-05-07T07:55:11Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350676 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-info-|dương cầm (nhạc cụ Trung Quốc)}} [[Hình:Piano for 2 Players Outside.jpg|nhỏ|phải|dương cầm]] [[Tập tin:Yangqin1.jpg|nhỏ|dương cầm (nhạc cụ Trung Quốc)]] {{-etym-}} * (''Nghĩa 1'') {{etym-translit|lang=Hani|term=洋琴}} Trong đó: [[洋]] (“dương”: của/thuộc về nước ngoài, phương Tây); [[琴]] (“cầm”: đàn). * (''Nghĩa 2'') {{etym-translit|lang=Hani|term=揚琴}} {{-pron-}} {{vie-pron}} {{-noun-}} '''dương cầm''' # {{term|Âm nhạc}} Một [[nhạc cụ]] có [[bàn phím]] thuộc bộ gõ. #*'''2013''', Quỳnh Trung, ''[https://tuoitre.vn/anh-nguoi-choi-piano-giua-bao-dong-ukraine-sot-tren-mang-585178.htm Ảnh người chơi piano giữa bạo động Ukraine sốt trên mạng]'', Tuổi Trẻ Online: #*: Bức ảnh một nghệ sĩ '''dương cầm''' chơi đàn trước một hàng dài cảnh sát bạo động ở Ukraine với lời chú thích “Một bức ảnh từ Ukraine có thể thay đổi cả thế giới” đang được lan truyền rộng rãi trong cộng đồng mạng. # {{term|Âm nhạc}} [[đàn tam thập lục|Đàn tam thập lục]] của [[Trung Quốc]]. {{-syn-}} * (''Nghĩa 1'') [[pi-a-nô]], [[cương cầm]] (''ít phổ biến'') {{-trans-}} {{trans-top|Nhạc cụ bộ gõ}} * {{afr}}: [[klavier#Tiếng Afrikaans|klavier]] * {{sqi}}: [[piano#Tiếng Albani|piano]] {{f}} * {{amh}}: [[ፒያኖ#Tiếng Amhara|ፒያኖ]] * {{eng}}: [[piano#Tiếng Anh|piano]] * {{hye}}: [[դաշնամուր#Tiếng Armenia|դաշնամուր]] (dašnamur), [[դաշնակ#Tiếng Armenia|դաշնակ]] (dašnak) * {{ast}}: [[pianu#Tiếng Asturias|pianu]] {{m}} * {{pol}}: [[pianino#Tiếng Ba Lan|pianino]] {{n}}, [[fortepian#Tiếng Ba Lan|fortepian]] {{m}} * {{eus}}: [[piano#Tiếng Basque|piano]] * {{por}}: [[piano#Tiếng Bồ Đào Nha|piano]] {{m}} * {{cat-2}}: [[piano#Tiếng Catalan|piano]] {{m}} * {{deu}}: [[Klavier#Tiếng Đức|Klavier]] {{n}}, [[Piano#Tiếng Đức|Piano]] {{n}} * {{mri}}: [[piana#Tiếng Maori|piana]] * {{nor}}: [[piano#Tiếng Na Uy|piano]] {{n}} * {{nah}}: [[pianotli#Tiếng Nahuatl|pianotli]] * {{rus}}: [[фортепиано#Tiếng Nga|фортепиа́но]] (fortɛpiáno) {{n}}, [[пианино#Tiếng Nga|пиани́но]] (pianíno) {{n}}, [[рояль#Tiếng Nga|роя́ль]] (rojálʹ) {{m}} * {{jpn}}: [[ピアノ#Tiếng Nhật|ピアノ]] (piano) {{trans-mid}} * {{fra}}: [[piano#Tiếng Pháp|piano]] {{m}} * {{spa}}: [[piano#Tiếng Tây Ban Nha|piano]] {{m}} * {{tha}}: [[เปียโน#Tiếng Thái|เปียโน]] (bpiia-noo) * {{tur}}: [[piyano#Tiếng Thổ Nhĩ Kỳ|piyano]] * {{kor}}: [[피아노#Tiếng Triều Tiên|피아노]] (piano) * {{zho}}: *: {{nan}}: [[鋼琴#Tiếng Mân Nam|鋼琴]] (kǹg-khîm) *: {{cmn}}: [[鋼琴#Tiếng Quan Thoại|鋼琴]], [[钢琴#Tiếng Quan Thoại|钢琴]] (gāngqín) *: {{yue}}: [[鋼琴#Tiếng Quảng Đông|鋼琴]] (gong<sup>3</sup> kam<sup>4</sup>) * {{urd}}: [[پیانو#Tiếng Urdu|پیانو]] (piyāno) {{m}} * {{ita}}: [[pianoforte#Tiếng Ý|pianoforte]] {{m}}, [[piano#Tiếng Ý|piano]] {{m}} {{trans-bottom}} {{trans-top|Nhạc cụ Trung Quốc}} * {{eng}}: [[yangqin#Tiếng Anh|yangqin]] * {{jpn}}: [[揚琴#Tiếng Nhật|揚琴]] (ようきん, yōkin) {{trans-mid}} * {{zho}}: *: {{cmn}}: [[揚琴#Tiếng Quan Thoại|揚琴]], [[扬琴#Tiếng Quan Thoại|扬琴]] (yángqín) * {{kor}}: [[양금#Tiếng Triều Tiên|양금]] (yanggeum) {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] h8qgy80zpqk0clhncnuuy5ujskkj180 2350932 2350676 2026-05-07T10:40:59Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350932 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-info-|dương cầm (nhạc cụ Trung Quốc)}} [[Hình:Piano for 2 Players Outside.jpg|nhỏ|phải|dương cầm]] [[Tập tin:Yangqin1.jpg|nhỏ|dương cầm (nhạc cụ Trung Quốc)]] {{-etym-}} * (''Nghĩa 1'') {{etym-translit|lang=Hani|term=洋琴}} Trong đó: [[洋]] (“dương”: của/thuộc về nước ngoài, phương Tây); [[琴]] (“cầm”: đàn). * (''Nghĩa 2'') {{etym-translit|lang=Hani|term=揚琴}} {{-pron-}} {{vie-pron}} {{-noun-}} '''dương cầm''' # {{term|Âm nhạc}} Một [[nhạc cụ]] có [[bàn phím]] thuộc bộ gõ. #*'''2013''', Quỳnh Trung, ''[https://tuoitre.vn/anh-nguoi-choi-piano-giua-bao-dong-ukraine-sot-tren-mang-585178.htm Ảnh người chơi piano giữa bạo động Ukraine sốt trên mạng]'', Tuổi Trẻ Online: #*: Bức ảnh một nghệ sĩ '''dương cầm''' chơi đàn trước một hàng dài cảnh sát bạo động ở Ukraine với lời chú thích “Một bức ảnh từ Ukraine có thể thay đổi cả thế giới” đang được lan truyền rộng rãi trong cộng đồng mạng. # {{term|Âm nhạc}} [[đàn tam thập lục|Đàn tam thập lục]] của [[Trung Quốc]]. {{-syn-}} * (''Nghĩa 1'') [[pi-a-nô]], [[cương cầm]] (''ít phổ biến'') {{-trans-}} {{trans-top|Nhạc cụ bộ gõ}} * {{afr}}: [[klavier#Tiếng Afrikaans|klavier]] * {{sqi}}: [[piano#Tiếng Albani|piano]] {{f}} * {{amh}}: [[ፒያኖ#Tiếng Amhara|ፒያኖ]] * {{eng}}: [[piano#Tiếng Anh|piano]] * {{hye}}: [[դաշնամուր#Tiếng Armenia|դաշնամուր]] (dašnamur), [[դաշնակ#Tiếng Armenia|դաշնակ]] (dašnak) * {{ast}}: [[pianu#Tiếng Asturias|pianu]] {{m}} * {{pol}}: [[pianino#Tiếng Ba Lan|pianino]] {{n}}, [[fortepian#Tiếng Ba Lan|fortepian]] {{m}} * {{eus}}: [[piano#Tiếng Basque|piano]] * {{por}}: [[piano#Tiếng Bồ Đào Nha|piano]] {{m}} * {{cat-old}}: [[piano#Tiếng Catalan|piano]] {{m}} * {{deu}}: [[Klavier#Tiếng Đức|Klavier]] {{n}}, [[Piano#Tiếng Đức|Piano]] {{n}} * {{mri}}: [[piana#Tiếng Maori|piana]] * {{nor}}: [[piano#Tiếng Na Uy|piano]] {{n}} * {{nah}}: [[pianotli#Tiếng Nahuatl|pianotli]] * {{rus}}: [[фортепиано#Tiếng Nga|фортепиа́но]] (fortɛpiáno) {{n}}, [[пианино#Tiếng Nga|пиани́но]] (pianíno) {{n}}, [[рояль#Tiếng Nga|роя́ль]] (rojálʹ) {{m}} * {{jpn}}: [[ピアノ#Tiếng Nhật|ピアノ]] (piano) {{trans-mid}} * {{fra}}: [[piano#Tiếng Pháp|piano]] {{m}} * {{spa}}: [[piano#Tiếng Tây Ban Nha|piano]] {{m}} * {{tha}}: [[เปียโน#Tiếng Thái|เปียโน]] (bpiia-noo) * {{tur}}: [[piyano#Tiếng Thổ Nhĩ Kỳ|piyano]] * {{kor}}: [[피아노#Tiếng Triều Tiên|피아노]] (piano) * {{zho}}: *: {{nan}}: [[鋼琴#Tiếng Mân Nam|鋼琴]] (kǹg-khîm) *: {{cmn}}: [[鋼琴#Tiếng Quan Thoại|鋼琴]], [[钢琴#Tiếng Quan Thoại|钢琴]] (gāngqín) *: {{yue}}: [[鋼琴#Tiếng Quảng Đông|鋼琴]] (gong<sup>3</sup> kam<sup>4</sup>) * {{urd}}: [[پیانو#Tiếng Urdu|پیانو]] (piyāno) {{m}} * {{ita}}: [[pianoforte#Tiếng Ý|pianoforte]] {{m}}, [[piano#Tiếng Ý|piano]] {{m}} {{trans-bottom}} {{trans-top|Nhạc cụ Trung Quốc}} * {{eng}}: [[yangqin#Tiếng Anh|yangqin]] * {{jpn}}: [[揚琴#Tiếng Nhật|揚琴]] (ようきん, yōkin) {{trans-mid}} * {{zho}}: *: {{cmn}}: [[揚琴#Tiếng Quan Thoại|揚琴]], [[扬琴#Tiếng Quan Thoại|扬琴]] (yángqín) * {{kor}}: [[양금#Tiếng Triều Tiên|양금]] (yanggeum) {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] raq5jikiyvdc0zegv2npvkqdefp10kd paella 0 36400 2350834 1887183 2026-05-07T08:15:13Z Kateru Zakuro 34522 2350834 wikitext text/x-wiki {{-eng-}} [[Hình:Paella.jpg|nhỏ|phải|paella]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑː.ˈɛ.lə/}} {{-etymology-}} {{etym-from | lang = spa | term = paella }} {{-noun-}} {{eng-noun|-}} {{IPA|/pɑː.ˈɛ.lə/}} # [[cơm thập cẩm|Cơm thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-ref-}} {{R:FVDP}} {{-cat-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ˈe.ʎa/}} {{-noun-}} '''paella''' {{f}} ({{plur}} [[paelles]]) # [[nồi|Nồi]] [[chiên]]. # Môn ''paella'', một loại cơm thập cẩm vốn từ [[Valencia]], [[Tây Ban Nha]]. {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.e.la/}} {{-etymology-}} {{etym-from | lang = spa | term = paella }} {{-noun-}} {{fra-noun| s=paella|p=paellas| sp=/pa.e.la/|pp=/pa.e.la/}} '''paella''' {{f}} {{IPA|/pa.e.la/}} # [[món|Món]] [[cơm rang]] [[thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-ref-}} {{R:FVDP}} {{-spa-}} [[Hình:Paella valenciana.gif|nhỏ|phải|paella]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ˈe.ʎa/}} {{-etymology-}} {{etym-from | lang = cat-2 | term = paella | meaning = nồi chiên }} {{-noun-}} '''paella''' {{f}} (''không đếm được'') # [[món|Món]] [[cơm rang]] [[thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-drv-}} * [[paellera]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Catalan]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] t7o9nmn092u7phppii19gth7jty5gig 2351079 2350834 2026-05-07T10:50:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351079 wikitext text/x-wiki {{-eng-}} [[Hình:Paella.jpg|nhỏ|phải|paella]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑː.ˈɛ.lə/}} {{-etymology-}} {{etym-from | lang = spa | term = paella }} {{-noun-}} {{eng-noun|-}} {{IPA|/pɑː.ˈɛ.lə/}} # [[cơm thập cẩm|Cơm thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-ref-}} {{R:FVDP}} {{-cat-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ˈe.ʎa/}} {{-noun-}} '''paella''' {{f}} ({{plur}} [[paelles]]) # [[nồi|Nồi]] [[chiên]]. # Môn ''paella'', một loại cơm thập cẩm vốn từ [[Valencia]], [[Tây Ban Nha]]. {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.e.la/}} {{-etymology-}} {{etym-from | lang = spa | term = paella }} {{-noun-}} {{fra-noun| s=paella|p=paellas| sp=/pa.e.la/|pp=/pa.e.la/}} '''paella''' {{f}} {{IPA|/pa.e.la/}} # [[món|Món]] [[cơm rang]] [[thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-ref-}} {{R:FVDP}} {{-spa-}} [[Hình:Paella valenciana.gif|nhỏ|phải|paella]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ˈe.ʎa/}} {{-etymology-}} {{etym-from | lang = cat-old | term = paella | meaning = nồi chiên }} {{-noun-}} '''paella''' {{f}} (''không đếm được'') # [[món|Món]] [[cơm rang]] [[thập cẩm]] ([[ban đầu]] của [[Valencia]], [[Tây Ban Nha]]). {{-drv-}} * [[paellera]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Catalan]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] 22xumsa0zrmc8vig9jl47u1ns8ujk04 xanh 0 46424 2350677 2283162 2026-05-07T07:55:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350677 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Dụng cụ xào nấu'') Bắt nguồn từ chữ Hán <big>[[鐺]]</big>. Chữ này có hai âm: “đang” và “sanh”. Với âm “đang”, nó là từ tượng thanh chỉ tiếng kêu leng keng, loảng xoảng của kim khí. Với âm “sanh”, nó có nghĩa là cái xanh, cái chõ có chân.<ref>An Chi (2013), “[https://petrotimes.vn/xanh-va-xoong-tuc-go-xoong-110425.html Xanh và xoong - Tục gõ xoong]”.</ref> * (''Màu sắc'') Bắt nguồn từ chữ Hán <big>[[青]]</big> (“[[Hán-Việt|HV]]: thanh’’). {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-xanh.wav|Âm thanh (TP. HCM; giọng nữ)}} {{-homo-}} * [[sanh]] {{-hanviet-}} {{top}} * [[瞠]]: [[sanh]], [[xanh]], [[đường]] * [[赪]]: [[trinh]], [[sanh]], [[xanh]] * [[赬]]: [[trinh]], [[sanh]], [[xanh]] * [[撑]]: [[sanh]], [[xanh]] * [[撐]]: [[sanh]], [[xanh]] {{mid}} * [[頳]]: [[trinh]], [[xanh]] * [[橕]]: [[sanh]], [[xanh]] * [[𣛟]]: [[sanh]], [[xanh]] * [[牚]]: [[sanh]], [[xanh]] * [[㛟]]: [[xanh]] {{bottom}} {{-hanviet-t-}} {{top}} * [[撐]]: [[xanh]] * [[橕]]: [[xanh]] {{mid}} * [[赬]]: [[trinh]], [[xanh]] {{bottom}} {{-nôm-}} {{top}} * [[瞠]]: [[sanh]], [[xanh]] * [[鐣]]: [[xanh]] * [[𩇢]]: [[xinh]], [[xanh]] * [[𥑥]]: [[sành]], [[xành]], [[xanh]], [[sinh]] * [[錆]]: [[sanh]], [[thương]], [[xanh]], [[thanh]] * [[赪]]: [[xanh]] * [[赬]]: [[sanh]], [[xanh]], [[trinh]] * [[鉎]]: [[xanh]], [[sinh]] {{mid}} * [[撑]]: [[xinh]], [[xanh]], [[xênh]] * [[撐]]: [[sanh]], [[xinh]], [[xanh]], [[xênh]], [[sênh]] * [[青]]: [[thênh]], [[xanh]], [[thanh]] * [[󰔵]]: [[xanh]] * [[铛]]: [[sanh]], [[xanh]], [[đương]], [[đang]] * [[鐺]]: [[sanh]], [[xanh]], [[đương]], [[đang]] * [[𣛟]]: [[sanh]], [[xinh]], [[xanh]], [[xênh]] {{bottom}} {{-noun-}} {{pn}} # Dụng cụ dùng trong [[bếp]] để [[xào nấu]], bằng [[đồng]], [[thành]] [[đứng]], có hai [[quai]]. #* '''1938''', [[w:Nguyên Hồng|Nguyên Hồng]], ''Hàng cơm đêm''<sup>[http://www.gocnhin.net/cgi-bin/viewitem.pl?273]</sup>: #*: Xuống bếp, Vịnh đổ mỡ vào '''xanh'''. #* [[w:Ca dao Việt Nam|Ca dao Việt Nam]]: #*: Còn thừa mua cái bình vôi,<br>Mua '''xanh''', mua chảo, mua nồi nấu ăn. # {{context|Từ cũ; văn chương}} [[trời|Trời]], [[ông trời]]. #* [[w:Đặng Trần Côn|Đặng Trần Côn]], “Chinh phụ ngâm”, [[w:Đoàn Thị Điểm|Đoàn Thị Điểm]] (?) dịch<sup>[https://vi.wikisource.org/wiki/Chinh_ph%E1%BB%A5_ng%C3%A2m_(%C4%90o%C3%A0n_Th%E1%BB%8B_%C4%90i%E1%BB%83m_d%E1%BB%8Bch)]</sup>: #*: '''Xanh''' kia thăm thẳm tầng trên,<br>Vì ai gây dựng cho nên nỗi này? # {{context|Khẩu ngữ}} Miền [[rừng núi]], dùng để chỉ khu [[căn cứ]] [[cách mạng]] trong thời kì [[w:Chiến tranh Việt Nam|kháng chiến chống Mỹ]]. #: {{ux|vi|Cả nhà đã lên '''xanh'''.}} {{-syn-}} * (''Nghĩa 2'') [[cao xanh]], [[ông xanh]] {{-drv-}} {{đầu}} * [[quai xanh vành chảo]] * [[xanh không thủng cá đi đằng nào]] {{cuối}} {{-adj-}} [[Tập tin:Rice Field in Vietnam - panoramio.jpg|nhỏ|Cánh đồng lúa màu '''xanh'''.]] [[Tập tin:The deep blue sea (6834127561).jpg|nhỏ|Bầu trời và biển màu '''xanh'''.]] {{pn}} # Từ chỉ [[màu sắc]], không phân biệt giữa hai màu [[lục]] và [[lam]]. #: {{ux|vi|Áo màu '''xanh'''.}} ## Có [[màu]] như màu [[lá cây]]. ##* [[w:Ca dao Việt Nam|Ca dao Việt Nam]]: ##*: Cây '''xanh''' thì lá cũng '''xanh''',<br>Cha mẹ hiền lành để đức cho con. ##* '''1950''', [[w:Hoàng Việt|Hoàng Việt]], ''Lá xanh'': ##*: Lá còn '''xanh''' như anh đang còn trẻ. ## Có màu như màu [[nước]] [[biển]] hay [[da trời]] không [[vẩn]] [[mây]]. ##: {{ux|vi|Bầu trời '''xanh''' thẳm.}} ##* '''1889''', [[w:Trương Minh Ký|Trương Minh Ký]], ''Như Tây nhựt trình''<sup>[https://vi.wikisource.org/wiki/Nh%C6%B0_T%C3%A2y_nh%E1%BB%B1t_tr%C3%Acnh]</sup>: ##*: Trời '''xanh''' kệch, biển lặn trang,<br>Xa trông cá nược ước bằng cá bông. # Từ chỉ [[nước da]]: ## [[mét|Mét]], [[tái]], màu da của người [[bệnh]]. ##: {{ux|vi|Mới ốm dậy, da còn '''xanh'''.}} ## Da mặt của người đang [[sợ]], đang [[khiếp]]. ##: {{ux|vi|Sợ '''xanh''' mặt.}} # Nói [[hoa quả]] chưa [[chín]]. #: {{ux|vi|Quả vẫn còn '''xanh'''.}} #: {{ux|vi|Không nên ăn ổi '''xanh'''.}} #* '''1941''', [[w:Nam Cao|Nam Cao]], ''Chí Phèo''<sup>[https://vi.wikisource.org/wiki/Ch%C3%AD_Ph%C3%A8o]</sup>: #*: Lúc đi đường, hắn đã vặn được ở nhà nào đó bốn quả chuối '''xanh''', và bốc của cô hàng xén một dúm con muối trắng. # {{context|Văn chương}} Nói người hay [[tuổi đời]] còn [[trẻ]]. #: {{ux|vi|Tuổi '''xanh'''.}} {{-usage-}} * Từ “xanh” khi đứng riêng có nghĩa khá mơ hồ, có thể dùng để miêu tả nhiều dải màu khác nhau, do đó cần dựa vào ngữ cảnh cụ thể để xác định màu sắc được nói đến. {{-syn-}} * (''Có màu như màu lá cây'') [[xanh lá cây]], [[xanh lục]], [[lục]] * (''Có màu như màu nước biển hay da trời không vẩn mây'') [[lam]], [[xanh lam]], [[xanh dương]], [[lơ]], [[xanh lơ]], [[xanh da trời]], [[thiên thanh]] * (''Hoa quả chưa chín'') [[non]], [[chưa]] [[chín]] {{-ant-}} * (''Hoa quả chưa chín'') [[chín]] {{-redup-}} * [[xanh xanh]] {{-drv-}} {{đầu}} * [[bánh đậu xanh]] * [[bật đèn xanh]] * [[cách mạng xanh]] * [[cây xanh]] * [[chắc xanh]] * [[chè đậu xanh]] * [[chè xanh]] * [[chim xanh]] * [[chợ xanh]] * [[công nghệ xanh]] * [[cu xanh]] * [[đầu xanh]] * [[đậu xanh]] * [[đèn xanh]] * [[đèn xanh đèn đỏ]] * [[đèn xanh đỏ]] * [[khố xanh]] * [[lầu xanh]] * [[lính khố xanh]] * [[mắt xanh]] * [[mây xanh]] * [[mũ nồi xanh]] * [[phân xanh]] * [[ruồi xanh]] * [[rừng xanh núi đỏ]] * [[sử xanh]] * [[tái xanh]] * [[tái xanh tái xám]] * [[tóc xanh]] * [[tôm càng xanh]] * [[trà xanh]] * [[tuổi xanh]] * [[xanh biếc]] * [[xanh bủng]] * [[xanh bủng xanh beo]] * [[xanh cỏ]] * [[xanh da trời]] * [[xanh dương]] * [[xanh đầu thì bỏ, đỏ đầu thì nuôi]] * [[xanh hòa bình]] * [[xanh lá cây]] * [[xanh lam]] * [[xanh lặt lìa]] * [[xanh lè]] * [[xanh lẻo]] * [[xanh lét]] * [[xanh lơ]] * [[xanh mắt]] * [[xanh mét]] * [[xanh ngắt]] * [[xanh nước biển]] * [[xanh om]] * [[xanh rì]] * [[xanh rờn]] * [[xanh rớt]] * [[xanh tốt]] * [[xanh tươi]] * [[xanh um]] * [[xanh vỏ đỏ lòng]] * [[xanh xao]] * [[xanh xương]] * [[xuân xanh]] * [[xương quai xanh]] {{cuối}} {{-trans-}} {{trans-top|Từ chỉ màu sắc, không phân biệt giữa hai màu lục và lam}} * {{eng}}: {{t|en|grue}} * {{grn}}: {{t|gn|hovy}} * {{lkt}}: {{t|lkt|tȟó}} * {{mop}}: {{t|mop|yaʼax}} * {{jpn}}: {{t|ja|青い|tr=aoi}} * {{kor}}: {{t|ko|푸르다|tr=pureuda}} * {{zho}}: ** {{cmn}}: {{t|cmn|青|sc=Hani}} {{trans-bottom}} {{trans-top| Có màu như màu lá cây}} * {{ara}}: {{t|ar| أخضر|m|tr= ʾaḵḍar}} * {{ace}}: {{t|ace|ijo}} * {{ady}}: {{t|ady| уцышъо|tr=wcəŝo}} * {{afr}}: {{t|af|groen}} * {{sqi}}: {{t|sq|gjelbër}}, {{t|sq|blertë}} * {{amh}}: {{t|am|አረንጓዴ|tr=ʾärängʷade}} * {{eng}}: {{t|en|green}} ** {{ang}}: {{t|ang|grene}} ** {{enm}}: {{t|enm|grene}}, {{t|enm|greene}} * {{hye}}: {{t|hy|կանաչ|tr=kanačʿ}} * {{rup}}: {{t|rup|veardi}} * {{asm}}: {{t|as|সেউজীয়া|tr=xeuzia}} * {{ast}}: {{t|ast|verde}} * {{aze}}: {{t|az|yaşıl}} * {{pol}}: {{t|pl|zielony}} * {{fas}}: {{t|fa|سبز|tr=sabz}} * {{ban}}: {{t|ban|gadang}}, {{t|ban|ijo}} * {{bak}}: {{t|ba|йәшел|tr=yäšel}} * {{eus}}: {{t|eu|berde}}, {{t|eu|orlegi}} * {{brg}}: {{t|brg|kotiskon}} * {{non}}: {{t|non|grǿnn}} * {{isl}}: {{t|is|grænn}} * {{bel}}: {{t|be|зялёны|tr=zjaljóny}} * {{ben}}: {{t|bn|সবুজ|tr=śôbuz}} * {{por}}: {{t|pt|verde}} * {{ina}}: {{t|ia|verde}} * {{bre}}: {{t|br|glas}} {{q|tự nhiên}}, {{t|br|gwer}} {{q|nhân tạo}} * {{bul}}: {{t|bg|зелен|m|tr=zelén}} * {{bua}}: {{t|bua|ногоон|tr=nogoon}} * {{cat-2}}: {{t|ca|verd}} * {{chg}}: {{t|chg|یاشیل|tr=yāšï̄l}} * {{ccc}}: {{t|ccc|ijsu'pa}} * {{che}}: {{t|ce|баьццара|tr=bäccara}} * {{dlm}}: {{t|dlm|viard}} * {{rom}}: {{t|rom|zèleno}} * {{heb}}: {{t|he|ירוק|tr=yarók}} * {{dan}}: {{t|da|grøn}} * {{deu}}: {{t|de|grün}} * {{pdc}}: {{t|pdc|grie}} * {{ovd}}: {{t|ovd|gryön}} * {{myv}}: {{t|myv|пиже|tr=piže}} * {{est}}: {{t|et|roheline}} * {{fao}}: {{t|fo|grønur}} * {{ofs}}: {{t|ofs|grene}} * {{fur}}: {{t|fur|vert}}, {{t|fur|verd}} * {{gla}}: {{t|gd|uaine}} * {{gag}}: {{t|gag|eşil}} * {{glg}}: {{t|gl|verde}} * {{kat}}: {{t|ka|მწვანე|tr=mc̣vane}} * {{guj}}: {{t|gu|લીલું|tr=līlũ}} * {{nds}}: {{t|nds|gröön}} * {{nld}}: {{t|nl|groen}} * {{hau}}: {{t|ha|kore}} * {{hin}}: {{t|hi|हरा|tr=harā}}, {{t|hi|सब्ज़|tr=sabz}} * {{hun}}: {{t|hu|zöld}} * {{ell}}: {{t|el|πράσινος|m|tr=prásinos}} * {{ido}}: {{t|io|verda}} * {{ind}}: {{t|id|hijau}} * {{langname|inh}}: {{t|inh|баьццара|tr=bäccara}} * {{gle}}: {{t|ga|glas}}, {{t|ga|uaine}} * {{ist}}: {{t|ist|virdo}} * {{jav}}: {{t|jv|ijo}} {{qualifier|ngoko}}, {{t|jv|ijem}} {{qualifier|krama}} * {{csb}}: {{t|csb|zelony}} * {{kaz}}: {{t|kk|жасыл|tr=jasıl}} * {{khm}}: {{t|km|បៃតង|tr=bay tɑɑŋ}} * {{naq}}: {{t|naq|ǃgam}} * {{lld}}: {{t|lld|vërt}} * {{lao}}: {{t|lo|ຂຽວ|tr=khiāu}} * {{lat}}: {{t|la|viridis}} * {{lav}}: {{t|lv|zaļš}} * {{lit}}: {{t|lt|žalias}} * {{lmo}}: {{t|lmo|verd}} * {{ltz}}: {{t|lb|gréng}} * {{msa}}: {{t|ms|hijau}} * {{kxd}}: {{t|kxd|ijau}}, {{t|kxd|gadung}} * {{mkd}}: {{t|mk|зелен|tr=zelen}} * {{mdh}}: {{t|mdh|gadung}} * {{mlg}}: {{t|mg|maitso}} * {{mal}}: {{t|ml|പച്ച|tr=pacca}} * {{mlt}}: {{t|mt|aħdar|m}} * {{glv}}: {{t|gv|glass}} * {{mnc}}: {{t|mnc|ᠨᡳᠣᠸᠠᠩᡤᡳᠶᠠᠨ|tr=niowanggiyan}}, {{t|mnc|ᠨᡳᠣᡥᠣᠨ|tr=niohon}} * {{mri}}: {{t|mi|kākāriki}}, {{t|mi|karera}} {{q|dùng để chỉ các sắc xanh nhạt hơn}}, {{t|mi|uri}} {{q|xanh đậm}}, {{t|mi|kāriki}} * {{mrw}}: {{t|mrw|gadong}} * {{mar}}: {{t|mr|हिरवा|tr=hirvā}} * {{mya}}: {{t|my|စိမ်း|tr=cim:}} * {{min}}: {{t|min|ijau}} * {{mwl}}: {{t|mwl|berde}} * {{mhn}}: {{t|mhn|grea'}} * {{mon}}: {{t|mn|ногоон|tr=nogoon}} * {{nor}}: ** {{nob}}: {{t|nb|grønn}} ** {{nno}}: {{t|nn|grøn}} * {{nah}}: ** {{nci}}: {{t|nci|xoxoctic}} ** {{nhn}}: {{t|nhn|xoxoctic}}, {{t|nhn|xoxohuic}} * {{gld}}: {{t|gld|нёнгиан|tr=nyongian}} * {{nep}}: {{t|ne|हरियो|tr=hariyo}} * {{rus}}: {{t|ru|зелёный|m|tr=zeljónyj}} * {{jpn}}: [[緑]]の (みどりの, midori no), [[緑色]]の (りょくしょくの, ryokushoku no), [[青い]] (あおい, aoi), [[青]]の (あおの, ao no) * {{nrf}}: {{t|nrf|vaert}} {{q|Guernsey}}, {{t|nrf|vèrt}} {{q|Jersey}} * {{oci}}: {{t|oc|verd}} * {{ori}}: {{t|or|ସବୁଜ|tr=sôbujô}}, {{t|or|ଶାଗୁଆ|tr=śagua}} * {{orm}}: {{t|om|magarisa}} * {{oss}}: {{t|os|кӕрдӕгхуыз|tr=kærdægx°yz}}, {{t|os|цъӕх|tr=c’æx}} * {{pap}}: {{t|pap|bèrdè}} * {{pus}}: {{t|ps|زرغون|tr=zarǧun}}, {{t|ps|شين|tr=šin}} * {{san}}: {{t|sa|हरित|tr=harita}}, {{t|sa|हरित्|tr=harit}}, {{t|sa|हरितवर्ण|tr=haritavarṇa}} * {{fra}}: {{t|fr|vert}} * {{fin}}: {{t|fi|vihreä}} * {{pox}}: {{t|pox|grönĕ}} * {{pan}}: {{t|pa|ਹਰਾ|tr=harā}}, {{t|pa|ਸਾਵਾ|tr=sāvā}} * {{epo}}: {{t|eo|verda}} * {{rap}}: {{t|rap|rito mata}} * {{rgn}}: {{t|rgn|vérd}} * {{ron}}: {{t|ro|verde}} * {{roh}}: {{t|rm|verd}} * {{sas}}: {{t|sas|ējo}} * {{ces}}: {{t|cs|zelený}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|зелен}} ** {{Latn}}: {{t|sh|zelen}} * {{shn}}: {{t|shn|ၶဵဝ်|tr=khǎeo}} * {{scn}}: {{t|scn|virdi}} * {{snd}}: {{t|sd|سائو|tr=sāo}} * {{sin}}: {{t|si|කොළ|tr=koḷa}} * {{slk}}: {{t|sk|zelený}} * {{slv}}: {{t|sl|zelen}} * {{sun}}: {{t|su|ᮠᮦᮏᮧ|tr=héjo}}, {{t|su|hejo}} * {{swa}}: {{t|sw|kijani}}, {{t|sw|chanikiwiti}} * {{tgl}}: {{t|tl|lunti}}, {{t|tl|luntian}}, {{t|tl|berde}} * {{tah}}: {{t|ty|matie}}, {{t|ty|poemeedee}} * {{tgk}}: {{t|tg|сабз|tr=sabz}} * {{tzm}}: {{t|tzm|ⴰⵣⴳⵣⴰ|tr=azgza}} * {{tam}}: {{t|ta|பச்சை|tr=paccai}} * {{bod}}: {{t|bo|ལྗང་ཁུ|tr=ljang khu}} * {{tsg}}: {{t|tsg|gaddung}} * {{spa}}: {{t|es|verde}} * {{tel}}: {{t|te|పచ్చని|tr=paccani}} * {{tet}}: {{t|tet|matak}} * {{tha}}: {{t|th|เขียว|tr=kǐao}} * {{blt}}: {{t|blt|ꪵꪄꪫ}} * {{tur}}: {{t|tr|yeşil}} * {{swe}}: {{t|sv|grön}} * {{tir}}: {{t|ti|ቀጠልያ|tr=ḳäṭälya}} * {{txb}}: {{t|txb|motartstse}} * {{tpi}}: {{t|tpi|grinpela}} * {{zha}}: {{t|za|heu}} * {{kor}}: [[녹색]]의 (noksaegui), [[초록]]의 (chorogui) * {{zho}}: ** {{cmn}}: [[綠色]]的, [[绿色]]的 (lǜsè de) ** {{yue}}: [[綠色]]嘅, [[绿色]]嘅 (luk<sup>6</sup> sik<sup>1</sup> ge<sup>3</sup>) * {{tuk}}: {{t|tk|ýaşyl}} * {{udm}}: {{t|udm|вож|tr=vož}} * {{ukr}}: {{t|uk|зелений|m|tr=zelényj}} * {{urd}}: {{t|ur|ہرا|tr=harā}}, {{t|ur|سبز|tr=sabz}} * {{uig}}: {{t|ug|يېشىل|tr=yëshil}} * {{uzb}}: {{t|uz|yashil}}, {{t|uz|sabz}} * {{vec}}: {{t|vec|vérdo}} * {{vol}}: {{t|vo|grünik}} * {{cym}}: {{t|cy|gwyrdd}} * {{wym}}: {{t|wym|grin}} * {{ita}}: {{t|id|verde}} * {{yid}}: {{t|yi|גרין|tr=grin}} * {{zza}}: {{t|zza|hewz}} {{trans-bottom}} {{trans-top|Có màu như màu nước biển hay da trời không vẩn mây}} * {{ara}}: {{t|ar|أزرق|m|tr=ʾazraq}} * {{afr}}: {{t|af|blou}} * {{sqi}}: {{t|sq|kaltër}}, {{t|sq|blu}} * {{amh}}: {{t|am|ሰማያዊ|tr=sämayawi}} * {{eng}}: {{t|en|blue}}, {{t|en|azure}}, {{t|en|sky blue}} * {{arg}}: {{t|an|azul}} * {{hye}}: {{t|hy|կապույտ|tr=kapuyt}}, {{t|hy|երկնագույն|tr=erknaguyn}}, {{t|hy|ծավի|tr=cavi}}, {{t|hy|մավի|tr=mavi}} * {{rup}}: {{t|rup|njirlu}}, {{t|rup|albastru}} * {{asm}}: {{t|as|নীলা|tr=nila}} * {{ast}}: {{t|ast|azul}} * {{aym}}: {{t|ay|larama}} * {{aze}}: {{t|az|göy}}, {{t|az|mavi}} * {{bak}}: {{t|ba|күк|tr=kük}}, {{t|ba|зәңгәр|tr=zäñgär}} * {{eus}}: {{t|eu|urdin}}, {{t|eu|oztin}} * {{bel}}: {{t|be|сіні|tr=síni}}, {{t|be|блакітны|tr=blakítny}} * {{ben}}: {{t|bn|নীল|tr=nil}} * {{bul}}: {{t|bg|син|tr=sin}}, {{t|bg|небесносин|tr=nebesnosín}}, {{t|bg|лазурен|tr=lazúren}} * {{bua}}: {{t|bua|хүхэ|tr=xüxe}} * {{mya}}: {{t|my|ပြာ|tr=pra}}, {{t|my|ကြည်ပြာ|tr=kranypra}} * {{fra}}: {{t|fr|bleu}} {{trans-bottom}} {{trans-top|Mét, tái, màu da của người bệnh}} * {{eng}}: {{t|en|green}}, {{t|en|pale}} * {{fra}}: {{t|fr|vert}}, {{t|fr|pâle}} * {{swe}}: {{t|sv|grön}} {{trans-bottom}} {{trans-top|Nói hoa quả chưa chín}} * {{eng}}: {{t|en|green}}, {{t|en|unripe}} * {{pol}}: {{t|pl|niedojrzały}} * {{por}}: {{t|pt|verde}} * {{bul}}: {{t|bg|неузрял|tr=neuzrjal}} * {{deu}}: {{t|de|grün}} * {{glg}}: {{t|gl|verde}} * {{hun}}: {{t|hu|zöld}} * {{ell}}: {{t|el|άγουρος|tr=ágouros}}, {{t|el|ανώριμος|tr=anórimos}} * {{lat}}: {{t|la|immitis}} * {{mri}}: {{t|mi|torouka}}, {{t|mi|ota}}, {{t|mi|hangongi}}, {{t|mi|kōriri}} * {{mya}}: {{t|my|စိမ်း|tr=cim:}} * {{rus}}: {{t|ru|неспелый|tr=nespélyj}}, {{t|ru|незрелый|tr=nezrélyj}} * {{jpn}}: {{t|ja|未熟|tr=みじゅく, mijuku}} * {{fra}}: {{t|fr|vert}} {{trans-bottom}} {{-see also-}} {{bảng:màu sắc/vi}} {{-ref-}} {{R:FVDP}} {{R:Tratu}} * {{R:Lê Văn Đức 1970|page=1817}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} jygkcjvonur3mpqui3q82hwbjljbceg 2350933 2350677 2026-05-07T10:41:05Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350933 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} * (''Dụng cụ xào nấu'') Bắt nguồn từ chữ Hán <big>[[鐺]]</big>. Chữ này có hai âm: “đang” và “sanh”. Với âm “đang”, nó là từ tượng thanh chỉ tiếng kêu leng keng, loảng xoảng của kim khí. Với âm “sanh”, nó có nghĩa là cái xanh, cái chõ có chân.<ref>An Chi (2013), “[https://petrotimes.vn/xanh-va-xoong-tuc-go-xoong-110425.html Xanh và xoong - Tục gõ xoong]”.</ref> * (''Màu sắc'') Bắt nguồn từ chữ Hán <big>[[青]]</big> (“[[Hán-Việt|HV]]: thanh’’). {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-xanh.wav|Âm thanh (TP. HCM; giọng nữ)}} {{-homo-}} * [[sanh]] {{-hanviet-}} {{top}} * [[瞠]]: [[sanh]], [[xanh]], [[đường]] * [[赪]]: [[trinh]], [[sanh]], [[xanh]] * [[赬]]: [[trinh]], [[sanh]], [[xanh]] * [[撑]]: [[sanh]], [[xanh]] * [[撐]]: [[sanh]], [[xanh]] {{mid}} * [[頳]]: [[trinh]], [[xanh]] * [[橕]]: [[sanh]], [[xanh]] * [[𣛟]]: [[sanh]], [[xanh]] * [[牚]]: [[sanh]], [[xanh]] * [[㛟]]: [[xanh]] {{bottom}} {{-hanviet-t-}} {{top}} * [[撐]]: [[xanh]] * [[橕]]: [[xanh]] {{mid}} * [[赬]]: [[trinh]], [[xanh]] {{bottom}} {{-nôm-}} {{top}} * [[瞠]]: [[sanh]], [[xanh]] * [[鐣]]: [[xanh]] * [[𩇢]]: [[xinh]], [[xanh]] * [[𥑥]]: [[sành]], [[xành]], [[xanh]], [[sinh]] * [[錆]]: [[sanh]], [[thương]], [[xanh]], [[thanh]] * [[赪]]: [[xanh]] * [[赬]]: [[sanh]], [[xanh]], [[trinh]] * [[鉎]]: [[xanh]], [[sinh]] {{mid}} * [[撑]]: [[xinh]], [[xanh]], [[xênh]] * [[撐]]: [[sanh]], [[xinh]], [[xanh]], [[xênh]], [[sênh]] * [[青]]: [[thênh]], [[xanh]], [[thanh]] * [[󰔵]]: [[xanh]] * [[铛]]: [[sanh]], [[xanh]], [[đương]], [[đang]] * [[鐺]]: [[sanh]], [[xanh]], [[đương]], [[đang]] * [[𣛟]]: [[sanh]], [[xinh]], [[xanh]], [[xênh]] {{bottom}} {{-noun-}} {{pn}} # Dụng cụ dùng trong [[bếp]] để [[xào nấu]], bằng [[đồng]], [[thành]] [[đứng]], có hai [[quai]]. #* '''1938''', [[w:Nguyên Hồng|Nguyên Hồng]], ''Hàng cơm đêm''<sup>[http://www.gocnhin.net/cgi-bin/viewitem.pl?273]</sup>: #*: Xuống bếp, Vịnh đổ mỡ vào '''xanh'''. #* [[w:Ca dao Việt Nam|Ca dao Việt Nam]]: #*: Còn thừa mua cái bình vôi,<br>Mua '''xanh''', mua chảo, mua nồi nấu ăn. # {{context|Từ cũ; văn chương}} [[trời|Trời]], [[ông trời]]. #* [[w:Đặng Trần Côn|Đặng Trần Côn]], “Chinh phụ ngâm”, [[w:Đoàn Thị Điểm|Đoàn Thị Điểm]] (?) dịch<sup>[https://vi.wikisource.org/wiki/Chinh_ph%E1%BB%A5_ng%C3%A2m_(%C4%90o%C3%A0n_Th%E1%BB%8B_%C4%90i%E1%BB%83m_d%E1%BB%8Bch)]</sup>: #*: '''Xanh''' kia thăm thẳm tầng trên,<br>Vì ai gây dựng cho nên nỗi này? # {{context|Khẩu ngữ}} Miền [[rừng núi]], dùng để chỉ khu [[căn cứ]] [[cách mạng]] trong thời kì [[w:Chiến tranh Việt Nam|kháng chiến chống Mỹ]]. #: {{ux|vi|Cả nhà đã lên '''xanh'''.}} {{-syn-}} * (''Nghĩa 2'') [[cao xanh]], [[ông xanh]] {{-drv-}} {{đầu}} * [[quai xanh vành chảo]] * [[xanh không thủng cá đi đằng nào]] {{cuối}} {{-adj-}} [[Tập tin:Rice Field in Vietnam - panoramio.jpg|nhỏ|Cánh đồng lúa màu '''xanh'''.]] [[Tập tin:The deep blue sea (6834127561).jpg|nhỏ|Bầu trời và biển màu '''xanh'''.]] {{pn}} # Từ chỉ [[màu sắc]], không phân biệt giữa hai màu [[lục]] và [[lam]]. #: {{ux|vi|Áo màu '''xanh'''.}} ## Có [[màu]] như màu [[lá cây]]. ##* [[w:Ca dao Việt Nam|Ca dao Việt Nam]]: ##*: Cây '''xanh''' thì lá cũng '''xanh''',<br>Cha mẹ hiền lành để đức cho con. ##* '''1950''', [[w:Hoàng Việt|Hoàng Việt]], ''Lá xanh'': ##*: Lá còn '''xanh''' như anh đang còn trẻ. ## Có màu như màu [[nước]] [[biển]] hay [[da trời]] không [[vẩn]] [[mây]]. ##: {{ux|vi|Bầu trời '''xanh''' thẳm.}} ##* '''1889''', [[w:Trương Minh Ký|Trương Minh Ký]], ''Như Tây nhựt trình''<sup>[https://vi.wikisource.org/wiki/Nh%C6%B0_T%C3%A2y_nh%E1%BB%B1t_tr%C3%Acnh]</sup>: ##*: Trời '''xanh''' kệch, biển lặn trang,<br>Xa trông cá nược ước bằng cá bông. # Từ chỉ [[nước da]]: ## [[mét|Mét]], [[tái]], màu da của người [[bệnh]]. ##: {{ux|vi|Mới ốm dậy, da còn '''xanh'''.}} ## Da mặt của người đang [[sợ]], đang [[khiếp]]. ##: {{ux|vi|Sợ '''xanh''' mặt.}} # Nói [[hoa quả]] chưa [[chín]]. #: {{ux|vi|Quả vẫn còn '''xanh'''.}} #: {{ux|vi|Không nên ăn ổi '''xanh'''.}} #* '''1941''', [[w:Nam Cao|Nam Cao]], ''Chí Phèo''<sup>[https://vi.wikisource.org/wiki/Ch%C3%AD_Ph%C3%A8o]</sup>: #*: Lúc đi đường, hắn đã vặn được ở nhà nào đó bốn quả chuối '''xanh''', và bốc của cô hàng xén một dúm con muối trắng. # {{context|Văn chương}} Nói người hay [[tuổi đời]] còn [[trẻ]]. #: {{ux|vi|Tuổi '''xanh'''.}} {{-usage-}} * Từ “xanh” khi đứng riêng có nghĩa khá mơ hồ, có thể dùng để miêu tả nhiều dải màu khác nhau, do đó cần dựa vào ngữ cảnh cụ thể để xác định màu sắc được nói đến. {{-syn-}} * (''Có màu như màu lá cây'') [[xanh lá cây]], [[xanh lục]], [[lục]] * (''Có màu như màu nước biển hay da trời không vẩn mây'') [[lam]], [[xanh lam]], [[xanh dương]], [[lơ]], [[xanh lơ]], [[xanh da trời]], [[thiên thanh]] * (''Hoa quả chưa chín'') [[non]], [[chưa]] [[chín]] {{-ant-}} * (''Hoa quả chưa chín'') [[chín]] {{-redup-}} * [[xanh xanh]] {{-drv-}} {{đầu}} * [[bánh đậu xanh]] * [[bật đèn xanh]] * [[cách mạng xanh]] * [[cây xanh]] * [[chắc xanh]] * [[chè đậu xanh]] * [[chè xanh]] * [[chim xanh]] * [[chợ xanh]] * [[công nghệ xanh]] * [[cu xanh]] * [[đầu xanh]] * [[đậu xanh]] * [[đèn xanh]] * [[đèn xanh đèn đỏ]] * [[đèn xanh đỏ]] * [[khố xanh]] * [[lầu xanh]] * [[lính khố xanh]] * [[mắt xanh]] * [[mây xanh]] * [[mũ nồi xanh]] * [[phân xanh]] * [[ruồi xanh]] * [[rừng xanh núi đỏ]] * [[sử xanh]] * [[tái xanh]] * [[tái xanh tái xám]] * [[tóc xanh]] * [[tôm càng xanh]] * [[trà xanh]] * [[tuổi xanh]] * [[xanh biếc]] * [[xanh bủng]] * [[xanh bủng xanh beo]] * [[xanh cỏ]] * [[xanh da trời]] * [[xanh dương]] * [[xanh đầu thì bỏ, đỏ đầu thì nuôi]] * [[xanh hòa bình]] * [[xanh lá cây]] * [[xanh lam]] * [[xanh lặt lìa]] * [[xanh lè]] * [[xanh lẻo]] * [[xanh lét]] * [[xanh lơ]] * [[xanh mắt]] * [[xanh mét]] * [[xanh ngắt]] * [[xanh nước biển]] * [[xanh om]] * [[xanh rì]] * [[xanh rờn]] * [[xanh rớt]] * [[xanh tốt]] * [[xanh tươi]] * [[xanh um]] * [[xanh vỏ đỏ lòng]] * [[xanh xao]] * [[xanh xương]] * [[xuân xanh]] * [[xương quai xanh]] {{cuối}} {{-trans-}} {{trans-top|Từ chỉ màu sắc, không phân biệt giữa hai màu lục và lam}} * {{eng}}: {{t|en|grue}} * {{grn}}: {{t|gn|hovy}} * {{lkt}}: {{t|lkt|tȟó}} * {{mop}}: {{t|mop|yaʼax}} * {{jpn}}: {{t|ja|青い|tr=aoi}} * {{kor}}: {{t|ko|푸르다|tr=pureuda}} * {{zho}}: ** {{cmn}}: {{t|cmn|青|sc=Hani}} {{trans-bottom}} {{trans-top| Có màu như màu lá cây}} * {{ara}}: {{t|ar| أخضر|m|tr= ʾaḵḍar}} * {{ace}}: {{t|ace|ijo}} * {{ady}}: {{t|ady| уцышъо|tr=wcəŝo}} * {{afr}}: {{t|af|groen}} * {{sqi}}: {{t|sq|gjelbër}}, {{t|sq|blertë}} * {{amh}}: {{t|am|አረንጓዴ|tr=ʾärängʷade}} * {{eng}}: {{t|en|green}} ** {{ang}}: {{t|ang|grene}} ** {{enm}}: {{t|enm|grene}}, {{t|enm|greene}} * {{hye}}: {{t|hy|կանաչ|tr=kanačʿ}} * {{rup}}: {{t|rup|veardi}} * {{asm}}: {{t|as|সেউজীয়া|tr=xeuzia}} * {{ast}}: {{t|ast|verde}} * {{aze}}: {{t|az|yaşıl}} * {{pol}}: {{t|pl|zielony}} * {{fas}}: {{t|fa|سبز|tr=sabz}} * {{ban}}: {{t|ban|gadang}}, {{t|ban|ijo}} * {{bak}}: {{t|ba|йәшел|tr=yäšel}} * {{eus}}: {{t|eu|berde}}, {{t|eu|orlegi}} * {{brg}}: {{t|brg|kotiskon}} * {{non}}: {{t|non|grǿnn}} * {{isl}}: {{t|is|grænn}} * {{bel}}: {{t|be|зялёны|tr=zjaljóny}} * {{ben}}: {{t|bn|সবুজ|tr=śôbuz}} * {{por}}: {{t|pt|verde}} * {{ina}}: {{t|ia|verde}} * {{bre}}: {{t|br|glas}} {{q|tự nhiên}}, {{t|br|gwer}} {{q|nhân tạo}} * {{bul}}: {{t|bg|зелен|m|tr=zelén}} * {{bua}}: {{t|bua|ногоон|tr=nogoon}} * {{cat-old}}: {{t|ca|verd}} * {{chg}}: {{t|chg|یاشیل|tr=yāšï̄l}} * {{ccc}}: {{t|ccc|ijsu'pa}} * {{che}}: {{t|ce|баьццара|tr=bäccara}} * {{dlm}}: {{t|dlm|viard}} * {{rom}}: {{t|rom|zèleno}} * {{heb}}: {{t|he|ירוק|tr=yarók}} * {{dan}}: {{t|da|grøn}} * {{deu}}: {{t|de|grün}} * {{pdc}}: {{t|pdc|grie}} * {{ovd}}: {{t|ovd|gryön}} * {{myv}}: {{t|myv|пиже|tr=piže}} * {{est}}: {{t|et|roheline}} * {{fao}}: {{t|fo|grønur}} * {{ofs}}: {{t|ofs|grene}} * {{fur}}: {{t|fur|vert}}, {{t|fur|verd}} * {{gla}}: {{t|gd|uaine}} * {{gag}}: {{t|gag|eşil}} * {{glg}}: {{t|gl|verde}} * {{kat}}: {{t|ka|მწვანე|tr=mc̣vane}} * {{guj}}: {{t|gu|લીલું|tr=līlũ}} * {{nds}}: {{t|nds|gröön}} * {{nld}}: {{t|nl|groen}} * {{hau}}: {{t|ha|kore}} * {{hin}}: {{t|hi|हरा|tr=harā}}, {{t|hi|सब्ज़|tr=sabz}} * {{hun}}: {{t|hu|zöld}} * {{ell}}: {{t|el|πράσινος|m|tr=prásinos}} * {{ido}}: {{t|io|verda}} * {{ind}}: {{t|id|hijau}} * {{langname|inh}}: {{t|inh|баьццара|tr=bäccara}} * {{gle}}: {{t|ga|glas}}, {{t|ga|uaine}} * {{ist}}: {{t|ist|virdo}} * {{jav}}: {{t|jv|ijo}} {{qualifier|ngoko}}, {{t|jv|ijem}} {{qualifier|krama}} * {{csb}}: {{t|csb|zelony}} * {{kaz}}: {{t|kk|жасыл|tr=jasıl}} * {{khm}}: {{t|km|បៃតង|tr=bay tɑɑŋ}} * {{naq}}: {{t|naq|ǃgam}} * {{lld}}: {{t|lld|vërt}} * {{lao}}: {{t|lo|ຂຽວ|tr=khiāu}} * {{lat}}: {{t|la|viridis}} * {{lav}}: {{t|lv|zaļš}} * {{lit}}: {{t|lt|žalias}} * {{lmo}}: {{t|lmo|verd}} * {{ltz}}: {{t|lb|gréng}} * {{msa}}: {{t|ms|hijau}} * {{kxd}}: {{t|kxd|ijau}}, {{t|kxd|gadung}} * {{mkd}}: {{t|mk|зелен|tr=zelen}} * {{mdh}}: {{t|mdh|gadung}} * {{mlg}}: {{t|mg|maitso}} * {{mal}}: {{t|ml|പച്ച|tr=pacca}} * {{mlt}}: {{t|mt|aħdar|m}} * {{glv}}: {{t|gv|glass}} * {{mnc}}: {{t|mnc|ᠨᡳᠣᠸᠠᠩᡤᡳᠶᠠᠨ|tr=niowanggiyan}}, {{t|mnc|ᠨᡳᠣᡥᠣᠨ|tr=niohon}} * {{mri}}: {{t|mi|kākāriki}}, {{t|mi|karera}} {{q|dùng để chỉ các sắc xanh nhạt hơn}}, {{t|mi|uri}} {{q|xanh đậm}}, {{t|mi|kāriki}} * {{mrw}}: {{t|mrw|gadong}} * {{mar}}: {{t|mr|हिरवा|tr=hirvā}} * {{mya}}: {{t|my|စိမ်း|tr=cim:}} * {{min}}: {{t|min|ijau}} * {{mwl}}: {{t|mwl|berde}} * {{mhn}}: {{t|mhn|grea'}} * {{mon}}: {{t|mn|ногоон|tr=nogoon}} * {{nor}}: ** {{nob}}: {{t|nb|grønn}} ** {{nno}}: {{t|nn|grøn}} * {{nah}}: ** {{nci}}: {{t|nci|xoxoctic}} ** {{nhn}}: {{t|nhn|xoxoctic}}, {{t|nhn|xoxohuic}} * {{gld}}: {{t|gld|нёнгиан|tr=nyongian}} * {{nep}}: {{t|ne|हरियो|tr=hariyo}} * {{rus}}: {{t|ru|зелёный|m|tr=zeljónyj}} * {{jpn}}: [[緑]]の (みどりの, midori no), [[緑色]]の (りょくしょくの, ryokushoku no), [[青い]] (あおい, aoi), [[青]]の (あおの, ao no) * {{nrf}}: {{t|nrf|vaert}} {{q|Guernsey}}, {{t|nrf|vèrt}} {{q|Jersey}} * {{oci}}: {{t|oc|verd}} * {{ori}}: {{t|or|ସବୁଜ|tr=sôbujô}}, {{t|or|ଶାଗୁଆ|tr=śagua}} * {{orm}}: {{t|om|magarisa}} * {{oss}}: {{t|os|кӕрдӕгхуыз|tr=kærdægx°yz}}, {{t|os|цъӕх|tr=c’æx}} * {{pap}}: {{t|pap|bèrdè}} * {{pus}}: {{t|ps|زرغون|tr=zarǧun}}, {{t|ps|شين|tr=šin}} * {{san}}: {{t|sa|हरित|tr=harita}}, {{t|sa|हरित्|tr=harit}}, {{t|sa|हरितवर्ण|tr=haritavarṇa}} * {{fra}}: {{t|fr|vert}} * {{fin}}: {{t|fi|vihreä}} * {{pox}}: {{t|pox|grönĕ}} * {{pan}}: {{t|pa|ਹਰਾ|tr=harā}}, {{t|pa|ਸਾਵਾ|tr=sāvā}} * {{epo}}: {{t|eo|verda}} * {{rap}}: {{t|rap|rito mata}} * {{rgn}}: {{t|rgn|vérd}} * {{ron}}: {{t|ro|verde}} * {{roh}}: {{t|rm|verd}} * {{sas}}: {{t|sas|ējo}} * {{ces}}: {{t|cs|zelený}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|зелен}} ** {{Latn}}: {{t|sh|zelen}} * {{shn}}: {{t|shn|ၶဵဝ်|tr=khǎeo}} * {{scn}}: {{t|scn|virdi}} * {{snd}}: {{t|sd|سائو|tr=sāo}} * {{sin}}: {{t|si|කොළ|tr=koḷa}} * {{slk}}: {{t|sk|zelený}} * {{slv}}: {{t|sl|zelen}} * {{sun}}: {{t|su|ᮠᮦᮏᮧ|tr=héjo}}, {{t|su|hejo}} * {{swa}}: {{t|sw|kijani}}, {{t|sw|chanikiwiti}} * {{tgl}}: {{t|tl|lunti}}, {{t|tl|luntian}}, {{t|tl|berde}} * {{tah}}: {{t|ty|matie}}, {{t|ty|poemeedee}} * {{tgk}}: {{t|tg|сабз|tr=sabz}} * {{tzm}}: {{t|tzm|ⴰⵣⴳⵣⴰ|tr=azgza}} * {{tam}}: {{t|ta|பச்சை|tr=paccai}} * {{bod}}: {{t|bo|ལྗང་ཁུ|tr=ljang khu}} * {{tsg}}: {{t|tsg|gaddung}} * {{spa}}: {{t|es|verde}} * {{tel}}: {{t|te|పచ్చని|tr=paccani}} * {{tet}}: {{t|tet|matak}} * {{tha}}: {{t|th|เขียว|tr=kǐao}} * {{blt}}: {{t|blt|ꪵꪄꪫ}} * {{tur}}: {{t|tr|yeşil}} * {{swe}}: {{t|sv|grön}} * {{tir}}: {{t|ti|ቀጠልያ|tr=ḳäṭälya}} * {{txb}}: {{t|txb|motartstse}} * {{tpi}}: {{t|tpi|grinpela}} * {{zha}}: {{t|za|heu}} * {{kor}}: [[녹색]]의 (noksaegui), [[초록]]의 (chorogui) * {{zho}}: ** {{cmn}}: [[綠色]]的, [[绿色]]的 (lǜsè de) ** {{yue}}: [[綠色]]嘅, [[绿色]]嘅 (luk<sup>6</sup> sik<sup>1</sup> ge<sup>3</sup>) * {{tuk}}: {{t|tk|ýaşyl}} * {{udm}}: {{t|udm|вож|tr=vož}} * {{ukr}}: {{t|uk|зелений|m|tr=zelényj}} * {{urd}}: {{t|ur|ہرا|tr=harā}}, {{t|ur|سبز|tr=sabz}} * {{uig}}: {{t|ug|يېشىل|tr=yëshil}} * {{uzb}}: {{t|uz|yashil}}, {{t|uz|sabz}} * {{vec}}: {{t|vec|vérdo}} * {{vol}}: {{t|vo|grünik}} * {{cym}}: {{t|cy|gwyrdd}} * {{wym}}: {{t|wym|grin}} * {{ita}}: {{t|id|verde}} * {{yid}}: {{t|yi|גרין|tr=grin}} * {{zza}}: {{t|zza|hewz}} {{trans-bottom}} {{trans-top|Có màu như màu nước biển hay da trời không vẩn mây}} * {{ara}}: {{t|ar|أزرق|m|tr=ʾazraq}} * {{afr}}: {{t|af|blou}} * {{sqi}}: {{t|sq|kaltër}}, {{t|sq|blu}} * {{amh}}: {{t|am|ሰማያዊ|tr=sämayawi}} * {{eng}}: {{t|en|blue}}, {{t|en|azure}}, {{t|en|sky blue}} * {{arg}}: {{t|an|azul}} * {{hye}}: {{t|hy|կապույտ|tr=kapuyt}}, {{t|hy|երկնագույն|tr=erknaguyn}}, {{t|hy|ծավի|tr=cavi}}, {{t|hy|մավի|tr=mavi}} * {{rup}}: {{t|rup|njirlu}}, {{t|rup|albastru}} * {{asm}}: {{t|as|নীলা|tr=nila}} * {{ast}}: {{t|ast|azul}} * {{aym}}: {{t|ay|larama}} * {{aze}}: {{t|az|göy}}, {{t|az|mavi}} * {{bak}}: {{t|ba|күк|tr=kük}}, {{t|ba|зәңгәр|tr=zäñgär}} * {{eus}}: {{t|eu|urdin}}, {{t|eu|oztin}} * {{bel}}: {{t|be|сіні|tr=síni}}, {{t|be|блакітны|tr=blakítny}} * {{ben}}: {{t|bn|নীল|tr=nil}} * {{bul}}: {{t|bg|син|tr=sin}}, {{t|bg|небесносин|tr=nebesnosín}}, {{t|bg|лазурен|tr=lazúren}} * {{bua}}: {{t|bua|хүхэ|tr=xüxe}} * {{mya}}: {{t|my|ပြာ|tr=pra}}, {{t|my|ကြည်ပြာ|tr=kranypra}} * {{fra}}: {{t|fr|bleu}} {{trans-bottom}} {{trans-top|Mét, tái, màu da của người bệnh}} * {{eng}}: {{t|en|green}}, {{t|en|pale}} * {{fra}}: {{t|fr|vert}}, {{t|fr|pâle}} * {{swe}}: {{t|sv|grön}} {{trans-bottom}} {{trans-top|Nói hoa quả chưa chín}} * {{eng}}: {{t|en|green}}, {{t|en|unripe}} * {{pol}}: {{t|pl|niedojrzały}} * {{por}}: {{t|pt|verde}} * {{bul}}: {{t|bg|неузрял|tr=neuzrjal}} * {{deu}}: {{t|de|grün}} * {{glg}}: {{t|gl|verde}} * {{hun}}: {{t|hu|zöld}} * {{ell}}: {{t|el|άγουρος|tr=ágouros}}, {{t|el|ανώριμος|tr=anórimos}} * {{lat}}: {{t|la|immitis}} * {{mri}}: {{t|mi|torouka}}, {{t|mi|ota}}, {{t|mi|hangongi}}, {{t|mi|kōriri}} * {{mya}}: {{t|my|စိမ်း|tr=cim:}} * {{rus}}: {{t|ru|неспелый|tr=nespélyj}}, {{t|ru|незрелый|tr=nezrélyj}} * {{jpn}}: {{t|ja|未熟|tr=みじゅく, mijuku}} * {{fra}}: {{t|fr|vert}} {{trans-bottom}} {{-see also-}} {{bảng:màu sắc/vi}} {{-ref-}} {{R:FVDP}} {{R:Tratu}} * {{R:Lê Văn Đức 1970|page=1817}} {{R:WinVNKey:Lê Sơn Thanh}} {{catname|Danh từ|tiếng Việt}} {{catname|Tính từ|tiếng Việt}} m7q5sxb0s06of9f28og02pze0nuyxzn thiên đỉnh 0 48210 2350810 2112969 2026-05-07T08:08:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350810 wikitext text/x-wiki {{-info-}} {{-vie-}} {{-pron-}} {{vie-pron|thiên|đỉnh}} {{-etym-}} {{etym-from | term = thiên | meaning = trời | 2 term = đỉnh | 2 meaning = điểm cao nhất }} {{-paro-}} :* [[thiên đình]] :* [[thiên định]] {{-noun-}} '''thiên đỉnh''' # [[điểm|Điểm]] [[gặp nhau]] [[tưởng tượng]] giữa đường [[thẳng đứng]] [[đi qua]] [[vị trí]] [[người]] [[quan sát]] và [[vòm trời]]. #:''[[Mặt Trời]] đi qua '''thiên đỉnh'''''. {{-related-}} * [[thiên để]] {{-trans-}} {{đầu}} *{{id}}: [[zenith]] *{{cat-2}}: [[zenit]] *{{cs}}: [[zenit]] *{{da}}: [[zenit]] *{{de}}: [[Zenit]] (trong [[thiên văn học]]) *{{en}}: [[zenith]] *{{es}}: [[cenit]] *{{eo}}: [[zenito]] *{{fr}}: [[zénith]] (trong [[thiên văn học]]) *{{gl}}: [[cénit]] *{{hr}}: [[zenit]] *{{is}}: [[hvirfilpunktur]] {{giữa}} *{{it}}: [[zenit]] *{{he}}: [[זנית]] *{{hu}}: [[zenit]] *{{nl}}: [[zenit]] (trong [[thiên văn học]]) *{{ja}}: [[天頂]] *{{no}}: [[senit]] *{{pl}}: [[zenit]] (trong [[thiên văn học]]) *{{pt}}: [[zênite]] *{{sk}}: [[zenit]] *{{sl}}: [[nadglavišče]] *{{fi}}: [[zeniitti]] *{{sv}}: [[zenit]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 50fyo2yqmz6juoa6nzmop9f80acj6zw 2350934 2350810 2026-05-07T10:41:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350934 wikitext text/x-wiki {{-info-}} {{-vie-}} {{-pron-}} {{vie-pron|thiên|đỉnh}} {{-etym-}} {{etym-from | term = thiên | meaning = trời | 2 term = đỉnh | 2 meaning = điểm cao nhất }} {{-paro-}} :* [[thiên đình]] :* [[thiên định]] {{-noun-}} '''thiên đỉnh''' # [[điểm|Điểm]] [[gặp nhau]] [[tưởng tượng]] giữa đường [[thẳng đứng]] [[đi qua]] [[vị trí]] [[người]] [[quan sát]] và [[vòm trời]]. #:''[[Mặt Trời]] đi qua '''thiên đỉnh'''''. {{-related-}} * [[thiên để]] {{-trans-}} {{đầu}} *{{id}}: [[zenith]] *{{cat-old}}: [[zenit]] *{{cs}}: [[zenit]] *{{da}}: [[zenit]] *{{de}}: [[Zenit]] (trong [[thiên văn học]]) *{{en}}: [[zenith]] *{{es}}: [[cenit]] *{{eo}}: [[zenito]] *{{fr}}: [[zénith]] (trong [[thiên văn học]]) *{{gl}}: [[cénit]] *{{hr}}: [[zenit]] *{{is}}: [[hvirfilpunktur]] {{giữa}} *{{it}}: [[zenit]] *{{he}}: [[זנית]] *{{hu}}: [[zenit]] *{{nl}}: [[zenit]] (trong [[thiên văn học]]) *{{ja}}: [[天頂]] *{{no}}: [[senit]] *{{pl}}: [[zenit]] (trong [[thiên văn học]]) *{{pt}}: [[zênite]] *{{sk}}: [[zenit]] *{{sl}}: [[nadglavišče]] *{{fi}}: [[zeniitti]] *{{sv}}: [[zenit]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] ap1ev1rbgz4rvra8a9taiu7bkh55qju pan 0 62521 2350831 2350071 2026-05-07T08:12:46Z Kateru Zakuro 34522 2350831 wikitext text/x-wiki {{also|Pan|PAN|Pan.|pan-|Pan-|pān|pán|Pán|păn|pàn|päñ|pæn|пан}} {{also|πάν|Πάν|πᾶν|パン|пањ|παν}} {{-afr-}} {{-noun-}} {{af-noun|panne}} # [[hồ|Hồ]]. # [[chảo|Chảo]] [[rán]]. {{-synonym-}} * {{sense|hồ}} {{l|af|meer}} {{-eng-}} [[Tập tin:Pfanne (Edelstahl).jpg|nhỏ|phải|Một cái chảo (1)]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpæn/}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-pan.ogg |pron=ˈpæn}} {{-homo-}} * [[Pan]] {{-paro-}} * [[Pan]] {{-etymology-}} ; [[#Danh từ 2|danh từ]], [[#Ngoại động từ|ngoại động từ]], [[#Nội động từ|nội động từ]] : {{etym|lang=eng|from= * [[ang:panne]] ** [[gem-proto:*pannōn]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[pan#Tiếng Hà Lan|pan]]'', {{deu|style=plain}} ''[[Pfanne]]''. ; lá trầu không, miến trầu : {{etym|lang=eng|from= * [[hin:पान]] (pān) }} ; phần, khoảng cách trong công sự, lá : {{etym|lang=eng|from= * [[ang:]] ** [[fro:]] *** [[lat:pannus]] }} ; cuộn ngang : {{etym|lang=eng|from= * [[panorama]] ** [[pan-]] = tất cả ** [[grc:ὅραμα|ὅρᾱμᾰ]] ‎(hórāma) = xem }} ; liên kết : So sánh với {{fra|style=plain}} ''[[pan#Tiếng Pháp|pan]]'' ‎(“vạt áo”), {{lat|style=plain}} ''[[pannus]]'' ‎(“giẻ”). {{-noun-}} {{eng-noun}} # [[khay|Khay]], [[khuôn]] ([[nướng]] [[bánh]], chứa bánh). # [[chảo|Chảo]] [[rán]]. # [[nồi|Nồi]], [[xoong]], [[soong]]. # Cái [[chảo]], cái [[xanh]]. # {{@|Ireland}} Cái [[chậu]]. # Cái [[giần]] (để [[đãi]] [[vàng]]). # {{@|địa lý}} [[đất|Đất]] [[trũng]] [[lòng chảo]]. # Sự [[chỉ trích]] [[gay gắt]], sự [[phê bình]] [[nghiêm khắc]], sự [[đả kích]]. # [[ổ|Ổ]] [[bánh mì]]. # [[lá|Lá]] [[trầu không]] (để [[ăn trầu]]). # [[miếng|Miếng]] [[trầu]]. # {{@|cũ}} [[chậu|Chậu]] [[đái]] [[đêm]]. # Phần chính của [[bồn cầu]] [[xí bệt]]. # {{@|Mỹ||lóng}} [[đầu|Đầu]]; [[mặt]]. # {{@|xây dựng}} [[dứng|Dứng]] ([[tường]]). # [[chảo|Chảo]] [[chân không]]. # [[ổ|Ổ]] [[nạp]] [[thuốc súng]] (ở một số [[súng]] [[cổ]]). # [[sọ|Sọ]]. # {{@|xây dựng}} Chỗ [[thụt]] vào để [[lắp]] vào [[lá]] [[bản lề]]. # {{@|địa lý}} [[tầng|Tầng]] [[đất]] [[cái]]. # [[phần|Phần]]; phần [[chia]]. # {{@|quân sự}} [[khoảng cách|Khoảng cách]] giữa [[góc]] chính và góc [[sườn]] trong [[công sự]]. # [[lá|Lá]] ([[vàng]], [[bạc]]). # [[đĩa|Đĩa]] [[cân]]. # {{@|kỹ thuật}} [[nồi|Nồi]], [[bể]] ([[luyện kim]]...). {{-syn-}} ; khay * [[cookie sheet]] * [[tin]] ; chảo rán * [[frying pan]] * [[skillet]] ; nồi * [[saucepan]] * [[pot]] ; chảo * [[wok]] ; lá trầu không * [[paan]] ; miếng trầu * [[paan]] ; chậu đái đệm * [[chamber pot]] ; chảo chân không * [[vacuum pan]] ; sọ * [[brain pan]] ; tầng đất cái * [[hard pan]] ; phần * [[part]] * [[portion]] ; lá * [[leaf]] {{-drv-}} * [[baking pan]] * [[bedpan]] * [[deadpan]] * [[flash in the pan]] * [[frying pan]] * [[pan former]] * [[pan man]] * [[panyard]] * [[saucepan]] {{-tr-verb-}} '''pan''' ''ngoại động từ'' {{IPA|/ˈpæn/}} # {{term|+ off, out}} [[đãi|Đãi]] ([[vàng]] ở trong [[cát]], bằng cái [[giần]]). # {{@|thông tục}} [[chỉ trích|Chỉ trích]] [[gay gắt]], [[phê bình]] [[nghiêm khắc]], [[đả kích]]. # {{@|thông tục}} [[thắng lợi|Thắng lợi]] [[thuyết phục]]. # [[cuộn|Cuộn]] [[ngang]] ([[camera]], [[hình]]). {{-forms-}} {{eng-verb|base=pan|pan|n|ed}} {{-related-}} * [[sluice]] * [[lavatory]] {{-intr-verb-}} '''pan''' ''nội động từ (+ out)'' {{IPA|/ˈpæn/}} # [[đãi|Đãi]] được [[vàng]], có vàng ([[cát]]...). # {{@|bóng}} [[kết quả|Kết quả]]. #: ''how did it '''pan''' out?'' — việc ấy kết quả thế nào? #: ''it panned out well'' — cái đó kết quả khá # {{@|nghệ thuật}} [[quay|Quay]], [[lia]] [[máy]] ([[kỹ thuật]] [[cắt]] [[khuôn]] [[hình]]). # {{@|nghệ thuật}} [[quét|Quét]] [[âm thanh]] qua [[khắp]] [[loa]]. # [[liên kết|Liên kết]], [[liên hiệp]], [[đoàn kết]]. {{-forms-}} {{eng-verb|base=pan|pan|n|ed}} {{-drv-}} * [[pan and scan]] * [[panner]] {{-related-}} * [[tilt]] * [[cant]] {{-adj-}} {{eng-adj|-}} # {{@|lóng}} [[toàn tính luyến ái|Toàn tính luyến ái]]. {{-syn-}} * [[pansexual]] {{-ref-}} {{R:FVDP}} {{-arg-}} {{-etymology-}} {{etym|lang=arg|from= * [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} # [[bánh mì|Bánh mì]]. {{-ast-}} {{-etymology-}} {{etym|lang=ast|from= * [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ({{plur}} [[panes]]) # [[bánh mì|Bánh mì]]. {{-pol-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pan̪/}} {{pron-audio |place=Ba Lan (nam giới) |file=Pl-pan.ogg |pron=pan̪}} {{-etymology-}} Không rõ. Có thể từ tiếng Saxon cổ ''[[fan#Tiếng Saxon cổ|fan]]'' ‎(“quý tộc”). Cùng nguồn gốc với tiếng Séc cổ ''[[hpan]]'', {{ces|style=plain}} và {{slk|style=plain}} ''[[pan#Tiếng Séc|pan]]'' và ''[[pán#Tiếng Séc|pán]]'', {{wen|style=plain}} ''[[pan#Tiếng Sorb|pan]]'', {{ukr|style=plain}} ''[[пан#Tiếng Ukraina|пан]]'' ‎(''pan''), {{bel|style=plain}} ''[[пан#Tiếng Belarus|пан]]'' ‎(''pan''). {{-per-pronoun-}} '''pan''' {{m}} ({{f}} [[pani]]) # [[ông|Ông]]. #: ''Czy mógłby '''pan''' zamknąć drzwi?'' – Xin ông đóng cửa. # [[thầy|Thầy]]. # [[chúa|Chúa]]. {{-related-}} * [[pani]] * [[państwo]] {{-roa-ptg-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpã/}} {{-etymology-}} {{etym|lang=roa-ptg|from= * [[lat:panem|pānem]] = dạng nghiệp cách số ít: ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ‎({{plur}} [[pães]]) # [[bánh mì|Bánh mì]]. {{-drv-}} * {{por}}: [[pão#Tiếng Bồ Đào Nha|pão]] ** {{ben}}: [[পাঁউরুটি]] ‎(''paun-ruti'') ** {{hin}}: [[पाव]] ‎(''pāv'') ** {{mya}}: [[ပေါင်မုန့်]] ‎(''paungmun.'') ** {{jpn}}: [[パン]] ‎(''pan'') *** {{kor}}: [[빵]] ‎(''ppang'') *** {{nan}}: [[pháng]] ** {{mar}}: [[पाव]] ‎(''pāv'') ** {{tha}}: [[ปัง]] ‎(''bpang'') * {{glg}}: [[pan#Tiếng Galicia|pan]] {{-glg-}} {{-etymology-}} {{etym|lang=glg|from= * [[roa-ptg:pan]] ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ‎({{plur}} [[pans]]) # [[bánh mì|Bánh mì]] # [[ẩm thực|Ẩm thực]], [[đồ ăn]]. {{-drv-}} * [[panadeiro]] * [[panadería]] {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑn/}} {{pron-audio |place=Hà Lan (nam giới) |file=Nl-pan.ogg |pron=pɑn}} {{-etymology-}} {{etym|lang=nld|from= * [[gem-proto:*pannōn]] }} Cùng nguồn gốc với {{eng|style=plain}} ''[[pan#Tiếng Anh|pan]]'', {{deu|style=plain}} ''[[Pfanne]]''. {{-noun-}} {{nld-biến danh|panen|pannetje}} {{nld-noun|f|panen|pannetje}} ‎({{plur}} [[pannen]], dạng giảm nhẹ [[pannetje]] {{n}}) # [[chảo|Chảo]] [[rán]]. # {{@|Hà Lan}} [[nồi|Nồi]], [[xoong]], [[soong]]. # [[khay|Khay]], [[khuôn]] ([[nướng]] [[bánh]], chứa bánh). {{-syn-}} ; nồi * [[pot#Tiếng Hà Lan|pot]] ; khay * [[koekenpan]] {{-drv-}} * [[braadpan]] * [[grillpan]] * [[kookpan]] * [[sauspan]] * [[soeppan]] * [[hapjespan]] * [[frituurpan]] {{-related-}} * [[dakpan]] * [[steelpan]] {{-jbo-}} {{-rafsi-}} # {{form of|jbo|rafsi|panci}} {{-msa-}} {{-noun-}} '''pan''' # [[bà|Bà]]. {{-oci-}} {{-etymology-}} Từ {{inherited|oc|pro|pan}} < {{inherited|oc|la|panis|pānis, pānem}}. {{-noun-}} {{oc-noun|m}} # [[bánh mì|Bánh mì]]. {{-derived-}} * [[panada]] * [[panairar]] * [[panar]] * [[panatièr]] * [[panatièra]] * [[pancosièr]] * [[panejar]] * [[panet]] * [[panhòta]] * [[panièr]], [[panier]], [[pannier]] * [[panièra]] * [[panieròla]] {{-pap-}} {{-etymology-}} {{etym|lang=pap|from= * [[spa:pan]] ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} # [[bánh mì|Bánh mì]]. {{-fra-}} [[Hình:Pan.gif|thumb|pan]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑ̃/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-pan.ogg |pron=pɑ̃}} {{-homo-}} * [[paon]] {{-etymology-}} ; [[#Danh từ 11|danh từ]] : {{etym|lang=eng|from= * [[lat:pannus]] }} {{-noun-}} {{fra-noun| s=pan|p=pans| sp=/pɑ̃/|pp=/pɑ̃/}} '''pan''' {{m}} {{IPA|/pɑ̃/}} # [[phần|Phần]]. # [[mặt|Mặt]]. #: ''Tour à six '''pans''''' — tháp sáu mặt # [[vạt|Vạt]]. #: '''''Pan''' de la robe'' — vạt áo #: '''''Pan''' de mur'' — vạt tường # {{@|xây dựng}} [[dứng|Dứng]] ([[tường]]). #: '''''Pan''' de bois'' — dứng gỗ #: ''Pan de '''comble''''' — mái nhà. {{-interj-}} '''pan''' {{IPA|/pɑ̃/}} # [[pằng|Pằng]]! #: '''''Pan'''! un coup de feu'' — pằng! một tiếng súng nổ # [[bùm|Bùm]]! {{-ref-}} {{R:FVDP}} =={{langname|rmx}}== ==={{ĐM|num}}=== {{head|rmx|Số từ}} # [[bốn]]. ==={{ĐM|ref}}=== * Võ Đức Tám. ''Âm tiết trong tiếng Rơ-măm''. {{-ces-}} {{-per-pronoun-}} '''pan''' # {{see-entry|pán|quý ông}} {{-usage-}} Sử dụng từ này đằng trước tên, danh hiệu, nghề nghiệp, v.v.: :'''''pan''' Novák‎'' — ông Novák :'''''Pane''' předsedo, dámy a pánové...‎'' — Thưa quý ông bà, ông chủ tịch... :''Vítejte, '''pane''' rytíři.‎'' — Chào mừng quý hiệp sĩ. :''Kdy přijde '''pan''' doktor, sestřičko?‎'' — Thưa nữ ý tá, bác sĩ sẽ tới đây mấy giờ? =={{langname|tlq}}== ==={{ĐM|num}}=== {{head|tlq|Số}} # [[năm]]. ==={{ĐM|ref}}=== * [http://sealang.net/monkhmer/database/retrieve.pl?language=Tai%20Loi&sort=gloss&format=html Tiếng Tai Loi] tại Cơ sở Dữ liệu Môn-Khmer. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pan/}} {{-etymology-}} {{etym|lang=spa|from= * [[osp:]] ** [[lat:panis|pānis]] }} So sánh với {{cat-2|style=plain}} ''[[pa#Tiếng Catalan|pa]]'', {{fra|style=plain}} ''[[pain#Tiếng Pháp|pain]]'', {{glg|style=plain}} ''[[pan#Tiếng Galicia|pan]]'', {{ita|style=plain}} ''[[pane#Tiếng Ý|pane]]'', {{por|style=plain}} ''[[pão#Tiếng Bồ Đào Nha|pão]]'', {{ron|style=plain}} ''[[pâine]]''. {{-noun-}} {{spa-noun|m}} # [[bánh mì|Bánh mì]]. #: ''Para mi desayuno, tomo '''pan''' y leche.'' — Bữa sáng tôi ăn bánh mì và uống sữa. # [[bột nhào|Bột nhào]]. # [[bánh|Bánh]]. #: '''''pan''' de higos'' — bánh sung #: '''''pan''' de jabón'' — bánh xà bông #: '''''pan''' de sal'' — bánh mặn # {{@|bóng}} [[tiền|Tiền]] [[ăn]] [[sinh sống]]. # {{@|bóng}} [[công việc|Công việc]]. # [[lúa mì|Lúa mì]]. # [[lớp|Lớp]] [[mạ]] ([[vàng]], [[bạc]], ...). # {{@|El Salvador|Nicaragua||lóng}} [[vú|Vú]]. {{-drv-}} * [[pan ácimo]] * [[pan aflorado]] * [[pan agradecido]] * [[pan ázimo]] * [[pan batido]] * [[pan bazo]] * [[pan bendito]] * [[pan bon]] * [[pan candeal]] * [[pan cañón]] * [[pan cenceño]] * [[pan comido]] * [[pan de azúcar]] * [[pan de caja]] * [[pan de flor]] * [[pan de higo]] * [[pan de horma]] * [[pan de la boda]] * [[pan de molde]] * [[pan de munición]] * [[pan de muerto]] * [[pan de oro]] * [[pan de Pascua]] * [[pan de perro]] * [[pan de pistola]] * [[pan de poya]] * [[pan de salvado]] * [[pan de tierra]] * [[pan de Viena]] * [[pan dulce]] * [[pan duro]] * [[pan eucarístico]] * [[pan fermentado]] * [[pan francés]] * [[pan integral]] * [[pan lactal]] * [[pan mal conocido]] * [[pan molido]] * [[pan negro]] * [[pan o vino]] * [[pan perdido]] * [[pan pintado]] * [[pan por mitad]] * [[pan porcino]] * [[pan rallado]] * [[pan regañado]] * [[pan seco]] * [[pan sentado]] * [[pan sobornado]] * [[pan subcinericio]] * [[pan supersubstancial]] * [[pan terciado]] * [[pan tostado]] * [[pan y agua]] * [[pan y callejuela]] * [[pan y circo]] * [[pan y quesillo]] * [[panadería]] * [[panificador]] * [[panificadora]] * [[paz y pan]] {{-related-}} * [[masa]] * [[panera]] * [[panero]] * [[tostada]] * [[baguete]] * [[perruna]] * [[peso de artifara]] * [[sopa]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Aragon]] [[Thể loại:Danh từ tiếng Asturias]] [[Thể loại:Ngoại động từ tiếng Anh]] [[Thể loại:Nội động từ tiếng Anh]] [[Thể loại:Tính từ tiếng Anh]] [[Thể loại:Đại từ tiếng Ba Lan]] [[Thể loại:Danh từ tiếng Bồ Đào Nha cổ]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Danh từ tiếng Mã Lai]] [[Thể loại:Danh từ tiếng Papiamento]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Thán từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Séc]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] 0fqmar6y1132on2okjfyjzphd29t1xj 2351080 2350831 2026-05-07T10:50:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351080 wikitext text/x-wiki {{also|Pan|PAN|Pan.|pan-|Pan-|pān|pán|Pán|păn|pàn|päñ|pæn|пан}} {{also|πάν|Πάν|πᾶν|パン|пањ|παν}} {{-afr-}} {{-noun-}} {{af-noun|panne}} # [[hồ|Hồ]]. # [[chảo|Chảo]] [[rán]]. {{-synonym-}} * {{sense|hồ}} {{l|af|meer}} {{-eng-}} [[Tập tin:Pfanne (Edelstahl).jpg|nhỏ|phải|Một cái chảo (1)]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpæn/}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-pan.ogg |pron=ˈpæn}} {{-homo-}} * [[Pan]] {{-paro-}} * [[Pan]] {{-etymology-}} ; [[#Danh từ 2|danh từ]], [[#Ngoại động từ|ngoại động từ]], [[#Nội động từ|nội động từ]] : {{etym|lang=eng|from= * [[ang:panne]] ** [[gem-proto:*pannōn]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[pan#Tiếng Hà Lan|pan]]'', {{deu|style=plain}} ''[[Pfanne]]''. ; lá trầu không, miến trầu : {{etym|lang=eng|from= * [[hin:पान]] (pān) }} ; phần, khoảng cách trong công sự, lá : {{etym|lang=eng|from= * [[ang:]] ** [[fro:]] *** [[lat:pannus]] }} ; cuộn ngang : {{etym|lang=eng|from= * [[panorama]] ** [[pan-]] = tất cả ** [[grc:ὅραμα|ὅρᾱμᾰ]] ‎(hórāma) = xem }} ; liên kết : So sánh với {{fra|style=plain}} ''[[pan#Tiếng Pháp|pan]]'' ‎(“vạt áo”), {{lat|style=plain}} ''[[pannus]]'' ‎(“giẻ”). {{-noun-}} {{eng-noun}} # [[khay|Khay]], [[khuôn]] ([[nướng]] [[bánh]], chứa bánh). # [[chảo|Chảo]] [[rán]]. # [[nồi|Nồi]], [[xoong]], [[soong]]. # Cái [[chảo]], cái [[xanh]]. # {{@|Ireland}} Cái [[chậu]]. # Cái [[giần]] (để [[đãi]] [[vàng]]). # {{@|địa lý}} [[đất|Đất]] [[trũng]] [[lòng chảo]]. # Sự [[chỉ trích]] [[gay gắt]], sự [[phê bình]] [[nghiêm khắc]], sự [[đả kích]]. # [[ổ|Ổ]] [[bánh mì]]. # [[lá|Lá]] [[trầu không]] (để [[ăn trầu]]). # [[miếng|Miếng]] [[trầu]]. # {{@|cũ}} [[chậu|Chậu]] [[đái]] [[đêm]]. # Phần chính của [[bồn cầu]] [[xí bệt]]. # {{@|Mỹ||lóng}} [[đầu|Đầu]]; [[mặt]]. # {{@|xây dựng}} [[dứng|Dứng]] ([[tường]]). # [[chảo|Chảo]] [[chân không]]. # [[ổ|Ổ]] [[nạp]] [[thuốc súng]] (ở một số [[súng]] [[cổ]]). # [[sọ|Sọ]]. # {{@|xây dựng}} Chỗ [[thụt]] vào để [[lắp]] vào [[lá]] [[bản lề]]. # {{@|địa lý}} [[tầng|Tầng]] [[đất]] [[cái]]. # [[phần|Phần]]; phần [[chia]]. # {{@|quân sự}} [[khoảng cách|Khoảng cách]] giữa [[góc]] chính và góc [[sườn]] trong [[công sự]]. # [[lá|Lá]] ([[vàng]], [[bạc]]). # [[đĩa|Đĩa]] [[cân]]. # {{@|kỹ thuật}} [[nồi|Nồi]], [[bể]] ([[luyện kim]]...). {{-syn-}} ; khay * [[cookie sheet]] * [[tin]] ; chảo rán * [[frying pan]] * [[skillet]] ; nồi * [[saucepan]] * [[pot]] ; chảo * [[wok]] ; lá trầu không * [[paan]] ; miếng trầu * [[paan]] ; chậu đái đệm * [[chamber pot]] ; chảo chân không * [[vacuum pan]] ; sọ * [[brain pan]] ; tầng đất cái * [[hard pan]] ; phần * [[part]] * [[portion]] ; lá * [[leaf]] {{-drv-}} * [[baking pan]] * [[bedpan]] * [[deadpan]] * [[flash in the pan]] * [[frying pan]] * [[pan former]] * [[pan man]] * [[panyard]] * [[saucepan]] {{-tr-verb-}} '''pan''' ''ngoại động từ'' {{IPA|/ˈpæn/}} # {{term|+ off, out}} [[đãi|Đãi]] ([[vàng]] ở trong [[cát]], bằng cái [[giần]]). # {{@|thông tục}} [[chỉ trích|Chỉ trích]] [[gay gắt]], [[phê bình]] [[nghiêm khắc]], [[đả kích]]. # {{@|thông tục}} [[thắng lợi|Thắng lợi]] [[thuyết phục]]. # [[cuộn|Cuộn]] [[ngang]] ([[camera]], [[hình]]). {{-forms-}} {{eng-verb|base=pan|pan|n|ed}} {{-related-}} * [[sluice]] * [[lavatory]] {{-intr-verb-}} '''pan''' ''nội động từ (+ out)'' {{IPA|/ˈpæn/}} # [[đãi|Đãi]] được [[vàng]], có vàng ([[cát]]...). # {{@|bóng}} [[kết quả|Kết quả]]. #: ''how did it '''pan''' out?'' — việc ấy kết quả thế nào? #: ''it panned out well'' — cái đó kết quả khá # {{@|nghệ thuật}} [[quay|Quay]], [[lia]] [[máy]] ([[kỹ thuật]] [[cắt]] [[khuôn]] [[hình]]). # {{@|nghệ thuật}} [[quét|Quét]] [[âm thanh]] qua [[khắp]] [[loa]]. # [[liên kết|Liên kết]], [[liên hiệp]], [[đoàn kết]]. {{-forms-}} {{eng-verb|base=pan|pan|n|ed}} {{-drv-}} * [[pan and scan]] * [[panner]] {{-related-}} * [[tilt]] * [[cant]] {{-adj-}} {{eng-adj|-}} # {{@|lóng}} [[toàn tính luyến ái|Toàn tính luyến ái]]. {{-syn-}} * [[pansexual]] {{-ref-}} {{R:FVDP}} {{-arg-}} {{-etymology-}} {{etym|lang=arg|from= * [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} # [[bánh mì|Bánh mì]]. {{-ast-}} {{-etymology-}} {{etym|lang=ast|from= * [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ({{plur}} [[panes]]) # [[bánh mì|Bánh mì]]. {{-pol-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pan̪/}} {{pron-audio |place=Ba Lan (nam giới) |file=Pl-pan.ogg |pron=pan̪}} {{-etymology-}} Không rõ. Có thể từ tiếng Saxon cổ ''[[fan#Tiếng Saxon cổ|fan]]'' ‎(“quý tộc”). Cùng nguồn gốc với tiếng Séc cổ ''[[hpan]]'', {{ces|style=plain}} và {{slk|style=plain}} ''[[pan#Tiếng Séc|pan]]'' và ''[[pán#Tiếng Séc|pán]]'', {{wen|style=plain}} ''[[pan#Tiếng Sorb|pan]]'', {{ukr|style=plain}} ''[[пан#Tiếng Ukraina|пан]]'' ‎(''pan''), {{bel|style=plain}} ''[[пан#Tiếng Belarus|пан]]'' ‎(''pan''). {{-per-pronoun-}} '''pan''' {{m}} ({{f}} [[pani]]) # [[ông|Ông]]. #: ''Czy mógłby '''pan''' zamknąć drzwi?'' – Xin ông đóng cửa. # [[thầy|Thầy]]. # [[chúa|Chúa]]. {{-related-}} * [[pani]] * [[państwo]] {{-roa-ptg-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈpã/}} {{-etymology-}} {{etym|lang=roa-ptg|from= * [[lat:panem|pānem]] = dạng nghiệp cách số ít: ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ‎({{plur}} [[pães]]) # [[bánh mì|Bánh mì]]. {{-drv-}} * {{por}}: [[pão#Tiếng Bồ Đào Nha|pão]] ** {{ben}}: [[পাঁউরুটি]] ‎(''paun-ruti'') ** {{hin}}: [[पाव]] ‎(''pāv'') ** {{mya}}: [[ပေါင်မုန့်]] ‎(''paungmun.'') ** {{jpn}}: [[パン]] ‎(''pan'') *** {{kor}}: [[빵]] ‎(''ppang'') *** {{nan}}: [[pháng]] ** {{mar}}: [[पाव]] ‎(''pāv'') ** {{tha}}: [[ปัง]] ‎(''bpang'') * {{glg}}: [[pan#Tiếng Galicia|pan]] {{-glg-}} {{-etymology-}} {{etym|lang=glg|from= * [[roa-ptg:pan]] ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} ‎({{plur}} [[pans]]) # [[bánh mì|Bánh mì]] # [[ẩm thực|Ẩm thực]], [[đồ ăn]]. {{-drv-}} * [[panadeiro]] * [[panadería]] {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑn/}} {{pron-audio |place=Hà Lan (nam giới) |file=Nl-pan.ogg |pron=pɑn}} {{-etymology-}} {{etym|lang=nld|from= * [[gem-proto:*pannōn]] }} Cùng nguồn gốc với {{eng|style=plain}} ''[[pan#Tiếng Anh|pan]]'', {{deu|style=plain}} ''[[Pfanne]]''. {{-noun-}} {{nld-biến danh|panen|pannetje}} {{nld-noun|f|panen|pannetje}} ‎({{plur}} [[pannen]], dạng giảm nhẹ [[pannetje]] {{n}}) # [[chảo|Chảo]] [[rán]]. # {{@|Hà Lan}} [[nồi|Nồi]], [[xoong]], [[soong]]. # [[khay|Khay]], [[khuôn]] ([[nướng]] [[bánh]], chứa bánh). {{-syn-}} ; nồi * [[pot#Tiếng Hà Lan|pot]] ; khay * [[koekenpan]] {{-drv-}} * [[braadpan]] * [[grillpan]] * [[kookpan]] * [[sauspan]] * [[soeppan]] * [[hapjespan]] * [[frituurpan]] {{-related-}} * [[dakpan]] * [[steelpan]] {{-jbo-}} {{-rafsi-}} # {{form of|jbo|rafsi|panci}} {{-msa-}} {{-noun-}} '''pan''' # [[bà|Bà]]. {{-oci-}} {{-etymology-}} Từ {{inherited|oc|pro|pan}} < {{inherited|oc|la|panis|pānis, pānem}}. {{-noun-}} {{oc-noun|m}} # [[bánh mì|Bánh mì]]. {{-derived-}} * [[panada]] * [[panairar]] * [[panar]] * [[panatièr]] * [[panatièra]] * [[pancosièr]] * [[panejar]] * [[panet]] * [[panhòta]] * [[panièr]], [[panier]], [[pannier]] * [[panièra]] * [[panieròla]] {{-pap-}} {{-etymology-}} {{etym|lang=pap|from= * [[spa:pan]] ** [[lat:panis|pānis]] }} {{-noun-}} '''pan''' {{m}} # [[bánh mì|Bánh mì]]. {{-fra-}} [[Hình:Pan.gif|thumb|pan]] {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pɑ̃/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-pan.ogg |pron=pɑ̃}} {{-homo-}} * [[paon]] {{-etymology-}} ; [[#Danh từ 11|danh từ]] : {{etym|lang=eng|from= * [[lat:pannus]] }} {{-noun-}} {{fra-noun| s=pan|p=pans| sp=/pɑ̃/|pp=/pɑ̃/}} '''pan''' {{m}} {{IPA|/pɑ̃/}} # [[phần|Phần]]. # [[mặt|Mặt]]. #: ''Tour à six '''pans''''' — tháp sáu mặt # [[vạt|Vạt]]. #: '''''Pan''' de la robe'' — vạt áo #: '''''Pan''' de mur'' — vạt tường # {{@|xây dựng}} [[dứng|Dứng]] ([[tường]]). #: '''''Pan''' de bois'' — dứng gỗ #: ''Pan de '''comble''''' — mái nhà. {{-interj-}} '''pan''' {{IPA|/pɑ̃/}} # [[pằng|Pằng]]! #: '''''Pan'''! un coup de feu'' — pằng! một tiếng súng nổ # [[bùm|Bùm]]! {{-ref-}} {{R:FVDP}} =={{langname|rmx}}== ==={{ĐM|num}}=== {{head|rmx|Số từ}} # [[bốn]]. ==={{ĐM|ref}}=== * Võ Đức Tám. ''Âm tiết trong tiếng Rơ-măm''. {{-ces-}} {{-per-pronoun-}} '''pan''' # {{see-entry|pán|quý ông}} {{-usage-}} Sử dụng từ này đằng trước tên, danh hiệu, nghề nghiệp, v.v.: :'''''pan''' Novák‎'' — ông Novák :'''''Pane''' předsedo, dámy a pánové...‎'' — Thưa quý ông bà, ông chủ tịch... :''Vítejte, '''pane''' rytíři.‎'' — Chào mừng quý hiệp sĩ. :''Kdy přijde '''pan''' doktor, sestřičko?‎'' — Thưa nữ ý tá, bác sĩ sẽ tới đây mấy giờ? =={{langname|tlq}}== ==={{ĐM|num}}=== {{head|tlq|Số}} # [[năm]]. ==={{ĐM|ref}}=== * [http://sealang.net/monkhmer/database/retrieve.pl?language=Tai%20Loi&sort=gloss&format=html Tiếng Tai Loi] tại Cơ sở Dữ liệu Môn-Khmer. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pan/}} {{-etymology-}} {{etym|lang=spa|from= * [[osp:]] ** [[lat:panis|pānis]] }} So sánh với {{cat-old|style=plain}} ''[[pa#Tiếng Catalan|pa]]'', {{fra|style=plain}} ''[[pain#Tiếng Pháp|pain]]'', {{glg|style=plain}} ''[[pan#Tiếng Galicia|pan]]'', {{ita|style=plain}} ''[[pane#Tiếng Ý|pane]]'', {{por|style=plain}} ''[[pão#Tiếng Bồ Đào Nha|pão]]'', {{ron|style=plain}} ''[[pâine]]''. {{-noun-}} {{spa-noun|m}} # [[bánh mì|Bánh mì]]. #: ''Para mi desayuno, tomo '''pan''' y leche.'' — Bữa sáng tôi ăn bánh mì và uống sữa. # [[bột nhào|Bột nhào]]. # [[bánh|Bánh]]. #: '''''pan''' de higos'' — bánh sung #: '''''pan''' de jabón'' — bánh xà bông #: '''''pan''' de sal'' — bánh mặn # {{@|bóng}} [[tiền|Tiền]] [[ăn]] [[sinh sống]]. # {{@|bóng}} [[công việc|Công việc]]. # [[lúa mì|Lúa mì]]. # [[lớp|Lớp]] [[mạ]] ([[vàng]], [[bạc]], ...). # {{@|El Salvador|Nicaragua||lóng}} [[vú|Vú]]. {{-drv-}} * [[pan ácimo]] * [[pan aflorado]] * [[pan agradecido]] * [[pan ázimo]] * [[pan batido]] * [[pan bazo]] * [[pan bendito]] * [[pan bon]] * [[pan candeal]] * [[pan cañón]] * [[pan cenceño]] * [[pan comido]] * [[pan de azúcar]] * [[pan de caja]] * [[pan de flor]] * [[pan de higo]] * [[pan de horma]] * [[pan de la boda]] * [[pan de molde]] * [[pan de munición]] * [[pan de muerto]] * [[pan de oro]] * [[pan de Pascua]] * [[pan de perro]] * [[pan de pistola]] * [[pan de poya]] * [[pan de salvado]] * [[pan de tierra]] * [[pan de Viena]] * [[pan dulce]] * [[pan duro]] * [[pan eucarístico]] * [[pan fermentado]] * [[pan francés]] * [[pan integral]] * [[pan lactal]] * [[pan mal conocido]] * [[pan molido]] * [[pan negro]] * [[pan o vino]] * [[pan perdido]] * [[pan pintado]] * [[pan por mitad]] * [[pan porcino]] * [[pan rallado]] * [[pan regañado]] * [[pan seco]] * [[pan sentado]] * [[pan sobornado]] * [[pan subcinericio]] * [[pan supersubstancial]] * [[pan terciado]] * [[pan tostado]] * [[pan y agua]] * [[pan y callejuela]] * [[pan y circo]] * [[pan y quesillo]] * [[panadería]] * [[panificador]] * [[panificadora]] * [[paz y pan]] {{-related-}} * [[masa]] * [[panera]] * [[panero]] * [[tostada]] * [[baguete]] * [[perruna]] * [[peso de artifara]] * [[sopa]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Aragon]] [[Thể loại:Danh từ tiếng Asturias]] [[Thể loại:Ngoại động từ tiếng Anh]] [[Thể loại:Nội động từ tiếng Anh]] [[Thể loại:Tính từ tiếng Anh]] [[Thể loại:Đại từ tiếng Ba Lan]] [[Thể loại:Danh từ tiếng Bồ Đào Nha cổ]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Danh từ tiếng Mã Lai]] [[Thể loại:Danh từ tiếng Papiamento]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Thán từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Séc]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] loh1praluj3u0wcwvmknddzluj0sryk tiếng Afrikaans 0 86744 2350678 2113316 2026-05-07T07:55:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350678 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Áp|phi|can}} {{-noun-}} '''tiếng Afrikaans''' #[[ngôn ngữ|Ngôn ngữ]] chính của những [[người thực dân]] [[Hoà Lan]] ở [[Nam Phi]], và con cháu của họ. Cũng là một trong 11 ngôn ngữ chính thức của Nam Phi. {{-syn-}} * [[tiếng Hòa Lan ở Kếp]], [[tiếng Hoà Lan ở Kếp]] * [[tiếng Hà Lan ở Kếp]] * [[tiếng Nam Phi]] {{-trans-}} {{đầu}} * {{ara}}: [[أفريقانية]] * {{afr}}: [[Afrikaans]] * {{eng}}: [[Afrikaans]] * {{hye}}: [[Ափրիքանա]] * {{aze}}: [[Африкаанс]] * {{pol}}: [[Afrykanerski]] * {{fas}}: [[آفريقايى]] * {{isl}}: [[Afríkanska]] * {{eus}}: [[Afrikaans]] * {{por}}: [[Africano]] * {{bre}}: [[Afrikaans]] * {{bul}}: [[Африкански]] * {{cat-2}}: [[Afrikaans]] * {{hrv}}: [[Afrikaans]] * {{dan}}: [[afrikaans]] * {{heb}}: [[אפריקאנס]] * {{est}}: [[afrikaani keel]] * {{fao}}: [[Afríska]] * {{fry}}: [[Afrikaansk]] * {{hin}}: [[अफ्रीकांस]] * {{hun}}: [[Afrikánsz]] * {{ell}}: [[Αφρικάνικα]] * {{ind}}: [[Afrika]] * {{gle}}: [[Afracáinis]] * {{kur}}: [[Efrîqî]] * {{lav}}: [[Afrikandu]] * {{lit}}: [[Afrikansas]] * {{msa}}: [[Afrika]] * {{mkd}}: [[Африкански]] {{giữa}} * {{mlt}}: [[Afrikans]] * {{mdf}}: [[Африкаанс]] * {{nor}}: [[Afrikaans]] * {{nep}}: [[अफ्रिकाली]] * {{rus}}: [[Африкаанс]] * {{jpn}}: [[アフリカーンス語]] * {{oci}}: [[Africans]] * {{fin}}: [[Afrikaans]] * {{fra}}: [[afrikaans]] {{m}} * {{ron}}: [[Afrikaans]] * {{srp}}: [[Афрички]] * {{slk}}: [[Afrikánsky]] * {{slv}}: [[Afrikaans]], [[Afrikanščina]] * {{wen}}: [[Afrikaans]] * {{swa}}: [[Kiafrikans]] * {{tam}}: [[ஆப்பிரிக்கான்ஸ]] * {{tat}}: [[Африканц]] * {{spa}}: [[Afrikaans]] * {{tha}}: [[ภาษาอัฟริกาน]], [[ภาษาอัฟริกันส์]] * {{tur}}: [[Afrikanca]], [[Afrikaanca]] * {{swe}}: [[Afrikaans]] * {{kor}}: [[아프리카어]] * {{zho}}: [[南非语]] (''Nánfēiyǔ'', Nam Phi ngữ), [[南非荷兰语]] (''Nánfēi Hélán yǔ'', Nam Phi Hà Lan ngữ) * {{ukr}}: [[Африканс]] * {{urd}}: [[ايفريکانز]] * {{cym}}: [[Affricaneg]] * {{ita}}: [[Afrikaans]] * {{zul}}: [[Isafrikansi]] {{cuối}} {{-related-}} * [[người Hà Lan]] * [[Kếp]] * [[Nam Phi]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Afrikaans]] m7nnyi5p9iulwbxhutjihsqs9ah0pys 2350935 2350678 2026-05-07T10:41:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350935 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Áp|phi|can}} {{-noun-}} '''tiếng Afrikaans''' #[[ngôn ngữ|Ngôn ngữ]] chính của những [[người thực dân]] [[Hoà Lan]] ở [[Nam Phi]], và con cháu của họ. Cũng là một trong 11 ngôn ngữ chính thức của Nam Phi. {{-syn-}} * [[tiếng Hòa Lan ở Kếp]], [[tiếng Hoà Lan ở Kếp]] * [[tiếng Hà Lan ở Kếp]] * [[tiếng Nam Phi]] {{-trans-}} {{đầu}} * {{ara}}: [[أفريقانية]] * {{afr}}: [[Afrikaans]] * {{eng}}: [[Afrikaans]] * {{hye}}: [[Ափրիքանա]] * {{aze}}: [[Африкаанс]] * {{pol}}: [[Afrykanerski]] * {{fas}}: [[آفريقايى]] * {{isl}}: [[Afríkanska]] * {{eus}}: [[Afrikaans]] * {{por}}: [[Africano]] * {{bre}}: [[Afrikaans]] * {{bul}}: [[Африкански]] * {{cat-old}}: [[Afrikaans]] * {{hrv}}: [[Afrikaans]] * {{dan}}: [[afrikaans]] * {{heb}}: [[אפריקאנס]] * {{est}}: [[afrikaani keel]] * {{fao}}: [[Afríska]] * {{fry}}: [[Afrikaansk]] * {{hin}}: [[अफ्रीकांस]] * {{hun}}: [[Afrikánsz]] * {{ell}}: [[Αφρικάνικα]] * {{ind}}: [[Afrika]] * {{gle}}: [[Afracáinis]] * {{kur}}: [[Efrîqî]] * {{lav}}: [[Afrikandu]] * {{lit}}: [[Afrikansas]] * {{msa}}: [[Afrika]] * {{mkd}}: [[Африкански]] {{giữa}} * {{mlt}}: [[Afrikans]] * {{mdf}}: [[Африкаанс]] * {{nor}}: [[Afrikaans]] * {{nep}}: [[अफ्रिकाली]] * {{rus}}: [[Африкаанс]] * {{jpn}}: [[アフリカーンス語]] * {{oci}}: [[Africans]] * {{fin}}: [[Afrikaans]] * {{fra}}: [[afrikaans]] {{m}} * {{ron}}: [[Afrikaans]] * {{srp}}: [[Афрички]] * {{slk}}: [[Afrikánsky]] * {{slv}}: [[Afrikaans]], [[Afrikanščina]] * {{wen}}: [[Afrikaans]] * {{swa}}: [[Kiafrikans]] * {{tam}}: [[ஆப்பிரிக்கான்ஸ]] * {{tat}}: [[Африканц]] * {{spa}}: [[Afrikaans]] * {{tha}}: [[ภาษาอัฟริกาน]], [[ภาษาอัฟริกันส์]] * {{tur}}: [[Afrikanca]], [[Afrikaanca]] * {{swe}}: [[Afrikaans]] * {{kor}}: [[아프리카어]] * {{zho}}: [[南非语]] (''Nánfēiyǔ'', Nam Phi ngữ), [[南非荷兰语]] (''Nánfēi Hélán yǔ'', Nam Phi Hà Lan ngữ) * {{ukr}}: [[Африканс]] * {{urd}}: [[ايفريکانز]] * {{cym}}: [[Affricaneg]] * {{ita}}: [[Afrikaans]] * {{zul}}: [[Isafrikansi]] {{cuối}} {{-related-}} * [[người Hà Lan]] * [[Kếp]] * [[Nam Phi]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Afrikaans]] ikmy6604ue2nk4kihbk0bheudxn3pvx tiếng Ả Rập 0 86766 2350679 2083622 2026-05-07T07:55:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350679 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Ả|Rập}} {{-pr-noun-}} '''tiếng Ả Rập''', '''tiếng Ả-rập''', [[ar]] ([[ISO]] 639-1), [[ara]] (ISO 639-2) # Một [[ngôn ngữ]] [[Xê-mít]] chính có nguồn gốc từ bán đảo Ả-rập, và hiện đang được dùng ở khắp [[Trung Ðông]] và miền bắc [[Châu Phi]]. Tiếng Ả-rập có rất nhiều [[tiếng địa phương]] (dialect), tất cả dùng chung một cách viết cổ. {{-syn-}} * [[tiếng A-rập]] {{-trans-}} {{đầu}} * {{ara}}: [[العربية]] (''al-‘arabiyyah'') * {{afr}}: [[Arabies]] * {{sqi}}: [[Arabishte]] * {{eng}}: [[Arabic]] * {{hye}}: [[Արաբերեն]] * {{aze}}: [[Әрәб]] * {{pol}}: [[Arabski]] * {{fas}}: [[عربى]] * {{isl}}: [[Arabíska]] * {{eus}}: [[Arabiarra]], [[Arabiera]] * {{bel}}: [[Арабская]] * {{por}}: [[Arábico]] * {{ina}}: [[arabe]] * {{bul}}: [[Арабски]] * {{cat-2}}: [[Àrab]] * {{cor}}: [[Arabek]] * {{hrv}}: [[Arapski]] * {{dan}}: [[Arabisk]] * {{heb}}: [[ערבית]] (''’aravit'') * {{deu}}: [[arabisch]] * {{est}}: [[Araabia]] * {{fao}}: [[Arabiskt]] * {{fry}}: [[Arabysk]] * {{kat}}: [[არაბული]] * {{kor}}: [[아라비아어]] * {{hin}}: [[अरबी]] * {{hun}}: [[Arab]] * {{ell}}: [[Αραβικά]] * {{ido}}: [[arab]] * {{ind}}: [[bahasa arab]] * {{gle}}: [[Araibis]] * {{khm}}: [[ភាសាអារ៉ាប]] * {{kur}}: [[Erebî]] {{giữa}} * {{lav}}: [[Arābu]] * {{lit}}: [[Arabų]], [[Arabiškai]] * {{msa}}: [[bahasa Arab]] * {{mkd}}: [[Арапски]] * {{mlt}}: [[Għarbi]] * {{mdf}}: [[Амкарань]] * {{mon}}: [[Араб]] * {{nor}}: [[Arabisk]] * {{nep}}: [[अरबी]] * {{rus}}: [[Арабский]] * {{jpn}}: [[アラビア語]] (''arabia-go'') * {{oci}}: [[Arab]] * {{fin}}: [[arabia]] * {{fra}}: [[arabe]] * {{ron}}: [[Arabă]] * {{ces}}: [[Arabský]] * {{srp}}: [[Арапски]] * {{slv}}: [[Arabščina]] * {{som}}: [[Af-Carabi]] * {{swa}}: [[Kiarabu]] * {{tgl}}: [[Arabo]] * {{tam}}: [[அரபிக்]] * {{spa}}: [[árabe]] * {{tha}}: [[ภาษาอาหรับ]] * {{tur}}: [[Arapça]] * {{swe}}: [[arabiska]] * {{zho}}: [[阿拉伯语]] ([[a|A]] [[lạp|Lạp]] [[bá|Bá]] [[ngữ]], ''alabó yŭ'') * {{ukr}}: [[Арабський]] * {{urd}}: [[عربي]] * {{wln}}: [[Arabe]] * {{ita}}: [[arabo]] * {{yid}}: [[אַראַביש]] * {{zul}}: [[Isarabhiya]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt]] f968ngyx3kyzcj0ap1i7zd0nvm6isrt 2350936 2350679 2026-05-07T10:41:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350936 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|tiếng|Ả|Rập}} {{-pr-noun-}} '''tiếng Ả Rập''', '''tiếng Ả-rập''', [[ar]] ([[ISO]] 639-1), [[ara]] (ISO 639-2) # Một [[ngôn ngữ]] [[Xê-mít]] chính có nguồn gốc từ bán đảo Ả-rập, và hiện đang được dùng ở khắp [[Trung Ðông]] và miền bắc [[Châu Phi]]. Tiếng Ả-rập có rất nhiều [[tiếng địa phương]] (dialect), tất cả dùng chung một cách viết cổ. {{-syn-}} * [[tiếng A-rập]] {{-trans-}} {{đầu}} * {{ara}}: [[العربية]] (''al-‘arabiyyah'') * {{afr}}: [[Arabies]] * {{sqi}}: [[Arabishte]] * {{eng}}: [[Arabic]] * {{hye}}: [[Արաբերեն]] * {{aze}}: [[Әрәб]] * {{pol}}: [[Arabski]] * {{fas}}: [[عربى]] * {{isl}}: [[Arabíska]] * {{eus}}: [[Arabiarra]], [[Arabiera]] * {{bel}}: [[Арабская]] * {{por}}: [[Arábico]] * {{ina}}: [[arabe]] * {{bul}}: [[Арабски]] * {{cat-old}}: [[Àrab]] * {{cor}}: [[Arabek]] * {{hrv}}: [[Arapski]] * {{dan}}: [[Arabisk]] * {{heb}}: [[ערבית]] (''’aravit'') * {{deu}}: [[arabisch]] * {{est}}: [[Araabia]] * {{fao}}: [[Arabiskt]] * {{fry}}: [[Arabysk]] * {{kat}}: [[არაბული]] * {{kor}}: [[아라비아어]] * {{hin}}: [[अरबी]] * {{hun}}: [[Arab]] * {{ell}}: [[Αραβικά]] * {{ido}}: [[arab]] * {{ind}}: [[bahasa arab]] * {{gle}}: [[Araibis]] * {{khm}}: [[ភាសាអារ៉ាប]] * {{kur}}: [[Erebî]] {{giữa}} * {{lav}}: [[Arābu]] * {{lit}}: [[Arabų]], [[Arabiškai]] * {{msa}}: [[bahasa Arab]] * {{mkd}}: [[Арапски]] * {{mlt}}: [[Għarbi]] * {{mdf}}: [[Амкарань]] * {{mon}}: [[Араб]] * {{nor}}: [[Arabisk]] * {{nep}}: [[अरबी]] * {{rus}}: [[Арабский]] * {{jpn}}: [[アラビア語]] (''arabia-go'') * {{oci}}: [[Arab]] * {{fin}}: [[arabia]] * {{fra}}: [[arabe]] * {{ron}}: [[Arabă]] * {{ces}}: [[Arabský]] * {{srp}}: [[Арапски]] * {{slv}}: [[Arabščina]] * {{som}}: [[Af-Carabi]] * {{swa}}: [[Kiarabu]] * {{tgl}}: [[Arabo]] * {{tam}}: [[அரபிக்]] * {{spa}}: [[árabe]] * {{tha}}: [[ภาษาอาหรับ]] * {{tur}}: [[Arapça]] * {{swe}}: [[arabiska]] * {{zho}}: [[阿拉伯语]] ([[a|A]] [[lạp|Lạp]] [[bá|Bá]] [[ngữ]], ''alabó yŭ'') * {{ukr}}: [[Арабський]] * {{urd}}: [[عربي]] * {{wln}}: [[Arabe]] * {{ita}}: [[arabo]] * {{yid}}: [[אַראַביש]] * {{zul}}: [[Isarabhiya]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt]] ilc2bo622jbxe2bnj99ofvdls8lc5tn 0 92197 2350680 2281343 2026-05-07T07:55:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350680 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[义]]: [[xơ]], [[nghĩa]] *[[車]]: [[xe]], [[sa]], [[se]], [[xơ]], [[xa]], [[xê]], [[xè]], [[xế]] *[[疏]]: [[sơ]], [[sớ]], [[sờ]], [[xơ]], [[sưa]], [[xờ]], [[thưa]] {{mid}} *[[疎]]: [[sơ]], [[sớ]], [[sờ]], [[thư]], [[thơ]], [[xơ]], [[sưa]], [[xờ]], [[thưa]], [[sưởi]] *[[賖]]: [[xơ]], [[xa]] *[[初]]: [[sơ]], [[thơ]], [[xơ]], [[xưa]] {{bottom}} {{-paro-}} {{đầu}} :* [[xờ]] :* [[xô]] :* [[xỏ]] {{giữa}} :* [[xổ]] :* [[xó]] :* [[xo]] {{cuối}} {{-etymology-}} ; nữ tu sĩ Kitô giáo : {{etym-from | lang = fra | term = sœur }} {{-noun-}} '''xơ''' # [[sợi|Sợi]] [[dai]] [[xen]] trong [[phần]] [[nạc]] một số [[rau]], [[củ]]. #: ''Sắn nhiều '''xơ'''.'' #: '''''Xơ''' mướp.'' # [[bản|Bản]] [[dẹt]] từng đám [[bọc]] các [[múi]] [[mít]]. #: ''Mít ngon ăn cả '''xơ'''.'' # [[nữ tu sĩ|Nữ tu sĩ]] [[Kitô giáo]]. {{-syn-}} ; nữ tu sĩ Kitô giáo * [[bà xơ]] {{-trans-}} ; nữ tu sĩ Kitô giáo {{đầu}} * {{ara}}: [[راهبة]] (''raahiba'') {{f}} * {{ang}}: [[nunne]] {{f}}, [[nunfǽmne]] {{f}} * {{pol}}: [[zakonnica]], [[mniszka]], [[siostra zakonna]] {{f}} * {{por}}: [[freira]], [[religiosa]] {{f}} * {{cat-2}}: [[monja]] {{f}} * {{dan}}: [[nonne]] {{g|c}} * {{deu}}: [[Nonne]] {{f}}, [[Ordensschwester]] {{f}}, [[Klosterschwester]] {{f}}, [[Schwester]] * {{eng}}: [[nun]], [[sister]], [[moniale]], [[sistren]] * {{fao}}: [[nunna]] {{f}} * {{gla}}: [[cailleach dhubh]] {{f}}, [[bean-chràbhaidh]] {{f}} * {{nld}}: [[non]] {{f}}, [[zuster]] {{f}}, [[kloosterzuster]] {{f}}, [[slotzuster]] {{f}} * {{hun}}: [[apáca]], [[nővér]] * {{ltz}}: [[Nonn]] {{f}} * {{msa}}: [[rahib perempuan]] * {{mkd}}: [[калуѓерка]] (''kalúǵerka'') {{f}} * {{nor}}: [[nonne]] {{g|m}} * {{rus}}: [[монахиня]] (''monáxinja'') {{f}}, [[монашка]] (''monáška'') {{f}} * {{jpn}}: [[修道女]] ([[しゅうどうじょ]], ''shūdōjo'', tu đạo nữ), [[修道女]] ([[しゅうどうじょ]], ''shūdōjo'', tu đạo nữ), [[尼僧]] ([[にそう]], ''nisō'', ni tăng), [[童貞]] (''dōtei'', [[đồng trinh]]), [[尼]] ([[あま]], ''ama'', ni) {{term|xúc phạm}} {{giữa}} * {{fin}}: [[nunna]] * {{fra}}: [[nonne]] {{f}}, [[religieuse]] {{f}}, [[bonne sœur]] {{f}}, [[moniale]] {{f}}, [[nonnain]] {{f}} * {{cmn}}: [[修女]] (''xiūnǚ'', tu nữ), [[尼姑]] (''nígū'', ni cô), [[姑子]] (''gūzi'', cô tử), [[尼]] (''ní'', ni) * {{epo}}: [[monaĥino]] * {{ron}}: [[călugăriță]] {{f}} * {{ces}}: [[jeptiška]] {{f}}, [[řeholnice]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[калуђерица]] {{f}}, [[монахиња]] {{f}}, [[редовница]] {{f}}, [[духовница]] {{f}} ** {{Latn}}: [[kaluđerica]] {{f}}, [[monahinja]] {{f}}, [[redovnica]] {{f}}, [[duhovnica]] {{f}} * {{slk}}: [[mníška]] {{f}}, [[rehoľníčka]] {{f}} * {{slv}}: [[nuna]] {{f}} * {{spa}}: [[monja]] {{f}} * {{swe}}: [[nunna]] {{g|c}} * {{kor}}: [[수녀]] ([[修女]], ''sunyeo''), [[비구니]] ([[比丘尼]], ''biguni'') * {{vol}}: [[kleudan]] {{term|nam hay nữ}}, [[jikleudan]] {{term|nữ}} * {{ita}}: [[suora]] {{f}}, [[monaca]] {{f}} {{cuối}} {{-adj-}} '''xơ''' # [[trơ|Trơ]] ra nhiều [[xơ]], [[tớp]] [[túa]] vì bị [[phá huỷ]] hoặc quá [[cũ]], [[rách]]. #: ''Mũ đã '''xơ''' vành.'' #: ''Áo bị '''xơ''', sắp rách nát.'' {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] 3dnozg2h1d00lbuzcpo1r84yinb26t0 2350937 2350680 2026-05-07T10:41:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350937 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[义]]: [[xơ]], [[nghĩa]] *[[車]]: [[xe]], [[sa]], [[se]], [[xơ]], [[xa]], [[xê]], [[xè]], [[xế]] *[[疏]]: [[sơ]], [[sớ]], [[sờ]], [[xơ]], [[sưa]], [[xờ]], [[thưa]] {{mid}} *[[疎]]: [[sơ]], [[sớ]], [[sờ]], [[thư]], [[thơ]], [[xơ]], [[sưa]], [[xờ]], [[thưa]], [[sưởi]] *[[賖]]: [[xơ]], [[xa]] *[[初]]: [[sơ]], [[thơ]], [[xơ]], [[xưa]] {{bottom}} {{-paro-}} {{đầu}} :* [[xờ]] :* [[xô]] :* [[xỏ]] {{giữa}} :* [[xổ]] :* [[xó]] :* [[xo]] {{cuối}} {{-etymology-}} ; nữ tu sĩ Kitô giáo : {{etym-from | lang = fra | term = sœur }} {{-noun-}} '''xơ''' # [[sợi|Sợi]] [[dai]] [[xen]] trong [[phần]] [[nạc]] một số [[rau]], [[củ]]. #: ''Sắn nhiều '''xơ'''.'' #: '''''Xơ''' mướp.'' # [[bản|Bản]] [[dẹt]] từng đám [[bọc]] các [[múi]] [[mít]]. #: ''Mít ngon ăn cả '''xơ'''.'' # [[nữ tu sĩ|Nữ tu sĩ]] [[Kitô giáo]]. {{-syn-}} ; nữ tu sĩ Kitô giáo * [[bà xơ]] {{-trans-}} ; nữ tu sĩ Kitô giáo {{đầu}} * {{ara}}: [[راهبة]] (''raahiba'') {{f}} * {{ang}}: [[nunne]] {{f}}, [[nunfǽmne]] {{f}} * {{pol}}: [[zakonnica]], [[mniszka]], [[siostra zakonna]] {{f}} * {{por}}: [[freira]], [[religiosa]] {{f}} * {{cat-old}}: [[monja]] {{f}} * {{dan}}: [[nonne]] {{g|c}} * {{deu}}: [[Nonne]] {{f}}, [[Ordensschwester]] {{f}}, [[Klosterschwester]] {{f}}, [[Schwester]] * {{eng}}: [[nun]], [[sister]], [[moniale]], [[sistren]] * {{fao}}: [[nunna]] {{f}} * {{gla}}: [[cailleach dhubh]] {{f}}, [[bean-chràbhaidh]] {{f}} * {{nld}}: [[non]] {{f}}, [[zuster]] {{f}}, [[kloosterzuster]] {{f}}, [[slotzuster]] {{f}} * {{hun}}: [[apáca]], [[nővér]] * {{ltz}}: [[Nonn]] {{f}} * {{msa}}: [[rahib perempuan]] * {{mkd}}: [[калуѓерка]] (''kalúǵerka'') {{f}} * {{nor}}: [[nonne]] {{g|m}} * {{rus}}: [[монахиня]] (''monáxinja'') {{f}}, [[монашка]] (''monáška'') {{f}} * {{jpn}}: [[修道女]] ([[しゅうどうじょ]], ''shūdōjo'', tu đạo nữ), [[修道女]] ([[しゅうどうじょ]], ''shūdōjo'', tu đạo nữ), [[尼僧]] ([[にそう]], ''nisō'', ni tăng), [[童貞]] (''dōtei'', [[đồng trinh]]), [[尼]] ([[あま]], ''ama'', ni) {{term|xúc phạm}} {{giữa}} * {{fin}}: [[nunna]] * {{fra}}: [[nonne]] {{f}}, [[religieuse]] {{f}}, [[bonne sœur]] {{f}}, [[moniale]] {{f}}, [[nonnain]] {{f}} * {{cmn}}: [[修女]] (''xiūnǚ'', tu nữ), [[尼姑]] (''nígū'', ni cô), [[姑子]] (''gūzi'', cô tử), [[尼]] (''ní'', ni) * {{epo}}: [[monaĥino]] * {{ron}}: [[călugăriță]] {{f}} * {{ces}}: [[jeptiška]] {{f}}, [[řeholnice]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[калуђерица]] {{f}}, [[монахиња]] {{f}}, [[редовница]] {{f}}, [[духовница]] {{f}} ** {{Latn}}: [[kaluđerica]] {{f}}, [[monahinja]] {{f}}, [[redovnica]] {{f}}, [[duhovnica]] {{f}} * {{slk}}: [[mníška]] {{f}}, [[rehoľníčka]] {{f}} * {{slv}}: [[nuna]] {{f}} * {{spa}}: [[monja]] {{f}} * {{swe}}: [[nunna]] {{g|c}} * {{kor}}: [[수녀]] ([[修女]], ''sunyeo''), [[비구니]] ([[比丘尼]], ''biguni'') * {{vol}}: [[kleudan]] {{term|nam hay nữ}}, [[jikleudan]] {{term|nữ}} * {{ita}}: [[suora]] {{f}}, [[monaca]] {{f}} {{cuối}} {{-adj-}} '''xơ''' # [[trơ|Trơ]] ra nhiều [[xơ]], [[tớp]] [[túa]] vì bị [[phá huỷ]] hoặc quá [[cũ]], [[rách]]. #: ''Mũ đã '''xơ''' vành.'' #: ''Áo bị '''xơ''', sắp rách nát.'' {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] bpkwgp1oe2j6dc3vsv6yyoqzu5xoxl1 la 0 92620 2350681 2300061 2026-05-07T07:55:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350681 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{đầu}} *[[玀]]: [[la]] *[[羅]]: [[la]] *[[氇]]: [[lỗ]], [[la]] *[[氌]]: [[lỗ]], [[la]] *[[欏]]: [[la]] *[[纙]]: [[la]] *[[萝]]: [[la]] *[[攞]]: [[lõa]], [[la]] *[[猡]]: [[la]] *[[锣]]: [[la]] *[[椤]]: [[la]] *[[箩]]: [[la]] *[[𦌴]]: [[la]] *[[䄷]]: [[la]], [[thạch]] *[[覶]]: [[loa]], [[la]] *[[儸]]: [[la]] {{giữa}} *[[逻]]: [[la]] *[[覼]]: [[kiến]], [[la]] *[[蘿]]: [[la]] *[[挴]]: [[mỗi]], [[la]] *[[骡]]: [[loa]], [[la]], [[đồn]] *[[𤄷]]: [[la]] *[[囉]]: [[la]] *[[邏]]: [[la]] *[[罗]]: [[la]] *[[鼇]]: [[ngao]], [[la]] *[[㑩]]: [[la]] *[[曪]]: [[la]] *[[籮]]: [[la]] *[[啰]]: [[la]] *[[騾]]: [[loa]], [[la]] *[[鑼]]: [[la]] {{cuối}} {{-hanviet-t-}} {{đầu}} *[[羅]]: [[la]] *[[囉]]: [[la]] *[[欏]]: [[la]] *[[籮]]: [[la]] *[[邏]]: [[la]] {{giữa}} *[[覶]]: [[la]] *[[儸]]: [[la]] *[[覼]]: [[la]] *[[蘿]]: [[la]] *[[鑼]]: [[la]] {{cuối}} {{-nôm-}} {{đầu}} *[[玀]]: [[la]] *[[锣]]: [[la]] *[[羅]]: [[la]], [[là]], [[lơ]] *[[椤]]: [[la]] *[[囉]]: [[ra]], [[la]], [[là]] *[[𨔍]]: [[lạ]], [[la]] *[[氌]]: [[lỗ]], [[la]] *[[欏]]: [[la]] *[[籮]]: [[la]] *[[啰]]: [[la]] *[[邏]]: [[lạ]], [[la]] {{giữa}} *[[罗]]: [[lạ]], [[la]], [[là]] *[[覶]]: [[loa]], [[la]] *[[纙]]: [[the]], [[la]], [[là]] *[[儸]]: [[la]] *[[逻]]: [[lạ]], [[la]] *[[騾]]: [[lừa]], [[loa]], [[la]] *[[萝]]: [[la]], [[lá]] *[[覼]]: [[la]] *[[蘿]]: [[la]], [[lá]] *[[鑼]]: [[la]] {{cuối}} {{-paro-}} {{đầu}} :* [[lả]] :* [[lá]] {{giữa}} :* [[là]] :* [[lạ]] {{cuối}} {{-noun-}} '''la''' # [[con|Con]] [[lai]] của [[ngựa]] và [[lừa]]. # {{@|âm nhạc}} [[tên|Tên]] [[nốt]] [[nhạc]] thứ 6, sau nốt [[son]] (''[[sol]]'') trong [[gam]] [[đô]] [[bảy]] [[âm]]. #: ''Nốt '''la'''.'' {{-trans-}} ; con lai của ngựa và lừa #: ''Con '''la''' chở hàng''. {{đầu}} * {{eng}}: [[mule]] {{giữa}} {{cuối}} ; tên nốt nhạc thứ 6 {{đầu}} * {{ara}}: [[لا]] {{m}} * {{eng}}: [[la#Tiếng Anh|la]] * {{pol}}: [[la#Tiếng Ba Lan|la]] {{f}} * {{eus}}: [[la#Tiếng Basque|la]] * {{por}}: [[lá#Tiếng Bồ Đào Nha|lá]] {{m}} * {{cat-2}}: [[la#Tiếng Catalan|la]] {{m}} * {{hrv}}: [[la#Tiếng Croat|la]] {{giữa}} * {{nld}}: [[la#Tiếng Hà Lan|la]] * {{hun}}: [[lá#Tiếng Hungary|lá]] * {{rus}}: [[ля]] {{n}} (''lja'') * {{jpn}}: [[ラ]] (''ra'') * {{spa}}: [[la#Tiếng Tây Ban Nha|la]] {{f}} * {{kor}}: [[라]] (''la'') {{cuối}} {{-adj-}} '''la''' # [[thấp|Thấp]], [[gần]] [[mặt đất]]. #: ''Bay '''la'''.'' #: ''Cành '''la''' cành bổng.'' {{-verb-}} '''la''' # [[phát|Phát]] ra [[tiếng]] [[to]] do [[hoảng sợ]] hay [[bực tức]]. #: ''Nghe tiếng '''la''' ở phía đầu chợ.'' #: ''Hơi tí là ông ta '''la''' tướng lên.'' # {{@|địa phương}} [[nói|Nói]]. #: ''Chị Hai chỉ '''la''' hôm nay chỉ không đến được.'' # {{@|địa phương}} [[Gọi]]. #: ''Đầu sành có con ba ba,'' #: ''Kẻ kêu con trạng người '''la''' con rùa.'' ([[ca dao]]) {{-trans-}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{-eng-}} {{rank-eng|neither|suddenly|act|481|la|further|line|added}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈlɑː/}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-la.ogg |pron=ˈlɑː}} {{-etymology-}} ; [[#Danh từ 2|danh từ]] : {{etym-from | lang = lat | term = labii | lterm = labiī | from = {{etym-from | term = labium | meaning = môi }} }} ; [[#Thán từ|thán từ]] : {{etym-from | lang = ang | term = la | lterm = lā }} {{-noun-}} {{eng-noun}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-syn-}} * [[lah]] {{-interj-}} '''la!''' # {{@|cũ}} Dùng để [[nhấn mạnh]] [[câu nói]]. # {{@|cũ}} Tỏ ý [[ngạc nhiên]], [[tức giận]], v.v. {{-ref-}} {{R:FVDP}} {{-ast-}} {{-article-}} '''la''' {{f}} ({{m}} [[el#Tiếng Asturias|el]], {{n}} [[lo#Tiếng Asturias|lo]], {{f}} {{plur}} [[les#Tiếng Asturias|les]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-usage-}} Mạo từ ''la'' rút gọn thành [[l’]] đằng trước từ bắt đầu với ''a'' hoặc ''ha'': ''l’[[asturiana]]'' (nữ Asturia), ''l’[[habitación]]'' (chỗ ở). {{-ina-}} {{-pronoun-}} '''la''' {{f}} # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... # [[cho|Cho]] [[nó]], cho [[cô]] [[ấy]], cho [[bà]] ấy, cho [[chị]] ấy... {{-cat-}} {{-etymology-}} ; [[#Mạo từ 2|mạo từ]], [[#Đại từ 2|đại từ]] : {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} ; [[#Danh từ 3|danh từ]] : {{etym-from | lang = lat | term = labii | lterm = labiī | from = {{etym-from | term = labium | meaning = môi }} }} {{-article-}} '''la''' {{f}} ({{m}} [[el#Tiếng Catalan|el]], {{m}} {{plur}} [[els#Tiếng Catalan|els]], {{f}} {{plur}} [[les#Tiếng Catalan|les]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' ''từ ghép trước và sau'' (rút gọn [[l’]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} ({{plur}} [[las]]) # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. =={{langname|crw}}== ==={{ĐM|noun}}=== {{head|crw|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * Thomas, David. (1970) ''Vietnam word list (revised): Chrau Jro''. SIL International. {{-sce-}} {{-noun-}} {{head|sce|Danh từ}} # [[sáp]]. {{-glg-}} {{-pronoun-}} '''la''' {{f}} ''đổi cách'' # {{see-entry|a#Tiếng Galicia|a|meaning=nó, cô ấy, bà ấy, chị ấy...}} {{-usage-}} Dạng ''l-'' của các đại từ đổi cách ngôi thứ ba được sử dụng khi từ đằng trước kết thúc bằng ''-r'' hoặc ''-s'', và dạng này được ghép vào từ đằng trước. {{-noun-}} '''la''' {{m}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-noun-}} '''la''' {{f}} (thường không đếm được) # [[len|Len]]; [[lông]] [[cừu]], lông [[chiên]]. =={{langname|jeh}}== ==={{ĐM|noun}}=== {{head|jeh|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * Cohen, Patrick D., Thŭng (1972). ''ʼDŏk tơtayh Jeh, au pơchŏ hŏk chù Jeh: Hŏk tro pơsèm hŏk, lăm-al 1-3 (Ðọc tiếng Jeh, Em học vần tiếng Jeh: Lớp vỡ-lòng, quyển 1-3)''. SIL International. {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{-noun-}} {{nld-biến danh|la's|la'tje|la'tjes}} {{nld-noun|f|la's|la'tje}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-hun-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈlɒ/}} {{-interj-}} '''la''' # {{@|cũ}} Dùng để [[nhấn mạnh]] [[câu nói]]. #: ''[[ott|Ott]] van '''la'''!'' — Đấy! # Dùng để [[ngậm miệng]] [[ngân nga]]. {{-ido-}} {{-article-}} '''la''' # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-trk-fyk-}} {{-noun-}} {{pn}} # [[nến]]. [[Thể loại:Danh từ tiếng Kyrgyz Phú Dụ]] {{-jbo-}} {{-cmavo-}} '''la''' # Dùng đằng trước một từ ''[[cmene]]'' (danh từ riêng). {{-nob-}} {{-verb-}} {{nor-verb|inf=la|pres=lar|pret=lot|pp=latt}} '''la''' # [[cho phép|Cho phép]]. {{-nno-}} {{-verb-}} {{nor-verb|inf=la|pres=lèt|pres2=leter|pres3=lar|pret=lét|pp=late|pp2=lati|pp3=latt}} '''la''' # [[cho phép|Cho phép]], [[để]]. #: '''''La''' meg få gjera det.'' — Để tôi làm. {{-fin-}} {{-abr-}} '''la''' # {{abbreviation of|lauantai|meaning=thứ bảy}} {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-la.ogg |pron=ˈla}} {{-homo-}} * [[là#Tiếng Pháp|là]] * [[las#Tiếng Pháp|las]] {{-etymology-}} ; [[#Mạo từ 3|mạo từ]], [[#Đại từ 2|đại từ]] : {{etym-from | lang = fro | term = la | from = {{etym-from | lang = lat | term = illam | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} }}<ref>{{Chú thích sách|fr|author=Albert Dauzat|last=Dauzat|first=Albert|coauthors=Jean Dubois; Henri Mitterand|title=Nouveau dictionnaire étymologique|year=1964|publisher=Librairie Larousse|location=Paris|chapter=le, la, les}}</ref> {{-article-}} '''la''' {{f}} # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} {{inv}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-ref-}} <references /> {{-ron-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{-etymology-}} ; [[#Giới từ|giới từ]] : {{etym-from | lang = lat | term = illac | meaning = đấy }} ; [[#Động từ 4|động từ]] : {{etym-from | lang = lat | term = lavare | lterm = lavāre | from = {{etym-from | type = động từ nguyên mẫu chủ động hiện tại của | term = lavo | lterm = lavō }} }} {{-prep-}} '''la''' # {{term|+ đổi cách}} [[ở|Ở]] [[tại]]. # {{term|+ đổi cách}} [[đến|Đến]], [[tới]], [[về]]. {{-verb-}} '''la''' # {{@|hiếm}} [[rửa|Rửa]] ([[đầu]]). {{-syn-}} * [[lăia]] {{term|Transylvania}} * se [[spăla]] * [[scălda]] * [[îmbăia]] {{-drv-}} * [[lăutoare]] * [[lăutură]] {{-related-}} * [[lături]] * [[lăun]] * [[spăla]] {{-epo-}} {{-etymology-}} {{etym-from | lang = fra | 2 lang = spa | 3 lang = ita | 4 lang = lat }} {{-article-}} '''la''' # [[cái|Cái]], [[con]], [[người]]... #: '''''la''' libro'' — cuốn sách #: '''''la''' libroj'' — các cuốn sách # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-swa-}} {{-etymology-}} {{etym-from | lang = bnt-proto }} So sánh với {{zul|style=plain}} ''[[dla|-dla]]''. {{-verb-}} '''la''' (''nguyên mẫu khẳng định'' [[kula]], ''nguyên mẫu phủ định'' [[kutola]]) # [[ăn|Ăn]]. =={{langname|tlq}}== ==={{ĐM|noun}}=== {{head|tlq|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * [http://sealang.net/monkhmer/database/retrieve.pl?language=Tai%20Loi&sort=gloss&format=html Tiếng Tai Loi] tại Cơ sở Dữ liệu Môn-Khmer. {{-spa-}} {{-etymology-}} ; [[#Mạo từ 6|mạo từ]], [[#Đại từ 5|đại từ 1]], [[#Đại từ 6|đại từ 2]] : {{etym-from | lang = osp | term = ela | from = {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} }} {{-article-}} '''la''' {{f}} ({{m}} [[el]], {{f}} {{plur}} [[las]], {{m}} {{plur}} [[los]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' {{f}} ({{plur}} [[las]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-pronoun-}} '''la''' {{n}} # {{@|thông tục}} [[người|Người]] [[ấy]]. #: '''''La''' sabe toda.'' — Người ấy cái gì cũng biết. #: ''¡Donde '''la''' viste!'' — Em thấy cái này ở đâu rồi! #: ''No te '''la''' creo.'' — Tôi không tin em. {{-related-}} * [[lo]] {{-noun-}} {{spa-noun-reg}} '''la''' {{f}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. =={{langname|tji}}== ==={{ĐM|pron}}=== * {{IPA4|tji|/la/}} ==={{ĐM|num}}=== {{head|tji|Số từ}} # [[một]]. {{-swe-}} {{-paro-}} * [[lade]] {{-verb-}} '''la''' # {{past of|lägga|lang=swe}} {{-conj-}} '''la''' # {{@|địa phương}} {{see-entry|väl}} {{-aml-}} {{-numeral-}} {{head|aml|Số}} # [[ba]]. {{-ref-}} * Nagaraja, K. S., Sidwell, Paul, Greenhill, Simon. (2013) ''A Lexicostatistical Study of the Khasian Languages: Khasi, Pnar, Lyngngam, and War''. {{-ita-}} {{-etymology-}} ; [[#Mạo từ 7|mạo từ]], [[#Đại từ 7|đại từ]] : {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }}<ref>{{Chú thích sách|it|author=Giuseppe Patota|last=Patota|first=Giuseppe|title=Lineamenti di grammatica storica dell'italiano|year=2002|publisher=il Mulino|location=Bologna|isbn=88-15-08638-2|pages=127}}</ref> {{-article-}} '''la''' {{f}} ({{plur}} [[le]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-usage-}} ''La'' trở thành ''[[l’]]'' đằng trước từ bắt đầu với nguyên âm. {{-pronoun-}} '''la''' {{f}} ({{plur}} [[le]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} {{inv}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. # {{@|âm nhạc}} [[A#Tiếng Việt|A]]. {{-drv-}} * [[la maggiore]] * [[la minore]] {{-ref-}} <references /> [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Thán từ tiếng Anh]] [[Thể loại:Mạo từ tiếng Asturias]] [[Thể loại:Đại từ tiếng Bổ trợ Quốc tế]] [[Thể loại:Mạo từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Catalan]] [[Thể loại:Danh từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Thán từ tiếng Hungary]] [[Thể loại:Mạo từ tiếng Ido]] [[Thể loại:Động từ tiếng Na Uy]] [[Thể loại:Từ viết tắt tiếng Phần Lan]] [[Thể loại:Mạo từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Mạo từ Quốc tế ngữ]] [[Thể loại:Giới từ tiếng Rumani]] [[Thể loại:Động từ tiếng Rumani]] [[Thể loại:Động từ tiếng Swahili]] [[Thể loại:Mạo từ tiếng Tây Ban Nha]] [[Thể loại:Đại từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] [[Thể loại:Mạo từ tiếng Ý]] [[Thể loại:Đại từ tiếng Ý]] [[Thể loại:Danh từ tiếng Ý]] eeen3819sahgw6nwbtlxfwlbzer39si 2350938 2350681 2026-05-07T10:41:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350938 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{đầu}} *[[玀]]: [[la]] *[[羅]]: [[la]] *[[氇]]: [[lỗ]], [[la]] *[[氌]]: [[lỗ]], [[la]] *[[欏]]: [[la]] *[[纙]]: [[la]] *[[萝]]: [[la]] *[[攞]]: [[lõa]], [[la]] *[[猡]]: [[la]] *[[锣]]: [[la]] *[[椤]]: [[la]] *[[箩]]: [[la]] *[[𦌴]]: [[la]] *[[䄷]]: [[la]], [[thạch]] *[[覶]]: [[loa]], [[la]] *[[儸]]: [[la]] {{giữa}} *[[逻]]: [[la]] *[[覼]]: [[kiến]], [[la]] *[[蘿]]: [[la]] *[[挴]]: [[mỗi]], [[la]] *[[骡]]: [[loa]], [[la]], [[đồn]] *[[𤄷]]: [[la]] *[[囉]]: [[la]] *[[邏]]: [[la]] *[[罗]]: [[la]] *[[鼇]]: [[ngao]], [[la]] *[[㑩]]: [[la]] *[[曪]]: [[la]] *[[籮]]: [[la]] *[[啰]]: [[la]] *[[騾]]: [[loa]], [[la]] *[[鑼]]: [[la]] {{cuối}} {{-hanviet-t-}} {{đầu}} *[[羅]]: [[la]] *[[囉]]: [[la]] *[[欏]]: [[la]] *[[籮]]: [[la]] *[[邏]]: [[la]] {{giữa}} *[[覶]]: [[la]] *[[儸]]: [[la]] *[[覼]]: [[la]] *[[蘿]]: [[la]] *[[鑼]]: [[la]] {{cuối}} {{-nôm-}} {{đầu}} *[[玀]]: [[la]] *[[锣]]: [[la]] *[[羅]]: [[la]], [[là]], [[lơ]] *[[椤]]: [[la]] *[[囉]]: [[ra]], [[la]], [[là]] *[[𨔍]]: [[lạ]], [[la]] *[[氌]]: [[lỗ]], [[la]] *[[欏]]: [[la]] *[[籮]]: [[la]] *[[啰]]: [[la]] *[[邏]]: [[lạ]], [[la]] {{giữa}} *[[罗]]: [[lạ]], [[la]], [[là]] *[[覶]]: [[loa]], [[la]] *[[纙]]: [[the]], [[la]], [[là]] *[[儸]]: [[la]] *[[逻]]: [[lạ]], [[la]] *[[騾]]: [[lừa]], [[loa]], [[la]] *[[萝]]: [[la]], [[lá]] *[[覼]]: [[la]] *[[蘿]]: [[la]], [[lá]] *[[鑼]]: [[la]] {{cuối}} {{-paro-}} {{đầu}} :* [[lả]] :* [[lá]] {{giữa}} :* [[là]] :* [[lạ]] {{cuối}} {{-noun-}} '''la''' # [[con|Con]] [[lai]] của [[ngựa]] và [[lừa]]. # {{@|âm nhạc}} [[tên|Tên]] [[nốt]] [[nhạc]] thứ 6, sau nốt [[son]] (''[[sol]]'') trong [[gam]] [[đô]] [[bảy]] [[âm]]. #: ''Nốt '''la'''.'' {{-trans-}} ; con lai của ngựa và lừa #: ''Con '''la''' chở hàng''. {{đầu}} * {{eng}}: [[mule]] {{giữa}} {{cuối}} ; tên nốt nhạc thứ 6 {{đầu}} * {{ara}}: [[لا]] {{m}} * {{eng}}: [[la#Tiếng Anh|la]] * {{pol}}: [[la#Tiếng Ba Lan|la]] {{f}} * {{eus}}: [[la#Tiếng Basque|la]] * {{por}}: [[lá#Tiếng Bồ Đào Nha|lá]] {{m}} * {{cat-old}}: [[la#Tiếng Catalan|la]] {{m}} * {{hrv}}: [[la#Tiếng Croat|la]] {{giữa}} * {{nld}}: [[la#Tiếng Hà Lan|la]] * {{hun}}: [[lá#Tiếng Hungary|lá]] * {{rus}}: [[ля]] {{n}} (''lja'') * {{jpn}}: [[ラ]] (''ra'') * {{spa}}: [[la#Tiếng Tây Ban Nha|la]] {{f}} * {{kor}}: [[라]] (''la'') {{cuối}} {{-adj-}} '''la''' # [[thấp|Thấp]], [[gần]] [[mặt đất]]. #: ''Bay '''la'''.'' #: ''Cành '''la''' cành bổng.'' {{-verb-}} '''la''' # [[phát|Phát]] ra [[tiếng]] [[to]] do [[hoảng sợ]] hay [[bực tức]]. #: ''Nghe tiếng '''la''' ở phía đầu chợ.'' #: ''Hơi tí là ông ta '''la''' tướng lên.'' # {{@|địa phương}} [[nói|Nói]]. #: ''Chị Hai chỉ '''la''' hôm nay chỉ không đến được.'' # {{@|địa phương}} [[Gọi]]. #: ''Đầu sành có con ba ba,'' #: ''Kẻ kêu con trạng người '''la''' con rùa.'' ([[ca dao]]) {{-trans-}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{-eng-}} {{rank-eng|neither|suddenly|act|481|la|further|line|added}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈlɑː/}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-la.ogg |pron=ˈlɑː}} {{-etymology-}} ; [[#Danh từ 2|danh từ]] : {{etym-from | lang = lat | term = labii | lterm = labiī | from = {{etym-from | term = labium | meaning = môi }} }} ; [[#Thán từ|thán từ]] : {{etym-from | lang = ang | term = la | lterm = lā }} {{-noun-}} {{eng-noun}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-syn-}} * [[lah]] {{-interj-}} '''la!''' # {{@|cũ}} Dùng để [[nhấn mạnh]] [[câu nói]]. # {{@|cũ}} Tỏ ý [[ngạc nhiên]], [[tức giận]], v.v. {{-ref-}} {{R:FVDP}} {{-ast-}} {{-article-}} '''la''' {{f}} ({{m}} [[el#Tiếng Asturias|el]], {{n}} [[lo#Tiếng Asturias|lo]], {{f}} {{plur}} [[les#Tiếng Asturias|les]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-usage-}} Mạo từ ''la'' rút gọn thành [[l’]] đằng trước từ bắt đầu với ''a'' hoặc ''ha'': ''l’[[asturiana]]'' (nữ Asturia), ''l’[[habitación]]'' (chỗ ở). {{-ina-}} {{-pronoun-}} '''la''' {{f}} # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... # [[cho|Cho]] [[nó]], cho [[cô]] [[ấy]], cho [[bà]] ấy, cho [[chị]] ấy... {{-cat-}} {{-etymology-}} ; [[#Mạo từ 2|mạo từ]], [[#Đại từ 2|đại từ]] : {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} ; [[#Danh từ 3|danh từ]] : {{etym-from | lang = lat | term = labii | lterm = labiī | from = {{etym-from | term = labium | meaning = môi }} }} {{-article-}} '''la''' {{f}} ({{m}} [[el#Tiếng Catalan|el]], {{m}} {{plur}} [[els#Tiếng Catalan|els]], {{f}} {{plur}} [[les#Tiếng Catalan|les]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' ''từ ghép trước và sau'' (rút gọn [[l’]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} ({{plur}} [[las]]) # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. =={{langname|crw}}== ==={{ĐM|noun}}=== {{head|crw|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * Thomas, David. (1970) ''Vietnam word list (revised): Chrau Jro''. SIL International. {{-sce-}} {{-noun-}} {{head|sce|Danh từ}} # [[sáp]]. {{-glg-}} {{-pronoun-}} '''la''' {{f}} ''đổi cách'' # {{see-entry|a#Tiếng Galicia|a|meaning=nó, cô ấy, bà ấy, chị ấy...}} {{-usage-}} Dạng ''l-'' của các đại từ đổi cách ngôi thứ ba được sử dụng khi từ đằng trước kết thúc bằng ''-r'' hoặc ''-s'', và dạng này được ghép vào từ đằng trước. {{-noun-}} '''la''' {{m}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-noun-}} '''la''' {{f}} (thường không đếm được) # [[len|Len]]; [[lông]] [[cừu]], lông [[chiên]]. =={{langname|jeh}}== ==={{ĐM|noun}}=== {{head|jeh|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * Cohen, Patrick D., Thŭng (1972). ''ʼDŏk tơtayh Jeh, au pơchŏ hŏk chù Jeh: Hŏk tro pơsèm hŏk, lăm-al 1-3 (Ðọc tiếng Jeh, Em học vần tiếng Jeh: Lớp vỡ-lòng, quyển 1-3)''. SIL International. {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{-noun-}} {{nld-biến danh|la's|la'tje|la'tjes}} {{nld-noun|f|la's|la'tje}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-hun-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈlɒ/}} {{-interj-}} '''la''' # {{@|cũ}} Dùng để [[nhấn mạnh]] [[câu nói]]. #: ''[[ott|Ott]] van '''la'''!'' — Đấy! # Dùng để [[ngậm miệng]] [[ngân nga]]. {{-ido-}} {{-article-}} '''la''' # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-trk-fyk-}} {{-noun-}} {{pn}} # [[nến]]. [[Thể loại:Danh từ tiếng Kyrgyz Phú Dụ]] {{-jbo-}} {{-cmavo-}} '''la''' # Dùng đằng trước một từ ''[[cmene]]'' (danh từ riêng). {{-nob-}} {{-verb-}} {{nor-verb|inf=la|pres=lar|pret=lot|pp=latt}} '''la''' # [[cho phép|Cho phép]]. {{-nno-}} {{-verb-}} {{nor-verb|inf=la|pres=lèt|pres2=leter|pres3=lar|pret=lét|pp=late|pp2=lati|pp3=latt}} '''la''' # [[cho phép|Cho phép]], [[để]]. #: '''''La''' meg få gjera det.'' — Để tôi làm. {{-fin-}} {{-abr-}} '''la''' # {{abbreviation of|lauantai|meaning=thứ bảy}} {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-la.ogg |pron=ˈla}} {{-homo-}} * [[là#Tiếng Pháp|là]] * [[las#Tiếng Pháp|las]] {{-etymology-}} ; [[#Mạo từ 3|mạo từ]], [[#Đại từ 2|đại từ]] : {{etym-from | lang = fro | term = la | from = {{etym-from | lang = lat | term = illam | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} }}<ref>{{Chú thích sách|fr|author=Albert Dauzat|last=Dauzat|first=Albert|coauthors=Jean Dubois; Henri Mitterand|title=Nouveau dictionnaire étymologique|year=1964|publisher=Librairie Larousse|location=Paris|chapter=le, la, les}}</ref> {{-article-}} '''la''' {{f}} # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} {{inv}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. {{-ref-}} <references /> {{-ron-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈla/}} {{-etymology-}} ; [[#Giới từ|giới từ]] : {{etym-from | lang = lat | term = illac | meaning = đấy }} ; [[#Động từ 4|động từ]] : {{etym-from | lang = lat | term = lavare | lterm = lavāre | from = {{etym-from | type = động từ nguyên mẫu chủ động hiện tại của | term = lavo | lterm = lavō }} }} {{-prep-}} '''la''' # {{term|+ đổi cách}} [[ở|Ở]] [[tại]]. # {{term|+ đổi cách}} [[đến|Đến]], [[tới]], [[về]]. {{-verb-}} '''la''' # {{@|hiếm}} [[rửa|Rửa]] ([[đầu]]). {{-syn-}} * [[lăia]] {{term|Transylvania}} * se [[spăla]] * [[scălda]] * [[îmbăia]] {{-drv-}} * [[lăutoare]] * [[lăutură]] {{-related-}} * [[lături]] * [[lăun]] * [[spăla]] {{-epo-}} {{-etymology-}} {{etym-from | lang = fra | 2 lang = spa | 3 lang = ita | 4 lang = lat }} {{-article-}} '''la''' # [[cái|Cái]], [[con]], [[người]]... #: '''''la''' libro'' — cuốn sách #: '''''la''' libroj'' — các cuốn sách # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-swa-}} {{-etymology-}} {{etym-from | lang = bnt-proto }} So sánh với {{zul|style=plain}} ''[[dla|-dla]]''. {{-verb-}} '''la''' (''nguyên mẫu khẳng định'' [[kula]], ''nguyên mẫu phủ định'' [[kutola]]) # [[ăn|Ăn]]. =={{langname|tlq}}== ==={{ĐM|noun}}=== {{head|tlq|Danh từ}} # [[lá]]. ==={{ĐM|ref}}=== * [http://sealang.net/monkhmer/database/retrieve.pl?language=Tai%20Loi&sort=gloss&format=html Tiếng Tai Loi] tại Cơ sở Dữ liệu Môn-Khmer. {{-spa-}} {{-etymology-}} ; [[#Mạo từ 6|mạo từ]], [[#Đại từ 5|đại từ 1]], [[#Đại từ 6|đại từ 2]] : {{etym-from | lang = osp | term = ela | from = {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }} }} {{-article-}} '''la''' {{f}} ({{m}} [[el]], {{f}} {{plur}} [[las]], {{m}} {{plur}} [[los]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-pronoun-}} '''la''' {{f}} ({{plur}} [[las]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-pronoun-}} '''la''' {{n}} # {{@|thông tục}} [[người|Người]] [[ấy]]. #: '''''La''' sabe toda.'' — Người ấy cái gì cũng biết. #: ''¡Donde '''la''' viste!'' — Em thấy cái này ở đâu rồi! #: ''No te '''la''' creo.'' — Tôi không tin em. {{-related-}} * [[lo]] {{-noun-}} {{spa-noun-reg}} '''la''' {{f}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. =={{langname|tji}}== ==={{ĐM|pron}}=== * {{IPA4|tji|/la/}} ==={{ĐM|num}}=== {{head|tji|Số từ}} # [[một]]. {{-swe-}} {{-paro-}} * [[lade]] {{-verb-}} '''la''' # {{past of|lägga|lang=swe}} {{-conj-}} '''la''' # {{@|địa phương}} {{see-entry|väl}} {{-aml-}} {{-numeral-}} {{head|aml|Số}} # [[ba]]. {{-ref-}} * Nagaraja, K. S., Sidwell, Paul, Greenhill, Simon. (2013) ''A Lexicostatistical Study of the Khasian Languages: Khasi, Pnar, Lyngngam, and War''. {{-ita-}} {{-etymology-}} ; [[#Mạo từ 7|mạo từ]], [[#Đại từ 7|đại từ]] : {{etym-from | lang = lat | term = illa | from = {{etym-from | term = ille | meaning = ấy, đó, kia }} }}<ref>{{Chú thích sách|it|author=Giuseppe Patota|last=Patota|first=Giuseppe|title=Lineamenti di grammatica storica dell'italiano|year=2002|publisher=il Mulino|location=Bologna|isbn=88-15-08638-2|pages=127}}</ref> {{-article-}} '''la''' {{f}} ({{plur}} [[le]]) # [[cái|Cái]], [[con]], [[người]]... # [[ấy|Ấy]], [[này]] ([[người]], [[cái]], [[con]]...). {{-usage-}} ''La'' trở thành ''[[l’]]'' đằng trước từ bắt đầu với nguyên âm. {{-pronoun-}} '''la''' {{f}} ({{plur}} [[le]]) # [[nó|Nó]], [[cô]] [[ấy]], [[bà]] ấy, [[chị]] ấy... {{-noun-}} '''la''' {{m}} {{inv}} # {{@|âm nhạc}} [[la#Tiếng Việt|La]]. # {{@|âm nhạc}} [[A#Tiếng Việt|A]]. {{-drv-}} * [[la maggiore]] * [[la minore]] {{-ref-}} <references /> [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Động từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Thán từ tiếng Anh]] [[Thể loại:Mạo từ tiếng Asturias]] [[Thể loại:Đại từ tiếng Bổ trợ Quốc tế]] [[Thể loại:Mạo từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Catalan]] [[Thể loại:Danh từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Galicia]] [[Thể loại:Danh từ tiếng Hà Lan]] [[Thể loại:Thán từ tiếng Hungary]] [[Thể loại:Mạo từ tiếng Ido]] [[Thể loại:Động từ tiếng Na Uy]] [[Thể loại:Từ viết tắt tiếng Phần Lan]] [[Thể loại:Mạo từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Pháp]] [[Thể loại:Danh từ tiếng Pháp]] [[Thể loại:Mạo từ Quốc tế ngữ]] [[Thể loại:Giới từ tiếng Rumani]] [[Thể loại:Động từ tiếng Rumani]] [[Thể loại:Động từ tiếng Swahili]] [[Thể loại:Mạo từ tiếng Tây Ban Nha]] [[Thể loại:Đại từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Tây Ban Nha]] [[Thể loại:Mạo từ tiếng Ý]] [[Thể loại:Đại từ tiếng Ý]] [[Thể loại:Danh từ tiếng Ý]] 4cf81nkr5annx9geom1aiuel8vwqc6w mả 0 92831 2350682 2278706 2026-05-07T07:55:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350682 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[𡏢]]: [[mả]] *[[馬]]: [[ngựa]], [[mứa]], [[mã]], [[mựa]], [[mả]], [[mở]] {{bottom}} {{-paro-}} {{đầu}} :* [[mã]] :* [[ma]] :* [[mạ]] {{giữa}} :* [[mà]] :* [[má]] :* [[Mạ]] {{cuối}} {{-noun-}} [[HÌnh:Nagrobek jerzy kawalerowicz.JPG|thumb|150px|'''mả''']] '''mả''' # [[chỗ|Chỗ]] [[chôn]] [[người]] [[chết]], được đắp [[cao]]. # {{term|Khẩu ngữ}} [[Khả năng]] làm được [[việc gì]] đó hay [[xảy ra]] việc gì đó, được [[coi]] là [[do]] [[tác động]] của [[thế]] [[đất]] [[nơi]] có [[mồ mả]] [[tổ tiên]], theo [[mê tín]]. #: ''Nhà này có '''mả''' phát tài.'' {{-syn-}} ;Chỗ chôn người chết *[[mộ]] *[[mồ]] {{-trans-}} {{trans-top|Chỗ chôn người chết}} * {{afr}}: [[graf]] * {{cat-2}}: [[sepulcre]] {{m}} * {{ces}}: {{t+|cs|hrob|m}} * {{dan}}: {{t+|da|grav}} * {{nld}}: {{t|nl|graf|n}} * {{eng}}: [[grave]] * {{epo}}: [[tombo]] * {{est}}: {{t-|et|haud}} * {{fin}}: {{t+|fi|hauta}} * {{fra}}: {{t+|fr|tombe|f}} * {{deu}}: {{t+|de|Grab|n}} * [[Tiếng Hy Lạp]]: {{t+|el|τάφος|m|tr=táfos}}, {{t+|el|μνήμα|n|tr=mníma}} * {{hun}}: {{t+|hu|sír}} * {{isl}}: [[uaigh]] {{f}} * {{ita}}: {{t+|it|fossa|f}} {{trans-mid}} * {{lat}}: [[kaps]] {{m}} * [[Tiếng Malaysia]]: [[pusara]], [[kubur]] * {{nor}}: *: Bokmål: {{t|no|grav|m|f}} *: Nynorsk: [[grav]] {{f}} * {{pol}}: [[grób]] {{m}}, [[mogiła]] {{f}} *{{por}}: {{t+|pt|sepultura|f}} * {{rus}}: {{t+|ru|могила|f|tr=mogíla}} * {{spa}}: {{t+|es|tumba|f}} * {{tur}}: {{t+|tr|mezar}} {{trans-bottom}} {{-adj-}} '''mả''' # [[giỏi|Giỏi]] {{-adv-}} '''mả''' # {{term|Thông tục}} [[tài|Tài]], [[giỏi]]. #: ''Con mèo bắt chuột rất '''mả'''.'' #: ''Bắn '''mả''' thật.'' {{-trans-}} {{trans-top|Tài, giỏi}} * {{ara}}: {{t-|ar|حسنا|alt=حسنًا|tr=Hásanan}}, {{t-|ar|بخير|tr=bi-kháyr}}, {{t|ar|جيدا|alt=جيدًا|tr=jayyidan}} * {{bel}}: [[добра]] * {{ben}}: [[ভাল]] * {{bul}}: {{t|bg|добре|tr=dobré}} * {{cat-2}}: {{t|ca|bé}}, {{t|ca|ben}} * {{zho}}: *: {{cmn}}: [[好]] *{{ces}}: {{t+|cs|dobře}} *{{eng}}: [[well]] * {{epo}}: [[bele]] * {{est}}: {{t|et|hästi}} * {{fin}}: {{t+|fi|hyvin}} * {{fra}}: {{t+|fr|bien}} * {{deu}}: {{t+|de|gut}} * [[Tiếng Hy Lạp]]: {{t+|el|καλά|tr=kalá|sc=Grek}}, [[καλώς]] (kalós) * {{heb}}: {{t+|he|טוב|tr=tov}} * {{hin}}: [[अच्छा]] (acchā), [[ख़ूब]] (xūb) * {{ita}}: {{t+|it|bene}} * {{jpn}}: {{t|ja|良く|tr=yoku}} * {{kor}}: {{t+|ko|잘|tr=jal|sc=Hang}} * {{lat}}: {{t|la|probe|alt=probē}}, {{t|la|recte|alt=rectē}}, {{t|la|bene}} * {{lit}}: [[gerai]] {{trans-mid}} * [[Tiếng Malagasy]]: [[tsara]] * [[Tiếng Malaysia]]: [[dengan baik]] * [[Tiếng Mông Cổ]]: [[худаг]] (húdag) * {{nor}}: {{t+|no|bra}} * [[Tiếng Pashto]]: [[ښه]] (ẍë) * {{pol}}: {{t+|pl|dobrze}} * {{por}}: {{t+|pt|bem}} * [[Tiếng Rumani]]: {{t-|ro|bine}} * {{rus}}: {{t+|ru|хорошо|tr=xorošó}}, {{t|ru|как следует|tr=kak slédujet}} {{qualifier|properly}} * {{slk}}: {{t-|sk|dobre}} * {{slv}}: {{t+|sl|dobro}} * {{spa}}: {{t+|es|bien}} * {{swa}}: [[kisima]] * {{swe}}: {{t+|sv|väl}}, {{t+|sv|bra}} * {{tha}}: [[ให้ดี]] (hâi dee), [[อย่างดี]] (yàang dee) * {{tur}}: {{t+|tr|iyi}} * {{ukr}}: [[добре]] (dóbre), [[гарно]] (hárno) * {{urd}}: [[اچھا]] (acchā) {{trans-bottom}} {{-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]] {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-noun-}} {{pn}} # [[mồ]], [[mộ]]. [[Thể loại:Danh từ tiếng Tày]] aj910zaqn9eao4nqw03dve37hb7mkcg 2350939 2350682 2026-05-07T10:41:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350939 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[𡏢]]: [[mả]] *[[馬]]: [[ngựa]], [[mứa]], [[mã]], [[mựa]], [[mả]], [[mở]] {{bottom}} {{-paro-}} {{đầu}} :* [[mã]] :* [[ma]] :* [[mạ]] {{giữa}} :* [[mà]] :* [[má]] :* [[Mạ]] {{cuối}} {{-noun-}} [[HÌnh:Nagrobek jerzy kawalerowicz.JPG|thumb|150px|'''mả''']] '''mả''' # [[chỗ|Chỗ]] [[chôn]] [[người]] [[chết]], được đắp [[cao]]. # {{term|Khẩu ngữ}} [[Khả năng]] làm được [[việc gì]] đó hay [[xảy ra]] việc gì đó, được [[coi]] là [[do]] [[tác động]] của [[thế]] [[đất]] [[nơi]] có [[mồ mả]] [[tổ tiên]], theo [[mê tín]]. #: ''Nhà này có '''mả''' phát tài.'' {{-syn-}} ;Chỗ chôn người chết *[[mộ]] *[[mồ]] {{-trans-}} {{trans-top|Chỗ chôn người chết}} * {{afr}}: [[graf]] * {{cat-old}}: [[sepulcre]] {{m}} * {{ces}}: {{t+|cs|hrob|m}} * {{dan}}: {{t+|da|grav}} * {{nld}}: {{t|nl|graf|n}} * {{eng}}: [[grave]] * {{epo}}: [[tombo]] * {{est}}: {{t-|et|haud}} * {{fin}}: {{t+|fi|hauta}} * {{fra}}: {{t+|fr|tombe|f}} * {{deu}}: {{t+|de|Grab|n}} * [[Tiếng Hy Lạp]]: {{t+|el|τάφος|m|tr=táfos}}, {{t+|el|μνήμα|n|tr=mníma}} * {{hun}}: {{t+|hu|sír}} * {{isl}}: [[uaigh]] {{f}} * {{ita}}: {{t+|it|fossa|f}} {{trans-mid}} * {{lat}}: [[kaps]] {{m}} * [[Tiếng Malaysia]]: [[pusara]], [[kubur]] * {{nor}}: *: Bokmål: {{t|no|grav|m|f}} *: Nynorsk: [[grav]] {{f}} * {{pol}}: [[grób]] {{m}}, [[mogiła]] {{f}} *{{por}}: {{t+|pt|sepultura|f}} * {{rus}}: {{t+|ru|могила|f|tr=mogíla}} * {{spa}}: {{t+|es|tumba|f}} * {{tur}}: {{t+|tr|mezar}} {{trans-bottom}} {{-adj-}} '''mả''' # [[giỏi|Giỏi]] {{-adv-}} '''mả''' # {{term|Thông tục}} [[tài|Tài]], [[giỏi]]. #: ''Con mèo bắt chuột rất '''mả'''.'' #: ''Bắn '''mả''' thật.'' {{-trans-}} {{trans-top|Tài, giỏi}} * {{ara}}: {{t-|ar|حسنا|alt=حسنًا|tr=Hásanan}}, {{t-|ar|بخير|tr=bi-kháyr}}, {{t|ar|جيدا|alt=جيدًا|tr=jayyidan}} * {{bel}}: [[добра]] * {{ben}}: [[ভাল]] * {{bul}}: {{t|bg|добре|tr=dobré}} * {{cat-old}}: {{t|ca|bé}}, {{t|ca|ben}} * {{zho}}: *: {{cmn}}: [[好]] *{{ces}}: {{t+|cs|dobře}} *{{eng}}: [[well]] * {{epo}}: [[bele]] * {{est}}: {{t|et|hästi}} * {{fin}}: {{t+|fi|hyvin}} * {{fra}}: {{t+|fr|bien}} * {{deu}}: {{t+|de|gut}} * [[Tiếng Hy Lạp]]: {{t+|el|καλά|tr=kalá|sc=Grek}}, [[καλώς]] (kalós) * {{heb}}: {{t+|he|טוב|tr=tov}} * {{hin}}: [[अच्छा]] (acchā), [[ख़ूब]] (xūb) * {{ita}}: {{t+|it|bene}} * {{jpn}}: {{t|ja|良く|tr=yoku}} * {{kor}}: {{t+|ko|잘|tr=jal|sc=Hang}} * {{lat}}: {{t|la|probe|alt=probē}}, {{t|la|recte|alt=rectē}}, {{t|la|bene}} * {{lit}}: [[gerai]] {{trans-mid}} * [[Tiếng Malagasy]]: [[tsara]] * [[Tiếng Malaysia]]: [[dengan baik]] * [[Tiếng Mông Cổ]]: [[худаг]] (húdag) * {{nor}}: {{t+|no|bra}} * [[Tiếng Pashto]]: [[ښه]] (ẍë) * {{pol}}: {{t+|pl|dobrze}} * {{por}}: {{t+|pt|bem}} * [[Tiếng Rumani]]: {{t-|ro|bine}} * {{rus}}: {{t+|ru|хорошо|tr=xorošó}}, {{t|ru|как следует|tr=kak slédujet}} {{qualifier|properly}} * {{slk}}: {{t-|sk|dobre}} * {{slv}}: {{t+|sl|dobro}} * {{spa}}: {{t+|es|bien}} * {{swa}}: [[kisima]] * {{swe}}: {{t+|sv|väl}}, {{t+|sv|bra}} * {{tha}}: [[ให้ดี]] (hâi dee), [[อย่างดี]] (yàang dee) * {{tur}}: {{t+|tr|iyi}} * {{ukr}}: [[добре]] (dóbre), [[гарно]] (hárno) * {{urd}}: [[اچھا]] (acchā) {{trans-bottom}} {{-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]] {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-noun-}} {{pn}} # [[mồ]], [[mộ]]. [[Thể loại:Danh từ tiếng Tày]] nodk60w94u1drnqdnehdhk0daj4dufa minh điều 0 93637 2350683 2016600 2026-05-07T07:55:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350683 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''minh điều''' # {{term|Thiên văn học}} [[phần|Phần]] của [[Mặt Trời]] [[sáng]] hơn những phần [[chung quanh]]. {{-trans-}} {{đầu}} * {{eng}}: [[facula]] * {{cat-2}}: [[fàcula]] * {{spa}}: [[fácula]] {{f}} {{giữa}} * {{zho}}: [[光斑]] ([[quang]] [[ban]], ''guangban'') * {{ita}}: [[facula]] {{f}}, [[facola]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Thiên văn học/Tiếng Việt]] kxquljk4wti1xm6ad4v3rgaa0gc6q5l 2350940 2350683 2026-05-07T10:41:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350940 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''minh điều''' # {{term|Thiên văn học}} [[phần|Phần]] của [[Mặt Trời]] [[sáng]] hơn những phần [[chung quanh]]. {{-trans-}} {{đầu}} * {{eng}}: [[facula]] * {{cat-old}}: [[fàcula]] * {{spa}}: [[fácula]] {{f}} {{giữa}} * {{zho}}: [[光斑]] ([[quang]] [[ban]], ''guangban'') * {{ita}}: [[facula]] {{f}}, [[facola]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Thiên văn học/Tiếng Việt]] jshh8c3usfs0el5vs23jcvgn5gdud8b trực thăng 0 94218 2350684 2009951 2026-05-07T07:55:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350684 wikitext text/x-wiki {{-vie-}} [[Hình:Helicopter rescue sancy takeoff.jpg|nhỏ|trực thăng]] {{-pron-}} {{vie-pron|trực|thăng}} {{-paro-}} * [[Trực Thắng]] {{-noun-}} '''trực thăng''' #[[máy bay]] sử dụng [[phản lực]] của luồng [[gió]] thổi xuống phía dưới (từ các [[cánh quạt]] lớn) để có thể bay lên theo chiều [[thẳng đứng]]. {{-syn-}} *[[máy bay lên thẳng]] {{-trans-}} {{đầu}} *{{eng}}: [[helicopter]] {{giữa}} *{{cat-2}}: [[helicòpter]] {{m}} *{{fra}}: [[hélicoptère]] {{m}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] dpx91pd7e6gnorx5emjynfo7p84xa74 2350941 2350684 2026-05-07T10:41:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350941 wikitext text/x-wiki {{-vie-}} [[Hình:Helicopter rescue sancy takeoff.jpg|nhỏ|trực thăng]] {{-pron-}} {{vie-pron|trực|thăng}} {{-paro-}} * [[Trực Thắng]] {{-noun-}} '''trực thăng''' #[[máy bay]] sử dụng [[phản lực]] của luồng [[gió]] thổi xuống phía dưới (từ các [[cánh quạt]] lớn) để có thể bay lên theo chiều [[thẳng đứng]]. {{-syn-}} *[[máy bay lên thẳng]] {{-trans-}} {{đầu}} *{{eng}}: [[helicopter]] {{giữa}} *{{cat-old}}: [[helicòpter]] {{m}} *{{fra}}: [[hélicoptère]] {{m}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 2zavpiw5l4bhehaa8g3jaiwxxvu8cxg xuân 0 95522 2350685 2129551 2026-05-07T07:55:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350685 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym|term=xuân|lang=vie|from= * [[Hani:春]] }} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[橁]]: [[xuân]] * [[春]]: [[triệu]], [[xuân]] * [[鰆]]: [[xuân]] * [[㫩]]: [[xuân]] * [[蝽]]: [[xuân]] * [[夋]]: [[xuân]] * [[𠬍]]: [[tuấn]], [[xuân]] * [[暙]]: [[xuân]] {{mid}} * [[輴]]: [[truân]], [[thuân]], [[xuân]] * [[惷]]: [[xuẩn]], [[xuân]] * [[萶]]: [[xuân]] * [[㕙]]: [[xuân]] * [[萅]]: [[xuân]] * [[旽]]: [[xuân]], [[đôn]] * [[椿]]: [[thung]], [[xuân]] * [[旾]]: [[xuân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[春]]: [[xuân]] * [[椿]]: [[thung]], [[xuân]] {{mid}} * [[旾]]: [[xuân]] {{bottom}} {{-nôm-}} {{top}} * [[橁]]: [[xuân]] * [[春]]: [[xuân]], [[xoan]] * [[鰆]]: [[xuân]] * [[夋]]: [[xuân]] * [[萶]]: [[xuân]] {{mid}} * [[暙]]: [[xuân]] * [[萅]]: [[xuân]] * [[蝽]]: [[xuân]] * [[椿]]: [[xuân]], [[thông]], [[xoan]] * [[旾]]: [[xuân]] {{bottom}} {{-noun-}} '''xuân''' # [[mùa|Mùa]] [[chuyển tiếp]] từ [[đông]] sang [[hạ]], [[thời tiết]] [[ấm]] dần lên, thường được coi là [[mở đầu]] của [[năm mới]]. #: {{ux|vi|Mùa '''xuân''', trăm hoa đua nở.}} #: {{ux|vi|Vui Tết đón '''xuân'''.}} #: {{ux|vi|Một mùa '''xuân''' mới đang về trên khắp đất nước.}} # {{term|Văn chương}} [[năm|Năm]], dùng để [[tính]] [[thời gian]] đã [[trôi]] qua, hay [[tuổi]] của con [[người]]. #: {{ux|vi|Đã mấy '''xuân''' qua.}} #: {{ux|vi|Mới hai mươi '''xuân'''.}} {{-syn-}} * [[mùa xuân]] {{-drv-}} {{đầu}} * [[du xuân]] * [[hồi xuân]] * [[khai xuân]] * [[lập xuân]] * [[mạnh xuân]] * [[mùa xuân]] * [[nghênh xuân]] * [[tầm xuân]] * [[tân xuân]] * [[thanh xuân]] * [[thưởng xuân]] * [[trọng xuân]] * [[xuân đào]] * [[xuân đình]] * [[xuân hạ thu đông]] * [[xuân phân]] * [[xuân sơn]] * [[Xuân Thu]] {{cuối}} {{-trans-}} {{trans-top|Mùa}} * {{ara}}: {{t+|ar|ربيع|m|tr=rabīʿ}} * {{ady}}: {{t+|ady|гъатхэ|tr=ġātxă}} * {{afr}}: {{t+|af|lente}} * {{sqi}}: {{t+|sq|pranverë|f}} * {{eng}}: {{t+|en|spring}} * {{ang}}: {{t+|ang|lencten|m}} * {{hye}}: {{t+|hy|գարուն|tr=garun}} * {{asm}}: {{t+|as|বসন্ত|tr=boxonto}} * {{ast}}: {{t+|ast|primavera|f}} * {{pol}}: {{t+|pl|wiosna|f}} * {{eus}}: {{t+|eu|udaberri}} * {{por}}: {{t+|pt|primavera|f}} * {{cat-2}}: {{t+|ca|primavera|f}} * {{dan}}: {{t+|da|forår|n}}, {{t+|da|vår|c}} * {{nld}}: {{t+|nl|lente|m}}, {{t+|nl|voorjaar|n}} * {{ell}}: {{t+|el|άνοιξη|f|tr=ánoixi}}, {{t+|el|έαρ|n|tr=éar}} {{trans-mid}} * {{ido}}: {{t+|io|printempo}} * {{ind}}: {{t+|id|musim semi}} * {{mnc}}: {{t+|mnc|ᠨᡳᠶᡝᠩᠨᡳᠶᡝᡵᡳ|tr=niyengniyeri}} * {{fra}}: {{t+|fr|printemps|m}} * {{fin}}: {{t+|fi|kevät}} * {{epo}}: {{t+|eo|printempo}} * {{spa}}: {{t+|es|primavera|f}} * {{zho}}: *: {{dng}}: {{t+|dng|чунтян|tr=čunti͡an}} *: {{nan}}: {{t+|nan|春|tr=chhun}}, {{t+|nan|春天|tr=chhun-thiⁿ}} *: {{cmn}}: {{t+|cmn|春天|tr=chūntiān}}, {{t+|cmn|春季|tr=chūnjì}} * {{vol}}: {{t+|vo|florüp}} * {{cym}}: {{t+|cy|gwanwyn}} * {{ita}}: {{t+|it|primavera|f}} {{trans-bottom}} {{-see also-}} {{bảng:mùa/vi}} {{-adj-}} '''xuân''' # {{term|Văn chương}} Thuộc về [[tuổi trẻ]], coi là [[tươi đẹp]], [[tràn đầy]] [[sức sống]]. #: {{ux|vi|Đang tuổi '''xuân'''.}} #: {{ux|vi|Trông còn '''xuân''' lắm!}} # {{term|Từ cũ hoặc văn chương}} Thuộc về [[tình yêu]] [[trai gái]], coi là [[đẹp đẽ]]. #: {{ux|vi|Lòng '''xuân''' phơi phới.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Mùa/Tiếng Việt]] hd8x4edaeaz6aa22ynmcs0ki2pjiiia 2350942 2350685 2026-05-07T10:41:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350942 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym|term=xuân|lang=vie|from= * [[Hani:春]] }} {{-pron-}} {{vie-pron}} {{-hanviet-}} {{top}} * [[橁]]: [[xuân]] * [[春]]: [[triệu]], [[xuân]] * [[鰆]]: [[xuân]] * [[㫩]]: [[xuân]] * [[蝽]]: [[xuân]] * [[夋]]: [[xuân]] * [[𠬍]]: [[tuấn]], [[xuân]] * [[暙]]: [[xuân]] {{mid}} * [[輴]]: [[truân]], [[thuân]], [[xuân]] * [[惷]]: [[xuẩn]], [[xuân]] * [[萶]]: [[xuân]] * [[㕙]]: [[xuân]] * [[萅]]: [[xuân]] * [[旽]]: [[xuân]], [[đôn]] * [[椿]]: [[thung]], [[xuân]] * [[旾]]: [[xuân]] {{bottom}} {{-hanviet-t-}} {{top}} * [[春]]: [[xuân]] * [[椿]]: [[thung]], [[xuân]] {{mid}} * [[旾]]: [[xuân]] {{bottom}} {{-nôm-}} {{top}} * [[橁]]: [[xuân]] * [[春]]: [[xuân]], [[xoan]] * [[鰆]]: [[xuân]] * [[夋]]: [[xuân]] * [[萶]]: [[xuân]] {{mid}} * [[暙]]: [[xuân]] * [[萅]]: [[xuân]] * [[蝽]]: [[xuân]] * [[椿]]: [[xuân]], [[thông]], [[xoan]] * [[旾]]: [[xuân]] {{bottom}} {{-noun-}} '''xuân''' # [[mùa|Mùa]] [[chuyển tiếp]] từ [[đông]] sang [[hạ]], [[thời tiết]] [[ấm]] dần lên, thường được coi là [[mở đầu]] của [[năm mới]]. #: {{ux|vi|Mùa '''xuân''', trăm hoa đua nở.}} #: {{ux|vi|Vui Tết đón '''xuân'''.}} #: {{ux|vi|Một mùa '''xuân''' mới đang về trên khắp đất nước.}} # {{term|Văn chương}} [[năm|Năm]], dùng để [[tính]] [[thời gian]] đã [[trôi]] qua, hay [[tuổi]] của con [[người]]. #: {{ux|vi|Đã mấy '''xuân''' qua.}} #: {{ux|vi|Mới hai mươi '''xuân'''.}} {{-syn-}} * [[mùa xuân]] {{-drv-}} {{đầu}} * [[du xuân]] * [[hồi xuân]] * [[khai xuân]] * [[lập xuân]] * [[mạnh xuân]] * [[mùa xuân]] * [[nghênh xuân]] * [[tầm xuân]] * [[tân xuân]] * [[thanh xuân]] * [[thưởng xuân]] * [[trọng xuân]] * [[xuân đào]] * [[xuân đình]] * [[xuân hạ thu đông]] * [[xuân phân]] * [[xuân sơn]] * [[Xuân Thu]] {{cuối}} {{-trans-}} {{trans-top|Mùa}} * {{ara}}: {{t+|ar|ربيع|m|tr=rabīʿ}} * {{ady}}: {{t+|ady|гъатхэ|tr=ġātxă}} * {{afr}}: {{t+|af|lente}} * {{sqi}}: {{t+|sq|pranverë|f}} * {{eng}}: {{t+|en|spring}} * {{ang}}: {{t+|ang|lencten|m}} * {{hye}}: {{t+|hy|գարուն|tr=garun}} * {{asm}}: {{t+|as|বসন্ত|tr=boxonto}} * {{ast}}: {{t+|ast|primavera|f}} * {{pol}}: {{t+|pl|wiosna|f}} * {{eus}}: {{t+|eu|udaberri}} * {{por}}: {{t+|pt|primavera|f}} * {{cat-old}}: {{t+|ca|primavera|f}} * {{dan}}: {{t+|da|forår|n}}, {{t+|da|vår|c}} * {{nld}}: {{t+|nl|lente|m}}, {{t+|nl|voorjaar|n}} * {{ell}}: {{t+|el|άνοιξη|f|tr=ánoixi}}, {{t+|el|έαρ|n|tr=éar}} {{trans-mid}} * {{ido}}: {{t+|io|printempo}} * {{ind}}: {{t+|id|musim semi}} * {{mnc}}: {{t+|mnc|ᠨᡳᠶᡝᠩᠨᡳᠶᡝᡵᡳ|tr=niyengniyeri}} * {{fra}}: {{t+|fr|printemps|m}} * {{fin}}: {{t+|fi|kevät}} * {{epo}}: {{t+|eo|printempo}} * {{spa}}: {{t+|es|primavera|f}} * {{zho}}: *: {{dng}}: {{t+|dng|чунтян|tr=čunti͡an}} *: {{nan}}: {{t+|nan|春|tr=chhun}}, {{t+|nan|春天|tr=chhun-thiⁿ}} *: {{cmn}}: {{t+|cmn|春天|tr=chūntiān}}, {{t+|cmn|春季|tr=chūnjì}} * {{vol}}: {{t+|vo|florüp}} * {{cym}}: {{t+|cy|gwanwyn}} * {{ita}}: {{t+|it|primavera|f}} {{trans-bottom}} {{-see also-}} {{bảng:mùa/vi}} {{-adj-}} '''xuân''' # {{term|Văn chương}} Thuộc về [[tuổi trẻ]], coi là [[tươi đẹp]], [[tràn đầy]] [[sức sống]]. #: {{ux|vi|Đang tuổi '''xuân'''.}} #: {{ux|vi|Trông còn '''xuân''' lắm!}} # {{term|Từ cũ hoặc văn chương}} Thuộc về [[tình yêu]] [[trai gái]], coi là [[đẹp đẽ]]. #: {{ux|vi|Lòng '''xuân''' phơi phới.}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] [[Thể loại:Mùa/Tiếng Việt]] 3qgy74tf8jrplpypj2mvgstpu46lnkj thông tin 0 95608 2350686 2302281 2026-05-07T07:55:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350686 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|pron}}=== {{vie-pron|thông|tin}} ==={{ĐM|noun}}=== {{vie-noun}} # Điều được [[truyền]] đi [[cho biết]], [[tin]] [[truyền]] đi (nói khái quát). [[Bài]] [[viết]] có [[lượng]] [[cao]]. # [[tin|Tin]] (khái niệm cơ bản của điều khiển học). ==={{ĐM|verb}}=== {{vie-verb}} # [[truyền tin|Truyền tin]] cho [[nhau]] để [[biết]]. #: '''''Thông tin''' bằng điện thoại.'' #: ''Buổi '''thông tin''' khoa học.'' #: ''Chiến sĩ '''thông tin''' (làm công tác '''thông tin''').'' ===={{ĐM|trans}}==== {{trans-top}} * {{eng}}: {{t+|en|information}} * {{ara}}: {{t+|ar|مَعْلُومَات|f-p}}, {{t+|ar|مَعْلُومَة|f}}, {{t+|ar|كيف}} * {{cat-2}}: {{t+|ca|informació|f}} * {{est}}: {{t+|et|informatsioon}}, {{t+|et|teave}} * {{hun}}: {{t+|hu|információ}}, {{t+|hu|értesülés}}, {{t+|hu|tájékoztatás}}, {{t+|hu|tudnivaló}}, {{t+|hu|felvilágosítás}}, {{t+|hu|hír}} * {{kan}}: {{t+|kn|ಮಾಹಿತಿ}} * {{lao}}: {{t+|lo|ຂ່າວ}}, {{t+|lo|ຂໍ້ມູນ}} * {{jpn}}: {{t+|ja|情報|tr=じょうほう, jōhō}}, {{t+|ja|案内|tr=あんない, annai}} * {{slk}}: {{t+|sk|informácia|f}} * {{tha}}: {{t+|th|ข่าว}}, {{t+|th|ข้อมูล}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} qu44i6gfwspnbgq6tmdfnnkpxfkoav6 2350943 2350686 2026-05-07T10:41:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350943 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|pron}}=== {{vie-pron|thông|tin}} ==={{ĐM|noun}}=== {{vie-noun}} # Điều được [[truyền]] đi [[cho biết]], [[tin]] [[truyền]] đi (nói khái quát). [[Bài]] [[viết]] có [[lượng]] [[cao]]. # [[tin|Tin]] (khái niệm cơ bản của điều khiển học). ==={{ĐM|verb}}=== {{vie-verb}} # [[truyền tin|Truyền tin]] cho [[nhau]] để [[biết]]. #: '''''Thông tin''' bằng điện thoại.'' #: ''Buổi '''thông tin''' khoa học.'' #: ''Chiến sĩ '''thông tin''' (làm công tác '''thông tin''').'' ===={{ĐM|trans}}==== {{trans-top}} * {{eng}}: {{t+|en|information}} * {{ara}}: {{t+|ar|مَعْلُومَات|f-p}}, {{t+|ar|مَعْلُومَة|f}}, {{t+|ar|كيف}} * {{cat-old}}: {{t+|ca|informació|f}} * {{est}}: {{t+|et|informatsioon}}, {{t+|et|teave}} * {{hun}}: {{t+|hu|információ}}, {{t+|hu|értesülés}}, {{t+|hu|tájékoztatás}}, {{t+|hu|tudnivaló}}, {{t+|hu|felvilágosítás}}, {{t+|hu|hír}} * {{kan}}: {{t+|kn|ಮಾಹಿತಿ}} * {{lao}}: {{t+|lo|ຂ່າວ}}, {{t+|lo|ຂໍ້ມູນ}} * {{jpn}}: {{t+|ja|情報|tr=じょうほう, jōhō}}, {{t+|ja|案内|tr=あんない, annai}} * {{slk}}: {{t+|sk|informácia|f}} * {{tha}}: {{t+|th|ข่าว}}, {{t+|th|ข้อมูล}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} odfzqu68duov9nx6m4ey6d485qgirau wiki 0 101363 2350811 2196249 2026-05-07T08:08:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350811 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} *{{IPA|/ˈwɪ.ki/}} {{AHD|(wĭʹkē)}} *{{IPA|/ˈwi.ki/}} {{AHD|(wēʹkē)}} {{pron-audio |place=Hoa Kỳ <!-- Feel free to precise the city or the area --> |file=En-us-wiki.ogg }} {{-etymology-}} Từ [[tiếng Anh]] ''[[#Tiếng Anh|wiki]]'', từ [[tiếng Hawaii]] ''[[wikiwiki]]'' ([[nhanh chóng]]). {{-noun-}} '''wiki''' #[[website|Website]] nào chạy trên [[phần mềm]] wiki để cho [[độc giả]] [[bổ sung]], [[thay đổi]], và [[dời]] [[nội dung]] của website đó ''[[nhanh chóng]]''. #Loại [[ứng dụng]] [[xây dựng]] và [[quản lý]] các [[trang]] [[thông tin]] của website đó. {{-trans-}} {{trans-top|website wiki}} *{{af}}: [[#Tiếng Afrikaans|wiki]] *{{ara}}: [[ويكي]] (''wiki'') *{{cat-2}}: [[#Tiếng Catalan|wiki]] *{{zho}}: **{{Hans}}: [[维基]] (''wéijī'', [[duy]] [[cơ]]) **{{Hant}}: [[維基]] (''wéijī'', [[duy]] [[cơ]]) *{{da}}: [[#Tiếng Đan Mạch|wiki]] *{{eo}}: [[vikio]] *{{fi}}: [[#Tiếng Phần Lan|wiki]] *{{fra}}: [[#Tiếng Pháp|wiki]] {{m}} *{{deu}}: [[Wiki]] {{n}} *{{ka}}: [[ვიკი]] (''viki'') *{{ell}}: [[ουίκι]] (''ouíki'') *{{heb}}: [[ויקי]], [[וויקי]] (''wiki'') *{{ina}}: [[#Tiếng Bổ trợ Quốc tế|wiki]] {{trans-mid}} *{{it}}: [[#Tiếng Ý|wiki]] *{{jpn}}: [[ウィキ]] (''wiki'') *{{ko}}: [[위키]] (''wiki'') *{{lt}}: [[viki]] *{{pa}}: [[ਵਿਕਿ]] (''wiki'') *{{fa}}: [[ویكی]] (''viki'') *{{pl}}: [[#Tiếng Ba Lan|wiki]] *{{pt}}: [[#Tiếng Bồ Đào Nha|wiki]] *{{ro}}: [[#Tiếng Romana|wiki]] *{{rus}}: [[вики]], [[bи́ки]] *{{sr}}: **{{Cyrl}}: [[вики]] **{{Latn}}: [[viki]] *{{spa}}: [[#Tiếng Tây Ban Nha|wiki]] *{{sv}}: [[#Tiếng Thụy Điển|wiki]] *{{tr}}: [[çabuk]] *{{vo}}: [[#Tiếng Volapük|wiki]] *{{cy}}: [[wici]] {{trans-bottom}} {{-drv-}} *[[Wikipedia]] *[[Wiktionary]] *[[Wikibooks]] *[[Wikiquote]] *[[Wikisource]] *[[Wikinews]] *[[Wikiversity]] *[[Wikimedia]] {{-homo-}} * [[wicky]] {{-noun-}} '''wiki''' ({{plur}} [[wikis]]) #[[#Tiếng Anh|Wiki]]. {{-drv-}} *[[wikify]], [[wikicize]] *[[wikilink]] *[[wikitext]] *[[Wikinut]] {{-verb-}} '''wiki''' #[[bổ sung|Bổ sung]] hay [[sửa đổi]] trong wiki. #[[tra cứu|Tra cứu]] [[thuật ngữ]] trong [[Wikipedia]]. #:''I need to '''wiki''' Cane Toad.''&nbsp;— Tôi cần tra cứu về [[cóc mía]] (''[[Bufo]] [[marinus]]'') trong Wikipedia. {{-vie-}} {{-pron-}} {{vie-pron|uích|ky}} {{-noun-}} '''wiki''' #[[#Tiếng Anh|Wiki]]. [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Động từ tiếng Anh]] [[Thể loại:Danh từ tiếng Việt]] jufpcmzpg8nmtijfwv7ok8fwbdlkv06 2350944 2350811 2026-05-07T10:41:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350944 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} *{{IPA|/ˈwɪ.ki/}} {{AHD|(wĭʹkē)}} *{{IPA|/ˈwi.ki/}} {{AHD|(wēʹkē)}} {{pron-audio |place=Hoa Kỳ <!-- Feel free to precise the city or the area --> |file=En-us-wiki.ogg }} {{-etymology-}} Từ [[tiếng Anh]] ''[[#Tiếng Anh|wiki]]'', từ [[tiếng Hawaii]] ''[[wikiwiki]]'' ([[nhanh chóng]]). {{-noun-}} '''wiki''' #[[website|Website]] nào chạy trên [[phần mềm]] wiki để cho [[độc giả]] [[bổ sung]], [[thay đổi]], và [[dời]] [[nội dung]] của website đó ''[[nhanh chóng]]''. #Loại [[ứng dụng]] [[xây dựng]] và [[quản lý]] các [[trang]] [[thông tin]] của website đó. {{-trans-}} {{trans-top|website wiki}} *{{af}}: [[#Tiếng Afrikaans|wiki]] *{{ara}}: [[ويكي]] (''wiki'') *{{cat-old}}: [[#Tiếng Catalan|wiki]] *{{zho}}: **{{Hans}}: [[维基]] (''wéijī'', [[duy]] [[cơ]]) **{{Hant}}: [[維基]] (''wéijī'', [[duy]] [[cơ]]) *{{da}}: [[#Tiếng Đan Mạch|wiki]] *{{eo}}: [[vikio]] *{{fi}}: [[#Tiếng Phần Lan|wiki]] *{{fra}}: [[#Tiếng Pháp|wiki]] {{m}} *{{deu}}: [[Wiki]] {{n}} *{{ka}}: [[ვიკი]] (''viki'') *{{ell}}: [[ουίκι]] (''ouíki'') *{{heb}}: [[ויקי]], [[וויקי]] (''wiki'') *{{ina}}: [[#Tiếng Bổ trợ Quốc tế|wiki]] {{trans-mid}} *{{it}}: [[#Tiếng Ý|wiki]] *{{jpn}}: [[ウィキ]] (''wiki'') *{{ko}}: [[위키]] (''wiki'') *{{lt}}: [[viki]] *{{pa}}: [[ਵਿਕਿ]] (''wiki'') *{{fa}}: [[ویكی]] (''viki'') *{{pl}}: [[#Tiếng Ba Lan|wiki]] *{{pt}}: [[#Tiếng Bồ Đào Nha|wiki]] *{{ro}}: [[#Tiếng Romana|wiki]] *{{rus}}: [[вики]], [[bи́ки]] *{{sr}}: **{{Cyrl}}: [[вики]] **{{Latn}}: [[viki]] *{{spa}}: [[#Tiếng Tây Ban Nha|wiki]] *{{sv}}: [[#Tiếng Thụy Điển|wiki]] *{{tr}}: [[çabuk]] *{{vo}}: [[#Tiếng Volapük|wiki]] *{{cy}}: [[wici]] {{trans-bottom}} {{-drv-}} *[[Wikipedia]] *[[Wiktionary]] *[[Wikibooks]] *[[Wikiquote]] *[[Wikisource]] *[[Wikinews]] *[[Wikiversity]] *[[Wikimedia]] {{-homo-}} * [[wicky]] {{-noun-}} '''wiki''' ({{plur}} [[wikis]]) #[[#Tiếng Anh|Wiki]]. {{-drv-}} *[[wikify]], [[wikicize]] *[[wikilink]] *[[wikitext]] *[[Wikinut]] {{-verb-}} '''wiki''' #[[bổ sung|Bổ sung]] hay [[sửa đổi]] trong wiki. #[[tra cứu|Tra cứu]] [[thuật ngữ]] trong [[Wikipedia]]. #:''I need to '''wiki''' Cane Toad.''&nbsp;— Tôi cần tra cứu về [[cóc mía]] (''[[Bufo]] [[marinus]]'') trong Wikipedia. {{-vie-}} {{-pron-}} {{vie-pron|uích|ky}} {{-noun-}} '''wiki''' #[[#Tiếng Anh|Wiki]]. [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Động từ tiếng Anh]] [[Thể loại:Danh từ tiếng Việt]] kw94ewb1p5lkrhhor096z0cfnb68j31 Thành viên:Laurent Bouvier/Statistics 2 104030 2350836 1999828 2026-05-07T08:15:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350836 wikitext text/x-wiki == November 11<sup>th</sup> == {| style="border:1px solid #AAAACC;margin-left:0.5em;margin-bottom:0.5em;text-align:center; " rules="all" cellpadding="3" cellspacing="0" |- | bgcolor="#EEEEFF" |Language | || bgcolor="#EEEEFF" |cnt|| bgcolor="#EEEEFF" |noun|| bgcolor="#EEEEFF" |adj|| bgcolor="#EEEEFF" |verb|| bgcolor="#EEEEFF" |adv|| bgcolor="#EEEEFF" |pr-noun|| bgcolor="#EEEEFF" |image|| bgcolor="#EEEEFF" |pron-audio|| bgcolor="#EEEEFF" |hanviet|| bgcolor="#EEEEFF" |hanviet-t|| bgcolor="#EEEEFF" |dial|| bgcolor="#EEEEFF" |wiki|| bgcolor="#EEEEFF" |abr|| bgcolor="#EEEEFF" |interj|| bgcolor="#EEEEFF" |prep|| bgcolor="#EEEEFF" |suffix|| bgcolor="#EEEEFF" |num|| bgcolor="#EEEEFF" |pronoun|| bgcolor="#EEEEFF" |note|| bgcolor="#EEEEFF" |prefix|| bgcolor="#EEEEFF" |adverb|| bgcolor="#EEEEFF" |tr-verb|| bgcolor="#EEEEFF" |compound|| bgcolor="#EEEEFF" |chia|| bgcolor="#EEEEFF" |forms|| bgcolor="#EEEEFF" |intr-verb|| bgcolor="#EEEEFF" |proper|| bgcolor="#EEEEFF" |proverb|| bgcolor="#EEEEFF" |stub|| bgcolor="#EEEEFF" |abbr|| bgcolor="#EEEEFF" |vie-n|| bgcolor="#EEEEFF" |cmavo|| bgcolor="#EEEEFF" |article|| bgcolor="#EEEEFF" |contr |- |bgcolor='#EEEEEE' |{{eng}} | || 94954|| 62928|| 24833|| 12384|| 5168|| 19|| 2780|| 1552|| - || - || - || - || 375|| 178|| 88|| 138|| 4|| 32|| - || 49|| - || 16|| - || - || - || 7|| 2|| 2|| 1|| 1|| - || - || - || 1 |- |bgcolor='#EEEEEE' |{{fra}} | || 43889|| 29821|| 11149|| 6800|| 1433|| 4|| 978|| 92|| - || - || - || - || 3|| 110|| 55|| - || - || - || - || - || - || 3|| - || 15|| 7|| - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{rus}} | || 35680|| 14989|| 7398|| 11274|| 957|| - || 1|| - || - || - || - || - || - || 45|| 30|| - || 65|| - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{vie}} | || 28467|| 7531|| 3673|| 5766|| 694|| 4525|| 99|| 1|| 1642|| 1492|| - || 938|| 31|| 6|| 24|| - || 19|| 39|| 66|| 2|| 8|| - || 18|| - || - || 1|| 5|| 2|| 0|| 1|| - || - || - || - |- |bgcolor='#EEEEEE' |{{nor}} | || 10305|| 6463|| 1701|| 2194|| 199|| - || 43|| - || - || - || 1422|| - || - || 39|| 61|| 6|| 23|| 31|| - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dfn}} | || 7364|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nld}} | || 291|| 166|| 58|| 54|| - || - || 32|| - || - || - || - || - || - || 2|| 11|| - || 18|| 9|| - || 1|| 15|| - || - || - || - || - || - || - || 0|| - || - || - || 1|| - |- |bgcolor='#EEEEEE' |{{ido}} | || 106|| 94|| 11|| 1|| - || - || 2|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nno}} | || 64|| 38|| 11|| 8|| 6|| - || - || - || - || - || 15|| - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dut}} | || 25|| 20|| 1|| 1|| - || - || 2|| 18|| - || - || - || - || - || 1|| 1|| - || 1|| - || - || - || 1|| - || - || - || - || - || 1|| - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{cmn}} | || 18|| 14|| 1|| 2|| 1|| 1|| - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || 1|| - || - || - |- |bgcolor='#EEEEEE' |{{deu}} | || 7|| 2|| - || 1|| - || - || 1|| 3|| - || - || - || - || - || - || - || - || 2|| - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{spa}} | || 6|| 3|| 4|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || 2|| 1|| - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{zho}} | || 5|| 1|| 1|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || 2|| - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{exp}} | || 4|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{lat}} | || 4|| - || 2|| - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{epo}} | || 3|| 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fin}} | || 3|| 3|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nob}} | || 3|| 2|| 1|| 1|| - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{swe}} | || 3|| 3|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{jpn}} | || 3|| 3|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dan}} | || 2|| 1|| - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{afr}} | || 2|| 2|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ita}} | || 2|| 1|| - || - || - || - || - || 1|| - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{yue}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || 1|| - || - || - |- |bgcolor='#EEEEEE' |{{jbo}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || 1|| - || - |- |bgcolor='#EEEEEE' |{{tpn}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{eus}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{cat-2}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fas}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{sna}} | || 1|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fry}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{heb}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{hin}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nap}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{kur}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ina}} | || 1|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ara}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{por}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ron}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- | bgcolor="yellow" |Total | || bgcolor="yellow" |221226|| bgcolor='yellow' |122096|| bgcolor='yellow' |48845|| bgcolor='yellow' |38488|| bgcolor='yellow' |8458|| bgcolor='yellow' |4553|| bgcolor='yellow' |3940|| bgcolor='yellow' |1667|| bgcolor='yellow' |1642|| bgcolor='yellow' |1492|| bgcolor='yellow' |1438|| bgcolor='yellow' |938|| bgcolor='yellow' |410|| bgcolor='yellow' |383|| bgcolor='yellow' |273|| bgcolor='yellow' |144|| bgcolor='yellow' |132|| bgcolor='yellow' |113|| bgcolor='yellow' |66|| bgcolor='yellow' |52|| bgcolor='yellow' |24|| bgcolor='yellow' |20|| bgcolor='yellow' |18|| bgcolor='yellow' |15|| bgcolor='yellow' |9|| bgcolor='yellow' |9|| bgcolor='yellow' |8|| bgcolor='yellow' |4|| bgcolor='yellow' |3|| bgcolor='yellow' |2|| bgcolor='yellow' |2|| bgcolor='yellow' |1|| bgcolor='yellow' |1|| bgcolor='yellow' |1 |} 0kt1t44oenpv632ebpo65nuxhjxvcbv 2351074 2350836 2026-05-07T10:48:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351074 wikitext text/x-wiki == November 11<sup>th</sup> == {| style="border:1px solid #AAAACC;margin-left:0.5em;margin-bottom:0.5em;text-align:center; " rules="all" cellpadding="3" cellspacing="0" |- | bgcolor="#EEEEFF" |Language | || bgcolor="#EEEEFF" |cnt|| bgcolor="#EEEEFF" |noun|| bgcolor="#EEEEFF" |adj|| bgcolor="#EEEEFF" |verb|| bgcolor="#EEEEFF" |adv|| bgcolor="#EEEEFF" |pr-noun|| bgcolor="#EEEEFF" |image|| bgcolor="#EEEEFF" |pron-audio|| bgcolor="#EEEEFF" |hanviet|| bgcolor="#EEEEFF" |hanviet-t|| bgcolor="#EEEEFF" |dial|| bgcolor="#EEEEFF" |wiki|| bgcolor="#EEEEFF" |abr|| bgcolor="#EEEEFF" |interj|| bgcolor="#EEEEFF" |prep|| bgcolor="#EEEEFF" |suffix|| bgcolor="#EEEEFF" |num|| bgcolor="#EEEEFF" |pronoun|| bgcolor="#EEEEFF" |note|| bgcolor="#EEEEFF" |prefix|| bgcolor="#EEEEFF" |adverb|| bgcolor="#EEEEFF" |tr-verb|| bgcolor="#EEEEFF" |compound|| bgcolor="#EEEEFF" |chia|| bgcolor="#EEEEFF" |forms|| bgcolor="#EEEEFF" |intr-verb|| bgcolor="#EEEEFF" |proper|| bgcolor="#EEEEFF" |proverb|| bgcolor="#EEEEFF" |stub|| bgcolor="#EEEEFF" |abbr|| bgcolor="#EEEEFF" |vie-n|| bgcolor="#EEEEFF" |cmavo|| bgcolor="#EEEEFF" |article|| bgcolor="#EEEEFF" |contr |- |bgcolor='#EEEEEE' |{{eng}} | || 94954|| 62928|| 24833|| 12384|| 5168|| 19|| 2780|| 1552|| - || - || - || - || 375|| 178|| 88|| 138|| 4|| 32|| - || 49|| - || 16|| - || - || - || 7|| 2|| 2|| 1|| 1|| - || - || - || 1 |- |bgcolor='#EEEEEE' |{{fra}} | || 43889|| 29821|| 11149|| 6800|| 1433|| 4|| 978|| 92|| - || - || - || - || 3|| 110|| 55|| - || - || - || - || - || - || 3|| - || 15|| 7|| - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{rus}} | || 35680|| 14989|| 7398|| 11274|| 957|| - || 1|| - || - || - || - || - || - || 45|| 30|| - || 65|| - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{vie}} | || 28467|| 7531|| 3673|| 5766|| 694|| 4525|| 99|| 1|| 1642|| 1492|| - || 938|| 31|| 6|| 24|| - || 19|| 39|| 66|| 2|| 8|| - || 18|| - || - || 1|| 5|| 2|| 0|| 1|| - || - || - || - |- |bgcolor='#EEEEEE' |{{nor}} | || 10305|| 6463|| 1701|| 2194|| 199|| - || 43|| - || - || - || 1422|| - || - || 39|| 61|| 6|| 23|| 31|| - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dfn}} | || 7364|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nld}} | || 291|| 166|| 58|| 54|| - || - || 32|| - || - || - || - || - || - || 2|| 11|| - || 18|| 9|| - || 1|| 15|| - || - || - || - || - || - || - || 0|| - || - || - || 1|| - |- |bgcolor='#EEEEEE' |{{ido}} | || 106|| 94|| 11|| 1|| - || - || 2|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nno}} | || 64|| 38|| 11|| 8|| 6|| - || - || - || - || - || 15|| - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dut}} | || 25|| 20|| 1|| 1|| - || - || 2|| 18|| - || - || - || - || - || 1|| 1|| - || 1|| - || - || - || 1|| - || - || - || - || - || 1|| - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{cmn}} | || 18|| 14|| 1|| 2|| 1|| 1|| - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || 1|| - || - || - |- |bgcolor='#EEEEEE' |{{deu}} | || 7|| 2|| - || 1|| - || - || 1|| 3|| - || - || - || - || - || - || - || - || 2|| - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{spa}} | || 6|| 3|| 4|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || 2|| 1|| - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{zho}} | || 5|| 1|| 1|| - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || 2|| - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{exp}} | || 4|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{lat}} | || 4|| - || 2|| - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{epo}} | || 3|| 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fin}} | || 3|| 3|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nob}} | || 3|| 2|| 1|| 1|| - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{swe}} | || 3|| 3|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{jpn}} | || 3|| 3|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{dan}} | || 2|| 1|| - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{afr}} | || 2|| 2|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ita}} | || 2|| 1|| - || - || - || - || - || 1|| - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{yue}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || 1|| - || - || - |- |bgcolor='#EEEEEE' |{{jbo}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || 1|| - || - |- |bgcolor='#EEEEEE' |{{tpn}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{eus}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{cat-old}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fas}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{sna}} | || 1|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{fry}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{heb}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{hin}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{nap}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{kur}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ina}} | || 1|| - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ara}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{por}} | || 1|| 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- |bgcolor='#EEEEEE' |{{ron}} | || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 1|| - || - || - || - || - || - || - || - || - || - || - || - || - || 0|| - || - || - || - || - |- | bgcolor="yellow" |Total | || bgcolor="yellow" |221226|| bgcolor='yellow' |122096|| bgcolor='yellow' |48845|| bgcolor='yellow' |38488|| bgcolor='yellow' |8458|| bgcolor='yellow' |4553|| bgcolor='yellow' |3940|| bgcolor='yellow' |1667|| bgcolor='yellow' |1642|| bgcolor='yellow' |1492|| bgcolor='yellow' |1438|| bgcolor='yellow' |938|| bgcolor='yellow' |410|| bgcolor='yellow' |383|| bgcolor='yellow' |273|| bgcolor='yellow' |144|| bgcolor='yellow' |132|| bgcolor='yellow' |113|| bgcolor='yellow' |66|| bgcolor='yellow' |52|| bgcolor='yellow' |24|| bgcolor='yellow' |20|| bgcolor='yellow' |18|| bgcolor='yellow' |15|| bgcolor='yellow' |9|| bgcolor='yellow' |9|| bgcolor='yellow' |8|| bgcolor='yellow' |4|| bgcolor='yellow' |3|| bgcolor='yellow' |2|| bgcolor='yellow' |2|| bgcolor='yellow' |1|| bgcolor='yellow' |1|| bgcolor='yellow' |1 |} gmta8c4bsdfihqfelc5m20xsdrfoll4 tháng Ba 0 107744 2350687 2252589 2026-05-07T07:56:03Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350687 wikitext text/x-wiki {{-vie-}} {{-info-|Tháng Ba}} {{-pron-}} {{vie-pron|tháng|Ba}} {{-pr-noun-}} '''tháng Ba''' # Tháng [[thứ ba]] của [[lịch Gregorian]], sau [[tháng Hai]] và trước [[tháng Tư]], trong [[dương lịch]] có 31 [[ngày]]. #: {{ux|vi|"Thanh minh trong tiết '''tháng Ba'''.</br>Lễ là tảo mộ hội là đạp thanh"|q=<u>{{w|Truyện Kiều}}</u>}} {{-usage-}} '''Lưu ý chính tả''': viết "tháng Ba" khi từ này nằm giữa hoặc cuối câu. Viết "Tháng Ba" khi từ này xuất hiện ở đầu câu hoặc đầu đoạn văn theo quy tắc viết hoa chữ cái đầu tiên của âm tiết đầu tiên trong từ khi nó đứng đầu câu hoặc đầu đoạn văn. Cách viết thường danh từ riêng "tháng Ba" thành "tháng ba" thường gặp trong các văn bản tiếng Việt là lối viết sai chính tả phổ biến nhưng vẫn được chấp nhận hiểu là "tháng thứ Ba trong năm theo lịch Gregorius", và cũng thường được coi là "tháng thứ Ba của năm dương lịch". {{-syn-}} * [[tháng 3]] * [[tháng ba]] {{-trans-}} '''tháng thứ ba của lịch Gregorius''' {{đầu}} * {{ara}}: [[مارس|مَارِس]] (''máːris'') {{m}}, [[اذار|آذَارٌ]] (''’āðar'') {{m}} * {{afr}}: [[maart]] * {{akz}}: [[hasiholtina istatótchìina]], [[Màchka]] * {{sqi}}: [[mars]] * {{eng}}: [[March]] * {{ang}}: [[hreþmonaþ|hreþmōnaþ]] {{m}} * {{arg}}: [[marzo]] {{m}} * {{ast}}: [[marzu]] {{m}} * {{pol}}: [[marzec]] {{m}} * {{isl}}: [[mars]] * {{eus}}: [[martxo]] * {{bel}}: [[сакавік]] (''sakavik'') * {{por}}: [[março]] {{m}} * {{ina}}: [[martio]] * {{bos}}: [[mart#Tiếng Bosni|mart]] {{m}} * {{bre}}: [[Meurzh]], miz Meurzh * {{bul}}: [[март#Tiếng Bulgari|март]] (''mart'') {{m}} * {{cat-2}}: [[març]] {{m}} * {{chr}}: [[ᎤᏄᎳᎯ]] (''unulahi'') * {{chv}}: [[пуш]] (''puš'') * {{cor}}: [[mys merth]] * {{hrv}}: [[ožujak]] * {{dan}}: [[marts]] * {{heb}}: [[מרס]] (''mars''), [[מרץ]] (''merts''; không chính thức) * {{deu}}: [[März]] {{m}}, [[Lenzing]] {{m}} * {{est}}: [[märts]] * {{fur}}: [[març]] {{m}} * {{fry}}: [[mars]] * {{kat}}: [[მარტი]] (''marti'') * {{nld}}: [[maart]] * {{kor}}: [[삼월]] ([[三月]], [[tam]] [[nguyệt]], ''samweol'') * {{hin}}: [[मार्च]] (''mārch'') * {{hun}}: [[március]] * {{ell}}: [[Μάρτιος]] {{IPA|[ˈmar.ti.o̞s]}} {{m}}, [[Μάρτης]] {{IPA|[ˈmar.tis]}} {{m}} * {{ido}}: [[marto]] * {{ilo}}: [[marso]] * {{ind}}: [[maret]] * {{ile}}: [[marte]] * {{gle}}: [[Márta]] * {{jav}}: [[maret]] * {{kan}}: [[ಮಾರ್ಚಿ]] (''maarci'') * {{lat}}: [[Martius]] {{m}} * {{lav}}: [[marts]] * {{lim}}: [[miert]] {{giữa}} * {{lit}}: [[kovas]] {{m}} * {{ltz}}: [[Mäerz]] * {{msa}}: [[Mac]], [[مچ]] * {{mnc}}: ''[[ilan biya]]'' * {{mri}}: [[mäehe]] * {{mar}}: [[मार्च]] (''mārch'') * {{nor}}: [[mars]] * {{nap}}: [[màrzo]] {{m}} * {{rus}}: [[март]] (''mart'') {{m}} * {{jpn}}: [[三月]] (さんがつ, [[tam]] [[nguyệt]], ''sángatsu'') * {{nov}}: [[marte]] * {{oci}}: [[març]] {{m}} * {{oji}}: [[onaabani-giizis]] * {{fin}}: [[maaliskuu]] * {{fra}}: [[mars]] {{m}} * {{epo}}: [[marto]] * {{ron}}: [[martie]] * {{sme}}: [[njukčamánnu]] * {{srd}}: [[martzu]] {{m}} * {{sco}}: [[mairch]] * {{ces}}: [[březen]] {{m}} * {{srp}}: ** {{Cyrl}}: [[март#Tiếng Serbi|март]] {{m}} ** {{Latn}}: [[mart#Tiếng Serbi|mart]] {{m}} * {{scn}}: [[marzu]] {{m}} * {{slk}}: [[marec]] {{m}} * {{slv}}: márec {{m}} * {{sun}}: [[maret]] * {{tgl}}: [[Marso]] * {{tam}}: [[மார்ச்]] (''maarc'') * {{tat}}: [[mart#Tatar|mart]] * {{spa}}: [[marzo]] {{m}} * {{tel}}: [[మార్చి]] (''maarchi'') * {{tha}}: [[มีนาคม]] (''mee naa khohm'') * {{tur}}: [[mart#Tiếng Thổi Nhĩ Kỳ|mart]] * {{swe}}: [[mars]] * {{tpi}}: [[mac#Tiếng Tok Pisin|mac]] * {{zho}}: [[三月]] ([[tam]] [[nguyệt]], ''sānyuè'') * {{ukr}}: [[березень]] (''berezen’'') {{m}} * {{vol}}: [[mäzul]] * {{cym}}: [[Mawrth]] {{m}} * {{wol}}: [[måss]] * {{ita}}: [[marzo]] {{m}} {{cuối}} {{Tháng trong năm |[[tháng Một]] |[[tháng Hai]] |[[tháng Ba]] |[[tháng Tư]] |[[tháng Năm]] |[[tháng Sáu]] |[[tháng Bảy]] |[[tháng Tám]] |[[tháng Chín]] |[[tháng Mười]] |[[tháng Mười một]] |[[tháng Mười hai]] }} {{C|vi|Tháng}} j1doni6lv6bp4gjponistobbad5hic4 2350945 2350687 2026-05-07T10:41:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350945 wikitext text/x-wiki {{-vie-}} {{-info-|Tháng Ba}} {{-pron-}} {{vie-pron|tháng|Ba}} {{-pr-noun-}} '''tháng Ba''' # Tháng [[thứ ba]] của [[lịch Gregorian]], sau [[tháng Hai]] và trước [[tháng Tư]], trong [[dương lịch]] có 31 [[ngày]]. #: {{ux|vi|"Thanh minh trong tiết '''tháng Ba'''.</br>Lễ là tảo mộ hội là đạp thanh"|q=<u>{{w|Truyện Kiều}}</u>}} {{-usage-}} '''Lưu ý chính tả''': viết "tháng Ba" khi từ này nằm giữa hoặc cuối câu. Viết "Tháng Ba" khi từ này xuất hiện ở đầu câu hoặc đầu đoạn văn theo quy tắc viết hoa chữ cái đầu tiên của âm tiết đầu tiên trong từ khi nó đứng đầu câu hoặc đầu đoạn văn. Cách viết thường danh từ riêng "tháng Ba" thành "tháng ba" thường gặp trong các văn bản tiếng Việt là lối viết sai chính tả phổ biến nhưng vẫn được chấp nhận hiểu là "tháng thứ Ba trong năm theo lịch Gregorius", và cũng thường được coi là "tháng thứ Ba của năm dương lịch". {{-syn-}} * [[tháng 3]] * [[tháng ba]] {{-trans-}} '''tháng thứ ba của lịch Gregorius''' {{đầu}} * {{ara}}: [[مارس|مَارِس]] (''máːris'') {{m}}, [[اذار|آذَارٌ]] (''’āðar'') {{m}} * {{afr}}: [[maart]] * {{akz}}: [[hasiholtina istatótchìina]], [[Màchka]] * {{sqi}}: [[mars]] * {{eng}}: [[March]] * {{ang}}: [[hreþmonaþ|hreþmōnaþ]] {{m}} * {{arg}}: [[marzo]] {{m}} * {{ast}}: [[marzu]] {{m}} * {{pol}}: [[marzec]] {{m}} * {{isl}}: [[mars]] * {{eus}}: [[martxo]] * {{bel}}: [[сакавік]] (''sakavik'') * {{por}}: [[março]] {{m}} * {{ina}}: [[martio]] * {{bos}}: [[mart#Tiếng Bosni|mart]] {{m}} * {{bre}}: [[Meurzh]], miz Meurzh * {{bul}}: [[март#Tiếng Bulgari|март]] (''mart'') {{m}} * {{cat-old}}: [[març]] {{m}} * {{chr}}: [[ᎤᏄᎳᎯ]] (''unulahi'') * {{chv}}: [[пуш]] (''puš'') * {{cor}}: [[mys merth]] * {{hrv}}: [[ožujak]] * {{dan}}: [[marts]] * {{heb}}: [[מרס]] (''mars''), [[מרץ]] (''merts''; không chính thức) * {{deu}}: [[März]] {{m}}, [[Lenzing]] {{m}} * {{est}}: [[märts]] * {{fur}}: [[març]] {{m}} * {{fry}}: [[mars]] * {{kat}}: [[მარტი]] (''marti'') * {{nld}}: [[maart]] * {{kor}}: [[삼월]] ([[三月]], [[tam]] [[nguyệt]], ''samweol'') * {{hin}}: [[मार्च]] (''mārch'') * {{hun}}: [[március]] * {{ell}}: [[Μάρτιος]] {{IPA|[ˈmar.ti.o̞s]}} {{m}}, [[Μάρτης]] {{IPA|[ˈmar.tis]}} {{m}} * {{ido}}: [[marto]] * {{ilo}}: [[marso]] * {{ind}}: [[maret]] * {{ile}}: [[marte]] * {{gle}}: [[Márta]] * {{jav}}: [[maret]] * {{kan}}: [[ಮಾರ್ಚಿ]] (''maarci'') * {{lat}}: [[Martius]] {{m}} * {{lav}}: [[marts]] * {{lim}}: [[miert]] {{giữa}} * {{lit}}: [[kovas]] {{m}} * {{ltz}}: [[Mäerz]] * {{msa}}: [[Mac]], [[مچ]] * {{mnc}}: ''[[ilan biya]]'' * {{mri}}: [[mäehe]] * {{mar}}: [[मार्च]] (''mārch'') * {{nor}}: [[mars]] * {{nap}}: [[màrzo]] {{m}} * {{rus}}: [[март]] (''mart'') {{m}} * {{jpn}}: [[三月]] (さんがつ, [[tam]] [[nguyệt]], ''sángatsu'') * {{nov}}: [[marte]] * {{oci}}: [[març]] {{m}} * {{oji}}: [[onaabani-giizis]] * {{fin}}: [[maaliskuu]] * {{fra}}: [[mars]] {{m}} * {{epo}}: [[marto]] * {{ron}}: [[martie]] * {{sme}}: [[njukčamánnu]] * {{srd}}: [[martzu]] {{m}} * {{sco}}: [[mairch]] * {{ces}}: [[březen]] {{m}} * {{srp}}: ** {{Cyrl}}: [[март#Tiếng Serbi|март]] {{m}} ** {{Latn}}: [[mart#Tiếng Serbi|mart]] {{m}} * {{scn}}: [[marzu]] {{m}} * {{slk}}: [[marec]] {{m}} * {{slv}}: márec {{m}} * {{sun}}: [[maret]] * {{tgl}}: [[Marso]] * {{tam}}: [[மார்ச்]] (''maarc'') * {{tat}}: [[mart#Tatar|mart]] * {{spa}}: [[marzo]] {{m}} * {{tel}}: [[మార్చి]] (''maarchi'') * {{tha}}: [[มีนาคม]] (''mee naa khohm'') * {{tur}}: [[mart#Tiếng Thổi Nhĩ Kỳ|mart]] * {{swe}}: [[mars]] * {{tpi}}: [[mac#Tiếng Tok Pisin|mac]] * {{zho}}: [[三月]] ([[tam]] [[nguyệt]], ''sānyuè'') * {{ukr}}: [[березень]] (''berezen’'') {{m}} * {{vol}}: [[mäzul]] * {{cym}}: [[Mawrth]] {{m}} * {{wol}}: [[måss]] * {{ita}}: [[marzo]] {{m}} {{cuối}} {{Tháng trong năm |[[tháng Một]] |[[tháng Hai]] |[[tháng Ba]] |[[tháng Tư]] |[[tháng Năm]] |[[tháng Sáu]] |[[tháng Bảy]] |[[tháng Tám]] |[[tháng Chín]] |[[tháng Mười]] |[[tháng Mười một]] |[[tháng Mười hai]] }} {{C|vi|Tháng}} mo63x052ubgyaqufcw08gte6tfy6qnd Bản mẫu:ca 10 107769 2350800 216547 2026-05-07T08:07:12Z Kateru Zakuro 34522 Thay đổi trang đích của đổi hướng từ [[Bản mẫu:cat]] sang [[Bản mẫu:cat-2]] 2350800 wikitext text/x-wiki #redirect [[Tiêu bản:cat-2]] jn72vdlfzohlcd9z4oefrl2cs37zr2w 2350871 2350800 2026-05-07T10:32:20Z Kateru Zakuro 34522 Thay đổi trang đích của đổi hướng từ [[Bản mẫu:cat-2]] sang [[Bản mẫu:cat-old]] 2350871 wikitext text/x-wiki #redirect [[Tiêu bản:cat-old]] 300shnxpf3dhzbzjiqzzlwiky8759yh tiếng Albani 0 107845 2350688 2083640 2026-05-07T07:56:06Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350688 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|an|ban|ni}} {{-etymology-}} Từ "[[tiếng]]" và "[[Albani]]". {{-pr-noun-}} '''tiếng Albani''' ([[ISO]] 639-1: sq; ISO 639-2: sqi; [[SIL]]: ALB) #[[ngôn ngữ|Ngôn ngữ]] chính ở [[An-ba-ni]]. {{-syn-}} *[[tiếng An-ba-ni]] {{-trans-}} {{đầu}} * {{ara}}: [[البانية]] * {{afr}}: [[Albanees]], [[Albanies]] * {{sqi}}: [[Shqiptar]] * {{eng}}: [[Albanian]] * {{hye}}: [[Ալբանական]] * {{aze}}: [[Албан]] * {{pol}}: [[Albański]] * {{fas}}: [[البانى]] * {{isl}}: [[Albanska]] * {{eus}}: [[Albaniera]] * {{bel}}: [[Альбанскай]], [[Альбанская]] * {{por}}: [[albanés]] * {{ina}}: [[albanese]] * {{bre}}: [[Albaneg]] * {{bul}}: [[Албански]] * {{cat-2}}: [[albanès]] * {{hrv}}: [[Albanski]] * {{dan}}: [[Albansk]] * {{heb}}: [[אלבנית]] * {{deu}}: [[Albanisch]] * {{est}}: [[albaania keel]], [[albaania]] * {{fao}}: [[Albanskt]] * {{fry}}: [[Albaneesk]] * {{nld}}: [[Albanees]] * {{kor}}: [[알바니아어]] * {{hun}}: [[albán]] * {{ell}}: [[Αλβανικά]] * {{ind}}: [[Albania]] * {{gle}}: [[Albanés]] * {{gle}}: [[Albáinis]] * {{kur}}: [[Elbanî]] {{giữa}} * {{lav}}: [[Albāņu]] * {{lit}}: [[Albanų]], [[Albaniškai]] * {{msa}}: [[bahasa Albania]] * {{mlt}}: [[Albaniż]] * {{mdf}}: [[Албанонь]] * {{mon}}: [[Албани]] * {{nor}}: [[Albansk]] * {{nep}}: [[अल्बेनियन]] * {{rus}}: [[Албанский]] * {{jpn}}: [[アルバニア語]] * {{oci}}: [[Albanès]] * {{fin}}: [[albania]] * {{fra}}: [[albanais]] * {{ron}}: [[Albaneză]] * {{ces}}: [[Albánský]] * {{srp}}: [[Албански]] * {{slk}}: [[Albánsky]] * {{slv}}: [[Albanščina]] * {{wen}}: [[Albanšćina]], [[Albańšćina]] * {{swa}}: [[Kialbania]] * {{tgl}}: [[Albano]] * {{spa}}: [[Albanés]] * {{tha}}: [[ภาษาอัลบาเนียน]], [[ภาษาแอลเบเนีย]] * {{tur}}: [[Arnavutça]] * {{swe}}: [[Albanska]] * {{zho}}: [[阿尔巴尼亚语]] ([[a|A]] [[nhĩ|Nhĩ]] [[ba|Ba]] [[ni|Ni]] [[á|Á]] [[ngữ]], ''aĕrbaníyà yŭ'') * {{ukr}}: [[Албанський]] * {{urd}}: [[الباني]] * {{cym}}: [[Albanaidd]] * {{wln}}: [[Albanyin]], [[Albanès]] * {{ita}}: [[Albanese]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Albani]] d7lsdz8a5x9xxbd20u0yv5bz9lmupdc 2350946 2350688 2026-05-07T10:41:48Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350946 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|an|ban|ni}} {{-etymology-}} Từ "[[tiếng]]" và "[[Albani]]". {{-pr-noun-}} '''tiếng Albani''' ([[ISO]] 639-1: sq; ISO 639-2: sqi; [[SIL]]: ALB) #[[ngôn ngữ|Ngôn ngữ]] chính ở [[An-ba-ni]]. {{-syn-}} *[[tiếng An-ba-ni]] {{-trans-}} {{đầu}} * {{ara}}: [[البانية]] * {{afr}}: [[Albanees]], [[Albanies]] * {{sqi}}: [[Shqiptar]] * {{eng}}: [[Albanian]] * {{hye}}: [[Ալբանական]] * {{aze}}: [[Албан]] * {{pol}}: [[Albański]] * {{fas}}: [[البانى]] * {{isl}}: [[Albanska]] * {{eus}}: [[Albaniera]] * {{bel}}: [[Альбанскай]], [[Альбанская]] * {{por}}: [[albanés]] * {{ina}}: [[albanese]] * {{bre}}: [[Albaneg]] * {{bul}}: [[Албански]] * {{cat-old}}: [[albanès]] * {{hrv}}: [[Albanski]] * {{dan}}: [[Albansk]] * {{heb}}: [[אלבנית]] * {{deu}}: [[Albanisch]] * {{est}}: [[albaania keel]], [[albaania]] * {{fao}}: [[Albanskt]] * {{fry}}: [[Albaneesk]] * {{nld}}: [[Albanees]] * {{kor}}: [[알바니아어]] * {{hun}}: [[albán]] * {{ell}}: [[Αλβανικά]] * {{ind}}: [[Albania]] * {{gle}}: [[Albanés]] * {{gle}}: [[Albáinis]] * {{kur}}: [[Elbanî]] {{giữa}} * {{lav}}: [[Albāņu]] * {{lit}}: [[Albanų]], [[Albaniškai]] * {{msa}}: [[bahasa Albania]] * {{mlt}}: [[Albaniż]] * {{mdf}}: [[Албанонь]] * {{mon}}: [[Албани]] * {{nor}}: [[Albansk]] * {{nep}}: [[अल्बेनियन]] * {{rus}}: [[Албанский]] * {{jpn}}: [[アルバニア語]] * {{oci}}: [[Albanès]] * {{fin}}: [[albania]] * {{fra}}: [[albanais]] * {{ron}}: [[Albaneză]] * {{ces}}: [[Albánský]] * {{srp}}: [[Албански]] * {{slk}}: [[Albánsky]] * {{slv}}: [[Albanščina]] * {{wen}}: [[Albanšćina]], [[Albańšćina]] * {{swa}}: [[Kialbania]] * {{tgl}}: [[Albano]] * {{spa}}: [[Albanés]] * {{tha}}: [[ภาษาอัลบาเนียน]], [[ภาษาแอลเบเนีย]] * {{tur}}: [[Arnavutça]] * {{swe}}: [[Albanska]] * {{zho}}: [[阿尔巴尼亚语]] ([[a|A]] [[nhĩ|Nhĩ]] [[ba|Ba]] [[ni|Ni]] [[á|Á]] [[ngữ]], ''aĕrbaníyà yŭ'') * {{ukr}}: [[Албанський]] * {{urd}}: [[الباني]] * {{cym}}: [[Albanaidd]] * {{wln}}: [[Albanyin]], [[Albanès]] * {{ita}}: [[Albanese]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Albani]] 9xghm5pjqws1lvgo0w88nkloq1xop26 me 0 129870 2350689 2343408 2026-05-07T07:56:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350689 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|me}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:mère]] }} {{-nôm-}} {{đầu}} *[[咩]]: [[me]], [[mã]] *[[楣]]: [[me]], [[mi]], [[mè]] *[[湄]]: [[me]], [[mi]], [[mưa]] {{giữa}} *[[迷]]: [[mài]], [[muồi]], [[mê]], [[mơ]], [[me]], [[mế]] *[[𤚤]]: [[me]] {{cuối}} {{-paro-}} {{đầu}} :* [[mễ]] :* [[mê]] :* [[mé]] :* [[mẻ]] :* [[mè]] :* [[mệ]] {{giữa}} :* [[mề]] :* [[mẹ]] :* [[mẽ]] :* [[Mè]] :* [[mế]] {{cuối}} {{-noun-}} '''me''' # {{@|cũ|phương ngữ}} [[mẹ|Mẹ]] theo [[phương ngữ]] [[Hà Nội]] thời Pháp thuộc. # [[người|Người]] [[đàn bà]] [[Việt Nam]] vì [[tiền]] [[mà]] [[lấy]] [[người]] [[phương Tây]] trước đây. #: '''''Me''' Tây.'' #: '''''Me''' Mĩ.'' # Đọc lái từ ''[[madame]]'' và ''[[mademoiselle]]'', chỉ người [[đàn bà]] chuộng lối sống Tây phương. [[File:Cây me Tây Sơn.jpg|nhỏ|200px|phải|Cây me cổ thụ trong vườn nhà Tây Sơn Tam Kiệt ở [[Bình Định]]]] [[Hình:Tamarind2.jpg|nhỏ|200px|phải|Quả me]] # [[cây|Cây]] có [[khắp cả]] [[nước]] và [[trồng]] [[lấy]] [[bóng mát]], [[cao]] 15-30m, [[cuống]] [[mang]] 10-20 đôi [[lá]] nhỏ, [[hoa]] [[mọc]] thành [[chùm]] đơn, [[quả]] [[gần]] [[hình trụ]], [[gân]] [[thẳng]], [[hơi]] [[dẹt]], [[vỏ]] [[màu]] [[gỉ]] [[sắt]], [[thịt]] có [[vị]] [[chua]], ăn được. # [[quả|Quả]] me. #: '''''Me''' nấu canh chua.'' #: ''Mứt '''me'''.'' # [[bê|Bê]], con [[bò]] nhỏ. #: ''Nhà nuôi một con bò và hai con '''me'''.'' #: ''Thịt '''me'''.'' {{-trans-}} ; cây cho quả chua {{đầu}} * {{ara}}: [[تمر هندي]] * {{eng}}: [[tamarind]] * {{pol}}: [[tamaryndowiec indyjski]] * {{por}}: [[tamarindus]] * {{cat-2}}: [[tamarinde]] * {{deu}}: [[tamarindenbaum]] * {{nld}}: [[tamarinde]] * {{ilo}}: [[salamagi]] {{giữa}} * {{jpn}}: [[タマリンド]] * {{fin}}: [[tamarindi]] * {{fra}}: [[tamarinier]] * {{spa}}: [[tamarindo]] {{m}} * {{tha}}: [[มะขาม]] * {{zho}}: [[酸豆]] (''suāndòu'', toan đậu) * {{ita}}: [[tamarindus indica]] {{cuối}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{-sqi-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛ/}} {{-prep-}} '''me''' {{term|dùng trước đổi cách}} # [[với|Với]], [[cùng]], [[cùng với]]. #: ''Shkoj '''me''' tim vëlla.'' — Tôi sẽ đi với em của tôi. # [[có|Có]]. #: ''E sheh djalin '''me''' sy të kaltër?'' — Em có thấy ông mà có mắt màu xanh không? # [[bằng|Bằng]], [[dùng]]. #: ''Preferoj të shkruaj '''më''' penë.'' — Tôi thích viết bằng bút. {{-eng-}} {{rank-eng|their|one|so|40|me|an|we|who}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈmiː/}} {{term|Anh}}, {{IPA|/ˈmi/}} {{term|Mỹ}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-me.ogg |pron=ˈmi}} {{-homo-}} * [[mee]] {{term|cổ}} * [[mi]] {{-etymology-}} {{etym|lang=eng|from= * [[enm:]] ** [[ang:me|mē]] = cho tôi *** [[gem-proto:*miz]] **** [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[#Tiếng Hà Lan|me]]'', ''[[mij]]'', {{deu|style=plain}} ''[[mir]]'', {{isl|style=plain}} ''[[mér]]'', {{lat|style=plain}} ''[[#Tiếng Latinh|mē]]'', {{grc|style=plain}} ''[[μέ]]'' (''me''), ''[[ἐμέ]]'' (''emé''), {{san|style=plain}} ''mā'', ''mām''. {{-pronoun-}} '''me''' # [[tôi|Tôi]], [[tao]], [[tớ]]. # {{@|cũ}} [[tự|Tự]] [[tôi]]. # {{@|Mỹ||thông tục}} [[chính|Chính]] [[tôi]]. # {{@|Úc|Anh}} [[của|Của]] [[tôi]]. {{-syn-}} ; tự tôi * [[myself]] ; chính tôi * [[us]] {{term|Úc, Anh}} ; của tôi * [[my]] * [[mine]] {{term|cổ}} {{-ref-}} {{R:FVDP}} {{-ang-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/meː/}} {{-etymology-}} {{etym|lang=ang|from= * [[gem-proto:*miz]] ** [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[mij]]'', {{goh|style=plain}} ''[[mih]]'' ({{deu|style=plain}} ''[[mich]]''), {{non|style=plain}} ''[[mik]]''. Gốc tiếng Ấn-Âu nguyên thủy cũng là nguồn gốc của {{lat|style=plain}} ''[[#Tiếng Latinh|me]], {{ell|style=plain}} ''[[με]]'', {{sga|style=plain}} ''[[mé]]'' ({{gle|style=plain}} ''[[mí]]'', {{cym|style=plain}} ''[[mi]]''), {{rus|style=plain}} ''[[меня]]'', {{lit|style=plain}} ''[[mi]]'', {{sqi|style=plain}} ''[[mua]]''. {{-per-pronoun-}} '''mē''' # {{form of|ang|dạng đối cách hoặc vị cách số ít của|ic|iċ}} {{-isl-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛː/}} {{-noun-}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). {{-por-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mi/}} {{-etymology-}} {{etym|lang=por|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' ({{plur}} [[nos]], ''chủ cách'' [[eu]], ''vị cách'' [[mim]], ''cách kèm'' [[comigo]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. =={{langname|kta}}== ==={{ĐM|noun}}=== {{head|kta|Danh từ}} # [[mưa]]. ==={{ĐM|ref}}=== * Smith, Kenneth D. (1970) ''Vietnam word list (revised): Kơtua''. SIL International. {{-cat-}} {{-pronoun-}} '''me''' ''từ ghép sau'' (''rút gọn'' [['m]], ''ghép trước'' [[em]], ''ghép trước rút gọn'' [[m']]) # [[tôi|Tôi]], [[tao]], [[tớ]]. =={{langname|crw}}== ==={{ĐM|adj}}=== {{head|crw|Tính từ}} # [[mới]]. ==={{ĐM|ref}}=== * Thomas, David. (1970) ''Vietnam word list (revised): Chrau Jro''. SIL International. =={{langname|ycr}}== ==={{ĐM|etym}}=== {{der+|ycr|ja|目|tr=me}}. ==={{ĐM|noun}}=== {{head|ycr|Danh từ}} # {{label|ycr|Áo Hoa}} [[mắt]]. ==={{ĐM|ref}}=== * {{R:ycr:Lin 2022}} =={{langname|et}}== {{-pronoun-}} '''me''' ''thuộc cách'' (''cách bộ phận'' [[meid]]) # {{see-entry|meie}} {{-glg-}} {{-etymology-}} {{etym|lang=glg|from= * [[lat:mihi]] ** [[ego]] * [[lat:me|mē]] ** [[ego]] }} {{-pronoun-}} '''me''' ''đối cách'' và ''vị cách'' (''chủ cách'' [[eu]], ''gián tiếp'' [[min]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. {{-related-}} * [[comigo]] * [[eu]] * [[meu]] * [[min]] {{-jra-}} {{-pronoun-}} {{head|jra|Đại từ}} # [[mày]] (dùng trong trường hợp khi người đối thoại với mình là con gái, có vị thế hoặc tuổi thấp hơn hoặc ngang hàng với mình). {{-ref-}} * Hồ Trần Ngọc Oanh (2012) ''Hệ thống đại từ nhân xưng tiếng Jrai (đối chiếu với đại từ nhân xưng tiếng Việt)''. Tạp chí Khoa học Xã hội, Nhân văn và Giáo dục. {{-grn-}} {{-noun-}} '''me''' # [[con trai|Con trai]], [[đàn ông]]. # [[người|Người]] [[chồng]]. {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mə/}} {{-per-pronoun-}} {{nld-pronoun-form}} # {{form of|nl|dạng nghiệp cách âm câm ở ngôi thứ nhất|mij}} {{-ido-}} {{-per-pronoun-}} '''me''' # [[tôi|Tôi]], [[tao]], [[tớ]]. {{-kpm-}} {{-noun-}} {{head|kpm|Danh từ}} # [[mẹ]]. {{-ref-}} * Lý Toàn Thắng, Tạ Văn Thông, K'Brêu, K'Bròh (1985) ''Ngữ pháp tiếng Kơ Ho''. Sở Văn hóa và Thông tin Lâm Đồng. {{-kur-}} {{-pronoun-}} '''me''' # [[chúng tôi|Chúng tôi]]. {{-lat-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/meː/}} {{term|cổ}} {{pron-audio |place=La Mã cổ (nam giới) |file=la-cls-me.ogg |pron=meː}} {{-etymology-}} {{etym|lang=lat|from= * [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{grc|style=plain}} ''[[με]]'' (''me''), ''[[εμέ]]'' (''emé''), {{san|style=plain}} ''mā'', ''mām''. {{-per-pronoun-}} '''mē''' # {{form of|la|đối cách số ít của|ego}} # {{form of|la|tòng cách số ít của|ego}} {{-drv-}} * [[mecum|mēcum]] {{-jbo-}} {{-cmavo-}} '''me''' # Chuyển đổi ''[[sumti]]'' thành ''[[selbri]]''; x<sub>1</sub> đặc trưng cho ''sumti'' dẫn sau trong thể x<sub>2</sub>. {{-related-}} * [[me'u]] =={{langname|mng}}== ==={{ĐM|pronoun}}=== {{head|mng|Đại từ}} # {{label|mng|Rơlơm}} [[bạn]] (với nam giới). ==={{ĐM|ref}}=== * Blood, Evangeline; Blood, Henry (1972) ''Vietnam word list (revised): Mnong Rolom''. SIL International. =={{langname|cmo}}== ==={{ĐM|noun}}=== {{head|cmo|Danh từ}} # [[mẹ]]. {{-nno-}} {{-etymology-}} {{etym-probably-from | lang = non | term = mit | meaning = hai chúng ta }} {{-pronoun-}} '''me''' # [[chúng tôi|Chúng tôi]], [[chúng ta]], [[chúng mình]]. #: ''Kva skal '''me''' gjera?'' — Chúng ta hãy làm gì? {{-syn-}} * [[vi]] {{-ref-}} * {{Chú thích web|title=me|work=Từ điển Nynorsk – Dokumentasjonsprosjektet|url=http://www.dokpro.uio.no/perl/ordboksoek/ordbok.cgi?OPP=me&nynorsk=S%F8k+i+Nynorskordboka&ordbok=begge&s=n&alfabet=o}} {{-fin-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/me/}} {{-etymology-}} {{etym|lang=fin|from= * [[urj-proto:*me]] }} Cùng nguồn gốc với {{hun|style=plain}} ''[[mi]]''. {{-per-pronoun-}} '''me''' {{plur}} (''thân từ'' [[mei-]]) # [[chúng tôi|Chúng tôi]]; [[chúng ta]]. {{-syn-}} * [[met]] {{term|địa phương}} * [[myö]] {{term|địa phương}} {{-related-}} * [[minä]] * [[sinä]] * [[hän]] * [[te]] * [[he]] {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mə/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-me.ogg |pron=mə}} {{-etymology-}} {{etym|lang=fra|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' # [[tôi|Tôi]]; [[với]] tôi, [[cho]] tôi. #: ''On '''m’'''appelle.'' — Người ta gọi tôi. #: '''''Me''' voici.'' — Tôi đây. #: ''Il veut '''me''' parler.'' — Nó muốn nói chuyện với tôi. #: ''Va '''me''' fermer cette porte.'' — Đóng hộ (cho) tôi cái cửa. {{-ref-}} {{R:FVDP}} {{-aav-tam-}} {{-etym-}} {{inh+|aav-tam|aav-pro|*meʔ}}. {{-noun-}} {{head|aav-tam|Danh từ}} # [[mẹ]]. {{-ref-}} * Phan Trần Công (2017). Tương ứng từ vựng và mối quan hệ giữa các ngôn ngữ trong nhóm Bahnar Nam. Tạp chí Phát triển Khoa học và Công nghệ: Chuyên san Khoa học xã hội và Nhân văn, tập 1, số 4, 2017. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/me/}} {{-etymology-}} {{etym|lang=spa|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' và ''vị cách'' ({{plur}} [[nos]], ''chủ cách'' [[yo]], ''ngữ giới từ'' [[mí]], ''cách kèm'' [[conmigo]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. {{-noun-}} {{spa-noun-reg}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). {{-syn-}} * [[be]] {{-tur-}} {{-noun-}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). # Chữ [[M]]. {{-ita-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛ/}} {{-etymology-}} {{etym|lang=ita|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' # [[tôi|Tôi]], [[tao]], [[tớ]]. {{-tyh-}} {{-noun-}} {{pn}} # [[mẹ]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Giới từ tiếng Albani]] [[Thể loại:Đại từ tiếng Anh]] [[Thể loại:Đại từ tiếng Anh cổ]] [[Thể loại:Danh từ tiếng Iceland]] [[Thể loại:Đại từ tiếng Bồ Đào Nha]] [[Thể loại:Đại từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Estonia]] [[Thể loại:Danh từ tiếng Guaraní]] [[Thể loại:Đại từ tiếng Hà Lan]] [[Thể loại:Đại từ tiếng Ido]] [[Thể loại:Đại từ tiếng Kurd]] [[Thể loại:Đại từ tiếng Latinh]] [[Thể loại:Đại từ tiếng Na Uy]] [[Thể loại:Đại từ tiếng Phần Lan]] [[Thể loại:Đại từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Thổ Nhĩ Kỳ]] [[Thể loại:Đại từ tiếng Ý]] [[Thể loại:Danh từ tiếng Ơ Đu]] sb1gulblwdxq8jq2axt5t5iqh1rjrvl 2350947 2350689 2026-05-07T10:41:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350947 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|me}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:mère]] }} {{-nôm-}} {{đầu}} *[[咩]]: [[me]], [[mã]] *[[楣]]: [[me]], [[mi]], [[mè]] *[[湄]]: [[me]], [[mi]], [[mưa]] {{giữa}} *[[迷]]: [[mài]], [[muồi]], [[mê]], [[mơ]], [[me]], [[mế]] *[[𤚤]]: [[me]] {{cuối}} {{-paro-}} {{đầu}} :* [[mễ]] :* [[mê]] :* [[mé]] :* [[mẻ]] :* [[mè]] :* [[mệ]] {{giữa}} :* [[mề]] :* [[mẹ]] :* [[mẽ]] :* [[Mè]] :* [[mế]] {{cuối}} {{-noun-}} '''me''' # {{@|cũ|phương ngữ}} [[mẹ|Mẹ]] theo [[phương ngữ]] [[Hà Nội]] thời Pháp thuộc. # [[người|Người]] [[đàn bà]] [[Việt Nam]] vì [[tiền]] [[mà]] [[lấy]] [[người]] [[phương Tây]] trước đây. #: '''''Me''' Tây.'' #: '''''Me''' Mĩ.'' # Đọc lái từ ''[[madame]]'' và ''[[mademoiselle]]'', chỉ người [[đàn bà]] chuộng lối sống Tây phương. [[File:Cây me Tây Sơn.jpg|nhỏ|200px|phải|Cây me cổ thụ trong vườn nhà Tây Sơn Tam Kiệt ở [[Bình Định]]]] [[Hình:Tamarind2.jpg|nhỏ|200px|phải|Quả me]] # [[cây|Cây]] có [[khắp cả]] [[nước]] và [[trồng]] [[lấy]] [[bóng mát]], [[cao]] 15-30m, [[cuống]] [[mang]] 10-20 đôi [[lá]] nhỏ, [[hoa]] [[mọc]] thành [[chùm]] đơn, [[quả]] [[gần]] [[hình trụ]], [[gân]] [[thẳng]], [[hơi]] [[dẹt]], [[vỏ]] [[màu]] [[gỉ]] [[sắt]], [[thịt]] có [[vị]] [[chua]], ăn được. # [[quả|Quả]] me. #: '''''Me''' nấu canh chua.'' #: ''Mứt '''me'''.'' # [[bê|Bê]], con [[bò]] nhỏ. #: ''Nhà nuôi một con bò và hai con '''me'''.'' #: ''Thịt '''me'''.'' {{-trans-}} ; cây cho quả chua {{đầu}} * {{ara}}: [[تمر هندي]] * {{eng}}: [[tamarind]] * {{pol}}: [[tamaryndowiec indyjski]] * {{por}}: [[tamarindus]] * {{cat-old}}: [[tamarinde]] * {{deu}}: [[tamarindenbaum]] * {{nld}}: [[tamarinde]] * {{ilo}}: [[salamagi]] {{giữa}} * {{jpn}}: [[タマリンド]] * {{fin}}: [[tamarindi]] * {{fra}}: [[tamarinier]] * {{spa}}: [[tamarindo]] {{m}} * {{tha}}: [[มะขาม]] * {{zho}}: [[酸豆]] (''suāndòu'', toan đậu) * {{ita}}: [[tamarindus indica]] {{cuối}} {{-ref-}} {{R:FVDP}} {{R:WinVNKey:Lê Sơn Thanh}} {{-sqi-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛ/}} {{-prep-}} '''me''' {{term|dùng trước đổi cách}} # [[với|Với]], [[cùng]], [[cùng với]]. #: ''Shkoj '''me''' tim vëlla.'' — Tôi sẽ đi với em của tôi. # [[có|Có]]. #: ''E sheh djalin '''me''' sy të kaltër?'' — Em có thấy ông mà có mắt màu xanh không? # [[bằng|Bằng]], [[dùng]]. #: ''Preferoj të shkruaj '''më''' penë.'' — Tôi thích viết bằng bút. {{-eng-}} {{rank-eng|their|one|so|40|me|an|we|who}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈmiː/}} {{term|Anh}}, {{IPA|/ˈmi/}} {{term|Mỹ}} {{pron-audio |place=Bắc California, Hoa Kỳ (nữ giới) |file=En-us-me.ogg |pron=ˈmi}} {{-homo-}} * [[mee]] {{term|cổ}} * [[mi]] {{-etymology-}} {{etym|lang=eng|from= * [[enm:]] ** [[ang:me|mē]] = cho tôi *** [[gem-proto:*miz]] **** [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[#Tiếng Hà Lan|me]]'', ''[[mij]]'', {{deu|style=plain}} ''[[mir]]'', {{isl|style=plain}} ''[[mér]]'', {{lat|style=plain}} ''[[#Tiếng Latinh|mē]]'', {{grc|style=plain}} ''[[μέ]]'' (''me''), ''[[ἐμέ]]'' (''emé''), {{san|style=plain}} ''mā'', ''mām''. {{-pronoun-}} '''me''' # [[tôi|Tôi]], [[tao]], [[tớ]]. # {{@|cũ}} [[tự|Tự]] [[tôi]]. # {{@|Mỹ||thông tục}} [[chính|Chính]] [[tôi]]. # {{@|Úc|Anh}} [[của|Của]] [[tôi]]. {{-syn-}} ; tự tôi * [[myself]] ; chính tôi * [[us]] {{term|Úc, Anh}} ; của tôi * [[my]] * [[mine]] {{term|cổ}} {{-ref-}} {{R:FVDP}} {{-ang-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/meː/}} {{-etymology-}} {{etym|lang=ang|from= * [[gem-proto:*miz]] ** [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{nld|style=plain}} ''[[mij]]'', {{goh|style=plain}} ''[[mih]]'' ({{deu|style=plain}} ''[[mich]]''), {{non|style=plain}} ''[[mik]]''. Gốc tiếng Ấn-Âu nguyên thủy cũng là nguồn gốc của {{lat|style=plain}} ''[[#Tiếng Latinh|me]], {{ell|style=plain}} ''[[με]]'', {{sga|style=plain}} ''[[mé]]'' ({{gle|style=plain}} ''[[mí]]'', {{cym|style=plain}} ''[[mi]]''), {{rus|style=plain}} ''[[меня]]'', {{lit|style=plain}} ''[[mi]]'', {{sqi|style=plain}} ''[[mua]]''. {{-per-pronoun-}} '''mē''' # {{form of|ang|dạng đối cách hoặc vị cách số ít của|ic|iċ}} {{-isl-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛː/}} {{-noun-}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). {{-por-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mi/}} {{-etymology-}} {{etym|lang=por|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' ({{plur}} [[nos]], ''chủ cách'' [[eu]], ''vị cách'' [[mim]], ''cách kèm'' [[comigo]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. =={{langname|kta}}== ==={{ĐM|noun}}=== {{head|kta|Danh từ}} # [[mưa]]. ==={{ĐM|ref}}=== * Smith, Kenneth D. (1970) ''Vietnam word list (revised): Kơtua''. SIL International. {{-cat-}} {{-pronoun-}} '''me''' ''từ ghép sau'' (''rút gọn'' [['m]], ''ghép trước'' [[em]], ''ghép trước rút gọn'' [[m']]) # [[tôi|Tôi]], [[tao]], [[tớ]]. =={{langname|crw}}== ==={{ĐM|adj}}=== {{head|crw|Tính từ}} # [[mới]]. ==={{ĐM|ref}}=== * Thomas, David. (1970) ''Vietnam word list (revised): Chrau Jro''. SIL International. =={{langname|ycr}}== ==={{ĐM|etym}}=== {{der+|ycr|ja|目|tr=me}}. ==={{ĐM|noun}}=== {{head|ycr|Danh từ}} # {{label|ycr|Áo Hoa}} [[mắt]]. ==={{ĐM|ref}}=== * {{R:ycr:Lin 2022}} =={{langname|et}}== {{-pronoun-}} '''me''' ''thuộc cách'' (''cách bộ phận'' [[meid]]) # {{see-entry|meie}} {{-glg-}} {{-etymology-}} {{etym|lang=glg|from= * [[lat:mihi]] ** [[ego]] * [[lat:me|mē]] ** [[ego]] }} {{-pronoun-}} '''me''' ''đối cách'' và ''vị cách'' (''chủ cách'' [[eu]], ''gián tiếp'' [[min]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. {{-related-}} * [[comigo]] * [[eu]] * [[meu]] * [[min]] {{-jra-}} {{-pronoun-}} {{head|jra|Đại từ}} # [[mày]] (dùng trong trường hợp khi người đối thoại với mình là con gái, có vị thế hoặc tuổi thấp hơn hoặc ngang hàng với mình). {{-ref-}} * Hồ Trần Ngọc Oanh (2012) ''Hệ thống đại từ nhân xưng tiếng Jrai (đối chiếu với đại từ nhân xưng tiếng Việt)''. Tạp chí Khoa học Xã hội, Nhân văn và Giáo dục. {{-grn-}} {{-noun-}} '''me''' # [[con trai|Con trai]], [[đàn ông]]. # [[người|Người]] [[chồng]]. {{-nld-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mə/}} {{-per-pronoun-}} {{nld-pronoun-form}} # {{form of|nl|dạng nghiệp cách âm câm ở ngôi thứ nhất|mij}} {{-ido-}} {{-per-pronoun-}} '''me''' # [[tôi|Tôi]], [[tao]], [[tớ]]. {{-kpm-}} {{-noun-}} {{head|kpm|Danh từ}} # [[mẹ]]. {{-ref-}} * Lý Toàn Thắng, Tạ Văn Thông, K'Brêu, K'Bròh (1985) ''Ngữ pháp tiếng Kơ Ho''. Sở Văn hóa và Thông tin Lâm Đồng. {{-kur-}} {{-pronoun-}} '''me''' # [[chúng tôi|Chúng tôi]]. {{-lat-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/meː/}} {{term|cổ}} {{pron-audio |place=La Mã cổ (nam giới) |file=la-cls-me.ogg |pron=meː}} {{-etymology-}} {{etym|lang=lat|from= * [[ine-proto:*(e)me-]] }} Cùng nguồn gốc với {{grc|style=plain}} ''[[με]]'' (''me''), ''[[εμέ]]'' (''emé''), {{san|style=plain}} ''mā'', ''mām''. {{-per-pronoun-}} '''mē''' # {{form of|la|đối cách số ít của|ego}} # {{form of|la|tòng cách số ít của|ego}} {{-drv-}} * [[mecum|mēcum]] {{-jbo-}} {{-cmavo-}} '''me''' # Chuyển đổi ''[[sumti]]'' thành ''[[selbri]]''; x<sub>1</sub> đặc trưng cho ''sumti'' dẫn sau trong thể x<sub>2</sub>. {{-related-}} * [[me'u]] =={{langname|mng}}== ==={{ĐM|pronoun}}=== {{head|mng|Đại từ}} # {{label|mng|Rơlơm}} [[bạn]] (với nam giới). ==={{ĐM|ref}}=== * Blood, Evangeline; Blood, Henry (1972) ''Vietnam word list (revised): Mnong Rolom''. SIL International. =={{langname|cmo}}== ==={{ĐM|noun}}=== {{head|cmo|Danh từ}} # [[mẹ]]. {{-nno-}} {{-etymology-}} {{etym-probably-from | lang = non | term = mit | meaning = hai chúng ta }} {{-pronoun-}} '''me''' # [[chúng tôi|Chúng tôi]], [[chúng ta]], [[chúng mình]]. #: ''Kva skal '''me''' gjera?'' — Chúng ta hãy làm gì? {{-syn-}} * [[vi]] {{-ref-}} * {{Chú thích web|title=me|work=Từ điển Nynorsk – Dokumentasjonsprosjektet|url=http://www.dokpro.uio.no/perl/ordboksoek/ordbok.cgi?OPP=me&nynorsk=S%F8k+i+Nynorskordboka&ordbok=begge&s=n&alfabet=o}} {{-fin-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/me/}} {{-etymology-}} {{etym|lang=fin|from= * [[urj-proto:*me]] }} Cùng nguồn gốc với {{hun|style=plain}} ''[[mi]]''. {{-per-pronoun-}} '''me''' {{plur}} (''thân từ'' [[mei-]]) # [[chúng tôi|Chúng tôi]]; [[chúng ta]]. {{-syn-}} * [[met]] {{term|địa phương}} * [[myö]] {{term|địa phương}} {{-related-}} * [[minä]] * [[sinä]] * [[hän]] * [[te]] * [[he]] {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mə/}} {{pron-audio |place=Paris, Pháp (nam giới) |file=Fr-me.ogg |pron=mə}} {{-etymology-}} {{etym|lang=fra|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' # [[tôi|Tôi]]; [[với]] tôi, [[cho]] tôi. #: ''On '''m’'''appelle.'' — Người ta gọi tôi. #: '''''Me''' voici.'' — Tôi đây. #: ''Il veut '''me''' parler.'' — Nó muốn nói chuyện với tôi. #: ''Va '''me''' fermer cette porte.'' — Đóng hộ (cho) tôi cái cửa. {{-ref-}} {{R:FVDP}} {{-aav-tam-}} {{-etym-}} {{inh+|aav-tam|aav-pro|*meʔ}}. {{-noun-}} {{head|aav-tam|Danh từ}} # [[mẹ]]. {{-ref-}} * Phan Trần Công (2017). Tương ứng từ vựng và mối quan hệ giữa các ngôn ngữ trong nhóm Bahnar Nam. Tạp chí Phát triển Khoa học và Công nghệ: Chuyên san Khoa học xã hội và Nhân văn, tập 1, số 4, 2017. {{-spa-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/me/}} {{-etymology-}} {{etym|lang=spa|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' và ''vị cách'' ({{plur}} [[nos]], ''chủ cách'' [[yo]], ''ngữ giới từ'' [[mí]], ''cách kèm'' [[conmigo]]) # [[tôi|Tôi]], [[tao]], [[tớ]]. # [[tự|Tự]] [[tôi]]. {{-noun-}} {{spa-noun-reg}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). {{-syn-}} * [[be]] {{-tur-}} {{-noun-}} '''me''' # [[tiếng|Tiếng]] [[be be]] ([[cừu]]). # Chữ [[M]]. {{-ita-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/mɛ/}} {{-etymology-}} {{etym|lang=ita|from= * [[lat:me|mē]] }} {{-per-pronoun-}} '''me''' ''nghiệp cách'' # [[tôi|Tôi]], [[tao]], [[tớ]]. {{-tyh-}} {{-noun-}} {{pn}} # [[mẹ]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Giới từ tiếng Albani]] [[Thể loại:Đại từ tiếng Anh]] [[Thể loại:Đại từ tiếng Anh cổ]] [[Thể loại:Danh từ tiếng Iceland]] [[Thể loại:Đại từ tiếng Bồ Đào Nha]] [[Thể loại:Đại từ tiếng Catalan]] [[Thể loại:Đại từ tiếng Estonia]] [[Thể loại:Danh từ tiếng Guaraní]] [[Thể loại:Đại từ tiếng Hà Lan]] [[Thể loại:Đại từ tiếng Ido]] [[Thể loại:Đại từ tiếng Kurd]] [[Thể loại:Đại từ tiếng Latinh]] [[Thể loại:Đại từ tiếng Na Uy]] [[Thể loại:Đại từ tiếng Phần Lan]] [[Thể loại:Đại từ tiếng Pháp]] [[Thể loại:Đại từ tiếng Tây Ban Nha]] [[Thể loại:Danh từ tiếng Thổ Nhĩ Kỳ]] [[Thể loại:Đại từ tiếng Ý]] [[Thể loại:Danh từ tiếng Ơ Đu]] kaebhuxhs1gtow2o2td1b3qlxr2xc00 hương thơm 0 142359 2350690 2068357 2026-05-07T07:56:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350690 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''hương thơm''' # [[mùi|Mùi]] [[ngát]] [[dễ chịu]] do [[hoa]] hoặc [[trầm]] gây nên. #: ''Đoá hoa toả ngát '''hương thơm'''.'' # {{term|Nghĩa bóng}} [[danh tiếng|Danh tiếng]] [[tốt]]. #: '''''Hương thơm''' để lại muôn đời.'' {{-trans-}} {{trans-top|Mùi ngát dễ chịu}} * {{eng}}: [[fragrance#Tiếng Anh|fragrance]], [[perfume]] * {{cat-2}}: [[perfum]] {{m}} * {{fra}}: [[fragrance#Tiếng Pháp|fragrance]] {{f}}, [[parfum]] {{m}} * {{fin}}: [[tuoksu]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] ep1z6x2mvn1l4t5diw2hdodoye6oa3w 2350948 2350690 2026-05-07T10:41:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350948 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''hương thơm''' # [[mùi|Mùi]] [[ngát]] [[dễ chịu]] do [[hoa]] hoặc [[trầm]] gây nên. #: ''Đoá hoa toả ngát '''hương thơm'''.'' # {{term|Nghĩa bóng}} [[danh tiếng|Danh tiếng]] [[tốt]]. #: '''''Hương thơm''' để lại muôn đời.'' {{-trans-}} {{trans-top|Mùi ngát dễ chịu}} * {{eng}}: [[fragrance#Tiếng Anh|fragrance]], [[perfume]] * {{cat-old}}: [[perfum]] {{m}} * {{fra}}: [[fragrance#Tiếng Pháp|fragrance]] {{f}}, [[parfum]] {{m}} * {{fin}}: [[tuoksu]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] iy7r76sda2dgjyt3osesmbllb96zasm trứng cá 0 142650 2350691 2099412 2026-05-07T07:56:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350691 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Salmon roe.jpg|nhỏ|Trứng [[cá hồi]]]] [[Hình:Cotton Candy berry (460087465).jpg|nhỏ|Cành và quả của cây trứng cá]] [[Hình:Akne-jugend.jpg|nhỏ|Mụn trứng cá]] {{-etym-}} # ''[[trứng|Trứng]]'' + ''[[cá]]''. # Do [[quả]] của loài [[cây]] này, [[bên trong]] có [[chứa]] nhiều [[hạt]] nhỏ màu [[vàng]], [[nhìn]] [[giống]] như ''trứng cá''. # Do các [[mụn]] này khi [[lấy]] ra [[hình]] giống như một ''trứng cá''.<ref>[https://123doc.net/document/2026070-tai-sao-goi-la-mun-trung-ca-pdf.htm Tại sao gọi là “Mụn trứng cá”].</ref> {{-pron-}} {{vie-pron}} {{-noun-}} '''trứng cá''' # [[trứng|Trứng]] của các loài [[cá]]. # Loài [[cây thân gỗ]] [[nhỏ]]; [[lá]] có [[mép]] [[khía]] [[răng cưa]]; [[hoa]] nhỏ màu [[trắng]]; [[quả]] khi [[chín]] có màu [[đỏ nhạt]], [[ăn]] được. # [[mụn|Mụn]] nhỏ [[lấm tấm]] thường [[mọc]] trên [[da]] [[mặt]] [[người]]. #: ''[...]. Tôi thấy chúng tôi thay đổi. Tiếng nói khác đi. Mặt hơi '''trứng cá'''. [...].'' ([[w:Nam Cao|Nam Cao]]) #: ''[...]. Những nốt '''trứng cá''' mọc dày trên hai má bì bì, [...].'' ([[w:Nguyễn Huy Tưởng|Nguyễn Huy Tưởng]]) {{-syn-}} * (''Cây thân gỗ'') [[mật sâm]] {{-anagram-}} * {{đảo chữ|vi|cá trứng}} {{-trans-}} {{trans-top|Trứng của các loài cá}} * {{eng}}: [[fish]] [[egg]](s); [[roe]] * {{pol}}: [[ikra]] {{f}} * {{hun}}: [[ikra]] * {{swe}}: [[rom]] * {{ita}}: [[uova di pesce]] {{trans-bottom}} {{trans-top|Mụn nhỏ}} * {{eng}}: [[acne]] * {{por}}: [[acne]] {{f}} * {{cat-2}}: [[acne]] {{f}} * {{nld}}: [[acne]] {{f}} ''hoặc'' {{m}} * {{fra}}: [[acné]] {{f}} * {{spa}}: [[acné]] {{m}} * {{ita}}: [[acne]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] {{topics|vi|Trứng}} {{topics|vi|Cá}} {{topics|vi|Trái cây}} 73krpzba8yevv5cnxafcsbydygovu0s 2350949 2350691 2026-05-07T10:41:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350949 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Salmon roe.jpg|nhỏ|Trứng [[cá hồi]]]] [[Hình:Cotton Candy berry (460087465).jpg|nhỏ|Cành và quả của cây trứng cá]] [[Hình:Akne-jugend.jpg|nhỏ|Mụn trứng cá]] {{-etym-}} # ''[[trứng|Trứng]]'' + ''[[cá]]''. # Do [[quả]] của loài [[cây]] này, [[bên trong]] có [[chứa]] nhiều [[hạt]] nhỏ màu [[vàng]], [[nhìn]] [[giống]] như ''trứng cá''. # Do các [[mụn]] này khi [[lấy]] ra [[hình]] giống như một ''trứng cá''.<ref>[https://123doc.net/document/2026070-tai-sao-goi-la-mun-trung-ca-pdf.htm Tại sao gọi là “Mụn trứng cá”].</ref> {{-pron-}} {{vie-pron}} {{-noun-}} '''trứng cá''' # [[trứng|Trứng]] của các loài [[cá]]. # Loài [[cây thân gỗ]] [[nhỏ]]; [[lá]] có [[mép]] [[khía]] [[răng cưa]]; [[hoa]] nhỏ màu [[trắng]]; [[quả]] khi [[chín]] có màu [[đỏ nhạt]], [[ăn]] được. # [[mụn|Mụn]] nhỏ [[lấm tấm]] thường [[mọc]] trên [[da]] [[mặt]] [[người]]. #: ''[...]. Tôi thấy chúng tôi thay đổi. Tiếng nói khác đi. Mặt hơi '''trứng cá'''. [...].'' ([[w:Nam Cao|Nam Cao]]) #: ''[...]. Những nốt '''trứng cá''' mọc dày trên hai má bì bì, [...].'' ([[w:Nguyễn Huy Tưởng|Nguyễn Huy Tưởng]]) {{-syn-}} * (''Cây thân gỗ'') [[mật sâm]] {{-anagram-}} * {{đảo chữ|vi|cá trứng}} {{-trans-}} {{trans-top|Trứng của các loài cá}} * {{eng}}: [[fish]] [[egg]](s); [[roe]] * {{pol}}: [[ikra]] {{f}} * {{hun}}: [[ikra]] * {{swe}}: [[rom]] * {{ita}}: [[uova di pesce]] {{trans-bottom}} {{trans-top|Mụn nhỏ}} * {{eng}}: [[acne]] * {{por}}: [[acne]] {{f}} * {{cat-old}}: [[acne]] {{f}} * {{nld}}: [[acne]] {{f}} ''hoặc'' {{m}} * {{fra}}: [[acné]] {{f}} * {{spa}}: [[acné]] {{m}} * {{ita}}: [[acne]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] {{topics|vi|Trứng}} {{topics|vi|Cá}} {{topics|vi|Trái cây}} q27gd2pyzdydp8hx022lnf4onkms93m thực đơn 0 142885 2350692 2281348 2026-05-07T07:56:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350692 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|thực|đơn}} {{-noun-}} '''thực đơn''' # [[bản kê|Bản kê]] các [[món ăn]] có thể [[gọi]] trong một [[bữa cơm]] ở [[tiệm ăn]]. # [[bản kê|Bản kê]] các [[món ăn]] trong một [[bữa tiệc]]. {{-trans-}} {{trans-top|bản kê các món ăn có thể gọi}} * {{ara}}: [[قَائِمَة]] {{f}} * {{hye}}: [[ճաշացուցակ]] * {{aze}}: [[menyu]] * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[صورت‌غذا]] (''surat-ğazâ'') * {{isl}}: [[matseðill]] {{g|m}} * {{bel}}: [[меню́]] {{n}} * {{por}}: [[cardápio]], [[menu]], [[ementa]] {{f}} * {{bul}}: [[меню́]] {{n}} * {{cat-2}}: [[menú]] {{g|m}} * {{dan}}: [[menu]] * {{deu}}: [[Speisekarte]] {{f}} * {{est}}: [[menüü]] * {{gla}}: [[cairt-bidhe]] {{f}} * {{kat}}: [[მენიუ]] * {{hin}}: [[मेनू]] (''menū'') * {{hun}}: [[menü]], [[étlap]] * {{ell}}: [[μενού]] {{n}}, [[κατάλογος]] {{g|m}}, [[εδεσματολόγιο]] {{n}} * {{gle}}: [[biachlár]] {{g|m}} * {{lao}}: [[ລາຍການອາຫານ]] * {{lav}}: [[ēdienkarte]] {{f}} * {{lit}}: [[meniu]] * {{mkd}}: [[мени́]] {{n}} * {{nor}}: [[meny]] {{g|m}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū''), [[お品書き]] (おしながき, ''oshinagaki''), [[献立]] (こんだて, ''kondate'') * {{fin}}: [[ruokalista]] * {{fra}}: [[carte]] {{f}}, [[menu]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[菜單]] (''càidān'', thái đơn), [[餐牌]] (''cānpái'', xan bài), [[菜譜]] (''càipǔ'', thái phổ) ** {{Hans}}: [[菜单]] (''càidān'', thái đơn), [[餐牌]] (''cānpái'', xan bài), [[菜谱]] (''càipǔ'', thái phổ) * {{yue}}: [[餐牌]] (''caan<sup>1</sup> paai<sup>4-2</sup>, xan bài) * {{ces}}: [[jídelní lístek]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[јеловник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[jelòvnīk]] {{g|m}} * {{slk}}: [[jedálny lístok]] {{g|m}} * {{slv}}: [[jedilni list]] {{g|m}}, [[jedilnik]] {{g|m}} * {{tgl}}: [[putahe]] * {{spa}}: [[menú]] {{g|m}}, [[carta]] {{f}} * {{tha}}: [[เมนู]] (''maynoo''), [[เมนูอาหาร]] (''maynoo aahăan'') * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]] * {{ukr}}: [[меню́]] {{n}} * {{cym}}: [[bwydlen]] {{trans-bottom}} {{trans-top|bản kê các món ăn trong một bữa tiệc}} * {{ara}}: [[قَائِمَة]] {{f}} * {{hye}}: [[ճաշացուցակ]], [[մենյու]] * {{aze}}: [[menyu]] * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[صورت‌غذا]] (''surat-ğazâ'') * {{bel}}: [[меню́]] {{n}} * {{por}}: [[cardápio]], [[menu]] * {{bul}}: [[меню́]] {{n}} * {{cat-2}}: [[menú]] {{g|m}} * {{dan}}: [[spisekort]] {{n}}, [[menu]] {{g|c}} * {{deu}}: [[Menü]] {{n}} * {{est}}: [[menüü]] * {{gla}}: [[cairt-bidhe]] {{f}}, [[clàr-bìdhe]] {{g|m}} * {{kat}}: [[მენიუ]] * {{nld}}: [[menukaart]] {{f}}, [[menu]] {{n}} * {{hin}}: [[मेनू]] (''menū'') * {{hun}}: [[menü]] * {{ell}}: [[εδεσματολόγιο]] {{n}}, [[κατάλογος]] {{g|m}} * {{gle}}: [[biachlár]] {{g|m}} * {{kaz}}: [[асмәрізі]] * {{khm}}: [[ម៉ឺនុយ]] (''məɨnuy''), [[បញ្ជីមុខម្ហូប]] (''bɑɲcii muk mhoop'') * {{lao}}: [[ເມນູ]] * {{lav}}: [[ēdienkarte]] {{f}} * {{lit}}: [[meniu]] * {{mkd}}: [[мени́]] {{n}} * {{mon}}: [[хоолны нэрс]] * {{nob}}: [[meny]] {{g|m}}, [[speisekart]] {{n}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū''), [[お品書き]] (おしながき, oshinagaki) * {{fin}}: [[menukortti]], [[menu]], [[ruokalista]] * {{fra}}: [[carte]] {{f}}, [[menu]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[菜单]] (''càidān'', thái đơn) ** {{Hant}}: [[菜單]] (''càidān'', thái đơn) * {{ron}}: [[meniu]] * {{ces}}: [[jídelní lístek]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[јеловник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[jelòvnīk]] {{g|m}} * {{slk}}: [[jedálny lístok]] {{g|m}} * {{slv}}: [[meni]] {{g|m}}, [[jedilnik]] {{g|m}} * {{spa}}: [[menú]] {{g|m}}, [[carta]] {{f}} * {{tha}}: [[เมนู]] (''maynoo''), [[เมนูอาหาร]] (''maynoo aahăan''), [[รายการอาหาร]] (''raai gaan aahăan'') * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]], [[차림표]] * {{ukr}}: [[меню́]] {{n}} * {{cym}}: [[bwydlen]] {{f}} * {{ita}}: [[carta]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 0y8v0ho6gmzh0wvcq6ss9bocfa2m9le 2350950 2350692 2026-05-07T10:42:00Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350950 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|thực|đơn}} {{-noun-}} '''thực đơn''' # [[bản kê|Bản kê]] các [[món ăn]] có thể [[gọi]] trong một [[bữa cơm]] ở [[tiệm ăn]]. # [[bản kê|Bản kê]] các [[món ăn]] trong một [[bữa tiệc]]. {{-trans-}} {{trans-top|bản kê các món ăn có thể gọi}} * {{ara}}: [[قَائِمَة]] {{f}} * {{hye}}: [[ճաշացուցակ]] * {{aze}}: [[menyu]] * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[صورت‌غذا]] (''surat-ğazâ'') * {{isl}}: [[matseðill]] {{g|m}} * {{bel}}: [[меню́]] {{n}} * {{por}}: [[cardápio]], [[menu]], [[ementa]] {{f}} * {{bul}}: [[меню́]] {{n}} * {{cat-old}}: [[menú]] {{g|m}} * {{dan}}: [[menu]] * {{deu}}: [[Speisekarte]] {{f}} * {{est}}: [[menüü]] * {{gla}}: [[cairt-bidhe]] {{f}} * {{kat}}: [[მენიუ]] * {{hin}}: [[मेनू]] (''menū'') * {{hun}}: [[menü]], [[étlap]] * {{ell}}: [[μενού]] {{n}}, [[κατάλογος]] {{g|m}}, [[εδεσματολόγιο]] {{n}} * {{gle}}: [[biachlár]] {{g|m}} * {{lao}}: [[ລາຍການອາຫານ]] * {{lav}}: [[ēdienkarte]] {{f}} * {{lit}}: [[meniu]] * {{mkd}}: [[мени́]] {{n}} * {{nor}}: [[meny]] {{g|m}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū''), [[お品書き]] (おしながき, ''oshinagaki''), [[献立]] (こんだて, ''kondate'') * {{fin}}: [[ruokalista]] * {{fra}}: [[carte]] {{f}}, [[menu]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[菜單]] (''càidān'', thái đơn), [[餐牌]] (''cānpái'', xan bài), [[菜譜]] (''càipǔ'', thái phổ) ** {{Hans}}: [[菜单]] (''càidān'', thái đơn), [[餐牌]] (''cānpái'', xan bài), [[菜谱]] (''càipǔ'', thái phổ) * {{yue}}: [[餐牌]] (''caan<sup>1</sup> paai<sup>4-2</sup>, xan bài) * {{ces}}: [[jídelní lístek]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[јеловник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[jelòvnīk]] {{g|m}} * {{slk}}: [[jedálny lístok]] {{g|m}} * {{slv}}: [[jedilni list]] {{g|m}}, [[jedilnik]] {{g|m}} * {{tgl}}: [[putahe]] * {{spa}}: [[menú]] {{g|m}}, [[carta]] {{f}} * {{tha}}: [[เมนู]] (''maynoo''), [[เมนูอาหาร]] (''maynoo aahăan'') * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]] * {{ukr}}: [[меню́]] {{n}} * {{cym}}: [[bwydlen]] {{trans-bottom}} {{trans-top|bản kê các món ăn trong một bữa tiệc}} * {{ara}}: [[قَائِمَة]] {{f}} * {{hye}}: [[ճաշացուցակ]], [[մենյու]] * {{aze}}: [[menyu]] * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[صورت‌غذا]] (''surat-ğazâ'') * {{bel}}: [[меню́]] {{n}} * {{por}}: [[cardápio]], [[menu]] * {{bul}}: [[меню́]] {{n}} * {{cat-old}}: [[menú]] {{g|m}} * {{dan}}: [[spisekort]] {{n}}, [[menu]] {{g|c}} * {{deu}}: [[Menü]] {{n}} * {{est}}: [[menüü]] * {{gla}}: [[cairt-bidhe]] {{f}}, [[clàr-bìdhe]] {{g|m}} * {{kat}}: [[მენიუ]] * {{nld}}: [[menukaart]] {{f}}, [[menu]] {{n}} * {{hin}}: [[मेनू]] (''menū'') * {{hun}}: [[menü]] * {{ell}}: [[εδεσματολόγιο]] {{n}}, [[κατάλογος]] {{g|m}} * {{gle}}: [[biachlár]] {{g|m}} * {{kaz}}: [[асмәрізі]] * {{khm}}: [[ម៉ឺនុយ]] (''məɨnuy''), [[បញ្ជីមុខម្ហូប]] (''bɑɲcii muk mhoop'') * {{lao}}: [[ເມນູ]] * {{lav}}: [[ēdienkarte]] {{f}} * {{lit}}: [[meniu]] * {{mkd}}: [[мени́]] {{n}} * {{mon}}: [[хоолны нэрс]] * {{nob}}: [[meny]] {{g|m}}, [[speisekart]] {{n}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū''), [[お品書き]] (おしながき, oshinagaki) * {{fin}}: [[menukortti]], [[menu]], [[ruokalista]] * {{fra}}: [[carte]] {{f}}, [[menu]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[菜单]] (''càidān'', thái đơn) ** {{Hant}}: [[菜單]] (''càidān'', thái đơn) * {{ron}}: [[meniu]] * {{ces}}: [[jídelní lístek]] {{g|m}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[јеловник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[jelòvnīk]] {{g|m}} * {{slk}}: [[jedálny lístok]] {{g|m}} * {{slv}}: [[meni]] {{g|m}}, [[jedilnik]] {{g|m}} * {{spa}}: [[menú]] {{g|m}}, [[carta]] {{f}} * {{tha}}: [[เมนู]] (''maynoo''), [[เมนูอาหาร]] (''maynoo aahăan''), [[รายการอาหาร]] (''raai gaan aahăan'') * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]], [[차림표]] * {{ukr}}: [[меню́]] {{n}} * {{cym}}: [[bwydlen]] {{f}} * {{ita}}: [[carta]] {{f}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] 2h2g998bifnbmvjf76abupwe7lqflv3 năm mươi 0 142980 2350812 2291245 2026-05-07T08:08:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350812 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia|50 (số)|năm mươi}} ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|numeral}}=== {{vie-numeral}} # [[năm|Năm]] [[lần]] [[mười]]. #: {{ux|vi|Thấm thoát đã '''năm mươi''' tuổi rồi.}} ===={{ĐM|trans}}==== {{trans-top|Năm mươi}} * {{af}}: {{t+|af|vyftig}} * {{sq}}: {{t+|sq|pesëdhjetë}} * {{hy}}: {{t+|hy|հիսուն}} * {{rup}}: {{t|rup|tsindzãts}}, {{t|rup|tsindzãtsi}}, {{t|rup|tsindzets}} * {{ast}}: {{t+|ast|cincuenta}} * {{az}}: {{t+|az|əlli}} * {{ba}}: {{t|ba|илле}} * {{bn}}: {{t+|bn|পঞ্চাশ}} * {{br}}: {{t+|br|hanter-kant}}, {{t|br|pemont}} * {{cat-2}}: {{t+|ca|cinquanta}} * {{ceb}}: {{t|ceb|kalim-an}} * {{langname|chk}}: {{t|chk|nime}} * {{et}}: {{t+|et|viiskümmend}} * {{nl}}: {{t+|nl|vijftig|f}} * {{kk}}: {{t+|kk|елу}} * {{km}}: {{t+|km|ហាសិប|tr=haː səp|sc=Khmr}}, {{qualifier|số đếm}} {{t|km|៥០}} * {{lo}}: {{t|lo|ຫ້າສິບ}} * {{my}}: {{t|my|ငါးဆယ်|sc=Mymr}} * {{ja}}: {{t+|ja|五十|tr=ごじゅう, gojū, いそ, iso, い, i|sc=Jpan}} * {{fr}}: {{t+|fr|cinquante}} * {{ko}}: {{t+|ko|오십(五十)}}, {{t+|ko|쉰}} * {{crh}}: {{t|crh|elli}} * {{langname|tyz}}: {{t|tyz|hả slíp}} * {{es}}: {{t+|es|cincuenta}} * {{te}}: {{t|te|యాభై}} * {{th}}: {{t+|th|ห้าสิบ}} * {{zh}}: *: {{langname|yue}}: {{t|yue|五十|tr=ng5 sap6}} *: {{langname|hak}}: {{t|hak|五十|tr=ńg-sṳ̍p}} *: {{cmn}}: {{t+|cmn|五十|tr=wǔshí}} *: {{langname|wuu}}: {{t|wuu|五十}} * {{uz}}: {{t+|uz|ellik}} * {{it}}: {{t+|it|cinquanta|f}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} nl6iefhrzzmpipgbi70fbb522s1clgr 2350951 2350812 2026-05-07T10:42:03Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350951 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia|50 (số)|năm mươi}} ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|numeral}}=== {{vie-numeral}} # [[năm|Năm]] [[lần]] [[mười]]. #: {{ux|vi|Thấm thoát đã '''năm mươi''' tuổi rồi.}} ===={{ĐM|trans}}==== {{trans-top|Năm mươi}} * {{af}}: {{t+|af|vyftig}} * {{sq}}: {{t+|sq|pesëdhjetë}} * {{hy}}: {{t+|hy|հիսուն}} * {{rup}}: {{t|rup|tsindzãts}}, {{t|rup|tsindzãtsi}}, {{t|rup|tsindzets}} * {{ast}}: {{t+|ast|cincuenta}} * {{az}}: {{t+|az|əlli}} * {{ba}}: {{t|ba|илле}} * {{bn}}: {{t+|bn|পঞ্চাশ}} * {{br}}: {{t+|br|hanter-kant}}, {{t|br|pemont}} * {{cat-old}}: {{t+|ca|cinquanta}} * {{ceb}}: {{t|ceb|kalim-an}} * {{langname|chk}}: {{t|chk|nime}} * {{et}}: {{t+|et|viiskümmend}} * {{nl}}: {{t+|nl|vijftig|f}} * {{kk}}: {{t+|kk|елу}} * {{km}}: {{t+|km|ហាសិប|tr=haː səp|sc=Khmr}}, {{qualifier|số đếm}} {{t|km|៥០}} * {{lo}}: {{t|lo|ຫ້າສິບ}} * {{my}}: {{t|my|ငါးဆယ်|sc=Mymr}} * {{ja}}: {{t+|ja|五十|tr=ごじゅう, gojū, いそ, iso, い, i|sc=Jpan}} * {{fr}}: {{t+|fr|cinquante}} * {{ko}}: {{t+|ko|오십(五十)}}, {{t+|ko|쉰}} * {{crh}}: {{t|crh|elli}} * {{langname|tyz}}: {{t|tyz|hả slíp}} * {{es}}: {{t+|es|cincuenta}} * {{te}}: {{t|te|యాభై}} * {{th}}: {{t+|th|ห้าสิบ}} * {{zh}}: *: {{langname|yue}}: {{t|yue|五十|tr=ng5 sap6}} *: {{langname|hak}}: {{t|hak|五十|tr=ńg-sṳ̍p}} *: {{cmn}}: {{t+|cmn|五十|tr=wǔshí}} *: {{langname|wuu}}: {{t|wuu|五十}} * {{uz}}: {{t+|uz|ellik}} * {{it}}: {{t+|it|cinquanta|f}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} 2j7phl9kcg9m6ip4tlwp9se7ixz56rg tổng giám mục 0 192641 2350693 2015783 2026-05-07T07:56:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350693 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tổng giám mục''' # [[chức sắc|Chức sắc]] trong [[Thiên chúa giáo]] [[trông nom]] nhiều [[địa phận]]. {{-trans-}} * {{eng}}: [[archbishop]] * {{cat-2}}: [[arquebisbe]] {{m}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] so861xax4kkt8wh3e8gjxga46wie4j3 2350952 2350693 2026-05-07T10:42:06Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350952 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tổng giám mục''' # [[chức sắc|Chức sắc]] trong [[Thiên chúa giáo]] [[trông nom]] nhiều [[địa phận]]. {{-trans-}} * {{eng}}: [[archbishop]] * {{cat-old}}: [[arquebisbe]] {{m}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] quy6ex0pdv4g0sh3vrbhzp3899pa97g lính dù 0 194430 2350813 2268965 2026-05-07T08:08:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350813 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:720th Special Tactics Group airmen jump 20071003.jpg|nhỏ|'''Lính dù'''.]] {{-etym-}} Từ {{etym-com|vi|lính|dù}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[binh chủng|Binh chủng]] được [[máy bay]] [[thả dù]] xuống để [[chiến đấu]]. #: {{ux|vi|Huấn luyện '''lính dù''' đặc nhiệm.}} {{-trans-}} {{trans-top|Binh chủng được máy bay thả dù xuống để chiến đấu}} * {{ar}}: {{t|ar|مِظَلِّيّ|m}} * {{sq}}: {{t+|sq|parashutist|m}} * {{en}}: {{t+|en|paratrooper}} * {{hy}}: {{t+|hy|պարաշյուտիստ}}, {{t+|hy|դեսանտավոր}} * {{az}}: {{t|az|paraşütçü}}, {{t|az|desantçı}} * {{pl}}: {{t+|pl|spadochroniarz|m}} * {{be}}: {{t|be|дэса́нтнік|m}}, {{t|be|парашуты́ст|m}} * {{pt}}: {{t+|pt|paraquedista|m|f}}, {{t|pt|paraquedista militar|m|f}} * {{bg}}: {{t+|bg|парашути́ст|m}} * {{cat-2}}: {{t|ca|paracaigudista|m|f}} * {{he}}: {{t|he|צַנְחָן|m|tr=tsanhan}} * {{da}}: {{t|da|faldskærmssoldat|c}}, {{t|da|faldskærmsjæger|c}} * {{de}}: {{t+|de|Fallschirmjäger|m}} * {{nl}}: {{t+|nl|parachutist|m}} * {{et}}: {{t|et|langevarjur}} * {{gl}}: {{t+|gl|paracaidista|m|f}}, {{t|gl|paracaidista militar|m|f}} * {{ka}}: {{t+|ka|პარაშუტისტი}}, {{t|ka|მედესანტე}} * {{hi}}: {{t|hi|पैराट्रूपर|m}}, {{t|hi|[[छतरी]] [[सैनिक]]|m}} * {{hu}}: {{t+|hu|ejtőernyős}} * {{el}}: {{t+|el|αλεξιπτωτίστρια|m|f}}, {{t+|el|αλεξιπτωτιστής|m}} * {{ru}}: {{t+|ru|деса́нтник|m}}, {{t|ru|[[парашюти́ст]]-[[деса́нтник]]|m}}, {{t+|ru|парашюти́ст|m}} * {{ja}}: {{t|ja|空挺兵|tr=くうていへい, kūteihei}} * {{kk}}: {{t|kk|десантшы}}, {{t|kk|парашютші}}, {{t|kk|парашютист}} * {{ky}}: {{t|ky|парашютист}} * {{lv}}: {{t|lv|desantnieks|m}} * {{lt}}: {{t|lt|parašiutininkas|m}}, {{t|lt|desantininkas|m}} * {{mk}}: {{t|mk|падо́бранец|m}} * {{mi}}: {{t|mi|hōia heketau}} * {{nor}}: *: {{nb}}: {{t|nb|fallskjermsoldat|m}} *: {{nn}}: {{t|nn|fallskjermsoldat|m}} * {{fr}}: {{t+|fr|para|m}}, {{t+|fr|parachutiste|m|f}}, {{t|fr|[[parachutiste]] [[militaire]]|m|f}} * {{fi}}: {{t+|fi|laskuvarjojääkäri}} * {{ro}}: {{t+|ro|parașutist|m}} * {{cs}}: {{t|cs|výsadkář|m}} * {{sh}}: *: {{Cyrl}}: {{t|sh|падобра́нац|m}} *: {{Latn}}: {{t+|sh|padobránac|m}} * {{sk}}: {{t|sk|výsadkár|m}} * {{sl}}: {{t+|sl|padalec|m}} * {{tgl}}: {{t|tl|parasyutista}} * {{es}}: {{t+|es|paracaidista|m|f}}, {{t|es|paracaidista militar|m|f}} * {{th}}: {{t|th|พลร่ม}} * {{tr}}: {{t|tr|paraşütçü asker}} * {{sv}}: {{t+|sv|fallskärmsjägare|c}} * {{ko}}: {{t|ko|공수부대(空輸部隊)}} * {{zh}}: *: {{cmn}}: {{t+|cmn|傘兵}}, {{t+|cmn|空降兵}} * {{uk}}: {{t|uk|деса́нтник|m}}, {{t|uk|парашути́ст|m}} * {{uz}}: {{t+|uz|desantchi}}, {{t+|uz|parashyutchi}} * {{it}}: {{t+|it|paracadutista|m|f}}, {{t|it|[[paracadutista]] [[militare]]|m|f}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Quân sự|Nghề nghiệp}} prt944suix4c7mfsaq59fr9f21degp0 2350953 2350813 2026-05-07T10:42:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350953 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:720th Special Tactics Group airmen jump 20071003.jpg|nhỏ|'''Lính dù'''.]] {{-etym-}} Từ {{etym-com|vi|lính|dù}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[binh chủng|Binh chủng]] được [[máy bay]] [[thả dù]] xuống để [[chiến đấu]]. #: {{ux|vi|Huấn luyện '''lính dù''' đặc nhiệm.}} {{-trans-}} {{trans-top|Binh chủng được máy bay thả dù xuống để chiến đấu}} * {{ar}}: {{t|ar|مِظَلِّيّ|m}} * {{sq}}: {{t+|sq|parashutist|m}} * {{en}}: {{t+|en|paratrooper}} * {{hy}}: {{t+|hy|պարաշյուտիստ}}, {{t+|hy|դեսանտավոր}} * {{az}}: {{t|az|paraşütçü}}, {{t|az|desantçı}} * {{pl}}: {{t+|pl|spadochroniarz|m}} * {{be}}: {{t|be|дэса́нтнік|m}}, {{t|be|парашуты́ст|m}} * {{pt}}: {{t+|pt|paraquedista|m|f}}, {{t|pt|paraquedista militar|m|f}} * {{bg}}: {{t+|bg|парашути́ст|m}} * {{cat-old}}: {{t|ca|paracaigudista|m|f}} * {{he}}: {{t|he|צַנְחָן|m|tr=tsanhan}} * {{da}}: {{t|da|faldskærmssoldat|c}}, {{t|da|faldskærmsjæger|c}} * {{de}}: {{t+|de|Fallschirmjäger|m}} * {{nl}}: {{t+|nl|parachutist|m}} * {{et}}: {{t|et|langevarjur}} * {{gl}}: {{t+|gl|paracaidista|m|f}}, {{t|gl|paracaidista militar|m|f}} * {{ka}}: {{t+|ka|პარაშუტისტი}}, {{t|ka|მედესანტე}} * {{hi}}: {{t|hi|पैराट्रूपर|m}}, {{t|hi|[[छतरी]] [[सैनिक]]|m}} * {{hu}}: {{t+|hu|ejtőernyős}} * {{el}}: {{t+|el|αλεξιπτωτίστρια|m|f}}, {{t+|el|αλεξιπτωτιστής|m}} * {{ru}}: {{t+|ru|деса́нтник|m}}, {{t|ru|[[парашюти́ст]]-[[деса́нтник]]|m}}, {{t+|ru|парашюти́ст|m}} * {{ja}}: {{t|ja|空挺兵|tr=くうていへい, kūteihei}} * {{kk}}: {{t|kk|десантшы}}, {{t|kk|парашютші}}, {{t|kk|парашютист}} * {{ky}}: {{t|ky|парашютист}} * {{lv}}: {{t|lv|desantnieks|m}} * {{lt}}: {{t|lt|parašiutininkas|m}}, {{t|lt|desantininkas|m}} * {{mk}}: {{t|mk|падо́бранец|m}} * {{mi}}: {{t|mi|hōia heketau}} * {{nor}}: *: {{nb}}: {{t|nb|fallskjermsoldat|m}} *: {{nn}}: {{t|nn|fallskjermsoldat|m}} * {{fr}}: {{t+|fr|para|m}}, {{t+|fr|parachutiste|m|f}}, {{t|fr|[[parachutiste]] [[militaire]]|m|f}} * {{fi}}: {{t+|fi|laskuvarjojääkäri}} * {{ro}}: {{t+|ro|parașutist|m}} * {{cs}}: {{t|cs|výsadkář|m}} * {{sh}}: *: {{Cyrl}}: {{t|sh|падобра́нац|m}} *: {{Latn}}: {{t+|sh|padobránac|m}} * {{sk}}: {{t|sk|výsadkár|m}} * {{sl}}: {{t+|sl|padalec|m}} * {{tgl}}: {{t|tl|parasyutista}} * {{es}}: {{t+|es|paracaidista|m|f}}, {{t|es|paracaidista militar|m|f}} * {{th}}: {{t|th|พลร่ม}} * {{tr}}: {{t|tr|paraşütçü asker}} * {{sv}}: {{t+|sv|fallskärmsjägare|c}} * {{ko}}: {{t|ko|공수부대(空輸部隊)}} * {{zh}}: *: {{cmn}}: {{t+|cmn|傘兵}}, {{t+|cmn|空降兵}} * {{uk}}: {{t|uk|деса́нтник|m}}, {{t|uk|парашути́ст|m}} * {{uz}}: {{t+|uz|desantchi}}, {{t+|uz|parashyutchi}} * {{it}}: {{t+|it|paracadutista|m|f}}, {{t|it|[[paracadutista]] [[militare]]|m|f}} {{trans-bottom}} {{-reference-}} {{R:FVDP}} {{C|vi|Quân sự|Nghề nghiệp}} 25mwz1ruhwipv8s8zk882swj5a72gmr lò sưởi 0 194462 2350694 2181453 2026-05-07T07:56:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350694 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Open fireplace with icon.jpg|nhỏ|lò sưởi]] {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[lò|Lò]] [[tỏa nhiệt]] để [[sưởi]] ấm. {{-trans-}} * {{eng}}: [[fireplace]] * {{cat-2}}: [[llar]], [[llar de foc]] {{f}} * {{glg}}: [[lareira]] {{f}} * {{nl}}: [[open haard]] {{m}} * {{fra}}: [[âtre]] {{m}}, [[foyer]] {{f}}, [[cheminée]] {{f}} * {{tur}}: [[şömine]] * {{cym}}: [[lle tân]] {{m}} {{-reference-}} {{R:FVDP}} jtjqgxx9xpnmvi6vn7n7s4t9e3numvk 2350954 2350694 2026-05-07T10:42:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350954 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Open fireplace with icon.jpg|nhỏ|lò sưởi]] {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[lò|Lò]] [[tỏa nhiệt]] để [[sưởi]] ấm. {{-trans-}} * {{eng}}: [[fireplace]] * {{cat-old}}: [[llar]], [[llar de foc]] {{f}} * {{glg}}: [[lareira]] {{f}} * {{nl}}: [[open haard]] {{m}} * {{fra}}: [[âtre]] {{m}}, [[foyer]] {{f}}, [[cheminée]] {{f}} * {{tur}}: [[şömine]] * {{cym}}: [[lle tân]] {{m}} {{-reference-}} {{R:FVDP}} dnqy37g3hxvhbt1zg6li5e683hwrh6a mét vuông 0 195600 2350695 2144727 2026-05-07T07:56:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350695 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Từ {{compound|vi|mét|vuông}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[đơn vị|Đơn vị]] [[diện tích]], bằng diện tích của một [[hình vuông]] [[cạnh]] dài 1 [[mét]]; kí hiệu: [[m²]]. #: {{ux|vi|Công trình xây dựng ngang nhiên lấn chiếm hàng chục '''mét vuông''' đất công.}} {{-trans-}} {{trans-top|Đơn vị diện tích}} * {{ara}}: {{t|ar|مِتْرٌ مُرَبَّعٌ|m}} * {{eng}}: {{t+|en|square metre}} {{qualifier|Anh}}, {{t+|en|square meter}} {{qualifier|Mĩ}} * {{pol}}: {{t+|pl|metr kwadratowy|m}} * {{se}}: {{t|se|njealjehasmehter}} * {{bel}}: {{t|be|квадра́тны метр|m}}, {{t|be|квадра́тны мэ́тар|m}} {{qualifier|taraškievica}} * {{por}}: {{t+|pt|metro quadrado|m}} * {{cat-2}}: {{t+|ca|metre quadrat|m}} * {{dan}}: {{t+|da|kvadratmeter|c}} * {{deu}}: {{t+|de|Quadratmeter|m}} * {{nld}}: {{t+|nl|vierkante meter|m}} * {{est}}: {{t|et|ruutkilomeeter}} * {{gd}}: {{t|gd|meatair ceàrnagach|m}} * {{gl}}: {{t+|gl|metro cadrado|m}} * {{ell}}: {{t|el|τετραγωνικό μέτρο|n}} * {{hun}}: {{t+|hu|négyzetméter}} * {{isl}}: {{t|is|fermetri|m}} * {{ind}}: {{t+|id|meter persegi}} * {{khm}}: {{t|km|ម៉ែត្រការ៉េ|tr=maet kaa reɛ|sc=Khmr}}, {{t|km|ម៉ែត្រក្រឡា|tr=maet krɑlaa|sc=Khmr}} * {{lao}}: {{t+|lo|ແມັດມົນທົນ}} * {{lv}}: {{t|lv|kvadrātmetrs|m}} * {{lt}}: {{t|lt|kvadratinis metras|m}} * {{mkd}}: {{t|mk|квадратен метар|m}} * {{nor}}: *: {{nob}}: {{t|nb|kvadratmeter|m}} *: {{nno}}: {{t|nn|kvadratmeter|m}} * {{rus}}: {{t+|ru|квадра́тный метр|m}} * {{ja}}: {{t+|ja|平方メートル|tr=heihō-mētoru}}, {{t+|ja|平米|tr=へいべい, heibei|sc=Jpan}} * {{fra}}: {{t+|fr|mètre carré|m}} * {{fin}}: {{t+|fi|neliömetri}} * {{epo}}: {{t+|eo|kvadratmetro}}, {{t|eo|kvadrata metro}} * {{ron}}: {{t+|ro|metru pătrat|m}} * {{ces}}: {{t|cs|metr čtverečný|m}}, {{t|cs|metr čtvereční|m}} * {{sk}}: {{t|sk|štvorcový meter|m}} * {{sw}}: {{t|sw|mita ya mraba}} * {{es}}: {{t|es|metro cuadrado|m}} * {{sv}}: {{t+|sv|kvadratmeter|c}}, {{t+|sv|kvm|c}} * {{tha}}: {{t+|th|ตารางเมตร}} * {{tur}}: {{t+|tr|metrekare}} * {{kor}}: {{t|ko|평방 미터}} * {{zho}}: *: {{cmn}}: {{t+|cmn|平方米|tr=píngfāngmǐ}}, {{t+|cmn|平方公尺|tr=píngfāng gōngchǐ}}, {{t+|cmn|平米|tr=píngmǐ}}, {{t+|cmn|平方|tr=píngfāng}} *: {{yue}}: {{t|yue|平方米|tr=ping4 fong1 mai5}}, {{t|yue|平方公尺|tr=ping4 fong1 gung1 cek3}} * {{uk}}: {{t|uk|квадра́тний ме́тр|m}} * {{ita}}: {{t+|it|metro quadrato|m}}, {{t+|it|metro quadro|m}} {{trans-bottom}} {{-see also-}} * {{vie-l|mét}} * {{vie-l|mét khối}} {{-reference-}} {{R:FVDP}} {{C|vi|Đơn vị SI}} 1tal1vrmdmhgj32c84mtx1k6o3hdiev 2350955 2350695 2026-05-07T10:42:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350955 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Từ {{compound|vi|mét|vuông}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[đơn vị|Đơn vị]] [[diện tích]], bằng diện tích của một [[hình vuông]] [[cạnh]] dài 1 [[mét]]; kí hiệu: [[m²]]. #: {{ux|vi|Công trình xây dựng ngang nhiên lấn chiếm hàng chục '''mét vuông''' đất công.}} {{-trans-}} {{trans-top|Đơn vị diện tích}} * {{ara}}: {{t|ar|مِتْرٌ مُرَبَّعٌ|m}} * {{eng}}: {{t+|en|square metre}} {{qualifier|Anh}}, {{t+|en|square meter}} {{qualifier|Mĩ}} * {{pol}}: {{t+|pl|metr kwadratowy|m}} * {{se}}: {{t|se|njealjehasmehter}} * {{bel}}: {{t|be|квадра́тны метр|m}}, {{t|be|квадра́тны мэ́тар|m}} {{qualifier|taraškievica}} * {{por}}: {{t+|pt|metro quadrado|m}} * {{cat-old}}: {{t+|ca|metre quadrat|m}} * {{dan}}: {{t+|da|kvadratmeter|c}} * {{deu}}: {{t+|de|Quadratmeter|m}} * {{nld}}: {{t+|nl|vierkante meter|m}} * {{est}}: {{t|et|ruutkilomeeter}} * {{gd}}: {{t|gd|meatair ceàrnagach|m}} * {{gl}}: {{t+|gl|metro cadrado|m}} * {{ell}}: {{t|el|τετραγωνικό μέτρο|n}} * {{hun}}: {{t+|hu|négyzetméter}} * {{isl}}: {{t|is|fermetri|m}} * {{ind}}: {{t+|id|meter persegi}} * {{khm}}: {{t|km|ម៉ែត្រការ៉េ|tr=maet kaa reɛ|sc=Khmr}}, {{t|km|ម៉ែត្រក្រឡា|tr=maet krɑlaa|sc=Khmr}} * {{lao}}: {{t+|lo|ແມັດມົນທົນ}} * {{lv}}: {{t|lv|kvadrātmetrs|m}} * {{lt}}: {{t|lt|kvadratinis metras|m}} * {{mkd}}: {{t|mk|квадратен метар|m}} * {{nor}}: *: {{nob}}: {{t|nb|kvadratmeter|m}} *: {{nno}}: {{t|nn|kvadratmeter|m}} * {{rus}}: {{t+|ru|квадра́тный метр|m}} * {{ja}}: {{t+|ja|平方メートル|tr=heihō-mētoru}}, {{t+|ja|平米|tr=へいべい, heibei|sc=Jpan}} * {{fra}}: {{t+|fr|mètre carré|m}} * {{fin}}: {{t+|fi|neliömetri}} * {{epo}}: {{t+|eo|kvadratmetro}}, {{t|eo|kvadrata metro}} * {{ron}}: {{t+|ro|metru pătrat|m}} * {{ces}}: {{t|cs|metr čtverečný|m}}, {{t|cs|metr čtvereční|m}} * {{sk}}: {{t|sk|štvorcový meter|m}} * {{sw}}: {{t|sw|mita ya mraba}} * {{es}}: {{t|es|metro cuadrado|m}} * {{sv}}: {{t+|sv|kvadratmeter|c}}, {{t+|sv|kvm|c}} * {{tha}}: {{t+|th|ตารางเมตร}} * {{tur}}: {{t+|tr|metrekare}} * {{kor}}: {{t|ko|평방 미터}} * {{zho}}: *: {{cmn}}: {{t+|cmn|平方米|tr=píngfāngmǐ}}, {{t+|cmn|平方公尺|tr=píngfāng gōngchǐ}}, {{t+|cmn|平米|tr=píngmǐ}}, {{t+|cmn|平方|tr=píngfāng}} *: {{yue}}: {{t|yue|平方米|tr=ping4 fong1 mai5}}, {{t|yue|平方公尺|tr=ping4 fong1 gung1 cek3}} * {{uk}}: {{t|uk|квадра́тний ме́тр|m}} * {{ita}}: {{t+|it|metro quadrato|m}}, {{t+|it|metro quadro|m}} {{trans-bottom}} {{-see also-}} * {{vie-l|mét}} * {{vie-l|mét khối}} {{-reference-}} {{R:FVDP}} {{C|vi|Đơn vị SI}} ejsb28hrtw9xr96cvnv7op2ro8lphvl móc đơn 0 195649 2350696 1496353 2026-05-07T07:56:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350696 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅮|móc đơn]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc đơn''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc đôi]] hoặc nửa [[nốt đen]], tức nửa [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một nốt đen và một [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[quaver]] {{term|Anh, Úc}}, [[eighth note]] {{term|Mỹ, Canada}} * {{arg}}: [[corchea]] {{f}} * {{pol}}: [[ósemka]] {{f}} * {{isl}}: [[áttundapartsnóta]] {{f}}, [[áttundipartur]] {{m}} * {{eus}}: [[kortxea]] * {{por}}: [[colcheia]] {{f}} * {{bul}}: [[осмина нота]] * {{cat-2}}: [[corxera]] {{f}} * {{deu}}: [[Achtelnote]] {{f}} * {{gla}}: [[caman]] {{m}} * {{glg}}: [[corchea]] * {{nld}}: [[achtste noot]] * {{haw}}: [[hua mele hapawalu]] * {{hun}}: [[nyolcad hangjegy]] * {{msa}}: [[kuaver]] * {{nor}}: [[åttendedelsnote]] * {{rus}}: [[восьмая]] (''vos’mája'') {{f}} * {{jpn}}: [[八分音符]] (''hachibun onpu'', bát phân âm phù), [[8分音符]] * {{oci}}: [[cròcha]] {{f}} * {{fin}}: [[kahdeksasosanuotti]] * {{fra}}: [[croche]] {{f}} * {{cmn}}: [[八分音符]] (''bāfēn yīnfú'', bát phân âm phù) * {{srp}}: ** {{Cyrl}}: [[осмина ноте]] ** {{Latn}}: [[osmina note]] * {{hbs}}: [[osmina note]] * {{slv}}: [[osminka]] {{f}} * {{spa}}: [[corchea]] {{f}} * {{tha}}: [[โน๊ตเขบ็ตหนึ่งชั้น]] * {{tur}}: [[sekizlik nota]] * {{swe}}: [[åttondelsnot]] * {{kor}}: [[팔분음표]] * {{cym}}: [[cwafer]] * {{ita}}: [[croma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ig96hlrxcxpv6p0wgbw6lksl1ydfsbb 2350956 2350696 2026-05-07T10:42:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350956 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅮|móc đơn]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc đơn''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc đôi]] hoặc nửa [[nốt đen]], tức nửa [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một nốt đen và một [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[quaver]] {{term|Anh, Úc}}, [[eighth note]] {{term|Mỹ, Canada}} * {{arg}}: [[corchea]] {{f}} * {{pol}}: [[ósemka]] {{f}} * {{isl}}: [[áttundapartsnóta]] {{f}}, [[áttundipartur]] {{m}} * {{eus}}: [[kortxea]] * {{por}}: [[colcheia]] {{f}} * {{bul}}: [[осмина нота]] * {{cat-old}}: [[corxera]] {{f}} * {{deu}}: [[Achtelnote]] {{f}} * {{gla}}: [[caman]] {{m}} * {{glg}}: [[corchea]] * {{nld}}: [[achtste noot]] * {{haw}}: [[hua mele hapawalu]] * {{hun}}: [[nyolcad hangjegy]] * {{msa}}: [[kuaver]] * {{nor}}: [[åttendedelsnote]] * {{rus}}: [[восьмая]] (''vos’mája'') {{f}} * {{jpn}}: [[八分音符]] (''hachibun onpu'', bát phân âm phù), [[8分音符]] * {{oci}}: [[cròcha]] {{f}} * {{fin}}: [[kahdeksasosanuotti]] * {{fra}}: [[croche]] {{f}} * {{cmn}}: [[八分音符]] (''bāfēn yīnfú'', bát phân âm phù) * {{srp}}: ** {{Cyrl}}: [[осмина ноте]] ** {{Latn}}: [[osmina note]] * {{hbs}}: [[osmina note]] * {{slv}}: [[osminka]] {{f}} * {{spa}}: [[corchea]] {{f}} * {{tha}}: [[โน๊ตเขบ็ตหนึ่งชั้น]] * {{tur}}: [[sekizlik nota]] * {{swe}}: [[åttondelsnot]] * {{kor}}: [[팔분음표]] * {{cym}}: [[cwafer]] * {{ita}}: [[croma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] tfogev95qgy4cw6c88w4y3vu8sslipo hôm kia 0 198010 2350697 2118410 2026-05-07T07:56:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350697 wikitext text/x-wiki {{-vie-}} {{-etym-}} Từ ghép giữa {{compound|vi|hôm|kia}}. Không được nhầm lẫn với {{mention|vi|ngày kia}}. {{-pron-}} {{vie-pron}} {{-paro-}} :* [[hôm kìa]] {{-advb-}} {{vie-adv}} # [[ngày trước|Ngày trước]] [[hôm qua]]. {{-synonym-}} * [[hôm xưa]] {{-trans-}} {{đầu}} * {{ara}}: [[قَبْلَ أَمْس‏‎]] (''qabla ʾams''), [[أَمْس الْأَوَّل‏‎]] (''ʾams al-ʾawwal''), [[أَوَّل أَمْس‏‎]] (''ʾawwal ʾams'') {{m}} * {{eng}}: the [[day before yesterday]], the [[day before]] {{term|thông tục}}, [[ereyesterday]] {{term|cổ}} * {{hye}}: [[երեկ չէ առաջին օրը]] (''erek čʿē aṙaǰin ōrə''), [[երեկ չէ մյուս օրը]] (''erek čʿē myus ōrə'') * {{pol}}: [[przedwczoraj]] * {{fas}}: [[پریروز‏‎]] (''pariruz'') * {{isl}}: [[í fyrradag]] * {{eus}}: [[herenegun]] * {{por}}: [[anteontem]] * {{bul}}: [[завчера|за́вчера]] (''závčera'') * {{cat-2}}: [[abans-d'ahir]] * {{dan}}: [[i forgårs]] * {{heb}}: [[שִׁלְשׁוֹם‏‎]] (''shilshom'') * {{deu}}: [[vorgestern]] * {{est}}: [[üleeile]] * {{glg}}: [[antonte]], [[antes de onte]], [[nantronte]] {{term|phản đối}}, [[noutronte]] {{term|phản đối}} * {{nld}}: [[eergisteren]], [[eergister]] * {{hin}}: [[परसों]] (''parsõ'') * {{ell}}: [[προχθές]] (''prochthés'') * {{ido}}: [[prehiere]] * {{lat}}: [[nudius tertius]] * {{lav}}: [[aizvakar]] * {{lit}}: [[užvakar]] * {{mak}}: [[завчера|за́вчера]] (''závčera'') * {{nob}}: [[i forgårs]] * {{rus}}: [[позавчера|позавчера́ ]] (''pozavčerá'') * {{jpn}}: [[一昨日]] (おととい, ''ototoi'', nhất tạc nhật), 一昨日 (いっさくじつ, ''issakujitsu'') {{term|nghi lễ}} * {{fin}}: [[toissa päivänä]] * {{fra}}: [[avant-hier]] * {{cmn}}: [[前天]] (''qiántiān'', tiền thiên), [[前日]] (''qiánrì'', tiền nhật) * {{epo}}: [[antaŭhieraŭ]] * {{ron}}: [[alaltăieri]] * {{ces}}: [[předevčírem]] * {{slk}}: [[predvčerom]] * {{slv}}: [[predvčerajšnjem]] * {{spa}}: [[anteayer]], [[antier]] {{term|Mỹ Latinh}}, [[antes de ayer]] * {{tel}}: [[మొన్న]] (''monna'') * {{swe}}: [[i förrgår]] * {{kor}}: [[그저께]] (''geujeokke'') * {{ukr}}: [[позавчора|позавчо́ра]] (''pozavčóra'') * {{urd}}: [[پرسوں‏‎]] (''parsõ'') * {{cym}}: [[echdoe]] * {{ita}}: [[l'altro ieri]], [[ierlaltro]], [[avantieri]] * {{yid}}: [[אייערנעכטן‏‎]] (''eyernekhtn'') {{cuối}} {{-ref-}} {{R:FVDP}} 63pstkt7w167f4y6c83w3k13i8wqqoz 2350957 2350697 2026-05-07T10:42:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350957 wikitext text/x-wiki {{-vie-}} {{-etym-}} Từ ghép giữa {{compound|vi|hôm|kia}}. Không được nhầm lẫn với {{mention|vi|ngày kia}}. {{-pron-}} {{vie-pron}} {{-paro-}} :* [[hôm kìa]] {{-advb-}} {{vie-adv}} # [[ngày trước|Ngày trước]] [[hôm qua]]. {{-synonym-}} * [[hôm xưa]] {{-trans-}} {{đầu}} * {{ara}}: [[قَبْلَ أَمْس‏‎]] (''qabla ʾams''), [[أَمْس الْأَوَّل‏‎]] (''ʾams al-ʾawwal''), [[أَوَّل أَمْس‏‎]] (''ʾawwal ʾams'') {{m}} * {{eng}}: the [[day before yesterday]], the [[day before]] {{term|thông tục}}, [[ereyesterday]] {{term|cổ}} * {{hye}}: [[երեկ չէ առաջին օրը]] (''erek čʿē aṙaǰin ōrə''), [[երեկ չէ մյուս օրը]] (''erek čʿē myus ōrə'') * {{pol}}: [[przedwczoraj]] * {{fas}}: [[پریروز‏‎]] (''pariruz'') * {{isl}}: [[í fyrradag]] * {{eus}}: [[herenegun]] * {{por}}: [[anteontem]] * {{bul}}: [[завчера|за́вчера]] (''závčera'') * {{cat-old}}: [[abans-d'ahir]] * {{dan}}: [[i forgårs]] * {{heb}}: [[שִׁלְשׁוֹם‏‎]] (''shilshom'') * {{deu}}: [[vorgestern]] * {{est}}: [[üleeile]] * {{glg}}: [[antonte]], [[antes de onte]], [[nantronte]] {{term|phản đối}}, [[noutronte]] {{term|phản đối}} * {{nld}}: [[eergisteren]], [[eergister]] * {{hin}}: [[परसों]] (''parsõ'') * {{ell}}: [[προχθές]] (''prochthés'') * {{ido}}: [[prehiere]] * {{lat}}: [[nudius tertius]] * {{lav}}: [[aizvakar]] * {{lit}}: [[užvakar]] * {{mak}}: [[завчера|за́вчера]] (''závčera'') * {{nob}}: [[i forgårs]] * {{rus}}: [[позавчера|позавчера́ ]] (''pozavčerá'') * {{jpn}}: [[一昨日]] (おととい, ''ototoi'', nhất tạc nhật), 一昨日 (いっさくじつ, ''issakujitsu'') {{term|nghi lễ}} * {{fin}}: [[toissa päivänä]] * {{fra}}: [[avant-hier]] * {{cmn}}: [[前天]] (''qiántiān'', tiền thiên), [[前日]] (''qiánrì'', tiền nhật) * {{epo}}: [[antaŭhieraŭ]] * {{ron}}: [[alaltăieri]] * {{ces}}: [[předevčírem]] * {{slk}}: [[predvčerom]] * {{slv}}: [[predvčerajšnjem]] * {{spa}}: [[anteayer]], [[antier]] {{term|Mỹ Latinh}}, [[antes de ayer]] * {{tel}}: [[మొన్న]] (''monna'') * {{swe}}: [[i förrgår]] * {{kor}}: [[그저께]] (''geujeokke'') * {{ukr}}: [[позавчора|позавчо́ра]] (''pozavčóra'') * {{urd}}: [[پرسوں‏‎]] (''parsõ'') * {{cym}}: [[echdoe]] * {{ita}}: [[l'altro ieri]], [[ierlaltro]], [[avantieri]] * {{yid}}: [[אייערנעכטן‏‎]] (''eyernekhtn'') {{cuối}} {{-ref-}} {{R:FVDP}} ogxet2llykracxmw3izj82bydeu9l5u hươu cao cổ 0 198195 2350814 2273161 2026-05-07T08:08:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350814 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} [[Hình:Giraffe Ithala KZN South Africa Luca Galuzzi 2004.JPG|nhỏ|hươu cao cổ]] ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|n}}=== {{vie-noun|cls=con}} # [[loài|Loài]] [[nhai lại]] ở [[châu Phi]], rất [[cao]], [[cổ]] [[dài]] và [[cứng]]. ===={{ĐM|trans}}==== {{trans-top|Loài nhai lại ở châu Phi, rất cao, cổ dài và cứng}} * {{en}}: {{t+|en|giraffe}} * {{aa}}: {{t|aa|gari}} * {{af}}: {{t+|af|kameelperd}} * {{ar}}: {{t+|ar|زَرَافَة|f}} * {{az}}: {{t+|az|zürafə}} * {{an}}: {{t|an|chirafa|f}} * {{hy}}: {{t+|hy|ընձուղտ}} * {{as}}: {{t|as|জিৰাফ}} * {{ast}}: {{t+|ast|xirafa|f}} * {{az}}: {{t+|az|zürafə}} * {{eu}}: {{t+|eu|jirafa}} * {{fa}}: {{t+|fa|زرّافه|tr=zarrâfe}}, {{t+|fa|شترگاوپلنگ|tr=šotorgâvpalang}}, {{t|fa|زرناپا|tr=zornâpâ}} * {{pl}}: {{t+|pl|żyrafa|f}} * {{pt}}: {{t+|pt|girafa|f}} * {{be}}: {{t|be|жыра́фа|f}} * {{bn}}: {{t|bn|জরৈফ}} * {{cat-2}}: {{t+|ca|girafa|f}} * {{langname|ht}}: {{t|ht|jiraf}} * {{chr}}: {{t|chr|ᏗᎦᎵᏍᏚᎩᏍᎩ}} * {{langname|chy}}: {{t|chy|tsėhe'ėsenotováhe}} * {{langname|ny}}: {{t|ny|nyamalikiti|9}}, {{t|ny|nswala|9}}, {{t|ny|kadyamnsonga|1a}} * {{dz}}: {{t|dz|སྐེ་རིང་རྟ}} * {{da}}: {{t+|da|giraf|c}} * {{de}}: {{t+|de|Giraffe|f}} * {{et}}: {{t+|et|kaelkirjak}} * {{fo}}: {{t|fo|giraffur|m}} * {{gl}}: {{t+|gl|xirafa|f}} * {{ka}}: {{t|ka|ჟირაფი}} * {{nl}}: {{t+|nl|giraf|f}} * {{el}}: {{t+|el|καμηλοπάρδαλη|f}} *: {{grc}}: {{t|grc|καμηλοπάρδαλις|f}} * {{hi}}: {{t|hi|जिराफ़|m}}, {{t+|hi|जिराफ|m}}, {{t|hi|जराफ़}}, {{t+|hi|जुराफा}}, {{t+|hi|जराफा|m}} * {{hu}}: {{t+|hu|zsiráf}} * {{haw}}: {{t|haw|kamelopaki}} * {{is}}: {{t+|is|gíraffi|m}} * {{io}}: {{t+|io|jirafo}} * {{id}}: {{t+|id|jerapah}}, {{t+|id|zarafah}} * {{kn}}: {{t|kn|ಜಿರಾಫೆ}} * {{kk}}: {{t|kk|жираф}}, {{t|kk|керік}} * {{km}}: {{t|km|ហ្សីរ៉ាហ្វ}}, {{t+|km|កវែង}} * {{lo}}: {{t+|lo|ກວາງຄໍຍາວ}} * {{la}}: {{t+|la|camelopardalis|f}} * {{lv}}: {{t|lv|žirafe|f}} * {{lt}}: {{t+|lt|žirafa|f}} * {{langname|lb}}: {{t+|lb|Giraff|f}} * {{my}}: {{t+|my|သစ်ကုလားအုတ်}} * {{ms}}: {{t+|ms|zirafah}} * {{ml}}: {{t+|ml|ജിറാഫ്}} * {{ru}}: {{t+|ru|жира́ф|m}}, {{t+|ru|жира́фа|f}} {{qualifier|obsolete}}, {{t|ru|гира́ф|m}} {{qualifier|lỗi thời}} * {{ja}}: {{t+|ja|麒麟|tr=きりん, kirin}}, {{t+|ja|キリン|tr=kirin}} * {{nv}}: {{t|nv|tsinlátah ayáanii}} * {{oc}}: {{t+|oc|girafa|f}} * {{fi}}: {{t+|fi|kirahvi}} * {{fr}}: {{t+|fr|girafe|f}}, {{t|fr|chameaupard|m}} {{qualifier|cổ xưa, lỗi thời}} * {{eo}}: {{t|eo|ĝirafo}} * {{langname|sg}}: {{t+|sg|kôlo}} * {{si}}: {{t|si|ජිරාෆ්}} * {{cs}}: {{t+|cs|žirafa|f}} * {{sk}}: {{t+|sk|žirafa|f}} * {{sl}}: {{t+|sl|žirafa|f}} * {{sw}}: {{t+|sw|twiga}} * {{ro}}: {{t+|ro|girafă|f}} * {{zh}}: *: {{yue}}: {{t|yue|長頸鹿|tr=coeng4 geng2 luk6, coeng4 geng2 luk6-2}} *: {{langname|hak}}: {{t|hak|長頸鹿|tr=chhòng-kiáng-lu̍k}} *: {{langname|nan-hbl}}: {{t+|nan-hbl|長頷鹿|tr=tn̂g-ām-lo̍k}}, {{t|nan-hbl|長頭鹿仔|tr=tn̂g-thâu-lo̍k-á}}, {{t|nan-hbl|麒麟鹿|tr=kî-lîn-lo̍k}} *: {{cmn}}: {{t+|cmn|長頸鹿|tr=chángjǐnglù}} * {{ko}}: {{t+|ko|기린(麒麟)}} * {{es}}: {{t+|es|jirafa|f}} * {{sv}}: {{t+|sv|giraff|c}} * {{ta}}: {{t+|ta|ஒட்டகச்சிவிங்கி}} * {{te}}: {{t+|te|జిరాఫీ}} * {{th}}: {{t+|th|ยีราฟ}} * {{tk}}: {{t+|tk|žiraf}} * {{ur}}: {{t|ur|جراف|m|tr=jirāf}}, {{t+|ur|زرافہ|tr=zarrāfe}} * {{uz}}: {{t+|uz|jirafa}}, {{t+|uz|zirofa}} * {{it}}: {{t+|it|giraffa|f}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} idbbn89ahjd3uosyz0b6kzvi8qds7u7 2350958 2350814 2026-05-07T10:42:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350958 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} [[Hình:Giraffe Ithala KZN South Africa Luca Galuzzi 2004.JPG|nhỏ|hươu cao cổ]] ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|n}}=== {{vie-noun|cls=con}} # [[loài|Loài]] [[nhai lại]] ở [[châu Phi]], rất [[cao]], [[cổ]] [[dài]] và [[cứng]]. ===={{ĐM|trans}}==== {{trans-top|Loài nhai lại ở châu Phi, rất cao, cổ dài và cứng}} * {{en}}: {{t+|en|giraffe}} * {{aa}}: {{t|aa|gari}} * {{af}}: {{t+|af|kameelperd}} * {{ar}}: {{t+|ar|زَرَافَة|f}} * {{az}}: {{t+|az|zürafə}} * {{an}}: {{t|an|chirafa|f}} * {{hy}}: {{t+|hy|ընձուղտ}} * {{as}}: {{t|as|জিৰাফ}} * {{ast}}: {{t+|ast|xirafa|f}} * {{az}}: {{t+|az|zürafə}} * {{eu}}: {{t+|eu|jirafa}} * {{fa}}: {{t+|fa|زرّافه|tr=zarrâfe}}, {{t+|fa|شترگاوپلنگ|tr=šotorgâvpalang}}, {{t|fa|زرناپا|tr=zornâpâ}} * {{pl}}: {{t+|pl|żyrafa|f}} * {{pt}}: {{t+|pt|girafa|f}} * {{be}}: {{t|be|жыра́фа|f}} * {{bn}}: {{t|bn|জরৈফ}} * {{cat-old}}: {{t+|ca|girafa|f}} * {{langname|ht}}: {{t|ht|jiraf}} * {{chr}}: {{t|chr|ᏗᎦᎵᏍᏚᎩᏍᎩ}} * {{langname|chy}}: {{t|chy|tsėhe'ėsenotováhe}} * {{langname|ny}}: {{t|ny|nyamalikiti|9}}, {{t|ny|nswala|9}}, {{t|ny|kadyamnsonga|1a}} * {{dz}}: {{t|dz|སྐེ་རིང་རྟ}} * {{da}}: {{t+|da|giraf|c}} * {{de}}: {{t+|de|Giraffe|f}} * {{et}}: {{t+|et|kaelkirjak}} * {{fo}}: {{t|fo|giraffur|m}} * {{gl}}: {{t+|gl|xirafa|f}} * {{ka}}: {{t|ka|ჟირაფი}} * {{nl}}: {{t+|nl|giraf|f}} * {{el}}: {{t+|el|καμηλοπάρδαλη|f}} *: {{grc}}: {{t|grc|καμηλοπάρδαλις|f}} * {{hi}}: {{t|hi|जिराफ़|m}}, {{t+|hi|जिराफ|m}}, {{t|hi|जराफ़}}, {{t+|hi|जुराफा}}, {{t+|hi|जराफा|m}} * {{hu}}: {{t+|hu|zsiráf}} * {{haw}}: {{t|haw|kamelopaki}} * {{is}}: {{t+|is|gíraffi|m}} * {{io}}: {{t+|io|jirafo}} * {{id}}: {{t+|id|jerapah}}, {{t+|id|zarafah}} * {{kn}}: {{t|kn|ಜಿರಾಫೆ}} * {{kk}}: {{t|kk|жираф}}, {{t|kk|керік}} * {{km}}: {{t|km|ហ្សីរ៉ាហ្វ}}, {{t+|km|កវែង}} * {{lo}}: {{t+|lo|ກວາງຄໍຍາວ}} * {{la}}: {{t+|la|camelopardalis|f}} * {{lv}}: {{t|lv|žirafe|f}} * {{lt}}: {{t+|lt|žirafa|f}} * {{langname|lb}}: {{t+|lb|Giraff|f}} * {{my}}: {{t+|my|သစ်ကုလားအုတ်}} * {{ms}}: {{t+|ms|zirafah}} * {{ml}}: {{t+|ml|ജിറാഫ്}} * {{ru}}: {{t+|ru|жира́ф|m}}, {{t+|ru|жира́фа|f}} {{qualifier|obsolete}}, {{t|ru|гира́ф|m}} {{qualifier|lỗi thời}} * {{ja}}: {{t+|ja|麒麟|tr=きりん, kirin}}, {{t+|ja|キリン|tr=kirin}} * {{nv}}: {{t|nv|tsinlátah ayáanii}} * {{oc}}: {{t+|oc|girafa|f}} * {{fi}}: {{t+|fi|kirahvi}} * {{fr}}: {{t+|fr|girafe|f}}, {{t|fr|chameaupard|m}} {{qualifier|cổ xưa, lỗi thời}} * {{eo}}: {{t|eo|ĝirafo}} * {{langname|sg}}: {{t+|sg|kôlo}} * {{si}}: {{t|si|ජිරාෆ්}} * {{cs}}: {{t+|cs|žirafa|f}} * {{sk}}: {{t+|sk|žirafa|f}} * {{sl}}: {{t+|sl|žirafa|f}} * {{sw}}: {{t+|sw|twiga}} * {{ro}}: {{t+|ro|girafă|f}} * {{zh}}: *: {{yue}}: {{t|yue|長頸鹿|tr=coeng4 geng2 luk6, coeng4 geng2 luk6-2}} *: {{langname|hak}}: {{t|hak|長頸鹿|tr=chhòng-kiáng-lu̍k}} *: {{langname|nan-hbl}}: {{t+|nan-hbl|長頷鹿|tr=tn̂g-ām-lo̍k}}, {{t|nan-hbl|長頭鹿仔|tr=tn̂g-thâu-lo̍k-á}}, {{t|nan-hbl|麒麟鹿|tr=kî-lîn-lo̍k}} *: {{cmn}}: {{t+|cmn|長頸鹿|tr=chángjǐnglù}} * {{ko}}: {{t+|ko|기린(麒麟)}} * {{es}}: {{t+|es|jirafa|f}} * {{sv}}: {{t+|sv|giraff|c}} * {{ta}}: {{t+|ta|ஒட்டகச்சிவிங்கி}} * {{te}}: {{t+|te|జిరాఫీ}} * {{th}}: {{t+|th|ยีราฟ}} * {{tk}}: {{t+|tk|žiraf}} * {{ur}}: {{t|ur|جراف|m|tr=jirāf}}, {{t+|ur|زرافہ|tr=zarrāfe}} * {{uz}}: {{t+|uz|jirafa}}, {{t+|uz|zirofa}} * {{it}}: {{t+|it|giraffa|f}} {{trans-bottom}} ==={{ĐM|ref}}=== {{R:FVDP}} 4wui0uzzvk3hcfybczibxeg8c5r6giv quản tượng 0 199143 2350698 2149537 2026-05-07T07:56:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350698 wikitext text/x-wiki {{-vie-}} [[Tập tin:Mahout washing his elephant. Temple in Kanchipuram, Tamil Nadu.jpg|nhỏ|Người '''quản tượng''' đang tắm rửa cho voi.]] {{-etymology-}} {{vi-etym-sino|管|cai quản, trông nom|象|con voi}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|cls=người}} # Người [[trông nom]] và [[điều khiển]] [[voi]]. #* {{quote-journal|vi|4/5/2006|Can Lộc|Những người quản tượng|w:Báo Tuổi Trẻ|url=https://tuoitre.vn/nhung-nguoi-quan-tuong-135810.htm|archiveurl=https://web.archive.org/web/20230701000803/https://tuoitre.vn/nhung-nguoi-quan-tuong-135810.htm|archivedate=1/7/2023|passage=Đối với voi mới được thuần hóa, gặp ôtô hoặc tiếng động mạnh là hoảng, lâm vào tình thế này nếu '''quản tượng''' không làm chủ được, khách du lịch rất dễ... đo ván xuống mặt đường.}} {{-trans-}} {{trans-top|Người trông nom và điều khiển voi}} * {{eng}}: {{qualifier|Nam Á}} {{t+|en|mahout}}, {{t+|en|mahawat}}, {{qualifier|Myanmar}} {{t+|en|oozie}} * {{asm}}: {{t|as|মাউত}} * {{pol}}: {{t+|pl|kornak|m}} * {{fas}}: {{t|fa|فیل‌بان}} * {{eus}}: {{t|eu|mahout|?}} * {{ben}}: {{t+|bn|মাহুত}} * {{por}}: {{t+|pt|cornaca|m}} * {{cat-2}}: {{t|ca|cornac|m}} * {{heb}}: {{t+|he|פַּיָּל|m|tr=payal}} * {{dan}}: {{t|da|mahout}}, {{t|da|mahut}}, {{t|da|elefantdriver}}, {{t|da|elefantfører}} * {{deu}}: {{t+|de|Mahaut|m}}, {{t+|de|Mahout|m}}, {{t+|de|Mahut|m}}, {{t+|de|Elefantentreiber|m}} * {{est}}: {{t|et|elevandijuht}} * {{glg}}: {{t|gl|cornaca|m}} * {{inc-ogu}}: {{t|inc-ogu|पुंतार}} * {{hin}}: {{t|hi|महौत}}, {{t+|hi|महाउत}}, {{t+|hi|महावत|m}} * {{hun}}: {{t|hu|elefánthajcsár}} * {{ind}}: {{t+|id|mahout}} * {{khm}}: {{t|km|ហត្ថិគោបកៈ|tr=hattʰe’koopa’ka’}}, {{t|km|ហ្មដំរី}}, {{t+|km|ទ្រមាក់|tr=trɔmeak}} * {{kur}}: *: {{kmr}}: {{t+|kmr|fîlvan}} * {{lit}}: {{t|lt|mahoutas}} * {{mkd}}: {{t|mk|ма́хаут|m}} * {{mal}}: {{t+|ml|ആനപ്പാപ്പാൻ|m}}, {{t+|ml|പാപ്പാൻ|m}} * {{mya}}: {{t+|my|ဆင်ဦးစီး}}, {{t+|my|ယရည်း}} * {{nor}}: *: {{nob}}: {{t|nb|elefantfører}} * {{rus}}: {{t|ru|махау́т|m}}, {{t|ru|[[пого́нщик]] [[слон|слоно́в]]|m}} * {{fra}}: {{t+|fr|mahout|m}}, {{t+|fr|cornac|m}} * {{fin}}: {{t|fi|norsunajaja}} * {{pan}}: {{t|pa|ਮਹੌਤ}} * {{rkt}}: {{t|rkt|মাহুত}} * {{ron}}: {{t+|ro|cornac}} * {{tam}}: {{t+|ta|பணிக்கன்}}, {{t+|ta|யானைப்பாகன்}} * {{spa}}: {{t|es|mahout|m}}, {{t+|es|cornaca|m}} * {{tel}}: {{t+|te|గజారోహుడు}}, {{t+|te|మావటి}} * {{tha}}: {{t+|th|ควาญ}}, {{t|th|ควาญช้าง}} {{qualifier|của voi chiến}} * {{swe}}: {{t|sv|mahout}} * {{kor}}: {{t|ko|머하웃}} * {{zho}}: *: {{cmn}}: {{t+|cmn|象夫}}, {{t+|cmn|象奴}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{topics|vi|Voi|Nghề nghiệp}} ge39eg2gbdbc0svm552nexnfl9jo6br 2350959 2350698 2026-05-07T10:42:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350959 wikitext text/x-wiki {{-vie-}} [[Tập tin:Mahout washing his elephant. Temple in Kanchipuram, Tamil Nadu.jpg|nhỏ|Người '''quản tượng''' đang tắm rửa cho voi.]] {{-etymology-}} {{vi-etym-sino|管|cai quản, trông nom|象|con voi}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|cls=người}} # Người [[trông nom]] và [[điều khiển]] [[voi]]. #* {{quote-journal|vi|4/5/2006|Can Lộc|Những người quản tượng|w:Báo Tuổi Trẻ|url=https://tuoitre.vn/nhung-nguoi-quan-tuong-135810.htm|archiveurl=https://web.archive.org/web/20230701000803/https://tuoitre.vn/nhung-nguoi-quan-tuong-135810.htm|archivedate=1/7/2023|passage=Đối với voi mới được thuần hóa, gặp ôtô hoặc tiếng động mạnh là hoảng, lâm vào tình thế này nếu '''quản tượng''' không làm chủ được, khách du lịch rất dễ... đo ván xuống mặt đường.}} {{-trans-}} {{trans-top|Người trông nom và điều khiển voi}} * {{eng}}: {{qualifier|Nam Á}} {{t+|en|mahout}}, {{t+|en|mahawat}}, {{qualifier|Myanmar}} {{t+|en|oozie}} * {{asm}}: {{t|as|মাউত}} * {{pol}}: {{t+|pl|kornak|m}} * {{fas}}: {{t|fa|فیل‌بان}} * {{eus}}: {{t|eu|mahout|?}} * {{ben}}: {{t+|bn|মাহুত}} * {{por}}: {{t+|pt|cornaca|m}} * {{cat-old}}: {{t|ca|cornac|m}} * {{heb}}: {{t+|he|פַּיָּל|m|tr=payal}} * {{dan}}: {{t|da|mahout}}, {{t|da|mahut}}, {{t|da|elefantdriver}}, {{t|da|elefantfører}} * {{deu}}: {{t+|de|Mahaut|m}}, {{t+|de|Mahout|m}}, {{t+|de|Mahut|m}}, {{t+|de|Elefantentreiber|m}} * {{est}}: {{t|et|elevandijuht}} * {{glg}}: {{t|gl|cornaca|m}} * {{inc-ogu}}: {{t|inc-ogu|पुंतार}} * {{hin}}: {{t|hi|महौत}}, {{t+|hi|महाउत}}, {{t+|hi|महावत|m}} * {{hun}}: {{t|hu|elefánthajcsár}} * {{ind}}: {{t+|id|mahout}} * {{khm}}: {{t|km|ហត្ថិគោបកៈ|tr=hattʰe’koopa’ka’}}, {{t|km|ហ្មដំរី}}, {{t+|km|ទ្រមាក់|tr=trɔmeak}} * {{kur}}: *: {{kmr}}: {{t+|kmr|fîlvan}} * {{lit}}: {{t|lt|mahoutas}} * {{mkd}}: {{t|mk|ма́хаут|m}} * {{mal}}: {{t+|ml|ആനപ്പാപ്പാൻ|m}}, {{t+|ml|പാപ്പാൻ|m}} * {{mya}}: {{t+|my|ဆင်ဦးစီး}}, {{t+|my|ယရည်း}} * {{nor}}: *: {{nob}}: {{t|nb|elefantfører}} * {{rus}}: {{t|ru|махау́т|m}}, {{t|ru|[[пого́нщик]] [[слон|слоно́в]]|m}} * {{fra}}: {{t+|fr|mahout|m}}, {{t+|fr|cornac|m}} * {{fin}}: {{t|fi|norsunajaja}} * {{pan}}: {{t|pa|ਮਹੌਤ}} * {{rkt}}: {{t|rkt|মাহুত}} * {{ron}}: {{t+|ro|cornac}} * {{tam}}: {{t+|ta|பணிக்கன்}}, {{t+|ta|யானைப்பாகன்}} * {{spa}}: {{t|es|mahout|m}}, {{t+|es|cornaca|m}} * {{tel}}: {{t+|te|గజారోహుడు}}, {{t+|te|మావటి}} * {{tha}}: {{t+|th|ควาญ}}, {{t|th|ควาญช้าง}} {{qualifier|của voi chiến}} * {{swe}}: {{t|sv|mahout}} * {{kor}}: {{t|ko|머하웃}} * {{zho}}: *: {{cmn}}: {{t+|cmn|象夫}}, {{t+|cmn|象奴}} {{trans-bottom}} {{-ref-}} {{R:FVDP}} {{topics|vi|Voi|Nghề nghiệp}} mvwkae67zqdvl9nxco7u4irotp9vtgf nhà khoa học 0 199564 2350699 2065550 2026-05-07T07:56:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350699 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhà khoa học''' # [[người|Người]] [[học giả]] [[chuyên]] làm [[công tác]] [[nghiên cứu]] [[khoa học tự nhiên]] hay [[xã hội]]. #: ''Những '''nhà khoa học''' lỗi lạc nhất trong lịch sử.'' {{-trans-}} * {{eng}}: [[scientist]] * {{cat-2}}: [[científic]] {{m}} * {{ido}}: [[ciencisto]] * {{ind}}: [[ilmuwan]] {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Nghề nghiệp/Tiếng Việt]] [[Thể loại:Nhà khoa học/Tiếng Việt]] jrqhlnu95a4m3tompe6t65y0dh8ug77 2350960 2350699 2026-05-07T10:42:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350960 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhà khoa học''' # [[người|Người]] [[học giả]] [[chuyên]] làm [[công tác]] [[nghiên cứu]] [[khoa học tự nhiên]] hay [[xã hội]]. #: ''Những '''nhà khoa học''' lỗi lạc nhất trong lịch sử.'' {{-trans-}} * {{eng}}: [[scientist]] * {{cat-old}}: [[científic]] {{m}} * {{ido}}: [[ciencisto]] * {{ind}}: [[ilmuwan]] {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Nghề nghiệp/Tiếng Việt]] [[Thể loại:Nhà khoa học/Tiếng Việt]] egkwgvz62zmmfz6iw4j8yr76gwk3txz nhiệt hóa học 0 199614 2350700 2019366 2026-05-07T07:56:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350700 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-alternative form-}} * [[nhiệt hoá học]] {{-etym-}} {{etym-translit|lang=Hani|term=熱化學}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhiệt hóa học''' # {{term|Hóa lý}} [[ngành|Ngành]] [[học]] [[nghiên cứu]] sự [[biến hóa]] của [[nhiệt năng]] khi các [[chất]] [[phản ứng]] với nhau. {{-trans-}} {{trans-top|Ngành học nghiên cứu sự biến hóa của nhiệt năng khi các chất phản ứng với nhau}} * {{ara}}: [[كيمياء حرارية]] * {{eng}}: [[thermochemistry]] * {{aze}}: [[termokimya]] * {{pol}}: [[termochemia]] * {{fas}}: [[گرماشیمی]] ,[[ترموشیمی]] * {{eus}}: [[termokimika]] * {{bel}}: [[тэрмахімія]] * {{ben}}: [[তাপ-রসায়ন]] * {{bos}}: [[termohemija]] * {{por}}: [[termoquímica#Tiếng Bồ Đào Nha|termoquímica]] {{f}} * {{bul}}: [[термохимия]] * {{cat-2}}: [[termoquímica#Tiếng Catalan|termoquímica]] {{f}} * {{hrv}}: [[termokemija]] * {{deu}}: [[Thermochemie]] {{f}} * {{est}}: [[termokeemia]] * {{hin}}: [[उष्मारसायन]] * {{hun}}: [[termokémia]] * {{ell}}: [[θερμοχημεία]] {{f}} (thermochimeía) * {{ido}}: [[termokemio]] * {{ind}}: [[termokimia]] * {{gle}}: [[teirmiceimic]] * {{kaz}}: [[термохимия]] * {{msa}}: [[termokimia]] * {{nob}}: [[termokjemi]] * {{rus}}: [[термохимия]] {{f}} * {{jpn}}: [[熱化学]] (ねつかがく) * {{oci}}: [[termoquimia]] * {{fra}}: [[thermochimie]] {{f}} * {{fin}}: [[lämpökemia]], [[termokemia]] * {{ron}}: [[termochimie]] * {{sin}}: [[තාප රසායනය]] * {{ces}}: [[termochemie]] * {{srp}}: [[термохемија]] * {{scr}}: [[termohemija]] * {{slk}}: [[termochémia]], [[chemická termodynamika]] * {{slv}}: [[termokemija]] * {{tgl}}: [[initkapnayan]] * {{tam}}: [[வெப்ப வேதியியல்]], [[வெப்பவிரசாயனவியல்]] * {{spa}}: [[termoquímica#Tiếng Tây Ban Nha|termoquímica]] {{f}} * {{tha}}: [[อุณหเคมี]], [[เคมีความร้อน]] * {{tur}}: [[termokimya]] * {{swe}}: [[termokemi]] * {{zho}}: [[熱化學]], [[热化学]] * {{ukr}}: [[термохімія]] * {{ita}}: [[termochimica]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vie:Hóa lý]] th1xi6axp0ca1yh7ry0udv8f6bo0yrv 2350961 2350700 2026-05-07T10:42:34Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350961 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-alternative form-}} * [[nhiệt hoá học]] {{-etym-}} {{etym-translit|lang=Hani|term=熱化學}} {{-pron-}} {{vie-pron}} {{-noun-}} '''nhiệt hóa học''' # {{term|Hóa lý}} [[ngành|Ngành]] [[học]] [[nghiên cứu]] sự [[biến hóa]] của [[nhiệt năng]] khi các [[chất]] [[phản ứng]] với nhau. {{-trans-}} {{trans-top|Ngành học nghiên cứu sự biến hóa của nhiệt năng khi các chất phản ứng với nhau}} * {{ara}}: [[كيمياء حرارية]] * {{eng}}: [[thermochemistry]] * {{aze}}: [[termokimya]] * {{pol}}: [[termochemia]] * {{fas}}: [[گرماشیمی]] ,[[ترموشیمی]] * {{eus}}: [[termokimika]] * {{bel}}: [[тэрмахімія]] * {{ben}}: [[তাপ-রসায়ন]] * {{bos}}: [[termohemija]] * {{por}}: [[termoquímica#Tiếng Bồ Đào Nha|termoquímica]] {{f}} * {{bul}}: [[термохимия]] * {{cat-old}}: [[termoquímica#Tiếng Catalan|termoquímica]] {{f}} * {{hrv}}: [[termokemija]] * {{deu}}: [[Thermochemie]] {{f}} * {{est}}: [[termokeemia]] * {{hin}}: [[उष्मारसायन]] * {{hun}}: [[termokémia]] * {{ell}}: [[θερμοχημεία]] {{f}} (thermochimeía) * {{ido}}: [[termokemio]] * {{ind}}: [[termokimia]] * {{gle}}: [[teirmiceimic]] * {{kaz}}: [[термохимия]] * {{msa}}: [[termokimia]] * {{nob}}: [[termokjemi]] * {{rus}}: [[термохимия]] {{f}} * {{jpn}}: [[熱化学]] (ねつかがく) * {{oci}}: [[termoquimia]] * {{fra}}: [[thermochimie]] {{f}} * {{fin}}: [[lämpökemia]], [[termokemia]] * {{ron}}: [[termochimie]] * {{sin}}: [[තාප රසායනය]] * {{ces}}: [[termochemie]] * {{srp}}: [[термохемија]] * {{scr}}: [[termohemija]] * {{slk}}: [[termochémia]], [[chemická termodynamika]] * {{slv}}: [[termokemija]] * {{tgl}}: [[initkapnayan]] * {{tam}}: [[வெப்ப வேதியியல்]], [[வெப்பவிரசாயனவியல்]] * {{spa}}: [[termoquímica#Tiếng Tây Ban Nha|termoquímica]] {{f}} * {{tha}}: [[อุณหเคมี]], [[เคมีความร้อน]] * {{tur}}: [[termokimya]] * {{swe}}: [[termokemi]] * {{zho}}: [[熱化學]], [[热化学]] * {{ukr}}: [[термохімія]] * {{ita}}: [[termochimica]] {{f}} {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vie:Hóa lý]] ot2fjig5ahfu30i1hkh2k08qzkod30i họ 0 200029 2350701 2114772 2026-05-07T07:56:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350701 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-họ.wav|Âm thanh (TP.HCM)}} {{-nôm-}} {{đầu}} * [[𣱆]]: '''họ''' * [[󰈭]]: '''họ''' * [[户]]: hộ, '''họ''', hụ {{giữa}} * [[戶]]: hộ, '''họ''' * [[戸]]: hộ, '''họ''' * [[𢩜]]: '''họ''' {{bottom}} {{-paro-}} {{đầu}} * {{vi-l|ho}} * {{vi-l|hò}} * {{vi-l|hô}} * {{vi-l|hồ}} * {{vi-l|hố}} * {{vi-l|hộ}} {{giữa}} * {{vi-l|hổ}} * {{vi-l|hỗ}} * {{vi-l|hơ}} * {{vi-l|hờ}} * {{vi-l|hớ}} * {{vi-l|hở}} {{cuối}} {{-noun-}} {{vie-noun}} # Khối người cùng [[tổ tiên]], cùng [[dòng máu]]. #: {{ux|vi|Thấy người sang bắt quàng làm '''họ'''. {{q|tục ngữ}}}} # Một phần trong [[tên gọi]] đầy đủ của một người, cho biết người đó thuộc về [[gia đình]], [[gia tộc]] hay [[dòng dõi]] nào. #: {{ux|vi|Dân Đông Á dùng '''họ''' trước tên sau. Người Tây dùng tên trước '''họ''' sau.}} # {{label|vi|phân loại học}} Đơn vị [[phân loại]] [[sinh học]], dưới [[bộ]], trên [[chi]]. #: {{ux|vi|Cây lúa, cây ngô, cây mía thuộc '''họ''' Hoà thảo.}} # [[tổ chức|Tổ chức]] [[góp]] [[tiền]], góp [[gạo]] từng [[tháng]] để người nào cần trước thì [[lấy]] trước cả số tiền chung. #* {{w|Hoàng Đạo Thúy}}: #*: {{quote|vi|Các bà bán hàng hay chơi '''họ''' với nhau để cho khi cần, ai cũng có vốn được.}} {{-drv-}} {{đầu}} * {{vi-l|dòng họ}} * {{vi-l|họ đạo}} * {{vi-l|họ đương}} * {{vi-l|họ hàng}} * {{vi-l|họ mạc}} * {{vi-l|họ ngoại}} * {{vi-l|họ nội}} * {{vi-l|tên họ}} * {{vi-l|trăm họ}} * {{vi-l|trưởng họ}} {{cuối}} {{-related-}} * {{list:taxonomy/vi}} {{-trans-}} {{trans-top|Một phần trong tên gọi đầy đủ của một người}} {{multitrans|data= * {{ara}}: {{t2|ar|اِسْم الْعَائِلَة|m}} * {{sqi}}: {{tt+|sq|mbiemër|m}} * {{eng}}: {{tt+|en|family name}}, {{tt+|en|surname}} * {{ast}}: {{tt+|ast|apellíu|m}} * {{aze}}: {{t2|az|soyad}} {{trans-bottom}} {{trans-top|Đơn vị phân loại sinh học}} * {{afr}}: {{tt+|af|familie}} * {{eng}}: {{t+|en|family}} * {{hye}}: {{tt+|hy|ընտանիք}} * {{aze}}: {{t2|az|fəsilə}} * {{ina}}: {{t2|ia|familia}} * {{bre}}: {{tt+|br|kerentiad|m}} * {{bul}}: {{tt+|bg|семе́йство|n}} * {{cat-2}}: {{tt+|ca|família|f}} * {{heb}}: {{tt+|he|משפחה|f|tr=mishpakhá}} * {{dan}}: {{tt+|da|familie|c}} * {{deu}}: {{tt+|de|Familie|f}} * {{glg}}: {{tt+|gl|familia|f}} * {{nld}}: {{tt+|nl|familie|f}} * {{hun}}: {{tt+|hu|család}} * {{ell}}: {{tt+|el|οικογένεια|f}} * {{isl}}: {{tt+|is|ætt|f}} * {{gle}}: {{t2|ga|fine|f}} * {{mya}}: {{tt+|my|မျိုးရင်း}} * {{jpn}}: {{tt+|ja|科|tr=か, ka}} * {{fra}}: {{tt+|fr|famille|f}} * {{fin}}: {{tt+|fi|heimo}} * {{epo}}: {{tt+|eo|familio}} * {{ces}}: {{tt+|cs|čeleď|f}} * {{zho}}: ** {{nan}}: {{tt+|nan|科|tr=kho}} ** {{cmn}}: {{tt+|cmn|科|tr=kē}} ** {{yue}}: {{t2|yue|科|tr=fo1}} * {{ita}}: {{tt+|it|famiglia|f}} }} {{trans-bottom}} {{-adjc-}} {{vie-adj}} # Có [[quan hệ]] [[họ hàng]], nhưng không phải [[ruột thịt]]. #: {{ux|vi|Anh chị em '''họ'''.}} {{-pronoun-}} {{vie-pronoun}} # Đại từ [[ngôi thứ ba]] [[số nhiều]]. #: {{ux|vi|Những anh ấy cứ tưởng là '''họ''' hơn hẳn mọi người.}} #: {{ux|vi|Có mấy người đến, nhưng '''họ''' lại đi rồi.}} {{-interj-}} {{vie-interj}} # Tiếng người đi [[cày]] dùng để [[bảo]] [[trâu]] [[dừng lại]]. #: {{ux|vi|Sáng tai '''họ''', điếc tai cày. {{q|tục ngữ}}}} {{-ref-}} {{R:FVDP}} * Từ điển tiếng Việt - Viện Ngôn ngữ học (Hoàng Phê chủ biên) - 2003 {{R:WinVNKey:Lê Sơn Thanh}} essw5arinrlexkbgdejn058e1uh4ot3 2350962 2350701 2026-05-07T10:42:37Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350962 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} * {{audio|vi|LL-Q9199 (vie)-Jessica Nguyen (Pamputt)-họ.wav|Âm thanh (TP.HCM)}} {{-nôm-}} {{đầu}} * [[𣱆]]: '''họ''' * [[󰈭]]: '''họ''' * [[户]]: hộ, '''họ''', hụ {{giữa}} * [[戶]]: hộ, '''họ''' * [[戸]]: hộ, '''họ''' * [[𢩜]]: '''họ''' {{bottom}} {{-paro-}} {{đầu}} * {{vi-l|ho}} * {{vi-l|hò}} * {{vi-l|hô}} * {{vi-l|hồ}} * {{vi-l|hố}} * {{vi-l|hộ}} {{giữa}} * {{vi-l|hổ}} * {{vi-l|hỗ}} * {{vi-l|hơ}} * {{vi-l|hờ}} * {{vi-l|hớ}} * {{vi-l|hở}} {{cuối}} {{-noun-}} {{vie-noun}} # Khối người cùng [[tổ tiên]], cùng [[dòng máu]]. #: {{ux|vi|Thấy người sang bắt quàng làm '''họ'''. {{q|tục ngữ}}}} # Một phần trong [[tên gọi]] đầy đủ của một người, cho biết người đó thuộc về [[gia đình]], [[gia tộc]] hay [[dòng dõi]] nào. #: {{ux|vi|Dân Đông Á dùng '''họ''' trước tên sau. Người Tây dùng tên trước '''họ''' sau.}} # {{label|vi|phân loại học}} Đơn vị [[phân loại]] [[sinh học]], dưới [[bộ]], trên [[chi]]. #: {{ux|vi|Cây lúa, cây ngô, cây mía thuộc '''họ''' Hoà thảo.}} # [[tổ chức|Tổ chức]] [[góp]] [[tiền]], góp [[gạo]] từng [[tháng]] để người nào cần trước thì [[lấy]] trước cả số tiền chung. #* {{w|Hoàng Đạo Thúy}}: #*: {{quote|vi|Các bà bán hàng hay chơi '''họ''' với nhau để cho khi cần, ai cũng có vốn được.}} {{-drv-}} {{đầu}} * {{vi-l|dòng họ}} * {{vi-l|họ đạo}} * {{vi-l|họ đương}} * {{vi-l|họ hàng}} * {{vi-l|họ mạc}} * {{vi-l|họ ngoại}} * {{vi-l|họ nội}} * {{vi-l|tên họ}} * {{vi-l|trăm họ}} * {{vi-l|trưởng họ}} {{cuối}} {{-related-}} * {{list:taxonomy/vi}} {{-trans-}} {{trans-top|Một phần trong tên gọi đầy đủ của một người}} {{multitrans|data= * {{ara}}: {{t2|ar|اِسْم الْعَائِلَة|m}} * {{sqi}}: {{tt+|sq|mbiemër|m}} * {{eng}}: {{tt+|en|family name}}, {{tt+|en|surname}} * {{ast}}: {{tt+|ast|apellíu|m}} * {{aze}}: {{t2|az|soyad}} {{trans-bottom}} {{trans-top|Đơn vị phân loại sinh học}} * {{afr}}: {{tt+|af|familie}} * {{eng}}: {{t+|en|family}} * {{hye}}: {{tt+|hy|ընտանիք}} * {{aze}}: {{t2|az|fəsilə}} * {{ina}}: {{t2|ia|familia}} * {{bre}}: {{tt+|br|kerentiad|m}} * {{bul}}: {{tt+|bg|семе́йство|n}} * {{cat-old}}: {{tt+|ca|família|f}} * {{heb}}: {{tt+|he|משפחה|f|tr=mishpakhá}} * {{dan}}: {{tt+|da|familie|c}} * {{deu}}: {{tt+|de|Familie|f}} * {{glg}}: {{tt+|gl|familia|f}} * {{nld}}: {{tt+|nl|familie|f}} * {{hun}}: {{tt+|hu|család}} * {{ell}}: {{tt+|el|οικογένεια|f}} * {{isl}}: {{tt+|is|ætt|f}} * {{gle}}: {{t2|ga|fine|f}} * {{mya}}: {{tt+|my|မျိုးရင်း}} * {{jpn}}: {{tt+|ja|科|tr=か, ka}} * {{fra}}: {{tt+|fr|famille|f}} * {{fin}}: {{tt+|fi|heimo}} * {{epo}}: {{tt+|eo|familio}} * {{ces}}: {{tt+|cs|čeleď|f}} * {{zho}}: ** {{nan}}: {{tt+|nan|科|tr=kho}} ** {{cmn}}: {{tt+|cmn|科|tr=kē}} ** {{yue}}: {{t2|yue|科|tr=fo1}} * {{ita}}: {{tt+|it|famiglia|f}} }} {{trans-bottom}} {{-adjc-}} {{vie-adj}} # Có [[quan hệ]] [[họ hàng]], nhưng không phải [[ruột thịt]]. #: {{ux|vi|Anh chị em '''họ'''.}} {{-pronoun-}} {{vie-pronoun}} # Đại từ [[ngôi thứ ba]] [[số nhiều]]. #: {{ux|vi|Những anh ấy cứ tưởng là '''họ''' hơn hẳn mọi người.}} #: {{ux|vi|Có mấy người đến, nhưng '''họ''' lại đi rồi.}} {{-interj-}} {{vie-interj}} # Tiếng người đi [[cày]] dùng để [[bảo]] [[trâu]] [[dừng lại]]. #: {{ux|vi|Sáng tai '''họ''', điếc tai cày. {{q|tục ngữ}}}} {{-ref-}} {{R:FVDP}} * Từ điển tiếng Việt - Viện Ngôn ngữ học (Hoàng Phê chủ biên) - 2003 {{R:WinVNKey:Lê Sơn Thanh}} 89eyj1elpk9ndjod0vclaonbuhm2w9c phó mát 0 200402 2350815 2281360 2026-05-07T08:08:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350815 wikitext text/x-wiki {{-vie-}} {{-info-|Phó mát}} {{-pron-}} {{vie-pron|phó|mát}} {{-paro-}} :* [[pho mát]] {{-etymology-}} {{etym|lang=vie|from= * [[fra:fromage]] }} {{-noun-}} [[Hình:WFromage.png|nhỏ|phải|phó-mát]] '''phó mát''', '''phó-mát''' # [[thức ăn|Thức ăn]] bằng [[sữa]] đã [[đông đặc]] thành [[khối]] [[rắn]] hoặc [[dẻo]], có hoặc không [[lên men]]. {{-syn-}} * [[pho mát]] * [[phô mai]] * [[phô ma]] {{-trans-}} {{đầu}} * {{afr}}: [[kaas]] * {{eng}}: [[cheese]] * {{cat-2}}: [[formatge]] {{g|m}} * {{da}} : [[ost]] {{g|c}} * {{heb}}: [[גבינה]] {{f}} (gviná), [[גְּבִינָה]] {{f}} (gviná) {{giữa}} * {{deu}}: [[Käse]] {{g|m}} * {{fry}} : [[tsiis]] {{g|c}} * {{ell}} : [[τυρί]] {{n}} (tyrí) * {{nld}}: [[kaas]] {{g|m}} * {{hat}}: [[fromaj]] (Haitian Creole) * {{fra}}: [[fromage]] {{g|m}} * {{spa}}: [[queso]] {{g|m}} * {{epo}}: [[fromaĝo]] * {{vol}}: [[fromad]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Ẩm thực phương Tây]] ju2yf0rwi1cb6myrrvzzabmmp3xf46t 2350963 2350815 2026-05-07T10:42:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350963 wikitext text/x-wiki {{-vie-}} {{-info-|Phó mát}} {{-pron-}} {{vie-pron|phó|mát}} {{-paro-}} :* [[pho mát]] {{-etymology-}} {{etym|lang=vie|from= * [[fra:fromage]] }} {{-noun-}} [[Hình:WFromage.png|nhỏ|phải|phó-mát]] '''phó mát''', '''phó-mát''' # [[thức ăn|Thức ăn]] bằng [[sữa]] đã [[đông đặc]] thành [[khối]] [[rắn]] hoặc [[dẻo]], có hoặc không [[lên men]]. {{-syn-}} * [[pho mát]] * [[phô mai]] * [[phô ma]] {{-trans-}} {{đầu}} * {{afr}}: [[kaas]] * {{eng}}: [[cheese]] * {{cat-old}}: [[formatge]] {{g|m}} * {{da}} : [[ost]] {{g|c}} * {{heb}}: [[גבינה]] {{f}} (gviná), [[גְּבִינָה]] {{f}} (gviná) {{giữa}} * {{deu}}: [[Käse]] {{g|m}} * {{fry}} : [[tsiis]] {{g|c}} * {{ell}} : [[τυρί]] {{n}} (tyrí) * {{nld}}: [[kaas]] {{g|m}} * {{hat}}: [[fromaj]] (Haitian Creole) * {{fra}}: [[fromage]] {{g|m}} * {{spa}}: [[queso]] {{g|m}} * {{epo}}: [[fromaĝo]] * {{vol}}: [[fromad]] {{cuối}} {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Ẩm thực phương Tây]] aepos7bqeb9td7s2r6izav5pfux9xer hoá thạch 0 212901 2350702 2140525 2026-05-07T07:57:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350702 wikitext text/x-wiki {{-vie-}} [[Tập tin:Callipteris conferta 34.jpg|nhỏ|'''Hoá thạch''' của một loài thực vật.]] {{-alternative form-}} * {{alter|vi|hóa thạch}} {{-etymology-}} {{vi-etym-sino|化石}} < {{borrowed|vi|ja|化石|tr=kaseki}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[di tích|Di tích]] hoá [[đá]] của [[cổ sinh vật]] để lại ở các tầng đất đá. #: {{ux|vi|Mẫu '''hoá thạch'''.}} #: {{ux|vi|Phát hiện ra '''hoá thạch''' của loài khủng long.}} {{-derived-}} {{col2|vi|á hoá thạch|bán hoá thạch|nhiên liệu hoá thạch|hoá thạch chuyển tiếp|hoá thạch sống}} {{-trans-}} {{trans-top|Di tích hoá đá của cổ sinh vật để lại ở các tầng đất đá}} * {{ara}}: {{t|ar|مُسْتَحَاثَة|f}}, {{t|ar|أُحْفُورَة|f}} * {{eng}}: {{t+|en|fossil}} * {{ast}}: {{t|ast|fósil|m}} * {{pol}}: {{t+|pl|skamieniałość|f}} * {{fas}}: {{t+|fa|فسیل|tr=fosil}}, {{t+|fa|سنگواره|tr=sangvâre}} * {{bel}}: {{t|be|вы́капень|m}}, {{t|be|скамяне́ласць|f}} * {{por}}: {{t+|pt|fóssil}} * {{bul}}: {{t+|bg|вкаменелост|f|sc=Cyrl}} * {{cat-2}}: {{t|ca|fòssil|m}} * {{dan}}: {{t+|da|fossil|n}} * {{deu}}: {{t+|de|Fossil|n}} * {{gl}}: {{t+|gl|fósil|m}} * {{nld}}: {{t+|nl|fossiel|n}} * {{hin}}: {{t|hi|जीवाश्म|m}} * {{ell}}: {{t+|el|απολίθωμα|n}} * {{isl}}: {{t|is|steingervingur|m}} * {{ido}}: {{t+|io|fosilo}} * {{ind}}: {{t+|id|fosil}} * {{ga}}: {{t|ga|iontaise|f}} * {{khm}}: {{t|km|ហ្វូស៊ីល}}, {{t|km|បាសាណីភូត}} * {{lao}}: {{t+|lo|ຊາກຊີວະບູຮານ}} * {{lat}} {{t|la|fossilis|m}} * {{lav}}: {{t|lv|fosilija|f}}, {{t|lv|pārakmeņojums|m}} * {{ms}}: {{t+|ms|fosil}} * {{mkd}}: {{t|mk|фоси́л|m}} * {{mri}}: {{t|mi|mātātoka}} * {{nor}}: *: {{nob}}: {{t+|nb|fossil|m|n}} *: {{nno}}: {{t|nn|fossil|n}} * {{rus}}: {{t+|ru|ископа́емое|n}}, {{t+|ru|окамене́лость|f}} * {{jpn}}: {{t+|ja|化石|tr=かせき, kaseki|sc=Jpan}} * {{nrf}}: {{t|nrf|fossile|f}} * {{fra}}: {{t+|fr|fossile|m}} * {{fin}}: {{t+|fi|fossiili}} * {{epo}}: {{t|eo|fosilio}} * {{ro}}: {{t+|ro|fosilă|f}} * {{ces}}: {{t|cs|zkamenělina|f}}, {{t+|cs|fosilie|f}} * {{sh}}: *: {{Latn}}: {{t+|sh|fòsīl|m}} *: {{Cyrl}}: {{t|sh|фо̀сӣл|m}} * {{slk}}: {{t|sk|skamenelina|f}} * {{slv}}: {{t+|sl|fosil|m}}, {{t|sl|okamenina|f}} * {{tgl}}: {{t|tl|hayto}} * {{es}}: {{t+|es|fósil|m}} * {{tha}}: {{t+|th|ฟอสซิล}}, {{t|th|ซากดึกดำบรรพ์}} * {{tur}}: {{t+|tr|fosil}}, {{t+|tr|taşıl}} * {{sv}}: {{t+|sv|fossil|n}} * {{kor}}: {{t+|ko|화석(化石)}} * {{zho}}: *: {{cmn}}: {{t+|cmn|化石}} * {{ukr}}: {{t|uk|копа́лина|f}}, {{t|uk|скам'яні́лість|f}} * {{ita}}: {{t+|it|fossile|m}} * {{yid}}: {{t|yi|פֿאָסיל|m}} * {{yo}}: {{t|yo|àkẹ̀kù}} {{trans-bottom}} {{-reference-}} {{R:Tratu|vn|vn}} {{-further-}} * {{pedia|Hóa thạch}} {{R:FVDP|hóa thạch}} {{C|vi|Cổ sinh vật học}} ishjflhephazvo48ilud9fumca44c46 2350964 2350702 2026-05-07T10:42:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350964 wikitext text/x-wiki {{-vie-}} [[Tập tin:Callipteris conferta 34.jpg|nhỏ|'''Hoá thạch''' của một loài thực vật.]] {{-alternative form-}} * {{alter|vi|hóa thạch}} {{-etymology-}} {{vi-etym-sino|化石}} < {{borrowed|vi|ja|化石|tr=kaseki}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun}} # [[di tích|Di tích]] hoá [[đá]] của [[cổ sinh vật]] để lại ở các tầng đất đá. #: {{ux|vi|Mẫu '''hoá thạch'''.}} #: {{ux|vi|Phát hiện ra '''hoá thạch''' của loài khủng long.}} {{-derived-}} {{col2|vi|á hoá thạch|bán hoá thạch|nhiên liệu hoá thạch|hoá thạch chuyển tiếp|hoá thạch sống}} {{-trans-}} {{trans-top|Di tích hoá đá của cổ sinh vật để lại ở các tầng đất đá}} * {{ara}}: {{t|ar|مُسْتَحَاثَة|f}}, {{t|ar|أُحْفُورَة|f}} * {{eng}}: {{t+|en|fossil}} * {{ast}}: {{t|ast|fósil|m}} * {{pol}}: {{t+|pl|skamieniałość|f}} * {{fas}}: {{t+|fa|فسیل|tr=fosil}}, {{t+|fa|سنگواره|tr=sangvâre}} * {{bel}}: {{t|be|вы́капень|m}}, {{t|be|скамяне́ласць|f}} * {{por}}: {{t+|pt|fóssil}} * {{bul}}: {{t+|bg|вкаменелост|f|sc=Cyrl}} * {{cat-old}}: {{t|ca|fòssil|m}} * {{dan}}: {{t+|da|fossil|n}} * {{deu}}: {{t+|de|Fossil|n}} * {{gl}}: {{t+|gl|fósil|m}} * {{nld}}: {{t+|nl|fossiel|n}} * {{hin}}: {{t|hi|जीवाश्म|m}} * {{ell}}: {{t+|el|απολίθωμα|n}} * {{isl}}: {{t|is|steingervingur|m}} * {{ido}}: {{t+|io|fosilo}} * {{ind}}: {{t+|id|fosil}} * {{ga}}: {{t|ga|iontaise|f}} * {{khm}}: {{t|km|ហ្វូស៊ីល}}, {{t|km|បាសាណីភូត}} * {{lao}}: {{t+|lo|ຊາກຊີວະບູຮານ}} * {{lat}} {{t|la|fossilis|m}} * {{lav}}: {{t|lv|fosilija|f}}, {{t|lv|pārakmeņojums|m}} * {{ms}}: {{t+|ms|fosil}} * {{mkd}}: {{t|mk|фоси́л|m}} * {{mri}}: {{t|mi|mātātoka}} * {{nor}}: *: {{nob}}: {{t+|nb|fossil|m|n}} *: {{nno}}: {{t|nn|fossil|n}} * {{rus}}: {{t+|ru|ископа́емое|n}}, {{t+|ru|окамене́лость|f}} * {{jpn}}: {{t+|ja|化石|tr=かせき, kaseki|sc=Jpan}} * {{nrf}}: {{t|nrf|fossile|f}} * {{fra}}: {{t+|fr|fossile|m}} * {{fin}}: {{t+|fi|fossiili}} * {{epo}}: {{t|eo|fosilio}} * {{ro}}: {{t+|ro|fosilă|f}} * {{ces}}: {{t|cs|zkamenělina|f}}, {{t+|cs|fosilie|f}} * {{sh}}: *: {{Latn}}: {{t+|sh|fòsīl|m}} *: {{Cyrl}}: {{t|sh|фо̀сӣл|m}} * {{slk}}: {{t|sk|skamenelina|f}} * {{slv}}: {{t+|sl|fosil|m}}, {{t|sl|okamenina|f}} * {{tgl}}: {{t|tl|hayto}} * {{es}}: {{t+|es|fósil|m}} * {{tha}}: {{t+|th|ฟอสซิล}}, {{t|th|ซากดึกดำบรรพ์}} * {{tur}}: {{t+|tr|fosil}}, {{t+|tr|taşıl}} * {{sv}}: {{t+|sv|fossil|n}} * {{kor}}: {{t+|ko|화석(化石)}} * {{zho}}: *: {{cmn}}: {{t+|cmn|化石}} * {{ukr}}: {{t|uk|копа́лина|f}}, {{t|uk|скам'яні́лість|f}} * {{ita}}: {{t+|it|fossile|m}} * {{yid}}: {{t|yi|פֿאָסיל|m}} * {{yo}}: {{t|yo|àkẹ̀kù}} {{trans-bottom}} {{-reference-}} {{R:Tratu|vn|vn}} {{-further-}} * {{pedia|Hóa thạch}} {{R:FVDP|hóa thạch}} {{C|vi|Cổ sinh vật học}} pl3a5ze9crimze4c7tm9zui72upe8of tiêu chuẩn hoá 0 213207 2350703 2141015 2026-05-07T07:57:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350703 wikitext text/x-wiki {{-vie-}} {{-info-|tiêu chuẩn hóa}} {{-alternative form-}} * {{alter|vi|tiêu chuẩn hóa}} {{-etym-}} {{vie-etym-sino|標準化}}. {{-pron-}} {{vie-pron}} {{-verb-}} {{vie-verb|head=[[tiêu chuẩn]] [[hoá]]}} # Làm cho [[trở thành]] [[mẫu mực]] [[chính xác]]. #: {{ux|vi|'''Tiêu chuẩn hoá''' các đơn vị đo lường.}} {{-trans-}} {{trans-top|Làm cho trở thành mẫu mực chính xác}} * {{eng}}: {{t+|en|standardise}} * {{ast}}: {{t|ast|estandarizar}} * {{por}}: {{t+|pt|estandardizar}}, {{t+|pt|standardizar}}, {{t+|pt|padronizar}} * {{cat-2}}: {{t+|ca|estandarditzar}} * {{deu}}: {{t+|de|standardisieren}} * {{glg}}: {{t|gl|estandarizar}} * {{ell}}: {{t+|el|τυποποιώ}} * {{kk}}: {{t|kk|стандарттау}} * {{rus}}: {{t+|ru|стандартизи́ровать|impf|pf}} * {{jpn}}: {{t|ja|標準化|tr=ひょうじゅんかする, hyōjunka suru|alt=標準化する|sc=Jpan}} * {{fra}}: {{t+|fr|standardiser}}, {{t+|fr|normaliser}} * {{fin}}: {{t|fi|standardisoida}} * {{ron}}: {{t+|ro|standardiza}} * {{ces}}: {{t|cs|standardizovat}} * {{slv}}: {{t|sl|standardizírati}} * {{tgl}}: {{t|tl|isapamantayan}} * {{spa}}: {{t+|es|estandarizar}} * {{swe}}: {{t+|sv|standardisera}} * {{zho}}: *: {{yue}}: {{t|yue|標準化}}, {{t|yue|标准化|tr=biu1 zeon2 faa3}} *: {{cmn}}: {{t+|cmn|標準化|sc=Hani}}, {{t+|cmn|标准化|tr=biāozhǔnhuà|sc=Hani}} * {{ukr}}: {{t|uk|стандартизува́ти|impf|pf}} * {{ita}}: {{t+|it|standardizzare}} {{trans-bottom}} {{-reference-}} {{R:FVDP|tiêu chuẩn hóa}} 1ohct1q3vxbedb4abm3atu8junenxbt 2350965 2350703 2026-05-07T10:42:46Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350965 wikitext text/x-wiki {{-vie-}} {{-info-|tiêu chuẩn hóa}} {{-alternative form-}} * {{alter|vi|tiêu chuẩn hóa}} {{-etym-}} {{vie-etym-sino|標準化}}. {{-pron-}} {{vie-pron}} {{-verb-}} {{vie-verb|head=[[tiêu chuẩn]] [[hoá]]}} # Làm cho [[trở thành]] [[mẫu mực]] [[chính xác]]. #: {{ux|vi|'''Tiêu chuẩn hoá''' các đơn vị đo lường.}} {{-trans-}} {{trans-top|Làm cho trở thành mẫu mực chính xác}} * {{eng}}: {{t+|en|standardise}} * {{ast}}: {{t|ast|estandarizar}} * {{por}}: {{t+|pt|estandardizar}}, {{t+|pt|standardizar}}, {{t+|pt|padronizar}} * {{cat-old}}: {{t+|ca|estandarditzar}} * {{deu}}: {{t+|de|standardisieren}} * {{glg}}: {{t|gl|estandarizar}} * {{ell}}: {{t+|el|τυποποιώ}} * {{kk}}: {{t|kk|стандарттау}} * {{rus}}: {{t+|ru|стандартизи́ровать|impf|pf}} * {{jpn}}: {{t|ja|標準化|tr=ひょうじゅんかする, hyōjunka suru|alt=標準化する|sc=Jpan}} * {{fra}}: {{t+|fr|standardiser}}, {{t+|fr|normaliser}} * {{fin}}: {{t|fi|standardisoida}} * {{ron}}: {{t+|ro|standardiza}} * {{ces}}: {{t|cs|standardizovat}} * {{slv}}: {{t|sl|standardizírati}} * {{tgl}}: {{t|tl|isapamantayan}} * {{spa}}: {{t+|es|estandarizar}} * {{swe}}: {{t+|sv|standardisera}} * {{zho}}: *: {{yue}}: {{t|yue|標準化}}, {{t|yue|标准化|tr=biu1 zeon2 faa3}} *: {{cmn}}: {{t+|cmn|標準化|sc=Hani}}, {{t+|cmn|标准化|tr=biāozhǔnhuà|sc=Hani}} * {{ukr}}: {{t|uk|стандартизува́ти|impf|pf}} * {{ita}}: {{t+|it|standardizzare}} {{trans-bottom}} {{-reference-}} {{R:FVDP|tiêu chuẩn hóa}} 7178ysp99albv59crddznpmdzzcgatr Hồ Chí Minh 0 214272 2350704 2131578 2026-05-07T07:57:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350704 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Hồ|Chí|Minh}} {{pron-audio |place=Nam Bộ Việt Nam |file=HoChiMinh.ogg |pron=}} {{-translit-}} * {{Cyrl}}: [[Хо Ши Мин]] * {{Hani}}: [[胡志明]] {{-pr-noun-}} '''Hồ Chí Minh''' # Tên một nhà [[cách mạng]], [[chủ tịch nước]] [[đầu tiên]] của chính thể [[Việt Nam Dân chủ Cộng hòa]]. # {{see-entry|Thành phố Hồ Chí Minh}} {{-trans-}} ; nhà cách mạng {{đầu}} * {{ara}}: [[هو تشي منه]] * {{bul}}: [[Хо Ши Мин]] * {{cat-2}}: [[Ho Chi Minh]] * {{ces}}: [[Ho Či Min]] * {{dan}}: [[Ho Chi Minh]] * {{deu}}: [[Ho Chi Minh]] * {{eng}}: [[Ho Chi Minh]] * {{epo}}: [[Ho Chi Minh|HO Chi Minh]] * {{eus}}: [[Ho Chi Minh]] * {{fas}}: [[هو شی مین]] * {{fra}}: [[Hô Chi Minh]] * {{glg}}: [[Ho Chi Minh]] * {{kor}}: [[호찌민]] * {{heb}}: [[הו צ'י מין]] * {{hrv}}: [[Ho Ši Min]] * {{hun}}: [[Ho Si Minh]] * {{ido}}: [[Ho Chi Minh]] {{giữa}} * {{ind}}: [[Ho Chi Minh]] * {{ita}}: [[Ho Chi Minh]] * {{jpn}}: [[ホー・チ・ミン]] * {{lit}}: [[Ho Ši Minas]] * {{nld}}: [[Ho Chi Minh]] * {{nno}}: [[Ho Chi Minh]] * {{nor}}: [[Ho Chi Minh]] * {{pol}}: [[Ho Chi Minh]] * {{por}}: [[Ho Chi Minh]] * {{ron}}: [[Ho Chi Minh]] * {{rus}}: [[Хо Ши Мин]] * {{slk}}: [[Ho Či Min]] * {{spa}}: [[Ho Chi Minh]] * {{srp}}: [[Хо Ши Мин]] * {{swe}}: [[Ho Chi Minh]] * {{zho}}: [[胡志明]] {{cuối}} {{-syn-}} ; nhà cách mạng * [[Nguyễn Tất Thành]] * [[Nguyễn Ái Quốc]] * [[Lý Thụy]] * [[Hồ Quang]] * [[Bác Hồ]] * [[Cụ Hồ]] * [[Ông Ké]] {{term|địa phương}} * [[Nguyễn Sinh Cung]] * [[Nguyễn Sinh Côông]] {{term|địa phương}} * [[Tất Thành]] * [[Văn Ba]] * [[Lý Thụy]] * [[Thầu Chín]] * [[Tống Văn Sơ]] * [[Lin]] * [[Già Thu]] ; thành phố * [[Sài Gòn]] {{term|cũ}} {{-drv-}} ; nhà cách mạng * [[HCM]] ; thành phố * [[Thành phố Hồ Chí Minh]] * [[TpHCM]] * [[TPHCM]] [[Thể loại:Danh từ riêng tiếng Việt]] jemms4lkddlqmcyni7zz7gqmz2opu32 2350966 2350704 2026-05-07T10:42:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350966 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Hồ|Chí|Minh}} {{pron-audio |place=Nam Bộ Việt Nam |file=HoChiMinh.ogg |pron=}} {{-translit-}} * {{Cyrl}}: [[Хо Ши Мин]] * {{Hani}}: [[胡志明]] {{-pr-noun-}} '''Hồ Chí Minh''' # Tên một nhà [[cách mạng]], [[chủ tịch nước]] [[đầu tiên]] của chính thể [[Việt Nam Dân chủ Cộng hòa]]. # {{see-entry|Thành phố Hồ Chí Minh}} {{-trans-}} ; nhà cách mạng {{đầu}} * {{ara}}: [[هو تشي منه]] * {{bul}}: [[Хо Ши Мин]] * {{cat-old}}: [[Ho Chi Minh]] * {{ces}}: [[Ho Či Min]] * {{dan}}: [[Ho Chi Minh]] * {{deu}}: [[Ho Chi Minh]] * {{eng}}: [[Ho Chi Minh]] * {{epo}}: [[Ho Chi Minh|HO Chi Minh]] * {{eus}}: [[Ho Chi Minh]] * {{fas}}: [[هو شی مین]] * {{fra}}: [[Hô Chi Minh]] * {{glg}}: [[Ho Chi Minh]] * {{kor}}: [[호찌민]] * {{heb}}: [[הו צ'י מין]] * {{hrv}}: [[Ho Ši Min]] * {{hun}}: [[Ho Si Minh]] * {{ido}}: [[Ho Chi Minh]] {{giữa}} * {{ind}}: [[Ho Chi Minh]] * {{ita}}: [[Ho Chi Minh]] * {{jpn}}: [[ホー・チ・ミン]] * {{lit}}: [[Ho Ši Minas]] * {{nld}}: [[Ho Chi Minh]] * {{nno}}: [[Ho Chi Minh]] * {{nor}}: [[Ho Chi Minh]] * {{pol}}: [[Ho Chi Minh]] * {{por}}: [[Ho Chi Minh]] * {{ron}}: [[Ho Chi Minh]] * {{rus}}: [[Хо Ши Мин]] * {{slk}}: [[Ho Či Min]] * {{spa}}: [[Ho Chi Minh]] * {{srp}}: [[Хо Ши Мин]] * {{swe}}: [[Ho Chi Minh]] * {{zho}}: [[胡志明]] {{cuối}} {{-syn-}} ; nhà cách mạng * [[Nguyễn Tất Thành]] * [[Nguyễn Ái Quốc]] * [[Lý Thụy]] * [[Hồ Quang]] * [[Bác Hồ]] * [[Cụ Hồ]] * [[Ông Ké]] {{term|địa phương}} * [[Nguyễn Sinh Cung]] * [[Nguyễn Sinh Côông]] {{term|địa phương}} * [[Tất Thành]] * [[Văn Ba]] * [[Lý Thụy]] * [[Thầu Chín]] * [[Tống Văn Sơ]] * [[Lin]] * [[Già Thu]] ; thành phố * [[Sài Gòn]] {{term|cũ}} {{-drv-}} ; nhà cách mạng * [[HCM]] ; thành phố * [[Thành phố Hồ Chí Minh]] * [[TpHCM]] * [[TPHCM]] [[Thể loại:Danh từ riêng tiếng Việt]] d0yu9f1yqcshnqgszk9jjghqig91pau tiếng Yiddish 0 214331 2350705 2083642 2026-05-07T07:57:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350705 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Y|đít}} {{-etymology-}} {{etym-from | lang = vie | term = tiếng | 2 lang = eng | 2 term = Yiddish | 2 from = {{etym-from | lang = yid | term = ייִדיש | from = {{etym-from | rom = [[Yidish Daytsh]], [[Jidisch Dajtsch]], [[Judendeutsch]] | meaning = tiếng [[Do Thái]]–[[Đức]] }} }} }} Cùng gốc với [[tiếng Đức]] ''[[jüdisch]]''. {{-pr-noun-}} '''tiếng Yiddish''', [[yi]] ([[ISO]] 639-1), [[yid]] (ISO 639-2) #[[ngôn ngữ|Ngôn ngữ]] [[bắt]] [[nguồn]] từ [[tiếng Đức]] [[chuẩn]] của [[miền]] [[trung]], và [[viết]] bằng [[chữ]] [[Do Thái]], dùng chính với [[người Do Thái]] [[sinh trưởng]] ở [[Đức]]. {{-syn-}} *[[tiếng I-đít]] {{-trans-}} {{đầu}} * {{eng}}: [[Yiddish]] * {{pol}}: [[Jidysz]] * {{isl}}: [[Jiddíska]] * {{bel}}: [[Ідыш]] * {{por}}: [[Iídiche]] * {{bre}}: [[Yiddish]] * {{cat-2}}: [[Jiddisch]] * {{dan}}: [[Jiddisk]] * {{heb}}: [[יידיש]] * {{deu}}: [[Jiddisch]] * {{nld}}: [[Jiddisch]] * {{hun}}: [[Jiddis]] * {{ell}}: [[Γίντις]] * {{gle}}: [[Giúdais]] * {{lav}}: [[Jidišs]] {{giữa}} * {{mdf}}: [[Идиш]] * {{rus}}: [[Идиш]] * {{jpn}}: [[イディッシュ語]] * {{fin}}: [[jiddiš]] * {{fra}}: [[Yiddish]] * {{ces}}: [[Jidiš]] * {{wen}}: [[Jiddišćina]] * {{spa}}: [[Yiddish]] * {{tha}}: [[ภาษายิดดิช]] * {{swe}}: [[Jiddisch]] * {{zho}}: [[意第绪语]] ([[ý|Ý]] [[đệ|Đệ]] [[tự|Tự]] [[ngữ]], ''yìdìxù yŭ'') * {{wln}}: [[Yidish]] * {{ita}}: [[Yiddish]] * {{yid}}: [[ייִדיש]], [[ייִדדיש]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Yiddish]] [[Thể loại:Danh từ riêng tiếng Việt]] 15esrog0m93qron38n77vwv4pfd7hfv 2350967 2350705 2026-05-07T10:42:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350967 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Y|đít}} {{-etymology-}} {{etym-from | lang = vie | term = tiếng | 2 lang = eng | 2 term = Yiddish | 2 from = {{etym-from | lang = yid | term = ייִדיש | from = {{etym-from | rom = [[Yidish Daytsh]], [[Jidisch Dajtsch]], [[Judendeutsch]] | meaning = tiếng [[Do Thái]]–[[Đức]] }} }} }} Cùng gốc với [[tiếng Đức]] ''[[jüdisch]]''. {{-pr-noun-}} '''tiếng Yiddish''', [[yi]] ([[ISO]] 639-1), [[yid]] (ISO 639-2) #[[ngôn ngữ|Ngôn ngữ]] [[bắt]] [[nguồn]] từ [[tiếng Đức]] [[chuẩn]] của [[miền]] [[trung]], và [[viết]] bằng [[chữ]] [[Do Thái]], dùng chính với [[người Do Thái]] [[sinh trưởng]] ở [[Đức]]. {{-syn-}} *[[tiếng I-đít]] {{-trans-}} {{đầu}} * {{eng}}: [[Yiddish]] * {{pol}}: [[Jidysz]] * {{isl}}: [[Jiddíska]] * {{bel}}: [[Ідыш]] * {{por}}: [[Iídiche]] * {{bre}}: [[Yiddish]] * {{cat-old}}: [[Jiddisch]] * {{dan}}: [[Jiddisk]] * {{heb}}: [[יידיש]] * {{deu}}: [[Jiddisch]] * {{nld}}: [[Jiddisch]] * {{hun}}: [[Jiddis]] * {{ell}}: [[Γίντις]] * {{gle}}: [[Giúdais]] * {{lav}}: [[Jidišs]] {{giữa}} * {{mdf}}: [[Идиш]] * {{rus}}: [[Идиш]] * {{jpn}}: [[イディッシュ語]] * {{fin}}: [[jiddiš]] * {{fra}}: [[Yiddish]] * {{ces}}: [[Jidiš]] * {{wen}}: [[Jiddišćina]] * {{spa}}: [[Yiddish]] * {{tha}}: [[ภาษายิดดิช]] * {{swe}}: [[Jiddisch]] * {{zho}}: [[意第绪语]] ([[ý|Ý]] [[đệ|Đệ]] [[tự|Tự]] [[ngữ]], ''yìdìxù yŭ'') * {{wln}}: [[Yidish]] * {{ita}}: [[Yiddish]] * {{yid}}: [[ייִדיש]], [[ייִדדיש]] {{cuối}} [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Yiddish]] [[Thể loại:Danh từ riêng tiếng Việt]] 9loevw301k2jycfguqpbpo7flhe3ir7 tiếng Bulgari 0 214343 2350706 2083643 2026-05-07T07:57:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350706 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Bun|ga|ri}} {{-pr-noun-}} '''tiếng Bulgari''' ([[ISO]] 639-1: [[bg]]; ISO 639-2: [[bul]]; [[SIL]]: [[BLG]]) # [[ngôn ngữ|Ngôn ngữ]] [[chính thức]] của [[Bulgaria]]. {{-syn-}} * [[tiếng Bung]] * [[tiếng Bungari]] {{-trans-}} {{đầu}} * {{ara}}: [[بلغاري]] * {{afr}}: [[Bulgaars]] * {{sqi}}: [[Bullgarisht]] * {{amh}}: [[ቡልጋሪኛ]] * {{eng}}: [[Bulgarian]] * {{aze}}: [[Болгар]] * {{pol}}: [[Bułgarski]] * {{fas}}: [[بلغاری]] * {{eus}}: [[Bulgariera]] * {{bel}}: [[Баўгарскай]], [[Баўгарская]] * {{por}}: [[búlgaro]] {{m}} * {{ina}}: [[bulgaro]] * {{bre}}: [[Bulgareg]] * {{bul}}: [[български език]] {{m}} * {{cat-2}}: [[Búlgar]] * {{chr}}: [[ᏉᎸᎦᎵ]] * {{hrv}}: [[Bugarski]] * {{dan}}: [[Bulgarsk]] * {{heb}}: [[בולגרית]] * {{deu}}: [[Bulgarisch]] {{n}} * {{est}}: [[Bulgaaria]] * {{fao}}: [[Bulgarskt]] * {{fry}}: [[Bulgaarsk]] * {{nld}}: [[Bulgaars]] * {{hin}}: [[बुलगारी]] * {{hun}}: [[bolgár]] * {{ell}}: [[Βουλγαρικά]] * {{ind}}: [[Bulgaria]] * {{gle}}: [[Búlgaro]] * {{kur}}: [[Bulgarî]], [[Bilgarî]] * {{lav}}: [[Bulgāru]] * {{lit}}: [[Bulgarų]], [[Bulgariškai]] {{giữa}} * {{msa}}: [[Bahasa Bulgaria]], [[Bulgari]] * {{mlt}}: [[Bulgaru]] * {{mdf}}: [[Булгаронь]] * {{mon}}: [[Болгар]] * {{nor}}: [[Bulgarsk]] * {{nep}}: [[बुल्गेरियाली]] * {{rus}}: [[Болгарский]] * {{jpn}}: [[ブルガリア語]] * {{oci}}: [[Bulgar]] * {{fin}}: [[bulgaria]] * {{fra}}: [[bulgare]] * {{ron}}: [[Bulgară]] * {{ces}}: [[Bulharský]] * {{srp}}: [[Бугарски]] * {{slk}}: [[bulharčina]] {{f}} * {{slv}}: [[bolgarščina]] {{f}} * {{wen}}: [[Bołharšćina]], [[Bulgaršćina]] * {{swa}}: [[Kibulgaria]] * {{spa}}: [[Búlgaro]] * {{tha}}: [[ภาษาบัลแกเรีย]] * {{tur}}: [[Bulgarca]] * {{swe}}: [[bulgariska]] * {{kor}}: [[불가리아어]] * {{zho}}: [[保加利亚语]] * {{ukr}}: [[Болгарський]] * {{urd}}: [[لغاري]] * {{vie}}: [[Tiếng Bun-ga-ri]] * {{cym}}: [[Bwlgaraidd]] * {{wln}}: [[Bulgåre]] * {{ita}}: [[Bulgaro]] * {{yid}}: [[בולגאַריש]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Bulgari]] h6znq164p7kx6yt3nuxbm599l9102ii 2350968 2350706 2026-05-07T10:42:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350968 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Bun|ga|ri}} {{-pr-noun-}} '''tiếng Bulgari''' ([[ISO]] 639-1: [[bg]]; ISO 639-2: [[bul]]; [[SIL]]: [[BLG]]) # [[ngôn ngữ|Ngôn ngữ]] [[chính thức]] của [[Bulgaria]]. {{-syn-}} * [[tiếng Bung]] * [[tiếng Bungari]] {{-trans-}} {{đầu}} * {{ara}}: [[بلغاري]] * {{afr}}: [[Bulgaars]] * {{sqi}}: [[Bullgarisht]] * {{amh}}: [[ቡልጋሪኛ]] * {{eng}}: [[Bulgarian]] * {{aze}}: [[Болгар]] * {{pol}}: [[Bułgarski]] * {{fas}}: [[بلغاری]] * {{eus}}: [[Bulgariera]] * {{bel}}: [[Баўгарскай]], [[Баўгарская]] * {{por}}: [[búlgaro]] {{m}} * {{ina}}: [[bulgaro]] * {{bre}}: [[Bulgareg]] * {{bul}}: [[български език]] {{m}} * {{cat-old}}: [[Búlgar]] * {{chr}}: [[ᏉᎸᎦᎵ]] * {{hrv}}: [[Bugarski]] * {{dan}}: [[Bulgarsk]] * {{heb}}: [[בולגרית]] * {{deu}}: [[Bulgarisch]] {{n}} * {{est}}: [[Bulgaaria]] * {{fao}}: [[Bulgarskt]] * {{fry}}: [[Bulgaarsk]] * {{nld}}: [[Bulgaars]] * {{hin}}: [[बुलगारी]] * {{hun}}: [[bolgár]] * {{ell}}: [[Βουλγαρικά]] * {{ind}}: [[Bulgaria]] * {{gle}}: [[Búlgaro]] * {{kur}}: [[Bulgarî]], [[Bilgarî]] * {{lav}}: [[Bulgāru]] * {{lit}}: [[Bulgarų]], [[Bulgariškai]] {{giữa}} * {{msa}}: [[Bahasa Bulgaria]], [[Bulgari]] * {{mlt}}: [[Bulgaru]] * {{mdf}}: [[Булгаронь]] * {{mon}}: [[Болгар]] * {{nor}}: [[Bulgarsk]] * {{nep}}: [[बुल्गेरियाली]] * {{rus}}: [[Болгарский]] * {{jpn}}: [[ブルガリア語]] * {{oci}}: [[Bulgar]] * {{fin}}: [[bulgaria]] * {{fra}}: [[bulgare]] * {{ron}}: [[Bulgară]] * {{ces}}: [[Bulharský]] * {{srp}}: [[Бугарски]] * {{slk}}: [[bulharčina]] {{f}} * {{slv}}: [[bolgarščina]] {{f}} * {{wen}}: [[Bołharšćina]], [[Bulgaršćina]] * {{swa}}: [[Kibulgaria]] * {{spa}}: [[Búlgaro]] * {{tha}}: [[ภาษาบัลแกเรีย]] * {{tur}}: [[Bulgarca]] * {{swe}}: [[bulgariska]] * {{kor}}: [[불가리아어]] * {{zho}}: [[保加利亚语]] * {{ukr}}: [[Болгарський]] * {{urd}}: [[لغاري]] * {{vie}}: [[Tiếng Bun-ga-ri]] * {{cym}}: [[Bwlgaraidd]] * {{wln}}: [[Bulgåre]] * {{ita}}: [[Bulgaro]] * {{yid}}: [[בולגאַריש]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Việt]] [[Thể loại:Tên ngôn ngữ/Tiếng Việt|Bulgari]] 2kr6ygy22s9ced9vkn6iim4j3dk66rh 0 215437 2350437 2350426 2026-05-06T12:07:20Z Kateru Zakuro 34522 2350437 wikitext text/x-wiki =={{langname|zh}}== [[Hình:Regnhlíf.jpg|nhỏ|phải|傘]] {{zh-forms|t2=繖|s=伞|alt=*繖/𦇕/𰬷,𢄻,仐,𠌂,𠍘,𡙫,𠋔,𠎃,𡙘,𰂝,𧝠}} ==={{ĐM|Glyph origin}}=== {{Han etym}} {{liushu|p}} - Hình ảnh minh họa của một chiếc ô. ==={{ĐM|etym}}=== {{rfe|zh|sort=人10}} ==={{ĐM|pron}}=== {{zh-pron |m=sǎn |ma=Zh-san.ogg |m-s=san3 |m-x=sàn |m-nj=sǎn |dg=сан2 |c=saan3 |ca=LL-Q9186-Luilui6666-伞.wav |c-dg=seng3 |c-t=lhan1 |g=san3 |h=pfs=sán;hrs=z:san^;gd=san3 |j=san2 |mb=sǔing |md=sāng |mn=ml,jj,na,ha,yc,ct,zp,tw:sòaⁿ/ml,zp,tw:sàn |mn_note=sòaⁿ - vernacular; sàn - literary |mn-t=suan3 |mn-l=sua3/sang3 |mn-l_note=sua3 - vernacular; sang3 - literary |px=pt:sua3/xy:suann3/pt,xy:sang3 |px_note=sua3/suann3 - vernacular; sang3 - literary |sp=slaan3 |w=sh,sz:5se;jd,sj,zs:5sae;cm:3soe;cz:3sae;hz,sx:3saen;nb:1sae |w-j=3sa,3san |x=san3 |x-l=sann3 |x-h=san3 |mc=y |oc=y |cat=n,a,pn }} ==={{ĐM|definition}}=== {{head/sandbox|zh|hanzi}} # Cái [[ô]], cái [[dù]] #: {{zh-x|雨傘|cái ô}} #: {{zh-x|陽傘|cái dù}} ===={{ĐM|synonyms}}==== * {{s|umbrella}} {{zh-dial}} ==={{ĐM|compound}}=== {{col3|zh|三簷傘|傘兵|傘兵部隊|傘包|和尚打傘|導傘|打傘|拖曳傘|撐傘|旱傘|核傘|油紙傘|洋傘|游湖借傘|火傘|火傘高張|燈傘|萬民傘|禿子打傘|紙傘|網傘菌|菌傘|藍傘|跳傘|跳傘塔|降落傘|陽傘|雨傘|雨傘節|飛行傘|高空跳傘|傘形|傘蓋 }} {{-vie-n-}} {{quốc ngữ|[[tán]], [[tản]], [[tàn]]}} {{-pron-}} {{vie-pron|tán|tản|tàn}} {{-jpn-}} {{-noun-}} '''傘''' ([[かさ]]) # Cái ô, cái dù. [[Thể loại:Danh từ tiếng Quan Thoại]] 3w8qza1q3hsgx18158lx0ed4exqkes3 2350438 2350437 2026-05-06T12:11:01Z Kateru Zakuro 34522 2350438 wikitext text/x-wiki =={{langname|zh}}== [[Hình:Regnhlíf.jpg|nhỏ|phải|傘]] {{zh-forms|t2=繖|s=伞|alt=*繖/𦇕/𰬷,𢄻,仐,𠌂,𠍘,𡙫,𠋔,𠎃,𡙘,𰂝,𧝠}} ==={{ĐM|Glyph origin}}=== {{Han etym}} {{liushu|p}} - Hình ảnh minh họa của một chiếc ô. ==={{ĐM|etym}}=== {{rfe|zh|sort=人10}} ==={{ĐM|pron}}=== {{zh-pron |m=sǎn |ma=Zh-san.ogg |m-s=san3 |m-x=sàn |m-nj=sǎn |dg=сан2 |c=saan3 |ca=LL-Q9186-Luilui6666-伞.wav |c-dg=seng3 |c-t=lhan1 |g=san3 |h=pfs=sán;hrs=z:san^;gd=san3 |j=san2 |mb=sǔing |md=sāng |mn=ml,jj,na,ha,yc,ct,zp,tw:sòaⁿ/ml,zp,tw:sàn |mn_note=sòaⁿ - vernacular; sàn - literary |mn-t=suan3 |mn-l=sua3/sang3 |mn-l_note=sua3 - vernacular; sang3 - literary |px=pt:sua3/xy:suann3/pt,xy:sang3 |px_note=sua3/suann3 - vernacular; sang3 - literary |sp=slaan3 |w=sh,sz:5se;jd,sj,zs:5sae;cm:3soe;cz:3sae;hz,sx:3saen;nb:1sae |w-j=3sa,3san |x=san3 |x-l=sann3 |x-h=san3 |mc=y |oc=y |cat=n,a,pn }} ==={{ĐM|definition}}=== {{head|zh|hanzi}} # Cái [[ô]], cái [[dù]] #: {{zh-x|雨傘|cái ô}} #: {{zh-x|陽傘|cái dù}} ===={{ĐM|synonyms}}==== * {{s|umbrella}} {{zh-dial}} ==={{ĐM|compound}}=== {{col3|zh|三簷傘|傘兵|傘兵部隊|傘包|和尚打傘|導傘|打傘|拖曳傘|撐傘|旱傘|核傘|油紙傘|洋傘|游湖借傘|火傘|火傘高張|燈傘|萬民傘|禿子打傘|紙傘|網傘菌|菌傘|藍傘|跳傘|跳傘塔|降落傘|陽傘|雨傘|雨傘節|飛行傘|高空跳傘|傘形|傘蓋 }} {{-vie-n-}} {{quốc ngữ|[[tán]], [[tản]], [[tàn]]}} {{-pron-}} {{vie-pron|tán|tản|tàn}} {{-jpn-}} {{-noun-}} '''傘''' ([[かさ]]) # Cái ô, cái dù. [[Thể loại:Danh từ tiếng Quan Thoại]] mreixbh9wtrdkxbw74c2gg81ufjhp4t 2350491 2350438 2026-05-06T14:47:49Z TheHighFighter2 42988 /* Định nghĩa */ 2350491 wikitext text/x-wiki =={{langname|zh}}== [[Hình:Regnhlíf.jpg|nhỏ|phải|傘]] {{zh-forms|t2=繖|s=伞|alt=*繖/𦇕/𰬷,𢄻,仐,𠌂,𠍘,𡙫,𠋔,𠎃,𡙘,𰂝,𧝠}} ==={{ĐM|Glyph origin}}=== {{Han etym}} {{liushu|p}} - Hình ảnh minh họa của một chiếc ô. ==={{ĐM|etym}}=== {{rfe|zh|sort=人10}} ==={{ĐM|pron}}=== {{zh-pron |m=sǎn |ma=Zh-san.ogg |m-s=san3 |m-x=sàn |m-nj=sǎn |dg=сан2 |c=saan3 |ca=LL-Q9186-Luilui6666-伞.wav |c-dg=seng3 |c-t=lhan1 |g=san3 |h=pfs=sán;hrs=z:san^;gd=san3 |j=san2 |mb=sǔing |md=sāng |mn=ml,jj,na,ha,yc,ct,zp,tw:sòaⁿ/ml,zp,tw:sàn |mn_note=sòaⁿ - vernacular; sàn - literary |mn-t=suan3 |mn-l=sua3/sang3 |mn-l_note=sua3 - vernacular; sang3 - literary |px=pt:sua3/xy:suann3/pt,xy:sang3 |px_note=sua3/suann3 - vernacular; sang3 - literary |sp=slaan3 |w=sh,sz:5se;jd,sj,zs:5sae;cm:3soe;cz:3sae;hz,sx:3saen;nb:1sae |w-j=3sa,3san |x=san3 |x-l=sann3 |x-h=san3 |mc=y |oc=y |cat=n,a,pn }} ==={{ĐM|definition}}=== {{head|zh|Hanzi}} # Cái [[ô]], cái [[dù]]. #: {{zh-x|雨傘|cái ô}} #: {{zh-x|陽傘|cái dù}} ===={{ĐM|synonyms}}==== * {{s|cái ô}} {{zh-dial}} ==={{ĐM|compound}}=== {{col3|zh|三簷傘|傘兵|傘兵部隊|傘包|和尚打傘|導傘|打傘|拖曳傘|撐傘|旱傘|核傘|油紙傘|洋傘|游湖借傘|火傘|火傘高張|燈傘|萬民傘|禿子打傘|紙傘|網傘菌|菌傘|藍傘|跳傘|跳傘塔|降落傘|陽傘|雨傘|雨傘節|飛行傘|高空跳傘|傘形|傘蓋 }} {{-vie-n-}} {{quốc ngữ|[[tán]], [[tản]], [[tàn]]}} {{-pron-}} {{vie-pron|tán|tản|tàn}} {{-jpn-}} {{-noun-}} '''傘''' ([[かさ]]) # Cái ô, cái dù. [[Thể loại:Danh từ tiếng Quan Thoại]] nv0o404pidxawthu2ljaqv0m5a551xy 冬天 0 215625 2350566 2093737 2026-05-07T03:23:36Z Kelly zhrm 58416 2350566 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pron}}=== {{zh-pron |m=dōngtiān,tl=y,er=y |dg=дун1тян2 |c=dung1 tin1 |g='dung1 tien1 |h=pfs=tûng-thiên;gd=dung1 tiên1 |j=dung1 tie1 |mn=tang-thiⁿ/xm:tong-thian |mn-t=dang1 tin1 |w=sh:1ton thi |x=dong1 tienn1 |mc=y |ma=y |cat=n }} ==={{ĐM|n}}=== {{head|zh|Danh từ}} # [[mùa đông|Mùa đông]]. #: {{zh-x|夏天 和 冬天,你 更 喜歡 哪 一 個?|Bạn thích mùa hè hay '''mùa đông''' hơn?}} #: {{zh-x|她 在 冬天 收集 了 許多 雪水,準備 夏天 用來 降 暑。|Cô ấy đã thu thập rất nhiều nước tuyết vào '''mùa đông''' để làm dịu cái nóng trong mùa hè.}} #: {{zh-x|冬天 的 時候 ^哈爾濱 是 冰天雪地。|Vào '''mùa đông''', Cáp Nhĩ Tân là một thế giới của băng và tuyết.}} ===={{ĐM|syn}}==== {{zh-dial}} ===={{ĐM|drv}}==== {{col3|zh|核冬天|火山冬天}} {{C|zh|Mùa|Mùa đông}} 6tlvmp9rjdfxdam11cuxpf0jooyxzml pretexting 0 230286 2350524 2169137 2026-05-06T16:11:03Z ~2026-27517-33 61191 Ngày mai 2350524 wikitext text/x-wiki {{-eng-}} {{-verb-}} [[G|@€]]{{head|en|Biến thể hình thái động từ}} # {{infl of|en|pretext||ing-form}}. 20pm0bj1i95x50eias3ebl0b3wuffw4 2350525 2350524 2026-05-06T16:23:16Z Higashizakura 36666 Đã lùi lại sửa đổi của [[Special:Contributions/~2026-27517-33|~2026-27517-33]] ([[User talk:~2026-27517-33|thảo luận]]) quay về phiên bản cuối của [[User:TheHighFighter2|TheHighFighter2]] 2169137 wikitext text/x-wiki {{-eng-}} {{-verb-}} {{head|en|Biến thể hình thái động từ}} # {{infl of|en|pretext||ing-form}}. rn4khjx4fodjzc9vka9lm66n4mmeg6p nanômét 0 233039 2350707 2258710 2026-05-07T07:57:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350707 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|nan|nôm|mét}} {{-noun-}} '''nanômét''', '''na-nô-mét''' # Phần [[tỷ]] của [[mét]]. {{-syn-}} * [[nm]] {{-trans-}} {{đầu}} * {{eng}}: [[nanometre]] {{term|Anh}}, [[nanometer]] {{term|Mỹ}}, [[millimicron]] {{term|cũ}} * {{por}}: [[nanômetro]] * {{cat-2}}: [[nanòmetre]] * {{jpn}}: [[ナノメートル]] {{giữa}} * {{fin}}: [[nanometri]] * {{fra}}: [[nanomètre]] * {{spa}}: [[nanómetro]] {{m}} * {{ita}}: [[nanometro]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 2inu5g73kvlb2b341vliyvy1awn8blk 2350969 2350707 2026-05-07T10:42:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350969 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|nan|nôm|mét}} {{-noun-}} '''nanômét''', '''na-nô-mét''' # Phần [[tỷ]] của [[mét]]. {{-syn-}} * [[nm]] {{-trans-}} {{đầu}} * {{eng}}: [[nanometre]] {{term|Anh}}, [[nanometer]] {{term|Mỹ}}, [[millimicron]] {{term|cũ}} * {{por}}: [[nanômetro]] * {{cat-old}}: [[nanòmetre]] * {{jpn}}: [[ナノメートル]] {{giữa}} * {{fin}}: [[nanometri]] * {{fra}}: [[nanomètre]] * {{spa}}: [[nanómetro]] {{m}} * {{ita}}: [[nanometro]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 1wa9saovan5gds96uaqdg23hf7d566q a lô 0 233313 2350708 2336520 2026-05-07T07:57:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350708 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|a|lô}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:allô]] }} Và còn lấy cảm hứng từ Thomas Edison khi ông nói câu [[hello]] khi dùng điện thoại. {{-interj-}} '''a lô''', '''a-lô''', '''alô''' # [[chào|Chào]]! (dùng để [[trả lời]] [[điện thoại]]). # [[tiếng|Tiếng]] [[gọi]] dùng trong [[điện thoại]] hoặc khi gọi [[loa]] để [[gợi]] sự [[chú ý]]. #:{{ux|vi|'''Alô''', ai gọi đấy ạ?}} #:{{ux|vi|'''Alô''', '''alô''', đồng bào chú ý}} #:{{ux|vi|'''Alô''', Vũ à Vũ?}} {{-trans-}} {{đầu}} * {{ara}}: [[آلو]] (''’ālló'') * {{afr}}: [[hallo#Tiếng Afrikaans|hallo]] * {{eng}}: [[hello]] * {{hye}}: [[ալլո]] (''alló'') * {{pol}}: [[halo#Tiếng Ba Lan|halo]], [[słucham]] * Tiếng Ireland: Dia dhuit * {{isl}}: [[halló]], [[hæ]], [[góðan dag]], [[góða daginn]], [[góðan daginn]] {{term|không chính xác}} * {{por}}: [[alô]] * {{ina}}: [[hallo#Tiếng Bổ trợ Quốc tế|hallo]] * {{bos}}: [[halo#Tiếng Bosnia|halo]], [[molim#Tiếng Bosnia|molim]] * {{bul}}: [[ало]] (''aló'') * {{cat-2}}: [[digui]], [[si#Tiếng Catalan|si]], [[hola#Tiếng Catalan|hola]] * {{hrv}}: [[molim]], [[izvolite]], [[halo#Tiếng Croat|halo]] * {{dan}}: [[hallo#Tiếng Đan Mạch|hallo]] * {{deu}}: [[hallo#Tiếng Đức|hallo]] * {{est}}: [[hallo#Tiếng Estonia|hallo]], [[halloo]] * {{fry}}: [[hallo#Tiếng Frysk|hallo]] * {{kat}}: [[ალო]] (''alo''), [[გისმენთ]] (''gisment‘'') * {{nld}}: [[hallo#Tiếng Hà Lan|hallo]] * {{hin}}: [[नमस्कार]] (''namaskar'') * {{hun}}: [[halló]] * {{ell}}: [[εμπρός]] (''embros''), [[ναι]] (''ne'') * {{ind}}: [[halo#Tiếng Indonesia|halo]] * {{lit}}: [[alio]] {{giữa}} * {{mlt}}: [[ħellow]] * {{nor}}: [[hallo#Tiếng Na Uy|hallo]] * {{rus}}: [[алло]] (''alló'') * {{jpn}}: [[もしもし]] (''móshi-móshi'') * {{fin}}: [[haloo]] * {{fra}}: [[allô]] * {{ron}}: [[alo#Tiếng Rumani|alo]], [[haló#Tiếng Rumani|haló]] * {{ces}}: [[haló#Tiếng Séc|haló]] * {{srp}}: ** {{Cyrl}}: [[хало#Tiếng Serbi|хало]], [[молим#Tiếng Serbi|молим]] ** {{Latn}}: [[halo#Tiếng Serbi|halo]], [[molim#Tiếng Serbi|molim]] * {{slk}}: [[haló#Tiếng Slovak|haló]] * {{slv}}: [[halo#Tiếng Sloven|halo]], [[prosim]] * {{tgl}}: [[magandang tanghali po]] * {{spa}}: [[aló]] {{term|Mỹ Latinh}}, [[bueno]] {{term|Mexico}}, [[diga]] {{term|Tây Ban Nha}}, [[dígame]] {{term|Tây Ban Nha}}, [[hola]] {{term|Argentina, Uruguay}}, [[oigo]] {{term|Cuba}} * {{tha}}: [[สวัสดีครับ]] (''sàwàtdee kráp'') {{m}}, [[สวัสดีค่ะ]] (''sàwàtdee kâ'') {{f}} {{term|nghi thức}}, [[ฮัลโหล]] (''hanlǒh'') {{term|thông tục}} * {{tur}}: [[alo#Tiếng Thổ Nhĩ Kỳ|alo]], [[efendim]] * {{swe}}: [[hallå]], [[hej]], [[god dag]] {{term|nghi thức}} * {{kor}}: [[여보세요]] (''yeoboseyo'') * {{zho}}: [[喂]] (''wèi'', [[uy]]), [[您好]] (''nín hăo'', [[nâm]] [[hảo]]) {{term|nghi thức}} * {{ukr}}: [[алло]] (''alló''), [[слухаю]] (''slukhaju'') * {{ita}}: [[pronto#Tiếng Ý|pronto]] {{cuối}} {{-noun-}} # ''({{@lóng}})'' Cái [[miệng]] #: Mày không câm mồm ấy thì tao đấm vỡ [[a lô]] cho mày chừa. {{-ref-}} *{{Chú thích web|url=http://www.khonghoangtrung.com/quynhvang/quynhvang/hoso/phapviet_table.doc|author=Nguyễn Quang Vinh|title=Những Chữ Ngoại Quốc Thông Dụng Trong Tiếng Việt|year=2006|format=[[w:Microsoft Word|Microsoft Word]]|accessdate=16 tháng 3 năm 2008}} {{R:Tratu|vi|vi}} [[Thể loại:Thán từ tiếng Việt]] [[Thể loại:Từ lóng tiếng Việt]] jdzakmfrt7jh687gj6tjbqpyq0l7jf6 2350970 2350708 2026-05-07T10:43:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350970 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|a|lô}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:allô]] }} Và còn lấy cảm hứng từ Thomas Edison khi ông nói câu [[hello]] khi dùng điện thoại. {{-interj-}} '''a lô''', '''a-lô''', '''alô''' # [[chào|Chào]]! (dùng để [[trả lời]] [[điện thoại]]). # [[tiếng|Tiếng]] [[gọi]] dùng trong [[điện thoại]] hoặc khi gọi [[loa]] để [[gợi]] sự [[chú ý]]. #:{{ux|vi|'''Alô''', ai gọi đấy ạ?}} #:{{ux|vi|'''Alô''', '''alô''', đồng bào chú ý}} #:{{ux|vi|'''Alô''', Vũ à Vũ?}} {{-trans-}} {{đầu}} * {{ara}}: [[آلو]] (''’ālló'') * {{afr}}: [[hallo#Tiếng Afrikaans|hallo]] * {{eng}}: [[hello]] * {{hye}}: [[ալլո]] (''alló'') * {{pol}}: [[halo#Tiếng Ba Lan|halo]], [[słucham]] * Tiếng Ireland: Dia dhuit * {{isl}}: [[halló]], [[hæ]], [[góðan dag]], [[góða daginn]], [[góðan daginn]] {{term|không chính xác}} * {{por}}: [[alô]] * {{ina}}: [[hallo#Tiếng Bổ trợ Quốc tế|hallo]] * {{bos}}: [[halo#Tiếng Bosnia|halo]], [[molim#Tiếng Bosnia|molim]] * {{bul}}: [[ало]] (''aló'') * {{cat-old}}: [[digui]], [[si#Tiếng Catalan|si]], [[hola#Tiếng Catalan|hola]] * {{hrv}}: [[molim]], [[izvolite]], [[halo#Tiếng Croat|halo]] * {{dan}}: [[hallo#Tiếng Đan Mạch|hallo]] * {{deu}}: [[hallo#Tiếng Đức|hallo]] * {{est}}: [[hallo#Tiếng Estonia|hallo]], [[halloo]] * {{fry}}: [[hallo#Tiếng Frysk|hallo]] * {{kat}}: [[ალო]] (''alo''), [[გისმენთ]] (''gisment‘'') * {{nld}}: [[hallo#Tiếng Hà Lan|hallo]] * {{hin}}: [[नमस्कार]] (''namaskar'') * {{hun}}: [[halló]] * {{ell}}: [[εμπρός]] (''embros''), [[ναι]] (''ne'') * {{ind}}: [[halo#Tiếng Indonesia|halo]] * {{lit}}: [[alio]] {{giữa}} * {{mlt}}: [[ħellow]] * {{nor}}: [[hallo#Tiếng Na Uy|hallo]] * {{rus}}: [[алло]] (''alló'') * {{jpn}}: [[もしもし]] (''móshi-móshi'') * {{fin}}: [[haloo]] * {{fra}}: [[allô]] * {{ron}}: [[alo#Tiếng Rumani|alo]], [[haló#Tiếng Rumani|haló]] * {{ces}}: [[haló#Tiếng Séc|haló]] * {{srp}}: ** {{Cyrl}}: [[хало#Tiếng Serbi|хало]], [[молим#Tiếng Serbi|молим]] ** {{Latn}}: [[halo#Tiếng Serbi|halo]], [[molim#Tiếng Serbi|molim]] * {{slk}}: [[haló#Tiếng Slovak|haló]] * {{slv}}: [[halo#Tiếng Sloven|halo]], [[prosim]] * {{tgl}}: [[magandang tanghali po]] * {{spa}}: [[aló]] {{term|Mỹ Latinh}}, [[bueno]] {{term|Mexico}}, [[diga]] {{term|Tây Ban Nha}}, [[dígame]] {{term|Tây Ban Nha}}, [[hola]] {{term|Argentina, Uruguay}}, [[oigo]] {{term|Cuba}} * {{tha}}: [[สวัสดีครับ]] (''sàwàtdee kráp'') {{m}}, [[สวัสดีค่ะ]] (''sàwàtdee kâ'') {{f}} {{term|nghi thức}}, [[ฮัลโหล]] (''hanlǒh'') {{term|thông tục}} * {{tur}}: [[alo#Tiếng Thổ Nhĩ Kỳ|alo]], [[efendim]] * {{swe}}: [[hallå]], [[hej]], [[god dag]] {{term|nghi thức}} * {{kor}}: [[여보세요]] (''yeoboseyo'') * {{zho}}: [[喂]] (''wèi'', [[uy]]), [[您好]] (''nín hăo'', [[nâm]] [[hảo]]) {{term|nghi thức}} * {{ukr}}: [[алло]] (''alló''), [[слухаю]] (''slukhaju'') * {{ita}}: [[pronto#Tiếng Ý|pronto]] {{cuối}} {{-noun-}} # ''({{@lóng}})'' Cái [[miệng]] #: Mày không câm mồm ấy thì tao đấm vỡ [[a lô]] cho mày chừa. {{-ref-}} *{{Chú thích web|url=http://www.khonghoangtrung.com/quynhvang/quynhvang/hoso/phapviet_table.doc|author=Nguyễn Quang Vinh|title=Những Chữ Ngoại Quốc Thông Dụng Trong Tiếng Việt|year=2006|format=[[w:Microsoft Word|Microsoft Word]]|accessdate=16 tháng 3 năm 2008}} {{R:Tratu|vi|vi}} [[Thể loại:Thán từ tiếng Việt]] [[Thể loại:Từ lóng tiếng Việt]] 57p8u94tmip1ik1o4f1zoc083l9vxbz bàng quang 0 233349 2350709 2269028 2026-05-07T07:57:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350709 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Illu bladder.jpg|nhỏ|phải|'''Bàng quang'''.]] {{-etym-}} {{vi-etym-sino|膀胱}}. {{-pron-}} {{vie-pron}} * {{homophone|vi|bàng quan}} {{-noun-}} {{vie-noun}} # {{nhãn|vi|anatomy|formal}} [[cơ quan|Cơ quan]] chứa [[nước tiểu]] do [[thận]] [[tiết]] ra trước khi thoát ra ngoài [[cơ thể]] theo quá trình [[đi tiểu]]. #: {{ux|vi|Bệnh viêm '''bàng quang'''.}} #* '''2013''', T.Minh, ''[https://nld.com.vn/suc-khoe/con-dia-20-cm-song-trong-bang-quang-be-trai-20130818041858956.htm Con đỉa 20 cm sống trong bàng quang bé trai]'', báo Người Lao động: #*: Bệnh viện Nhi tỉnh Thanh Hóa vừa gắp ra một con đỉa dài gần 20 cm còn sống từ '''bàng quang''' của bé trai B.T.L (SN 2000) #* '''2020''', Hoàng Phúc, ''[https://nld.com.vn/suc-khoe/quang-binh-nhin-tieu-nhieu-gio-tren-xe-khach-1-cu-ba-nhap-vien-vi-vo-bang-quang-20201006082246692.htm Quảng Bình: Nhịn tiểu nhiều giờ trên xe khách, 1 cụ bà nhập viện vì vỡ bàng quang]'', báo Người Lao động: #*: Sau khi nhịn tiểu nhiều giờ liền trên chuyến xe khách từ TP HCM ra Quảng Bình, 1 cụ bà đã phải nhập viện vì vỡ '''bàng quang'''. {{-synonym-}} * {{vie-l|bóng đái}} * {{vie-l|bọng đái}} {{-usage-}} * Không nên nhầm lẫn với ''[[bàng quan]]'' (“làm ngơ, đứng ngoài cuộc, coi như không dính líu gì đến mình”). {{-trans-}} {{trans-top|Cơ quan chứa nước tiểu}} * {{ara}}: {{t+|ar|مَثَانَة|f}}, {{t|ar|مَثَانَة بَوْلِيَّة|f|tr=maṯāna bawliyya}} * {{afr}}: {{t+|af|blaas}} * {{sqi}}: {{t+|sq|fshikë|f}} * {{eng}}: {{t+|en|urinary bladder}}, {{t+|en|bladder}}, {{t|en|cystis urinaria}}, {{t+|en|urocyst}}, {{t+|en|urocystis}}, {{t+|en|vesica}}, {{t|en|vesica urinaria}} * {{hye}}: {{t+|hy|միզապարկ}} * {{rup}}: {{t|rup|bishicã|f}}, {{t|rup|bishãcã|f}} * {{ast}}: {{t+|ast|vexiga|f}} * {{aze}}: {{t|az|sidiklik}} * {{pol}}: {{t+|pl|pęcherz|m}}, {{t+|pl|pęcherz moczowy|m}} * {{fas}}: {{t+|fa|مَثانِه|tr=masâne}}, {{t|fa|میزدان|tr=mizdân}}, {{t|fa|گُمیزدان|tr=gomizdân}} * {{isl}}: {{t+|is|þvagblaðra|f}} * {{bel}}: {{t|be|мачавы́ пузы́р|m}}, {{t|be|мачаві́к|m}}, {{t|be|капшу́к|m}} * {{por}}: {{t+|pt|bexiga}} * {{bul}}: {{t|bg|пи́кочен меху́р|m}} * {{cat-2}}: {{t+|ca|bufeta}}, {{t+|ca|veixiga|f}}, {{t+|ca|bufa|f}} * {{ceb}}: {{t|ceb|pantog}} * {{uig}}: {{t|ug|دوۋساق}} * {{dan}}: {{t+|da|urinblære|c}} * {{deu}}: {{t+|de|Blase|f}}, {{t+|de|Harnblase|f}} * {{est}}: {{t|et|kusepõis}} * {{fur}}: {{t|fur|vissie|f}}, {{t|fur|višìe|f}} * {{gla}}: {{t|gd|aotroman|m}} * {{glg}}: {{t+|gl|vexiga urinaria|f}}, {{t+|gl|vexiga|f}} * {{kat}}: {{t|ka|შარდის ბუშტი}} * {{nds}}: {{t|nds|Blaas|f}} * {{nld}}: {{t+|nl|blaas|f}}, {{t+|nl|urineblaas}} * {{hin}}: {{t+|hi|मूत्राशय|m}}, {{t+|hi|मसाना|m}}, {{t+|hi|फुकना|m}} * {{hun}}: {{t+|hu|hólyag}}, {{t+|hu|húgyhólyag}} * {{ell}}: {{t|el|ουροδόχος κύστη|f}} * {{ilo}}: {{t|ilo|basisaw}} * {{gle}}: {{t|ga|lamhnán fuail|m}}, {{t|ga|fual-lamhnán|m}} * {{kaz}}: {{t+|kk|қуық}} * {{khm}}: {{t|km|ផ្លោកនោម}}, {{t|km|មុត្តាស័យ}}, {{t+|km|មូត្រាស័យ}} {{qualifier|trang trọng}} * {{kir}}: {{t+|ky|табарсык}} * {{lat}}: {{t|la|vesica}} * {{lav}}: {{t|lv|urīnpūslis|m}} * {{lez}}: {{t|lez|кӀеп}} * {{lit}}: {{t|lt|šlapimo pūslė|f}} * {{mkd}}: {{t|mk|мочен меур|m}}, {{t|mk|бешика|f}} {{qualifier|không tiêu chuẩn}} * {{mlt}}: {{t|mt|bużżieqa tal-awrina|f}} * {{mnc}}: {{t|mnc|ᠰᡳᡶᡠᠯᡠ}} * {{mri}}: {{t|mi|tōngāmimi}}, {{t|mi|pukumimi}} * {{mya}}: {{t+|my|ဆီးအိမ်}}, {{t+|my|စည်ဖောင်း}} * {{nor}}: ** {{nob}}: {{t|nb|urinblære|mf}} ** {{nno}}: {{t|nn|urinblære|f}} * {{langname|alt}}: {{t|alt|куук}} * {{nav}}: {{t|nv|łizh bee dah siyínígíí}}, {{t|nv|alizh bizis}} * {{rus}}: {{t+|ru|мочево́й пузы́рь|m}} * {{jpn}}: {{t+|ja|膀胱|tr=ぼうこう, bōkō}} * {{oci}}: {{t+|oc|bofiga|f}}, {{t+|oc|vessiga|f}}, {{t+|oc|veishiga|f}} * {{fra}}: {{t+|fr|vessie|f}} * {{fin}}: {{t+|fi|virtsarakko}} * {{epo}}: {{t|eo|urina veziko}} * {{ron}}: {{t+|ro|bășică|f}}, {{t+|ro|vezică|f}}, {{t|ro|vezică urinară|f}} * {{roh}}: {{t|rm|vaschia|f}}, {{t|rm|vischigia|f}}, {{t|rm|vascheia|f}}, {{t|rm|vschia|f}}, {{t|rm|scufla|f}} * {{sme}}: {{t|se|gožžaráhkku}} * {{srd}}: {{t|sc|buscica|f}}, {{t|sc|bussica|f}}, {{t|sc|busica|f}}, {{t|sc|piscica|f}}, {{t|sc|buciuca|f}}, {{t|sc|busuca|f}} * {{ces}}: {{t|cs|močový měchýř|m}} * {{scr}}: ** {{Cyrl}}: {{t|sh|мокраћна бешика|f}} ** {{Latn}}: {{t|sh|mokraćna bešika|f}}, {{t+|sh|mjehur|m}} {{qualifier|Croatia}} * {{scn}}: {{t+|scn|viscica|f}}, {{t+|scn|vuscica|f}}, {{t+|scn|buscica|f}} * {{slk}}: {{t|sk|močový mechúr|m}} * {{slv}}: {{t+|sl|mehur|m}}, {{t|sl|sečni mehur|m}} * {{sot}}: {{t|st|senya}} * {{tgl}}: {{t+|tl|pantog}} * {{tgk}}: {{t|tg|масона}} * {{spa}}: {{t+|es|vejiga|f}} * {{tel}}: {{t+|te|మూత్రకోశము}}, {{t+|te|మూత్రాశయము}} * {{tha}}: {{t|th|หัวไส้}}, {{t|th|กระเพาะปัสสาวะ}} * {{tur}}: {t+|tr|mesane}}, {{t+|tr|sidik torbası}}, {{t+|tr|idrar torbası}}, {{t+|tr|idrar kesesi}}, {{t|tr|sidik kesesi}} * {{swe}}: {{t+|sv|urinblåsa|c}} * {{kor}}: {{t|ko|오줌통}}, {{t+|ko|방광(膀胱)}} * {{zho}}: ** {{nan}}: {{t+|nan|膀胱|tr=phông-kong, pông-kong}}, {{t+|nan|小肚|tr=sió-tō͘}}, {{t|nan|尿帕仔|tr=jiō-phè-á, liō-phè-á}}, {{t|nan|尿袋|tr=jiō-tē, liō-tē}}, {{t|nan|尿脬|tr=jiō-pha, liō-pha}} ** {{cmn}}: {{t+|cmn|膀胱}} ** {{yue}}: {{t|yue|膀胱}} * {{ukr}}: {{t|uk|сечови́й міху́р|m}} * {{uzb}}: {{t+|uz|qovuq}} * {{vec}}: {{t|vec|vesiga|f}} * {{vol}}: {{t+|vo|yurinavesid}} * {{wln}}: {{t+|wa|vexheye|f}} * {{ita}}: {{t+|it|vescica|f}} * {{yid}}: {{t|yi|בלאָז|m}}, {{t|yi|פּענכער|m}} {{trans-bottom}} btv2izowus9wf8qe0bf8nlb545q90jf 2350971 2350709 2026-05-07T10:43:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350971 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Hình:Illu bladder.jpg|nhỏ|phải|'''Bàng quang'''.]] {{-etym-}} {{vi-etym-sino|膀胱}}. {{-pron-}} {{vie-pron}} * {{homophone|vi|bàng quan}} {{-noun-}} {{vie-noun}} # {{nhãn|vi|anatomy|formal}} [[cơ quan|Cơ quan]] chứa [[nước tiểu]] do [[thận]] [[tiết]] ra trước khi thoát ra ngoài [[cơ thể]] theo quá trình [[đi tiểu]]. #: {{ux|vi|Bệnh viêm '''bàng quang'''.}} #* '''2013''', T.Minh, ''[https://nld.com.vn/suc-khoe/con-dia-20-cm-song-trong-bang-quang-be-trai-20130818041858956.htm Con đỉa 20 cm sống trong bàng quang bé trai]'', báo Người Lao động: #*: Bệnh viện Nhi tỉnh Thanh Hóa vừa gắp ra một con đỉa dài gần 20 cm còn sống từ '''bàng quang''' của bé trai B.T.L (SN 2000) #* '''2020''', Hoàng Phúc, ''[https://nld.com.vn/suc-khoe/quang-binh-nhin-tieu-nhieu-gio-tren-xe-khach-1-cu-ba-nhap-vien-vi-vo-bang-quang-20201006082246692.htm Quảng Bình: Nhịn tiểu nhiều giờ trên xe khách, 1 cụ bà nhập viện vì vỡ bàng quang]'', báo Người Lao động: #*: Sau khi nhịn tiểu nhiều giờ liền trên chuyến xe khách từ TP HCM ra Quảng Bình, 1 cụ bà đã phải nhập viện vì vỡ '''bàng quang'''. {{-synonym-}} * {{vie-l|bóng đái}} * {{vie-l|bọng đái}} {{-usage-}} * Không nên nhầm lẫn với ''[[bàng quan]]'' (“làm ngơ, đứng ngoài cuộc, coi như không dính líu gì đến mình”). {{-trans-}} {{trans-top|Cơ quan chứa nước tiểu}} * {{ara}}: {{t+|ar|مَثَانَة|f}}, {{t|ar|مَثَانَة بَوْلِيَّة|f|tr=maṯāna bawliyya}} * {{afr}}: {{t+|af|blaas}} * {{sqi}}: {{t+|sq|fshikë|f}} * {{eng}}: {{t+|en|urinary bladder}}, {{t+|en|bladder}}, {{t|en|cystis urinaria}}, {{t+|en|urocyst}}, {{t+|en|urocystis}}, {{t+|en|vesica}}, {{t|en|vesica urinaria}} * {{hye}}: {{t+|hy|միզապարկ}} * {{rup}}: {{t|rup|bishicã|f}}, {{t|rup|bishãcã|f}} * {{ast}}: {{t+|ast|vexiga|f}} * {{aze}}: {{t|az|sidiklik}} * {{pol}}: {{t+|pl|pęcherz|m}}, {{t+|pl|pęcherz moczowy|m}} * {{fas}}: {{t+|fa|مَثانِه|tr=masâne}}, {{t|fa|میزدان|tr=mizdân}}, {{t|fa|گُمیزدان|tr=gomizdân}} * {{isl}}: {{t+|is|þvagblaðra|f}} * {{bel}}: {{t|be|мачавы́ пузы́р|m}}, {{t|be|мачаві́к|m}}, {{t|be|капшу́к|m}} * {{por}}: {{t+|pt|bexiga}} * {{bul}}: {{t|bg|пи́кочен меху́р|m}} * {{cat-old}}: {{t+|ca|bufeta}}, {{t+|ca|veixiga|f}}, {{t+|ca|bufa|f}} * {{ceb}}: {{t|ceb|pantog}} * {{uig}}: {{t|ug|دوۋساق}} * {{dan}}: {{t+|da|urinblære|c}} * {{deu}}: {{t+|de|Blase|f}}, {{t+|de|Harnblase|f}} * {{est}}: {{t|et|kusepõis}} * {{fur}}: {{t|fur|vissie|f}}, {{t|fur|višìe|f}} * {{gla}}: {{t|gd|aotroman|m}} * {{glg}}: {{t+|gl|vexiga urinaria|f}}, {{t+|gl|vexiga|f}} * {{kat}}: {{t|ka|შარდის ბუშტი}} * {{nds}}: {{t|nds|Blaas|f}} * {{nld}}: {{t+|nl|blaas|f}}, {{t+|nl|urineblaas}} * {{hin}}: {{t+|hi|मूत्राशय|m}}, {{t+|hi|मसाना|m}}, {{t+|hi|फुकना|m}} * {{hun}}: {{t+|hu|hólyag}}, {{t+|hu|húgyhólyag}} * {{ell}}: {{t|el|ουροδόχος κύστη|f}} * {{ilo}}: {{t|ilo|basisaw}} * {{gle}}: {{t|ga|lamhnán fuail|m}}, {{t|ga|fual-lamhnán|m}} * {{kaz}}: {{t+|kk|қуық}} * {{khm}}: {{t|km|ផ្លោកនោម}}, {{t|km|មុត្តាស័យ}}, {{t+|km|មូត្រាស័យ}} {{qualifier|trang trọng}} * {{kir}}: {{t+|ky|табарсык}} * {{lat}}: {{t|la|vesica}} * {{lav}}: {{t|lv|urīnpūslis|m}} * {{lez}}: {{t|lez|кӀеп}} * {{lit}}: {{t|lt|šlapimo pūslė|f}} * {{mkd}}: {{t|mk|мочен меур|m}}, {{t|mk|бешика|f}} {{qualifier|không tiêu chuẩn}} * {{mlt}}: {{t|mt|bużżieqa tal-awrina|f}} * {{mnc}}: {{t|mnc|ᠰᡳᡶᡠᠯᡠ}} * {{mri}}: {{t|mi|tōngāmimi}}, {{t|mi|pukumimi}} * {{mya}}: {{t+|my|ဆီးအိမ်}}, {{t+|my|စည်ဖောင်း}} * {{nor}}: ** {{nob}}: {{t|nb|urinblære|mf}} ** {{nno}}: {{t|nn|urinblære|f}} * {{langname|alt}}: {{t|alt|куук}} * {{nav}}: {{t|nv|łizh bee dah siyínígíí}}, {{t|nv|alizh bizis}} * {{rus}}: {{t+|ru|мочево́й пузы́рь|m}} * {{jpn}}: {{t+|ja|膀胱|tr=ぼうこう, bōkō}} * {{oci}}: {{t+|oc|bofiga|f}}, {{t+|oc|vessiga|f}}, {{t+|oc|veishiga|f}} * {{fra}}: {{t+|fr|vessie|f}} * {{fin}}: {{t+|fi|virtsarakko}} * {{epo}}: {{t|eo|urina veziko}} * {{ron}}: {{t+|ro|bășică|f}}, {{t+|ro|vezică|f}}, {{t|ro|vezică urinară|f}} * {{roh}}: {{t|rm|vaschia|f}}, {{t|rm|vischigia|f}}, {{t|rm|vascheia|f}}, {{t|rm|vschia|f}}, {{t|rm|scufla|f}} * {{sme}}: {{t|se|gožžaráhkku}} * {{srd}}: {{t|sc|buscica|f}}, {{t|sc|bussica|f}}, {{t|sc|busica|f}}, {{t|sc|piscica|f}}, {{t|sc|buciuca|f}}, {{t|sc|busuca|f}} * {{ces}}: {{t|cs|močový měchýř|m}} * {{scr}}: ** {{Cyrl}}: {{t|sh|мокраћна бешика|f}} ** {{Latn}}: {{t|sh|mokraćna bešika|f}}, {{t+|sh|mjehur|m}} {{qualifier|Croatia}} * {{scn}}: {{t+|scn|viscica|f}}, {{t+|scn|vuscica|f}}, {{t+|scn|buscica|f}} * {{slk}}: {{t|sk|močový mechúr|m}} * {{slv}}: {{t+|sl|mehur|m}}, {{t|sl|sečni mehur|m}} * {{sot}}: {{t|st|senya}} * {{tgl}}: {{t+|tl|pantog}} * {{tgk}}: {{t|tg|масона}} * {{spa}}: {{t+|es|vejiga|f}} * {{tel}}: {{t+|te|మూత్రకోశము}}, {{t+|te|మూత్రాశయము}} * {{tha}}: {{t|th|หัวไส้}}, {{t|th|กระเพาะปัสสาวะ}} * {{tur}}: {t+|tr|mesane}}, {{t+|tr|sidik torbası}}, {{t+|tr|idrar torbası}}, {{t+|tr|idrar kesesi}}, {{t|tr|sidik kesesi}} * {{swe}}: {{t+|sv|urinblåsa|c}} * {{kor}}: {{t|ko|오줌통}}, {{t+|ko|방광(膀胱)}} * {{zho}}: ** {{nan}}: {{t+|nan|膀胱|tr=phông-kong, pông-kong}}, {{t+|nan|小肚|tr=sió-tō͘}}, {{t|nan|尿帕仔|tr=jiō-phè-á, liō-phè-á}}, {{t|nan|尿袋|tr=jiō-tē, liō-tē}}, {{t|nan|尿脬|tr=jiō-pha, liō-pha}} ** {{cmn}}: {{t+|cmn|膀胱}} ** {{yue}}: {{t|yue|膀胱}} * {{ukr}}: {{t|uk|сечови́й міху́р|m}} * {{uzb}}: {{t+|uz|qovuq}} * {{vec}}: {{t|vec|vesiga|f}} * {{vol}}: {{t+|vo|yurinavesid}} * {{wln}}: {{t+|wa|vexheye|f}} * {{ita}}: {{t+|it|vescica|f}} * {{yid}}: {{t|yi|בלאָז|m}}, {{t|yi|פּענכער|m}} {{trans-bottom}} l72h6bnk2o5fvj43j58lr9j2votmhft Wiktionary:Thống kê/2006/11 4 235408 2350838 798081 2026-05-07T08:15:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350838 wikitext text/x-wiki Thống kê của [[Thành viên:Laurent Bouvier/Statistics|Laurent Bouvier]] vào thứ bảy, ngày 11 tháng 11 năm 2006: {| class="wikitable sortable" style="text-align: right" |- ! Ngôn ngữ !! Cỡ !! Số mục từ !! [[Tiêu bản:-dfn-|Chưa phân loại]] !! [[Tiêu bản:-noun-|Danh từ]] !! [[Tiêu bản:-adj-|Tính từ]] !! [[Tiêu bản:-verb-|Động từ]] !! [[Tiêu bản:-adv-|Phó từ]] !! [[Tiêu bản:-pr-noun-|Danh từ riêng]] !! Hình !! [[Tiêu bản:-pron-audio-|Đoạn âm]] !! [[Tiêu bản:-hanviet-|Phiên thiết]] !! [[Tiêu bản:-hanviet-t-|Phồn thể]] !! [[Tiêu bản:-dial-|Phương ngữ]] !! [[Tiêu bản:-info-|Wikipedia]] !! [[Tiêu bản:-abr-|Viết tắt]] !! [[Tiêu bản:-interj-|Thán từ]] !! [[Tiêu bản:-prep-|Giới từ]] !! [[Tiêu bản:-suffix-|Hậu tố]] !! [[Tiêu bản:-num-|Số từ]] !! [[Tiêu bản:-pronoun-|Đại từ]] !! [[Tiêu bản:-note-|Chưa phân loại]] !! [[Tiêu bản:-prefix-|Tiền tố]] !! [[Tiêu bản:-adverb-|Phó từ]] !! [[Tiêu bản:-tr-verb-|Ngoại động từ]] !! [[Tiêu bản:-compound-|Từ ghép]] !! [[Tiêu bản:-chia-|Chia động từ]] !! [[Tiêu bản:-forms-|Chia động từ]] !! [[Tiêu bản:-intr-verb-|Nội động từ]] !! [[Tiêu bản:-proper-|Danh từ riêng]] !! [[Tiêu bản:-proverb-|Thành ngữ]] !! [[Tiêu bản:stub|Sơ khai]] !! [[Tiêu bản:-abbr-|Viết tắt]] !! [[Tiêu bản:-vie-n-|Nôm]] !! [[Tiêu bản:-cmavo-|cmavo]] !! [[Tiêu bản:-article-|Mạo từ]] !! [[Tiêu bản:-contr-|Rút gọn]] !! [[Tiêu bản:-exp-|Thành ngữ]] |- | align="left" | {{eng}} || 22649598 || 94954 || 62928 || — || 24833 || 12384 || 5168 || 19 || 2780 || 1552 || — || — || — || — || 375 || 178 || 88 || 138 || 4 || 32 || — || 49 || — || 16 || — || — || — || 7 || 2 || 2 || 1 || 1 || — || — || — || 1 || — |- | align="left" | {{fra}} || 14810252 || 43889 || 29821 || — || 11149 || 6800 || 1433 || 4 || 978 || 92 || — || — || — || — || 3 || 110 || 55 || — || — || — || — || — || — || 3 || — || 15 || 7 || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{rus}} || 9143009 || 35680 || 14989 || — || 7398 || 11274 || 957 || — || 1 || — || — || — || — || — || — || 45 || 30 || — || 65 || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — |- | align="left" | {{vie}} || 10446113 || 28467 || 7531 || — || 3673 || 5766 || 694 || 4525 || 99 || 1 || 1642 || 1492 || — || 938 || 31 || 6 || 24 || — || 19 || 39 || 66 || 2 || 8 || — || 18 || — || — || 1 || 5 || 2 || 0 || 1 || — || — || — || — || — |- | align="left" | {{nor}} || 3632975 || 10305 || 6463 || — || 1701 || 2194 || 199 || — || 43 || — || — || — || 1422 || — || — || 39 || 61 || 6 || 23 || 31 || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nld}} || 103920 || 291 || 166 || — || 58 || 54 || — || — || 32 || — || — || — || — || — || — || 2 || 11 || — || 18 || 9 || — || 1 || 15 || — || — || — || — || — || — || — || 0 || — || — || — || 1 || — || — |- | align="left" | {{ido}} || 18188 || 106 || 94 || — || 11 || 1 || — || — || 2 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nno}} || 20629 || 64 || 38 || — || 11 || 8 || 6 || — || — || — || — || — || 15 || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{dut}} || 10536 || 25 || 20 || — || 1 || 1 || — || — || 2 || 18 || — || — || — || — || — || 1 || 1 || — || 1 || — || — || — || 1 || — || — || — || — || — || 1 || — || 0 || — || — || — || — || — || — |- | align="left" | {{cmn}} || 6095 || 18 || 14 || — || 1 || 2 || 1 || 1 || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || 1 || — || — || — || — |- | align="left" | {{deu}} || 1830 || 7 || 2 || — || — || 1 || — || — || 1 || 3 || — || — || — || — || — || — || — || — || 2 || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — |- | align="left" | {{spa}} || 2208 || 6 || 3 || — || 4 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || 2 || 1 || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{zho}} || 570 || 5 || 1 || — || 1 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || 2 || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{lat}} || 403 || 4 || — || — || 2 || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{epo}} || 688 || 3 || 1 || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fin}} || 1327 || 3 || 3 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nob}} || 1338 || 3 || 2 || — || 1 || 1 || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{swe}} || 727 || 3 || 3 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{jpn}} || 949 || 3 || 3 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{dan}} || 176 || 2 || 1 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{afr}} || 476 || 2 || 2 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ita}} || 874 || 2 || 1 || — || — || — || — || — || — || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{yue}} || 612 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || 1 || — || — || — || — |- | align="left" | {{jbo}} || 128 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || 1 || — || — || — |- | align="left" | {{tpn}} || 58 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{eus}} || 46 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{cat-2}} || 92 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fas}} || 132 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{sna}} || 118 || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fry}} || 128 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{heb}} || 190 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{hin}} || 329 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nap}} || 92 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{kur}} || 120 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ina}} || 1295 || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ara}} || 429 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{por}} || 171 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ron}} || 92 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- ! Tổng số !! 62177923 !! 221226 !! 122096 !! 7364 !! 48845 !! 38488 !! 8458 !! 4553 !! 3940 !! 1667 !! 1642 !! 1492 !! 1438 !! 938 !! 410 !! 383 !! 273 !! 144 !! 132 !! 113 !! 66 !! 52 !! 24 !! 20 !! 18 !! 15 !! 9 !! 9 !! 8 !! 4 !! 3 !! 2 !! 2 !! 1 !! 1 !! 1 !! 4 |} [[Thể loại:Thống kê Wiktionary]] 9i9cvmml647xk7ytjnweqgqv758zv3n 2351077 2350838 2026-05-07T10:48:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351077 wikitext text/x-wiki Thống kê của [[Thành viên:Laurent Bouvier/Statistics|Laurent Bouvier]] vào thứ bảy, ngày 11 tháng 11 năm 2006: {| class="wikitable sortable" style="text-align: right" |- ! Ngôn ngữ !! Cỡ !! Số mục từ !! [[Tiêu bản:-dfn-|Chưa phân loại]] !! [[Tiêu bản:-noun-|Danh từ]] !! [[Tiêu bản:-adj-|Tính từ]] !! [[Tiêu bản:-verb-|Động từ]] !! [[Tiêu bản:-adv-|Phó từ]] !! [[Tiêu bản:-pr-noun-|Danh từ riêng]] !! Hình !! [[Tiêu bản:-pron-audio-|Đoạn âm]] !! [[Tiêu bản:-hanviet-|Phiên thiết]] !! [[Tiêu bản:-hanviet-t-|Phồn thể]] !! [[Tiêu bản:-dial-|Phương ngữ]] !! [[Tiêu bản:-info-|Wikipedia]] !! [[Tiêu bản:-abr-|Viết tắt]] !! [[Tiêu bản:-interj-|Thán từ]] !! [[Tiêu bản:-prep-|Giới từ]] !! [[Tiêu bản:-suffix-|Hậu tố]] !! [[Tiêu bản:-num-|Số từ]] !! [[Tiêu bản:-pronoun-|Đại từ]] !! [[Tiêu bản:-note-|Chưa phân loại]] !! [[Tiêu bản:-prefix-|Tiền tố]] !! [[Tiêu bản:-adverb-|Phó từ]] !! [[Tiêu bản:-tr-verb-|Ngoại động từ]] !! [[Tiêu bản:-compound-|Từ ghép]] !! [[Tiêu bản:-chia-|Chia động từ]] !! [[Tiêu bản:-forms-|Chia động từ]] !! [[Tiêu bản:-intr-verb-|Nội động từ]] !! [[Tiêu bản:-proper-|Danh từ riêng]] !! [[Tiêu bản:-proverb-|Thành ngữ]] !! [[Tiêu bản:stub|Sơ khai]] !! [[Tiêu bản:-abbr-|Viết tắt]] !! [[Tiêu bản:-vie-n-|Nôm]] !! [[Tiêu bản:-cmavo-|cmavo]] !! [[Tiêu bản:-article-|Mạo từ]] !! [[Tiêu bản:-contr-|Rút gọn]] !! [[Tiêu bản:-exp-|Thành ngữ]] |- | align="left" | {{eng}} || 22649598 || 94954 || 62928 || — || 24833 || 12384 || 5168 || 19 || 2780 || 1552 || — || — || — || — || 375 || 178 || 88 || 138 || 4 || 32 || — || 49 || — || 16 || — || — || — || 7 || 2 || 2 || 1 || 1 || — || — || — || 1 || — |- | align="left" | {{fra}} || 14810252 || 43889 || 29821 || — || 11149 || 6800 || 1433 || 4 || 978 || 92 || — || — || — || — || 3 || 110 || 55 || — || — || — || — || — || — || 3 || — || 15 || 7 || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{rus}} || 9143009 || 35680 || 14989 || — || 7398 || 11274 || 957 || — || 1 || — || — || — || — || — || — || 45 || 30 || — || 65 || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — |- | align="left" | {{vie}} || 10446113 || 28467 || 7531 || — || 3673 || 5766 || 694 || 4525 || 99 || 1 || 1642 || 1492 || — || 938 || 31 || 6 || 24 || — || 19 || 39 || 66 || 2 || 8 || — || 18 || — || — || 1 || 5 || 2 || 0 || 1 || — || — || — || — || — |- | align="left" | {{nor}} || 3632975 || 10305 || 6463 || — || 1701 || 2194 || 199 || — || 43 || — || — || — || 1422 || — || — || 39 || 61 || 6 || 23 || 31 || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nld}} || 103920 || 291 || 166 || — || 58 || 54 || — || — || 32 || — || — || — || — || — || — || 2 || 11 || — || 18 || 9 || — || 1 || 15 || — || — || — || — || — || — || — || 0 || — || — || — || 1 || — || — |- | align="left" | {{ido}} || 18188 || 106 || 94 || — || 11 || 1 || — || — || 2 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nno}} || 20629 || 64 || 38 || — || 11 || 8 || 6 || — || — || — || — || — || 15 || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{dut}} || 10536 || 25 || 20 || — || 1 || 1 || — || — || 2 || 18 || — || — || — || — || — || 1 || 1 || — || 1 || — || — || — || 1 || — || — || — || — || — || 1 || — || 0 || — || — || — || — || — || — |- | align="left" | {{cmn}} || 6095 || 18 || 14 || — || 1 || 2 || 1 || 1 || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || 1 || — || — || — || — |- | align="left" | {{deu}} || 1830 || 7 || 2 || — || — || 1 || — || — || 1 || 3 || — || — || — || — || — || — || — || — || 2 || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — |- | align="left" | {{spa}} || 2208 || 6 || 3 || — || 4 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || 2 || 1 || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{zho}} || 570 || 5 || 1 || — || 1 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || 2 || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{lat}} || 403 || 4 || — || — || 2 || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{epo}} || 688 || 3 || 1 || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fin}} || 1327 || 3 || 3 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nob}} || 1338 || 3 || 2 || — || 1 || 1 || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{swe}} || 727 || 3 || 3 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{jpn}} || 949 || 3 || 3 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{dan}} || 176 || 2 || 1 || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{afr}} || 476 || 2 || 2 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ita}} || 874 || 2 || 1 || — || — || — || — || — || — || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{yue}} || 612 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || 1 || — || — || — || — |- | align="left" | {{jbo}} || 128 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || 1 || — || — || — |- | align="left" | {{tpn}} || 58 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{eus}} || 46 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{cat-old}} || 92 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fas}} || 132 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{sna}} || 118 || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{fry}} || 128 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{heb}} || 190 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{hin}} || 329 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{nap}} || 92 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{kur}} || 120 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ina}} || 1295 || 1 || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ara}} || 429 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{por}} || 171 || 1 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- | align="left" | {{ron}} || 92 || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || — || 1 || — || — || — || — || — || — || — || — || — || — || — || — || — || 0 || — || — || — || — || — || — |- ! Tổng số !! 62177923 !! 221226 !! 122096 !! 7364 !! 48845 !! 38488 !! 8458 !! 4553 !! 3940 !! 1667 !! 1642 !! 1492 !! 1438 !! 938 !! 410 !! 383 !! 273 !! 144 !! 132 !! 113 !! 66 !! 52 !! 24 !! 20 !! 18 !! 15 !! 9 !! 9 !! 8 !! 4 !! 3 !! 2 !! 2 !! 1 !! 1 !! 1 !! 4 |} [[Thể loại:Thống kê Wiktionary]] dkkx49yv00jgsj86yi5n20oqxei3fh5 giáo xứ 0 236354 2350710 2053336 2026-05-07T07:57:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350710 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|giáo|xứ}} {{-noun-}} '''giáo xứ''' <!-- === ĐỊNH NGHĨA === --> # {{@|Công giáo}} Là một kiệu phân cấp quản lí trong Kitô giáo nhỏ hơn của giáo phận. # Nơi thông thường cho các giáo dân qui tụ lại để thi hành đức tin, sống hiệp thông với Giáo hội và tham gia vào sứ mạng của Giáo hội. {{-syn-}} <!-- === TỪ ĐỒNG NGHĨA === --> {{-trans-}} <!-- === DỊCH === --> * {{eng}}: parish * {{fra}}: paroche, paroisse * {{lat}}: paroechia, paroecia * {{ell}}: παρоικια * {{ara}}: رعية * {{ast}}: Parroquia * Tiếng Breton: Parrez * {{cat-2}}: Parròquia eclesiàstica * {{ces}}: Farnost * {{dan}}: Sogn * {{deu}}: kirchengemeinde * {{spa}}: Parroquia (religión) * {{epo}}: Paroho * Tiếng Gaeilge: Paróiste * {{kor}}: 교구 (기독교) * {{ind}}: Paroki * {{ita}}: Parrocchia * Tiếng Lục Xâm Bảo: Par * Tiếng Lèmburgs: * {{nld}}: Parochie * {{nor}}: Sogn, sokn * Tiếng Norman: Pâraisse * Tiếng Hạ Saxon: Parish * {{pol}}: Parafia * {{por}}: Paróquia * {{slk}}: Farnosť * Tiếng Sloven: Župnija * Tiếng Serb: Парохија * {{fin}}: seurakunta * {{swe}}: Församling * Tiếng Walon: Pårotche {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] edjht8imwykgxtjh6qibef636u1pd0b 2350972 2350710 2026-05-07T10:43:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350972 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|giáo|xứ}} {{-noun-}} '''giáo xứ''' <!-- === ĐỊNH NGHĨA === --> # {{@|Công giáo}} Là một kiệu phân cấp quản lí trong Kitô giáo nhỏ hơn của giáo phận. # Nơi thông thường cho các giáo dân qui tụ lại để thi hành đức tin, sống hiệp thông với Giáo hội và tham gia vào sứ mạng của Giáo hội. {{-syn-}} <!-- === TỪ ĐỒNG NGHĨA === --> {{-trans-}} <!-- === DỊCH === --> * {{eng}}: parish * {{fra}}: paroche, paroisse * {{lat}}: paroechia, paroecia * {{ell}}: παρоικια * {{ara}}: رعية * {{ast}}: Parroquia * Tiếng Breton: Parrez * {{cat-old}}: Parròquia eclesiàstica * {{ces}}: Farnost * {{dan}}: Sogn * {{deu}}: kirchengemeinde * {{spa}}: Parroquia (religión) * {{epo}}: Paroho * Tiếng Gaeilge: Paróiste * {{kor}}: 교구 (기독교) * {{ind}}: Paroki * {{ita}}: Parrocchia * Tiếng Lục Xâm Bảo: Par * Tiếng Lèmburgs: * {{nld}}: Parochie * {{nor}}: Sogn, sokn * Tiếng Norman: Pâraisse * Tiếng Hạ Saxon: Parish * {{pol}}: Parafia * {{por}}: Paróquia * {{slk}}: Farnosť * Tiếng Sloven: Župnija * Tiếng Serb: Парохија * {{fin}}: seurakunta * {{swe}}: Församling * Tiếng Walon: Pårotche {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] k8h0fyy219ivgxc5r4mqn7h7bsao3nq Pháp 0 237955 2350816 2296038 2026-05-07T08:08:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350816 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} [[Hình:Flag of France.svg|nhỏ|phải|Quốc kỳ Pháp]] ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|pr-noun}}=== {{vie-proper noun}} # {{senseid|vi|Q142}}{{place|vi|quốc gia|nằm chủ yếu ở|r/Tây Âu|official=Cộng hòa Pháp}}. #* {{quote-book|vi|year=2014|title=Tiếng Việt 3|text=Tôi là người '''Pháp'''. Mãi mãi tôi là công dân '''Pháp'''.|author=Linh Quân Cao|publisher=Nhà Xuất bản Giáo dục Việt Nam|volume=2|edition=10|chapter=Bác sĩ Y-éc-xanh}} # {{given name|vi|nam|from=tiếng Trung Quốc}} ===={{ĐM|syn}}==== * {{l|vi|Phật Lãng Sa}} {{lb|vi|obsolete}} * {{l|vi|Pháp quốc}} {{lb|vi|rare}} ===={{ĐM|drv}}==== * {{vi-l|bánh mì Pháp}} * {{vi-l|Cách mạng Pháp}} ===={{ĐM|trans}}==== {{trans-top|Quốc gia}} * {{eo}}: {{t+|eo|Francio}}, {{t+|eo|Francujo}} * {{en}}: {{t+|en|France}} * {{langname|ab}}: {{t|ab|Францызтәыла}} * {{ace}}: {{t|ace|Peurancih}} * {{ady}}: {{t|ady|Францие}} * {{af}}: {{t+|af|Frankryk}} * {{ain}}: {{t|ain|フランス}} * {{sq}}: {{t|sq|Francë|f}} {{qualifier|bất định}} {{t+|sq|Franca|f}} {{qualifier|xác định}}, {{t|sq|Frëngjia|f}}, {{t|sq|Frângjia|f}} * {{am}}: {{t|am|ፈረንሣይ}} * {{ar}}: {{t+|ar|فَرَنْسَا|f}}, {{t|ar|فَرَنْسَة|f}}, {{t|ar|الْإِفْرَنْج|f}} {{qualifier|cổ xưa}}, {{t|ar|الْفِرِنْجَة|f}} {{qualifier|cổ xưa}} *: {{ary}}: {{t|ary|فرنسا|f|tr=fransa}} * {{an}}: {{t|an|Franzia|f}} * {{hy}}: {{t+|hy|Ֆրանսիա}} * {{ast}}: {{t+|ast|Francia|f}} * {{az}}: {{t+|az|Fransa}} * {{ba}}: {{t|ba|Франция}} * {{eu}}: {{t+|eu|Frantzia}} * {{pl}}: {{t+|pl|Francja|f}} * {{pt}}: {{t+|pt|França|f}} * {{be}}: {{t|be|Фра́нцыя|f}} * {{bn}}: {{t+|bn|ফ্রান্স}} * {{bg}}: {{t+|bg|Фра́нция|f}} * {{cat-2}}: {{t+|ca|França|f}} * {{ceb}}: {{t|ceb|Pransiya}} * {{langname|ce}}: {{t|ce|Франци}} * {{chr}}: {{t|chr|ᎦᎸᏥᏱ}} * {{kw}}: {{t+|kw|Pow Frynk}} * {{co}}: {{t|co|Francia|f}} * {{dv}}: {{t|dv|ފަރަންސޭސިވިލާތް}} * {{dz}}: {{t|dz|ཕརཱནསི་}} * {{da}}: {{t+|da|Frankrig}} * {{de}}: {{t+|de|Frankreich|n}} *: {{langname|gsw}}: {{t|gsw|Frankriich}}, {{t|gsw|Frankrych}} *: {{langname|gmw-cfr}}: {{t|gmw-cfr|Frankrich}} {{q|Ripuarian}}, {{t|gmw-cfr|Frankreich}} {{q|Ripuarian}} * {{et}}: {{t+|et|Prantsusmaa}} * {{langname|gag}}: {{t|gag|Franţa}}, {{t|gag|Franţiya}} * {{gl}}: {{t+|gl|Francia|f}} * {{ka}}: {{t+|ka|საფრანგეთი}} * {{langname|gn}}: {{t|gn|Hyãsia}} * {{nl}}: {{t+|nl|Frankrijk|n}} * {{el}}: {{t+|el|Γαλλία|f}} * {{hi}}: {{t|hi|फ़्रांस|m}}, {{t|hi|फ़्राँस|m}}, {{t+|hi|फ़्रान्स|m}}, {{t+|hi|फ्रांस|m}} * {{hu}}: {{t+|hu|Franciaország}} * {{langname|hrx}}: {{t|hrx|Frankreich|n}} * {{is}}: {{t+|is|Frakkland|n}} * {{io}}: {{t+|io|Francia}} * {{id}}: {{t+|id|Prancis}} * {{ga}}: {{t+|ga|Frainc|alt=an Fhrainc|f}} * {{jv}}: {{t|jv|Prancis}} * {{kn}}: {{t+|kn|ಪ್ರಾಂಸ್}} * {{kk}}: {{t+|kk|Франция}} * {{km}}: {{t+|km|បារាំង}} * {{ky}}: {{t+|ky|Франция}} * {{lo}}: {{t+|lo|ຝະລັ່ງ}}, {{t|lo|ຝະຣັ່ງ}} * {{la}}: {{t+|la|Gallia|f}}, {{t+|la|Francia|f}}, {{t|la|Francogallia|f}} * {{lv}}: {{t+|lv|Francija|f}} * {{lt}}: {{t+|lt|Prancūzija|f}} * {{langname|khb}}: {{t|khb|ᦝᦱᧉᦜᧂᧈ}} * {{langname|mww}}: {{t|mww|Fav Teb}}, {{t|mww|Fab Kis}} {{qualifier|lỗi thời}} * {{ml}}: {{t|ml|ഫ്രാൻസ്}} * {{my}}: {{t|my|ပြင်သစ်}} * {{na}}: {{t|na|France}} * {{ja}}: {{t+|ja|フランス|tr=Furansu}}, {{t+|ja|仏蘭西|tr=Furansu}} {{qualifier|lỗi thời}}{{qualifier|không chính thức}} * {{ru}}: {{t+|ru|Фра́нция|f}} * {{nv}}: {{t|nv|Dáághahii Dineʼé Bikéyah}} * {{nor}}: *: {{nb}}: {{t+|nb|Frankrike|n}} *: {{nn}}: {{t+|nn|Frankrike|n}} * {{oc}}: {{t+|oc|França|f}} * {{or}}: {{t|or|ଫ୍ରାନ୍ସ୍}} * {{fi}}: {{t+|fi|Ranska}} * {{fr}}: {{t+|fr|France|f}} * {{ro}}: {{t+|ro|Franța|f}} * {{cs}}: {{t+|cs|Francie|f}} * {{si}}: {{t|si|ප්‍රංශය}} * {{sk}}: {{t+|sk|Francúzsko|n}} * {{sl}}: {{t+|sl|Fráncija|f}} * {{es}}: {{t+|es|Francia|f}} * {{sv}}: {{t+|sv|Frankrike|n}} * {{crh}}: {{t|crh|Frenkistan}} * {{tg}}: {{t+|tg|Фаронса}} * {{ta}}: {{t|ta|பிரான்ஸ்}} * {{tt}}: {{t+|tt|Франция}} * {{te}}: {{t+|te|ఫ్రాన్స్}} * {{ko}}: {{t+|ko|^프랑스}}, {{qualifier|hiếm}} {{t+|ko|^불란서(佛蘭西)}} * {{th}}: {{t+|th|ฝรั่งเศส}} * {{langname|bo}}: {{tt|bo|ཧྥ་རན་སི}} * {{tr}}: {{t+|tr|Fransa}} * {{zh}}: *: {{langname|yue}}: {{t|yue|法國}} *: {{langname|dng}}: {{t|dng|Фагуй}}, {{t|dng|Фагуә}} *: {{langname|cdo}}: {{t|cdo|法國}} *: {{langname|hak}}: {{t|hak|法國|tr=Fap-koet}} *: {{langname|nan-hbl}}: {{t+|nan-hbl|法國|tr=Hoat-kok}} *: {{langname|cmn}}: {{t+|cmn|法國}}, {{t+|cmn|法蘭西}} {{q|lỗi thời hoặc thuộc về thơ}} *: {{langname|wuu}}: {{t|wuu|法國}} * {{tk}}: {{t|tk|Fransiýa}} * {{uk}}: {{t+|uk|Фра́нція|f}} * {{uz}}: {{t+|uz|Fransiya}} * {{langname|vro}}: {{t|vro|Prantsusmaa}} * {{it}}: {{t+|it|Francia|f}} {{trans-bottom}} d7fnqkds4zjwnyjccjvjv5q8gmk0xtp 2350973 2350816 2026-05-07T10:43:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350973 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} [[Hình:Flag of France.svg|nhỏ|phải|Quốc kỳ Pháp]] ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|pr-noun}}=== {{vie-proper noun}} # {{senseid|vi|Q142}}{{place|vi|quốc gia|nằm chủ yếu ở|r/Tây Âu|official=Cộng hòa Pháp}}. #* {{quote-book|vi|year=2014|title=Tiếng Việt 3|text=Tôi là người '''Pháp'''. Mãi mãi tôi là công dân '''Pháp'''.|author=Linh Quân Cao|publisher=Nhà Xuất bản Giáo dục Việt Nam|volume=2|edition=10|chapter=Bác sĩ Y-éc-xanh}} # {{given name|vi|nam|from=tiếng Trung Quốc}} ===={{ĐM|syn}}==== * {{l|vi|Phật Lãng Sa}} {{lb|vi|obsolete}} * {{l|vi|Pháp quốc}} {{lb|vi|rare}} ===={{ĐM|drv}}==== * {{vi-l|bánh mì Pháp}} * {{vi-l|Cách mạng Pháp}} ===={{ĐM|trans}}==== {{trans-top|Quốc gia}} * {{eo}}: {{t+|eo|Francio}}, {{t+|eo|Francujo}} * {{en}}: {{t+|en|France}} * {{langname|ab}}: {{t|ab|Францызтәыла}} * {{ace}}: {{t|ace|Peurancih}} * {{ady}}: {{t|ady|Францие}} * {{af}}: {{t+|af|Frankryk}} * {{ain}}: {{t|ain|フランス}} * {{sq}}: {{t|sq|Francë|f}} {{qualifier|bất định}} {{t+|sq|Franca|f}} {{qualifier|xác định}}, {{t|sq|Frëngjia|f}}, {{t|sq|Frângjia|f}} * {{am}}: {{t|am|ፈረንሣይ}} * {{ar}}: {{t+|ar|فَرَنْسَا|f}}, {{t|ar|فَرَنْسَة|f}}, {{t|ar|الْإِفْرَنْج|f}} {{qualifier|cổ xưa}}, {{t|ar|الْفِرِنْجَة|f}} {{qualifier|cổ xưa}} *: {{ary}}: {{t|ary|فرنسا|f|tr=fransa}} * {{an}}: {{t|an|Franzia|f}} * {{hy}}: {{t+|hy|Ֆրանսիա}} * {{ast}}: {{t+|ast|Francia|f}} * {{az}}: {{t+|az|Fransa}} * {{ba}}: {{t|ba|Франция}} * {{eu}}: {{t+|eu|Frantzia}} * {{pl}}: {{t+|pl|Francja|f}} * {{pt}}: {{t+|pt|França|f}} * {{be}}: {{t|be|Фра́нцыя|f}} * {{bn}}: {{t+|bn|ফ্রান্স}} * {{bg}}: {{t+|bg|Фра́нция|f}} * {{cat-old}}: {{t+|ca|França|f}} * {{ceb}}: {{t|ceb|Pransiya}} * {{langname|ce}}: {{t|ce|Франци}} * {{chr}}: {{t|chr|ᎦᎸᏥᏱ}} * {{kw}}: {{t+|kw|Pow Frynk}} * {{co}}: {{t|co|Francia|f}} * {{dv}}: {{t|dv|ފަރަންސޭސިވިލާތް}} * {{dz}}: {{t|dz|ཕརཱནསི་}} * {{da}}: {{t+|da|Frankrig}} * {{de}}: {{t+|de|Frankreich|n}} *: {{langname|gsw}}: {{t|gsw|Frankriich}}, {{t|gsw|Frankrych}} *: {{langname|gmw-cfr}}: {{t|gmw-cfr|Frankrich}} {{q|Ripuarian}}, {{t|gmw-cfr|Frankreich}} {{q|Ripuarian}} * {{et}}: {{t+|et|Prantsusmaa}} * {{langname|gag}}: {{t|gag|Franţa}}, {{t|gag|Franţiya}} * {{gl}}: {{t+|gl|Francia|f}} * {{ka}}: {{t+|ka|საფრანგეთი}} * {{langname|gn}}: {{t|gn|Hyãsia}} * {{nl}}: {{t+|nl|Frankrijk|n}} * {{el}}: {{t+|el|Γαλλία|f}} * {{hi}}: {{t|hi|फ़्रांस|m}}, {{t|hi|फ़्राँस|m}}, {{t+|hi|फ़्रान्स|m}}, {{t+|hi|फ्रांस|m}} * {{hu}}: {{t+|hu|Franciaország}} * {{langname|hrx}}: {{t|hrx|Frankreich|n}} * {{is}}: {{t+|is|Frakkland|n}} * {{io}}: {{t+|io|Francia}} * {{id}}: {{t+|id|Prancis}} * {{ga}}: {{t+|ga|Frainc|alt=an Fhrainc|f}} * {{jv}}: {{t|jv|Prancis}} * {{kn}}: {{t+|kn|ಪ್ರಾಂಸ್}} * {{kk}}: {{t+|kk|Франция}} * {{km}}: {{t+|km|បារាំង}} * {{ky}}: {{t+|ky|Франция}} * {{lo}}: {{t+|lo|ຝະລັ່ງ}}, {{t|lo|ຝະຣັ່ງ}} * {{la}}: {{t+|la|Gallia|f}}, {{t+|la|Francia|f}}, {{t|la|Francogallia|f}} * {{lv}}: {{t+|lv|Francija|f}} * {{lt}}: {{t+|lt|Prancūzija|f}} * {{langname|khb}}: {{t|khb|ᦝᦱᧉᦜᧂᧈ}} * {{langname|mww}}: {{t|mww|Fav Teb}}, {{t|mww|Fab Kis}} {{qualifier|lỗi thời}} * {{ml}}: {{t|ml|ഫ്രാൻസ്}} * {{my}}: {{t|my|ပြင်သစ်}} * {{na}}: {{t|na|France}} * {{ja}}: {{t+|ja|フランス|tr=Furansu}}, {{t+|ja|仏蘭西|tr=Furansu}} {{qualifier|lỗi thời}}{{qualifier|không chính thức}} * {{ru}}: {{t+|ru|Фра́нция|f}} * {{nv}}: {{t|nv|Dáághahii Dineʼé Bikéyah}} * {{nor}}: *: {{nb}}: {{t+|nb|Frankrike|n}} *: {{nn}}: {{t+|nn|Frankrike|n}} * {{oc}}: {{t+|oc|França|f}} * {{or}}: {{t|or|ଫ୍ରାନ୍ସ୍}} * {{fi}}: {{t+|fi|Ranska}} * {{fr}}: {{t+|fr|France|f}} * {{ro}}: {{t+|ro|Franța|f}} * {{cs}}: {{t+|cs|Francie|f}} * {{si}}: {{t|si|ප්‍රංශය}} * {{sk}}: {{t+|sk|Francúzsko|n}} * {{sl}}: {{t+|sl|Fráncija|f}} * {{es}}: {{t+|es|Francia|f}} * {{sv}}: {{t+|sv|Frankrike|n}} * {{crh}}: {{t|crh|Frenkistan}} * {{tg}}: {{t+|tg|Фаронса}} * {{ta}}: {{t|ta|பிரான்ஸ்}} * {{tt}}: {{t+|tt|Франция}} * {{te}}: {{t+|te|ఫ్రాన్స్}} * {{ko}}: {{t+|ko|^프랑스}}, {{qualifier|hiếm}} {{t+|ko|^불란서(佛蘭西)}} * {{th}}: {{t+|th|ฝรั่งเศส}} * {{langname|bo}}: {{tt|bo|ཧྥ་རན་སི}} * {{tr}}: {{t+|tr|Fransa}} * {{zh}}: *: {{langname|yue}}: {{t|yue|法國}} *: {{langname|dng}}: {{t|dng|Фагуй}}, {{t|dng|Фагуә}} *: {{langname|cdo}}: {{t|cdo|法國}} *: {{langname|hak}}: {{t|hak|法國|tr=Fap-koet}} *: {{langname|nan-hbl}}: {{t+|nan-hbl|法國|tr=Hoat-kok}} *: {{langname|cmn}}: {{t+|cmn|法國}}, {{t+|cmn|法蘭西}} {{q|lỗi thời hoặc thuộc về thơ}} *: {{langname|wuu}}: {{t|wuu|法國}} * {{tk}}: {{t|tk|Fransiýa}} * {{uk}}: {{t+|uk|Фра́нція|f}} * {{uz}}: {{t+|uz|Fransiya}} * {{langname|vro}}: {{t|vro|Prantsusmaa}} * {{it}}: {{t+|it|Francia|f}} {{trans-bottom}} bs679d04zv437fc1775z9znl8tae68m dấu hai chấm 0 238202 2350711 2157549 2026-05-07T07:57:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350711 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Colon.svg|nhỏ|'''Dấu hai chấm'''.]] {{-etymology-}} Từ ghép giữa {{ghép|vi|dấu|hai|chấm}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[dấu câu|Dấu câu]] gồm một [[dấu chấm]] ở trên, một một chấm ở dưới (<big>[[Tiêu đề không được hỗ trợ/:|:]]</big>). Được dùng để đánh dấu (báo trước) phần [[giải thích]], [[thuyết minh]] cho một phần trước đó, hoặc đánh dấu [[lời dẫn]] [[trực tiếp]] (dùng với [[dấu ngoặc kép]]) hay lời [[đối thoại]] (dùng với [[dấu gạch ngang]]). #* {{quote-book|vi|author=Nguyễn Kim Thản|title=Động từ trong tiếng Việt|year=1999|publisher=NXB Khoa học xã hội|page=167|text=Trong lối văn tường thuật trực tiếp, có thể có quãng ngắt sau động từ hay liên từ ''rằng'', ''là'': quãng ngắt này được biểu thị trong chữ viết bằng '''dấu hai chấm''' (:).}} {{-synonym-}} * {{l|vi|hai chấm}} {{-trans-}} {{trans-top|Dấu câu}} {{đầu}} * {{ara}}: {{t|ar|نُقْطَة مُزْدَوِجَة|f|tr=nuqṭa muzdawija}}, {{t|ar|نُقْطَتَان|f}} {{qualifier|số đôi}} * {{sqi}}: {{t|sq|dy pika}} * {{eng}}: {{t+|en|colon}}, {{t+|en|colon-point}} {{qualifier|lỗi thời}} * {{ast}}: {{t+|ast|dos puntos|m-p}} * {{aze}}: {{t|az|iki nöqtə}} * {{pol}}: {{t+|pl|dwukropek|m-in}} * {{fas}}: {{t+|fa|دونقطه|tr=donoqte}} * {{bak}}: {{t|ba|ике нөктә|sc=Cyrl}} * {{bel}}: {{t|be|двукро́п'е|n}} * {{por}}: {{t|pt|dois pontos|m-p}} * {{ina}}: {{t|ia|duo punctos|p}} * {{bul}}: {{t+|bg|двоето́чие|n}} * {{cat-2}}: {{t|ca|dos punts|m-p}} * {{heb}}: {{t+|he|נקודתיים|f-p|tr=nekudataim}} * {{uig}}: {{t|ug|قوش چېكىت}} * {{dan}}: {{t+|da|kolon|n}} * {{deu}}: {{t+|de|Doppelpunkt|m}}, {{t+|de|Kolon|n}} * {{est}}: {{t|et|koolon}} * {{fao}}: {{t|fo|kolon|n}} * {{gla}}: {{t|gd|còilean|m}}, {{t|gd|dà-phuing|f}} * {{glg}}: {{t+|gl|dous puntos|m-p}} * {{kat}}: {{t|ka|ორწერტილი}} * {{nld}}: {{t+|nl|dubbele punt|f}}, {{t+|nl|dubbelpunt|n}} * {{hin}}: {{t|hi|कोलन|m}}, {{t|hi|अपूर्ण विराम}}, {{t|hi|कॉलन|m}} * {{hun}}: {{t+|hu|kettőspont}} * {{ell}}: {{t+|el|άνω και κάτω τελεία|f}} * {{ido}}: {{t+|io|bipunto}} * {{ind}}: {{t+|id|titik dua}} * {{gle}}: {{t|ga|idirstad|m}} * {{kaz}}: {{t|kk|қос нүкте}} * {{kir}}: {{t|ky|кош чекит}} * {{lav}}: {{t|lv|kols|m}} * {{lit}}: {{t|lt|dvitaškis|m}} * {{mkd}}: {{t|mk|две точки|f-p}} * {{mlg}}: {{t|mg|teboka roa}} * {{mos}}: {{t|mos|tẽg-yɩɩbre}} * {{mon}}: {{t|mn|давхар цэг}} * {{nor}}: ** {{nob}}: {{t|nb|kolon|n}} ** {{nno}}: {{t|nn|kolon|n}} * {{rus}}: {{t+|ru|двоето́чие|n}} * {{jpn}}: {{t+|ja|コロン|tr=koron}} * {{fra}}: {{t+|fr|deux points|m}} * {{fin}}: {{t+|fi|kaksoispiste}} * {{pan}}: {{t|pa|ਦੁਬਿੰਦੀ|f}} * {{epo}}: {{t+|eo|dupunkto}} * {{ron}}: {{t+|ro|două puncte|n-p}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|двоточка|f}}, {{t|sh|двоточје|n}}, {{t|sh|двотачка|f}} ** {{Latn}}: {{t+|sh|dvotočka|f}}, {{t+|sh|dvotočje|n}}, {{t|sh|dvotačka|f}} * {{slk}}: {{t|sk|dvojbodka|f}} * {{slv}}: {{t+|sl|dvopičje|n}} * {{swa}}: {{t|sw|nukta mbili}}, {{t|sw|koloni}} * {{ces}}: {{t+|cs|dvojtečka|f}} * {{tgl}}: {{t|tl|tutuldok}} * {{tgk}}: {{t|tg|ду нуқта}}, {{t|tg|аломати баён}} * {{spa}}: {{t|es|dos puntos|m-p}} * {{tha}}: {{t+|th|ทวิภาค}} * {{tur}}: {{t|tr|iki nokta üst üste}}, {{t+|tr|iki nokta}} * {{swe}}: {{t+|sv|kolon|n}} * {{kor}}: {{t+|ko|쌍점(雙點)}}, {{t|ko|콜론}} * {{zho}}: ** {{cmn}}: {{t+|cmn|冒號|tr=màohào}} * {{ukr}}: {{t|uk|двокра́пка|f}} * {{uzb}}: {{t|uz|ikki nuqta}}, {{t|uz|qoʻsh nuqta}} * {{cym}}: {{t|cy|colon|m}} * {{ita}}: {{t+|it|due punti|m-p}} {{cuối}} {{trans-bottom}} {{-see also-}} {{punctuation}} {{C|vi|Dấu câu|Hai}} a46nitht1arm44wpmyd70dugocqrm6l 2350974 2350711 2026-05-07T10:43:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350974 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Colon.svg|nhỏ|'''Dấu hai chấm'''.]] {{-etymology-}} Từ ghép giữa {{ghép|vi|dấu|hai|chấm}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # [[dấu câu|Dấu câu]] gồm một [[dấu chấm]] ở trên, một một chấm ở dưới (<big>[[Tiêu đề không được hỗ trợ/:|:]]</big>). Được dùng để đánh dấu (báo trước) phần [[giải thích]], [[thuyết minh]] cho một phần trước đó, hoặc đánh dấu [[lời dẫn]] [[trực tiếp]] (dùng với [[dấu ngoặc kép]]) hay lời [[đối thoại]] (dùng với [[dấu gạch ngang]]). #* {{quote-book|vi|author=Nguyễn Kim Thản|title=Động từ trong tiếng Việt|year=1999|publisher=NXB Khoa học xã hội|page=167|text=Trong lối văn tường thuật trực tiếp, có thể có quãng ngắt sau động từ hay liên từ ''rằng'', ''là'': quãng ngắt này được biểu thị trong chữ viết bằng '''dấu hai chấm''' (:).}} {{-synonym-}} * {{l|vi|hai chấm}} {{-trans-}} {{trans-top|Dấu câu}} {{đầu}} * {{ara}}: {{t|ar|نُقْطَة مُزْدَوِجَة|f|tr=nuqṭa muzdawija}}, {{t|ar|نُقْطَتَان|f}} {{qualifier|số đôi}} * {{sqi}}: {{t|sq|dy pika}} * {{eng}}: {{t+|en|colon}}, {{t+|en|colon-point}} {{qualifier|lỗi thời}} * {{ast}}: {{t+|ast|dos puntos|m-p}} * {{aze}}: {{t|az|iki nöqtə}} * {{pol}}: {{t+|pl|dwukropek|m-in}} * {{fas}}: {{t+|fa|دونقطه|tr=donoqte}} * {{bak}}: {{t|ba|ике нөктә|sc=Cyrl}} * {{bel}}: {{t|be|двукро́п'е|n}} * {{por}}: {{t|pt|dois pontos|m-p}} * {{ina}}: {{t|ia|duo punctos|p}} * {{bul}}: {{t+|bg|двоето́чие|n}} * {{cat-old}}: {{t|ca|dos punts|m-p}} * {{heb}}: {{t+|he|נקודתיים|f-p|tr=nekudataim}} * {{uig}}: {{t|ug|قوش چېكىت}} * {{dan}}: {{t+|da|kolon|n}} * {{deu}}: {{t+|de|Doppelpunkt|m}}, {{t+|de|Kolon|n}} * {{est}}: {{t|et|koolon}} * {{fao}}: {{t|fo|kolon|n}} * {{gla}}: {{t|gd|còilean|m}}, {{t|gd|dà-phuing|f}} * {{glg}}: {{t+|gl|dous puntos|m-p}} * {{kat}}: {{t|ka|ორწერტილი}} * {{nld}}: {{t+|nl|dubbele punt|f}}, {{t+|nl|dubbelpunt|n}} * {{hin}}: {{t|hi|कोलन|m}}, {{t|hi|अपूर्ण विराम}}, {{t|hi|कॉलन|m}} * {{hun}}: {{t+|hu|kettőspont}} * {{ell}}: {{t+|el|άνω και κάτω τελεία|f}} * {{ido}}: {{t+|io|bipunto}} * {{ind}}: {{t+|id|titik dua}} * {{gle}}: {{t|ga|idirstad|m}} * {{kaz}}: {{t|kk|қос нүкте}} * {{kir}}: {{t|ky|кош чекит}} * {{lav}}: {{t|lv|kols|m}} * {{lit}}: {{t|lt|dvitaškis|m}} * {{mkd}}: {{t|mk|две точки|f-p}} * {{mlg}}: {{t|mg|teboka roa}} * {{mos}}: {{t|mos|tẽg-yɩɩbre}} * {{mon}}: {{t|mn|давхар цэг}} * {{nor}}: ** {{nob}}: {{t|nb|kolon|n}} ** {{nno}}: {{t|nn|kolon|n}} * {{rus}}: {{t+|ru|двоето́чие|n}} * {{jpn}}: {{t+|ja|コロン|tr=koron}} * {{fra}}: {{t+|fr|deux points|m}} * {{fin}}: {{t+|fi|kaksoispiste}} * {{pan}}: {{t|pa|ਦੁਬਿੰਦੀ|f}} * {{epo}}: {{t+|eo|dupunkto}} * {{ron}}: {{t+|ro|două puncte|n-p}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|двоточка|f}}, {{t|sh|двоточје|n}}, {{t|sh|двотачка|f}} ** {{Latn}}: {{t+|sh|dvotočka|f}}, {{t+|sh|dvotočje|n}}, {{t|sh|dvotačka|f}} * {{slk}}: {{t|sk|dvojbodka|f}} * {{slv}}: {{t+|sl|dvopičje|n}} * {{swa}}: {{t|sw|nukta mbili}}, {{t|sw|koloni}} * {{ces}}: {{t+|cs|dvojtečka|f}} * {{tgl}}: {{t|tl|tutuldok}} * {{tgk}}: {{t|tg|ду нуқта}}, {{t|tg|аломати баён}} * {{spa}}: {{t|es|dos puntos|m-p}} * {{tha}}: {{t+|th|ทวิภาค}} * {{tur}}: {{t|tr|iki nokta üst üste}}, {{t+|tr|iki nokta}} * {{swe}}: {{t+|sv|kolon|n}} * {{kor}}: {{t+|ko|쌍점(雙點)}}, {{t|ko|콜론}} * {{zho}}: ** {{cmn}}: {{t+|cmn|冒號|tr=màohào}} * {{ukr}}: {{t|uk|двокра́пка|f}} * {{uzb}}: {{t|uz|ikki nuqta}}, {{t|uz|qoʻsh nuqta}} * {{cym}}: {{t|cy|colon|m}} * {{ita}}: {{t+|it|due punti|m-p}} {{cuối}} {{trans-bottom}} {{-see also-}} {{punctuation}} {{C|vi|Dấu câu|Hai}} k84rkh9dlx7pw9i77ho4cm556w8qxtc Wikinews 0 238236 2350712 1788633 2026-05-07T07:57:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350712 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} {{pron-audio |place=California, Hoa Kỳ (nam giới) |file=En-us-Wikinews.ogg |pron=}} {{-etymology-}} {{etym-from | term = wiki | 2 term = news | 2 meaning = tin tức }} {{-noun-}} {{eng-pr-noun|es}} # [[dự án|Dự án]] [[tin tức]] có [[nội dung]] [[mở]] [[trực thuộc]] [[Wikimedia]]. # Một [[phiên bản]] [[ngôn ngữ]] của [[dự án]] này. {{-trans-}} {{đầu}} * {{por}}: [[Wikinotícias]] * {{cat-2}}: [[Viquinotícies]] * {{lat}}: [[Vicinuntii]] * {{nob}}: [[Wikinytt]] * {{fin}}: [[Wikiuutisiin]] * {{epo}}: [[Vikinovaĵoj]] {{giữa}} * {{ron}}: [[Wikiştiri]] * {{ces}}: [[Wikizprávy]] * {{srp}}: [[Викивести]] * {{spa}}: [[Wikinoticias]] {{f}} * {{tur}}: [[Vikihaber]] * {{ita}}: [[Wikinotizie]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Anh]] 9bqy5q3u1c79lln1re99v2vp3hkwaez 2350975 2350712 2026-05-07T10:43:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350975 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} {{pron-audio |place=California, Hoa Kỳ (nam giới) |file=En-us-Wikinews.ogg |pron=}} {{-etymology-}} {{etym-from | term = wiki | 2 term = news | 2 meaning = tin tức }} {{-noun-}} {{eng-pr-noun|es}} # [[dự án|Dự án]] [[tin tức]] có [[nội dung]] [[mở]] [[trực thuộc]] [[Wikimedia]]. # Một [[phiên bản]] [[ngôn ngữ]] của [[dự án]] này. {{-trans-}} {{đầu}} * {{por}}: [[Wikinotícias]] * {{cat-old}}: [[Viquinotícies]] * {{lat}}: [[Vicinuntii]] * {{nob}}: [[Wikinytt]] * {{fin}}: [[Wikiuutisiin]] * {{epo}}: [[Vikinovaĵoj]] {{giữa}} * {{ron}}: [[Wikiştiri]] * {{ces}}: [[Wikizprávy]] * {{srp}}: [[Викивести]] * {{spa}}: [[Wikinoticias]] {{f}} * {{tur}}: [[Vikihaber]] * {{ita}}: [[Wikinotizie]] {{cuối}} [[Thể loại:Danh từ riêng tiếng Anh]] hp30v5o2ilyrrqquilrik5j2rsctk1d sữa đậu nành 0 240133 2350713 2281368 2026-05-07T07:57:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350713 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|sữa|đậu|nành}} {{-etymology-}} {{etym-from | term = sữa | 2 term = đậu nành }} {{-noun-}} '''sữa đậu nành''' # Một [[thức uống]] khá [[phổ biến]] làm từ [[đậu tương]], [[vị]] [[mát]], hơi [[ngậy]], khi [[uống]] có thể thêm chút [[đường]]. {{-trans-}} {{đầu}} * {{eng}}: [[soy milk]], [[soymilk]], [[soya milk]], [[soy bean milk]] * {{pol}}: [[mleko sojowe]] {{n}} * {{isl}}: [[sojamjólk]] {{f}} * {{por}}: [[leite de soja]] {{f}} * {{cat-2}}: [[llet de soia]] {{f}} * {{heb}}: [[חלב סויה]] (''khalav soya'') * {{deu}}: [[Sojamilch]] {{f}} * {{hun}}: [[szójatej]] * {{nor}}: [[soyamelk]] {{mf}} * {{jpn}}: [[豆乳]] (''[[tōnyū]]'', đậu nhũ) {{giữa}} * {{fin}}: [[soijamaito]] * {{fra}}: [[lait de soja]] {{g|m}} * {{epo}}: [[sojlakto]] * {{ces}}: [[sojové mléko]] {{n}} * {{spa}}: [[leche de soja]] {{f}} * {{swe}}: [[sojamjölk]] {{g|c}} * {{zho}}: ** {{cmn}}: [[豆漿]] (''dòujiāng'', [[đậu tương]]), [[豆浆]] (''dòujiāng'', đậu tương), [[豆奶]] (''dòunǎi'', đậu nãi) * {{ita}}: [[latte di soia]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ilwgvqkol6h33u6hii59aojzchrqxut 2350976 2350713 2026-05-07T10:43:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350976 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|sữa|đậu|nành}} {{-etymology-}} {{etym-from | term = sữa | 2 term = đậu nành }} {{-noun-}} '''sữa đậu nành''' # Một [[thức uống]] khá [[phổ biến]] làm từ [[đậu tương]], [[vị]] [[mát]], hơi [[ngậy]], khi [[uống]] có thể thêm chút [[đường]]. {{-trans-}} {{đầu}} * {{eng}}: [[soy milk]], [[soymilk]], [[soya milk]], [[soy bean milk]] * {{pol}}: [[mleko sojowe]] {{n}} * {{isl}}: [[sojamjólk]] {{f}} * {{por}}: [[leite de soja]] {{f}} * {{cat-old}}: [[llet de soia]] {{f}} * {{heb}}: [[חלב סויה]] (''khalav soya'') * {{deu}}: [[Sojamilch]] {{f}} * {{hun}}: [[szójatej]] * {{nor}}: [[soyamelk]] {{mf}} * {{jpn}}: [[豆乳]] (''[[tōnyū]]'', đậu nhũ) {{giữa}} * {{fin}}: [[soijamaito]] * {{fra}}: [[lait de soja]] {{g|m}} * {{epo}}: [[sojlakto]] * {{ces}}: [[sojové mléko]] {{n}} * {{spa}}: [[leche de soja]] {{f}} * {{swe}}: [[sojamjölk]] {{g|c}} * {{zho}}: ** {{cmn}}: [[豆漿]] (''dòujiāng'', [[đậu tương]]), [[豆浆]] (''dòujiāng'', đậu tương), [[豆奶]] (''dòunǎi'', đậu nãi) * {{ita}}: [[latte di soia]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 2ate4f6ds8bwgafljrah48czd2g47nn Thành phố Hồ Chí Minh 0 241337 2350714 2049594 2026-05-07T07:57:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350714 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Thanh pho Ho Chi Minh in Vietnam.svg|nhỏ|phải|Vị trí '''Thành phố Hồ Chí Minh''' trên bản đồ Việt Nam (phần màu đỏ).]] {{-pron-}} {{vie-pron}} {{-place-}} '''Thành phố Hồ Chí Minh''' # [[thành phố|Thành phố]] [[đông dân]] nhất, [[đồng thời]] cũng là [[trung tâm]] [[kinh tế]], [[văn hóa]], [[giáo dục]] [[quan trọng]] của [[Việt Nam]]; thuộc vùng [[Đông Nam Bộ]]. {{-syn-}} * [[Sài Gòn]] {{-trans-}} {{đầu}} * {{afr}}: [[Ho Chi Minh-stad]] * {{sqi}}: [[Ho-Chi-Minh-Stadt]] * {{eng}}: [[Ho Chi Minh City]] * {{arg}}: [[Ciudat Ho Chi Minh]] * {{ast}}: [[Ciudad Ho Chi Minh]] * {{isl}}: [[Ho Chi Minh-borg]] * {{bel}}: [[Горад Хашымін]] * {{ben}}: [[হো চি মিন সিটি]] * {{por}}: [[Cidade de Ho Chi Minh]] * {{ina}}: [[Ho Chi Minh Citate]] * {{bos}}: [[Ho Ši Min Grad]] * {{bre}}: [[Kêr Ho-Chi-Minh]] * {{cat-2}}: [[Ciutat Ho Chi Minh]] * {{cor}}: [[Cita Ho Chi Minh]] * {{dan}}: [[Ho Chi Minh-byen]] * {{heb}}: [[הו צ'י מין סיטי]] * {{deu}}: [[Ho-Chi-Minh-Stadt]] * {{fry}}: [[Ho Chi Minh stêd]] * {{glg}}: [[Cidade Ho Chi Minh]] * {{grn}}: [[Táva Ho Chi Minh]] * {{nds}}: [[Ho-Chi-Minh-Stadt]] * {{nld}}: [[Ho Chi Minhstad]] * {{hin}}: [[हो ची मिन्ह शहर]] * {{hun}}: [[Ho Si Minh-város]] * {{ido}}: [[Ho Chi Minh urbo]] * {{ilo}}: [[Ciudad ti Ho Chi Minh]] * {{ind}}: [[Kota Ho Chi Minh]] * {{ile}}: [[Ho Chi Minh Cité]] * {{gle}}: [[Cathair Ho Chi Minh]] * {{jav}}: [[Kutha Ho Chi Minh]] * {{khm}}: [[ក្រុងហូជីមិញ]] (''Grong Hūčīmiñ'') {{giữa}} * {{lat}}: [[Hochiminhopolis]] * {{lim}}: [[Ho Chi Minhstad]] * {{jbo}}: [[Ho Chi Minh tcadu]] * {{msa}}: [[Bandar Raya Ho Chi Minh]] * {{nan}}: [[Hồ Chí Minh Chhī]] * {{mar}}: [[हो चि मिन्ह सिटी]] * {{mon}}: [[Хо Ши Мин хот]] * {{nor}}: [[Ho Chi Minh-byen]] * {{nah}}: [[Āltepētl Ho Chi Minh]] * {{jpn}}: [[ホーチミン市]] (''Hōchimin-shi'') * {{fin}}: [[Hồ Chí Minhin kaupunki]] * {{fra}}: [[Hô-Chi-Minh-Ville]] * {{epo}}: [[Ho-Ĉi-Min-urbo]] * {{sme}}: [[Hồ Chí Minh gávpot]] * {{sco}}: [[Ho Chi Minh Ceety]] * {{ces}}: [[Ho Či Minovo Město]] * {{slk}}: [[Hočiminovo Mesto]] * {{sun}}: [[Kota Ho Chi Minh]] * {{swa}}: [[Mji wa Ho Chi Minh]] * {{tgl}}: [[Lungsod ng Ho Chi Minh]] * {{tam}}: [[ஹோ சி மின் நகரம்]] * {{spa}}: [[Ciudad Ho Chi Minh]] {{f}} * {{tha}}: [[นครโฮจิมินห์]] (''Ná-kon Hoh-jì-mí'') * {{tur}}: [[Ho Chi Minh Kenti]] * {{swe}}: [[Ho Chi Minh-staden]] * {{kor}}: [[호찌민 시]] (''Hojjimin-si'') * {{zho}}: [[胡志明市]] (''Hú Zhì Míng-shì'', Hồ Chí Minh thị) * {{cym}}: [[Dinas Ho Chi Minh]] * {{wln}}: [[Hô Chí Minh Veye]] * {{yid}}: [[הא טשי מין שטאט]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 7g8mv5ovzbbb8mr0obuqeieywd56vn5 2350977 2350714 2026-05-07T10:43:23Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350977 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Thanh pho Ho Chi Minh in Vietnam.svg|nhỏ|phải|Vị trí '''Thành phố Hồ Chí Minh''' trên bản đồ Việt Nam (phần màu đỏ).]] {{-pron-}} {{vie-pron}} {{-place-}} '''Thành phố Hồ Chí Minh''' # [[thành phố|Thành phố]] [[đông dân]] nhất, [[đồng thời]] cũng là [[trung tâm]] [[kinh tế]], [[văn hóa]], [[giáo dục]] [[quan trọng]] của [[Việt Nam]]; thuộc vùng [[Đông Nam Bộ]]. {{-syn-}} * [[Sài Gòn]] {{-trans-}} {{đầu}} * {{afr}}: [[Ho Chi Minh-stad]] * {{sqi}}: [[Ho-Chi-Minh-Stadt]] * {{eng}}: [[Ho Chi Minh City]] * {{arg}}: [[Ciudat Ho Chi Minh]] * {{ast}}: [[Ciudad Ho Chi Minh]] * {{isl}}: [[Ho Chi Minh-borg]] * {{bel}}: [[Горад Хашымін]] * {{ben}}: [[হো চি মিন সিটি]] * {{por}}: [[Cidade de Ho Chi Minh]] * {{ina}}: [[Ho Chi Minh Citate]] * {{bos}}: [[Ho Ši Min Grad]] * {{bre}}: [[Kêr Ho-Chi-Minh]] * {{cat-old}}: [[Ciutat Ho Chi Minh]] * {{cor}}: [[Cita Ho Chi Minh]] * {{dan}}: [[Ho Chi Minh-byen]] * {{heb}}: [[הו צ'י מין סיטי]] * {{deu}}: [[Ho-Chi-Minh-Stadt]] * {{fry}}: [[Ho Chi Minh stêd]] * {{glg}}: [[Cidade Ho Chi Minh]] * {{grn}}: [[Táva Ho Chi Minh]] * {{nds}}: [[Ho-Chi-Minh-Stadt]] * {{nld}}: [[Ho Chi Minhstad]] * {{hin}}: [[हो ची मिन्ह शहर]] * {{hun}}: [[Ho Si Minh-város]] * {{ido}}: [[Ho Chi Minh urbo]] * {{ilo}}: [[Ciudad ti Ho Chi Minh]] * {{ind}}: [[Kota Ho Chi Minh]] * {{ile}}: [[Ho Chi Minh Cité]] * {{gle}}: [[Cathair Ho Chi Minh]] * {{jav}}: [[Kutha Ho Chi Minh]] * {{khm}}: [[ក្រុងហូជីមិញ]] (''Grong Hūčīmiñ'') {{giữa}} * {{lat}}: [[Hochiminhopolis]] * {{lim}}: [[Ho Chi Minhstad]] * {{jbo}}: [[Ho Chi Minh tcadu]] * {{msa}}: [[Bandar Raya Ho Chi Minh]] * {{nan}}: [[Hồ Chí Minh Chhī]] * {{mar}}: [[हो चि मिन्ह सिटी]] * {{mon}}: [[Хо Ши Мин хот]] * {{nor}}: [[Ho Chi Minh-byen]] * {{nah}}: [[Āltepētl Ho Chi Minh]] * {{jpn}}: [[ホーチミン市]] (''Hōchimin-shi'') * {{fin}}: [[Hồ Chí Minhin kaupunki]] * {{fra}}: [[Hô-Chi-Minh-Ville]] * {{epo}}: [[Ho-Ĉi-Min-urbo]] * {{sme}}: [[Hồ Chí Minh gávpot]] * {{sco}}: [[Ho Chi Minh Ceety]] * {{ces}}: [[Ho Či Minovo Město]] * {{slk}}: [[Hočiminovo Mesto]] * {{sun}}: [[Kota Ho Chi Minh]] * {{swa}}: [[Mji wa Ho Chi Minh]] * {{tgl}}: [[Lungsod ng Ho Chi Minh]] * {{tam}}: [[ஹோ சி மின் நகரம்]] * {{spa}}: [[Ciudad Ho Chi Minh]] {{f}} * {{tha}}: [[นครโฮจิมินห์]] (''Ná-kon Hoh-jì-mí'') * {{tur}}: [[Ho Chi Minh Kenti]] * {{swe}}: [[Ho Chi Minh-staden]] * {{kor}}: [[호찌민 시]] (''Hojjimin-si'') * {{zho}}: [[胡志明市]] (''Hú Zhì Míng-shì'', Hồ Chí Minh thị) * {{cym}}: [[Dinas Ho Chi Minh]] * {{wln}}: [[Hô Chí Minh Veye]] * {{yid}}: [[הא טשי מין שטאט]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ff3jwbx8rfluq0pk73kl3zmtvqf7cgj kung fu 0 241350 2350715 2112597 2026-05-07T07:57:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350715 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = eng | term = kung fu }} {{-noun-}} '''kung fu''' # [[võ thuật|Võ thuật]] [[Trung Quốc]] nói chung. {{-syn-}} * [[công phu]] * [[võ thuật]] * [[vũ thuật]] {{-trans-}} {{đầu}} * {{ara}}: [[كونج فو]] (''kungh fuu'') {{m}}, [[الووشو]] (''al-wuushu'') {{m}} * {{eng}}: [[#Tiếng Anh|kung fu]], [[wushu]] * {{hye}}: [[ուշու]] (''ušu'') * {{fas}}: [[کونگ فو]] (''kung fu'') * {{cat-2}}: [[kung-fu]] {{m}} * {{heb}}: [[קונג פו]] * {{deu}}: [[Wushu]] {{n}} * {{nld}}: [[#Tiếng Hà Lan|kung fu]] {{mf}} * {{hin}}: [[कुंग फू]] (''kuṅg phū'', ''kuṅg fū''), [[कुंग फ़ू]] (''kuṅg fū'') * {{nan}}: ** {{Hant}}: [[武術]] (võ thuật), [[功夫]] (công phu) ** {{Hans}}: [[武术]] (võ thuật), [[功夫]] (công phu) ** {{Latn}}: [[bú-su̍t]], [[kang-hu]] * {{rus}}: [[кун-фу]] (''kun-fú'') {{n}}, [[кунфу]] (''kunfú'') {{n}}, [[кунг-фу]] (''kung-fú'') {{n}}, [[гунфу]] (''gunfú'') {{n}}, [[ушу]] (''ušú'') {{f}}&{{n}} {{inv}} * {{jpn}}: [[武術]] (ぶじゅつ, ''bujutsu'', võ thuật), [[功夫]] (''kanfū'', công phu), [[カンフー]] (''kanfū''), [[ゴンフー]] (''gonfū'') * {{fra}}: [[wushu]] {{m}} * {{cmn}}: ** {{Hant}}: [[武術]] (''wǔshù'', võ thuật), [[功夫]] (''gōngfu'', công phu) ** {{Hans}}: [[武术]] (''wǔshù'', võ thuật), [[功夫]] (''gōngfu'', công phu) * {{yue}}: [[功夫]] (''gung<sup>1</sup> fu<sup>1</sup>, công phu) * {{spa}}: [[kung-fu]] {{m}} * {{tha}}: [[กังฟู]] (''gang-foo'') * {{kor}}: [[무술]] (''musul'', 武術), [[쿵후]] (''kung-hu'') {{cuối}} {{-related-}} * [[wushu]] {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈkʌŋ ˈfuː/}}, {{IPA|/ˈkʊŋ ˈfuː/}} {{term|ít dùng}} {{pron-audio |place=Bắc California, Hoa Kỳ (nam giới) |file=En-us-kung fu.ogg |pron=kʌŋ ˈfuː}} {{-etymology-}} {{etym-from | lang = cmn | term = 功夫 | hv = công phu | rom = kung<sup>1</sup>-fu }} {{-noun-}} {{eng-noun|-}} # [[#Tiếng Việt|Kung fu]]. # [[võ thuật|Võ thuật]] [[Á Đông]] nói chung. {{-syn-}} * [[gongfu]] {{-drv-}} * [[fu]] * [[-fu]] * [[wire fu]] {{-related-}} * [[karate]] * [[wushu]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] jbnsivnsbt56zwj6lx0cg6f3fdtdo4p 2350978 2350715 2026-05-07T10:43:26Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350978 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = eng | term = kung fu }} {{-noun-}} '''kung fu''' # [[võ thuật|Võ thuật]] [[Trung Quốc]] nói chung. {{-syn-}} * [[công phu]] * [[võ thuật]] * [[vũ thuật]] {{-trans-}} {{đầu}} * {{ara}}: [[كونج فو]] (''kungh fuu'') {{m}}, [[الووشو]] (''al-wuushu'') {{m}} * {{eng}}: [[#Tiếng Anh|kung fu]], [[wushu]] * {{hye}}: [[ուշու]] (''ušu'') * {{fas}}: [[کونگ فو]] (''kung fu'') * {{cat-old}}: [[kung-fu]] {{m}} * {{heb}}: [[קונג פו]] * {{deu}}: [[Wushu]] {{n}} * {{nld}}: [[#Tiếng Hà Lan|kung fu]] {{mf}} * {{hin}}: [[कुंग फू]] (''kuṅg phū'', ''kuṅg fū''), [[कुंग फ़ू]] (''kuṅg fū'') * {{nan}}: ** {{Hant}}: [[武術]] (võ thuật), [[功夫]] (công phu) ** {{Hans}}: [[武术]] (võ thuật), [[功夫]] (công phu) ** {{Latn}}: [[bú-su̍t]], [[kang-hu]] * {{rus}}: [[кун-фу]] (''kun-fú'') {{n}}, [[кунфу]] (''kunfú'') {{n}}, [[кунг-фу]] (''kung-fú'') {{n}}, [[гунфу]] (''gunfú'') {{n}}, [[ушу]] (''ušú'') {{f}}&{{n}} {{inv}} * {{jpn}}: [[武術]] (ぶじゅつ, ''bujutsu'', võ thuật), [[功夫]] (''kanfū'', công phu), [[カンフー]] (''kanfū''), [[ゴンフー]] (''gonfū'') * {{fra}}: [[wushu]] {{m}} * {{cmn}}: ** {{Hant}}: [[武術]] (''wǔshù'', võ thuật), [[功夫]] (''gōngfu'', công phu) ** {{Hans}}: [[武术]] (''wǔshù'', võ thuật), [[功夫]] (''gōngfu'', công phu) * {{yue}}: [[功夫]] (''gung<sup>1</sup> fu<sup>1</sup>, công phu) * {{spa}}: [[kung-fu]] {{m}} * {{tha}}: [[กังฟู]] (''gang-foo'') * {{kor}}: [[무술]] (''musul'', 武術), [[쿵후]] (''kung-hu'') {{cuối}} {{-related-}} * [[wushu]] {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈkʌŋ ˈfuː/}}, {{IPA|/ˈkʊŋ ˈfuː/}} {{term|ít dùng}} {{pron-audio |place=Bắc California, Hoa Kỳ (nam giới) |file=En-us-kung fu.ogg |pron=kʌŋ ˈfuː}} {{-etymology-}} {{etym-from | lang = cmn | term = 功夫 | hv = công phu | rom = kung<sup>1</sup>-fu }} {{-noun-}} {{eng-noun|-}} # [[#Tiếng Việt|Kung fu]]. # [[võ thuật|Võ thuật]] [[Á Đông]] nói chung. {{-syn-}} * [[gongfu]] {{-drv-}} * [[fu]] * [[-fu]] * [[wire fu]] {{-related-}} * [[karate]] * [[wushu]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Anh]] 9ao5mj5r93101o58w47fwsmwc0ufkwj cảm ơn 0 242658 2350716 2191387 2026-05-07T07:57:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350716 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-verb-}} {{pn}} # [[tỏ|Tỏ]] sự [[biết ơn]] ([[đối]] với [[người]] đã [[giúp đỡ]] mình) #:''tỏ lòng '''cảm ơn''''' #:'''''cảm ơn''' sự giúp đỡ của mọi người'' # [[Từ]] dùng trong [[lời nói]] [[lịch sự]], để [[bày tỏ]] sự [[cảm kích]] với người đã [[làm việc]] gì đó cho mình, hoặc để [[nhận lời]] hay [[từ chối]] [[điều]] gì. #:'''''cảm ơn''' mọi người đã chú ý lắng nghe'' {{-syn-}} * [[cảm tạ]] * [[cám ơn]] {{-trans-}} {{trans-top}} * {{aar}}: [[gadda ge]] * {{afr}}: [[dankie]] * {{sqi}}: [[faleminderit]] * {{ara}}: [[شكرا|شكرًا]] (''šúkran'') * {{hye}}: [[շնորհակալ եմ]] (''šnorhagal yem'') * {{eus}}: [[eskerrik asko]] * {{bul}}: [[благодаря]] (''blagodaria'') * {{ben}}: [[ধনবাদ]] (''dhonnobad'') * {{cat-2}}: [[gràcies]], [[moltes gràcies]], [[mercès]] * {{zho}}: ** {{Hans}}: [[谢谢]] ([[tạ]] tạ, ''xièxie'') ** {{Hant}}: [[謝謝]] ([[tạ]] tạ, xièxie) ** {{Hani}}: [[多谢]] ([[đa]] [[tạ]], duōxiè) * {{hrv}}: [[hvala]] * {{ces}}: [[děkuji]] * {{dan}}: [[tak]] * {{nld}}: [[dank u]], [[dank je]], [[dankjewel]], [[bedankt]] * {{eng}}: [[thank you]], [[cheers]], [[thanks]], [[thank you very much]], [[thanks a lot]], [[ta]], [[thanks a bunch]], [[thanks a million]], [[much obliged]] * {{epo}}: [[dankon]], [[mi dankas]] * {{est}}: [[aitäh]] * {{fij}}: [[vinaka]] * {{fil}}: [[salamat]] * {{fin}}: [[kiitos]] * {{fra}}: [[merci]] * {{kat}}: [[მადლობთ]] (''madlobt‘'') * {{deu}}: [[danke]], [[danke schön]], [[vielen Dank]] * {{gil}}: [[ko rabwa]], [[kam rabwa]] ''cho nhiều người'' * {{el}}: [[ευχαριστώ]] (''efkharistó'') {{sing}}, [[ευχαριστούμε]] (''efkharistoúme'') {{plur}} * {{haw}}: [[mahalo]] * {{heb}}: [[תודה]] (''tóda'') * {{hin}}: [[धन्यवाद]] (''dhanyavād'') * {{hun}}: [[köszönöm]] * {{isl}}: [[takk]] * {{ind}}: [[terimakasih]], [[terima kasih]], [[terima kasih|makasih]] ''thân mật'' * {{gle}}: [[go raibh maith agat]] ''cho một người'', [[go raibh maith agaibh]] ''cho nhiều người'' * {{ita}}: [[grazie]] {{giữa}} * {{jpn}}: [[ありがとう]] (''arigatō''), [[どうも]] (''dōmo''), [[どうもありがとう]] (''dōmo arigatō'') * {{apk}}: [[áho]] * {{kor}}: [[고맙습니다]] (''gomapseumnida'') * {{kur}}: [[spas]] * {{lat}}: [[tibi]] [[gratia]]s [[ago]] * {{lav}}: [[paldies]] * {{lit}}: [[ačiū]] * {{mri}}: [[kia ora]] * {{nah}}: [[tlazohcamati]] * {{nor}}: [[takk]] * {{fas}}: {{term|Iran}} [[ممنونم]] (''mamnúnam''), {{term|Afghanistan}} [[تشکر]] (''tashákur'') * {{pol}}: [[dziękuję]] * {{oma}}: [[wiblaho]] * {{por}}: [[obrigado]] {{m}}; [[obrigada]] {{f}} * {{que}}: [[agradiseyki]] * {{ron}}: [[mulţumesc]], [[mersi]] * {{rus}}: [[спасибо]] (''spasíbo''), [[благодарю]] (''blagodar’ú'') * {{sco}}: [[mòran taing]], {{term|Islay}} [[go raibh maith agat]] * {{srp}}: ** {{Cyrl}}: [[хвала]] ** {{Latn}}: [[hvala]] * {{sin}}: (''sthuthiy'') * {{slk}}: [[ďakujem]] {{sing}}, [[ďakujeme]] {{plur}} * {{slv}}: [[hvala]] * {{spa}}: [[gracias]], [[muchas gracias]], [[muchísimas gracias]] * {{swe}}: [[tack]] * {{tam}}: [[நன்றி]] (''nandri'') * {{tha}}: {{THchar|[[ขอบคุณ]]}} (''kòp-kuun'') * {{tur}}: [[teşekkür ederim]] * {{ukr}}: [[дякую]] (''djákuju'') * {{tzj}}: ''maltiox'' * {{tzt}}: ''maltiox'' * {{cym}}: [[diolch]] {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Động từ|tiếng Việt}} l75q6ckolwlxbcg6pbaosga79pouhjt 2350979 2350716 2026-05-07T10:43:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350979 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-verb-}} {{pn}} # [[tỏ|Tỏ]] sự [[biết ơn]] ([[đối]] với [[người]] đã [[giúp đỡ]] mình) #:''tỏ lòng '''cảm ơn''''' #:'''''cảm ơn''' sự giúp đỡ của mọi người'' # [[Từ]] dùng trong [[lời nói]] [[lịch sự]], để [[bày tỏ]] sự [[cảm kích]] với người đã [[làm việc]] gì đó cho mình, hoặc để [[nhận lời]] hay [[từ chối]] [[điều]] gì. #:'''''cảm ơn''' mọi người đã chú ý lắng nghe'' {{-syn-}} * [[cảm tạ]] * [[cám ơn]] {{-trans-}} {{trans-top}} * {{aar}}: [[gadda ge]] * {{afr}}: [[dankie]] * {{sqi}}: [[faleminderit]] * {{ara}}: [[شكرا|شكرًا]] (''šúkran'') * {{hye}}: [[շնորհակալ եմ]] (''šnorhagal yem'') * {{eus}}: [[eskerrik asko]] * {{bul}}: [[благодаря]] (''blagodaria'') * {{ben}}: [[ধনবাদ]] (''dhonnobad'') * {{cat-old}}: [[gràcies]], [[moltes gràcies]], [[mercès]] * {{zho}}: ** {{Hans}}: [[谢谢]] ([[tạ]] tạ, ''xièxie'') ** {{Hant}}: [[謝謝]] ([[tạ]] tạ, xièxie) ** {{Hani}}: [[多谢]] ([[đa]] [[tạ]], duōxiè) * {{hrv}}: [[hvala]] * {{ces}}: [[děkuji]] * {{dan}}: [[tak]] * {{nld}}: [[dank u]], [[dank je]], [[dankjewel]], [[bedankt]] * {{eng}}: [[thank you]], [[cheers]], [[thanks]], [[thank you very much]], [[thanks a lot]], [[ta]], [[thanks a bunch]], [[thanks a million]], [[much obliged]] * {{epo}}: [[dankon]], [[mi dankas]] * {{est}}: [[aitäh]] * {{fij}}: [[vinaka]] * {{fil}}: [[salamat]] * {{fin}}: [[kiitos]] * {{fra}}: [[merci]] * {{kat}}: [[მადლობთ]] (''madlobt‘'') * {{deu}}: [[danke]], [[danke schön]], [[vielen Dank]] * {{gil}}: [[ko rabwa]], [[kam rabwa]] ''cho nhiều người'' * {{el}}: [[ευχαριστώ]] (''efkharistó'') {{sing}}, [[ευχαριστούμε]] (''efkharistoúme'') {{plur}} * {{haw}}: [[mahalo]] * {{heb}}: [[תודה]] (''tóda'') * {{hin}}: [[धन्यवाद]] (''dhanyavād'') * {{hun}}: [[köszönöm]] * {{isl}}: [[takk]] * {{ind}}: [[terimakasih]], [[terima kasih]], [[terima kasih|makasih]] ''thân mật'' * {{gle}}: [[go raibh maith agat]] ''cho một người'', [[go raibh maith agaibh]] ''cho nhiều người'' * {{ita}}: [[grazie]] {{giữa}} * {{jpn}}: [[ありがとう]] (''arigatō''), [[どうも]] (''dōmo''), [[どうもありがとう]] (''dōmo arigatō'') * {{apk}}: [[áho]] * {{kor}}: [[고맙습니다]] (''gomapseumnida'') * {{kur}}: [[spas]] * {{lat}}: [[tibi]] [[gratia]]s [[ago]] * {{lav}}: [[paldies]] * {{lit}}: [[ačiū]] * {{mri}}: [[kia ora]] * {{nah}}: [[tlazohcamati]] * {{nor}}: [[takk]] * {{fas}}: {{term|Iran}} [[ممنونم]] (''mamnúnam''), {{term|Afghanistan}} [[تشکر]] (''tashákur'') * {{pol}}: [[dziękuję]] * {{oma}}: [[wiblaho]] * {{por}}: [[obrigado]] {{m}}; [[obrigada]] {{f}} * {{que}}: [[agradiseyki]] * {{ron}}: [[mulţumesc]], [[mersi]] * {{rus}}: [[спасибо]] (''spasíbo''), [[благодарю]] (''blagodar’ú'') * {{sco}}: [[mòran taing]], {{term|Islay}} [[go raibh maith agat]] * {{srp}}: ** {{Cyrl}}: [[хвала]] ** {{Latn}}: [[hvala]] * {{sin}}: (''sthuthiy'') * {{slk}}: [[ďakujem]] {{sing}}, [[ďakujeme]] {{plur}} * {{slv}}: [[hvala]] * {{spa}}: [[gracias]], [[muchas gracias]], [[muchísimas gracias]] * {{swe}}: [[tack]] * {{tam}}: [[நன்றி]] (''nandri'') * {{tha}}: {{THchar|[[ขอบคุณ]]}} (''kòp-kuun'') * {{tur}}: [[teşekkür ederim]] * {{ukr}}: [[дякую]] (''djákuju'') * {{tzj}}: ''maltiox'' * {{tzt}}: ''maltiox'' * {{cym}}: [[diolch]] {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Động từ|tiếng Việt}} qjd2c2slcaq8oic3gehxqjuw1k9crdv Hàn Quốc 0 242873 2350717 2161764 2026-05-07T07:57:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350717 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Hàn|Quốc}} {{-place-}} '''Hàn Quốc''' # Một [[quốc gia]] thuộc [[Đông Á]], nằm ở [[nửa]] phía [[nam]] của [[bán đảo]] [[Triều Tiên]]. # {{term|tiếng Việt hải ngoại}} [[thực thể|Thực thể]] [[bao gồm]] [[toàn bộ]] [[bán đảo]] này. {{-syn-}} ; một quốc gia thuộc Đông Á * [[Nam Hàn]] * [[Nam Triều Tiên]] * [[Đại Hàn Dân Quốc]] ; thực thể bao gồm toàn bộ bán đảo * [[Triều Tiên]] {{-trans-}} ; một quốc gia thuộc Đông Á {{đầu}} * {{ara}}: [[كوريا الجنوبية]] {{f}} (''kuriya al-janubíyya'') * {{sqi}}: [[Koreja e Jugut]] * {{hye}}: [[Հարավային Կորեա]] (''Haravayin Korea'') * {{pol}}: [[Korea Południowa]] * {{fas}}: [[کره جنوبی]] * {{bel}}: [[Паўднёвая Карэя]] {{f}} (''Paŭdnjóvaja Karéja'') * {{ben}}: [[দক্ষিণ কোরিয়া]] (''dôkhin koriẏa'') * {{por}}: [[Coreia do Sul]] {{term|Bồ Đào Nha}}, [[Coréia do Sul]] {{term|Brasil}} * {{ina}}: [[Corea del Sud]] * {{bos}}: [[Južna Koreja]] {{f}}, [[Republika Koreja]] {{f}} * {{bre}}: [[Korea ar Su]] * {{bul}}: [[Южна Корея]] {{f}} (''Júžna Koréja'') * {{cat-2}}: [[Corea del Sud]] {{f}} * {{hrv}}: [[Južna Koreja]] {{f}} * {{dan}}: [[Sydkorea]] * {{heb}}: [[דרום קוריאה]] {{f}} (''daróm korea'') * {{deu}}: [[Südkorea]] {{n}}, [[Republik Korea]] {{f}} * {{kat}}: [[სამხრეთი კორეა]] (''samxret’i korea'') * {{nld}}: [[Zuid-Korea]] * {{hin}}: [[दक्षिण कोरिया]] (''dakṣiṇ kōriyā'') * {{hun}}: [[Dél-Korea]] * {{ell}}: [[Νότια Κορέα]] {{f}} (''Nótia Koréa'') * {{ind}}: [[Korea Selatan]] * {{gle}}: [[Cóiré Theas]] {{f}}, [[Poblacht na Cóiré]] {{f}} * {{khm}}: [[កូរ៉េ​ខាង​​ត្បូង]] (''kooree kʰaang tboong'') * {{msa}}: [[Korea Selatan]] {{giữa}} * {{mkd}}: [[Јужна Кореја]] {{f}} (''Júžna Koréja''), [[Република Кореја]] {{f}} (''Repúblika Koréja'') * {{mlt}}: il-[[Korea t'Isfel]] * {{mon}}: [[Өмнөд Солонгос]] (''Ömnöd Solongos'') * {{nor}}: [[Sør-Korea]], [[Republikken Korea]] * {{rus}}: [[Южная Корея]] {{f}} (''Júžnaja Koréja''), [[Республика Корея]] {{f}} (''Respúblika Koréja'') * {{jpn}}: [[韓国]] (かんこく, ''Kankoku'', Hàn Quốc) * {{fin}}: [[Etelä-Korea]], [[Korean tasavalta]] * {{fra}}: [[Corée du Sud]] {{f}} * {{cmn}}: ** {{Hant}}: [[韓國]] (''Hánguó'', Hàn Quốc) ** {{Hans}}: [[韩国]] (''Hánguó'', Hàn Quốc) * {{epo}}: [[Sud-Koreio]], [[Koreio Suda]], [[Koreujo Sud-Koreujo]], [[Koreujo Suda]] * {{ron}}: [[Coreea de Sud]] {{f}} * {{ces}}: [[Jižní Korea]] {{f}}, [[Korejská republika]] {{f}} * {{srp}}: ** {{Cyrl}}: [[Јужна Кореја]] {{f}}, [[Република Кореја]] {{f}} ** {{Latn}}: [[Južna Koreja]] {{f}}, [[Republika Koreja]] {{f}} * {{crh}}: [[Cenübiy Koreya]], [[Kоreya Cumhuriyeti]] * {{spa}}: [[Corea del Sur]] * {{tur}}: [[Güney Kore]], [[Kore Cumhuriyeti]] * {{swe}}: [[Sydkorea]] * {{kor}}: [[남한]] (''Namhan'', [[南韓]], Nam Hàn), [[남조선]] (''Namjoseon'', [[南朝鮮]], Nam Triều Tiên), [[한국]] (''Hanguk'', [[韓國]], Hàn Quốc), [[대한민국]] (''Daehanminguk'', [[大韓民國]], Đại Hàn Dân Quốc) * {{ukr}}: [[Південна Корея]] {{f}} (''Pivdénna Koréja'') * {{ita}}: [[Corea del Sud]] {{f}} {{cuối}} {{-ant-}} ; một quốc gia thuộc Đông Á * [[Triều Tiên]] * [[Bắc Triều Tiên]] [[Thể loại:Địa danh tiếng Việt]] r73goq747h2q4umpfyj0kn0ya42ou1v 2350980 2350717 2026-05-07T10:43:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350980 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron|Hàn|Quốc}} {{-place-}} '''Hàn Quốc''' # Một [[quốc gia]] thuộc [[Đông Á]], nằm ở [[nửa]] phía [[nam]] của [[bán đảo]] [[Triều Tiên]]. # {{term|tiếng Việt hải ngoại}} [[thực thể|Thực thể]] [[bao gồm]] [[toàn bộ]] [[bán đảo]] này. {{-syn-}} ; một quốc gia thuộc Đông Á * [[Nam Hàn]] * [[Nam Triều Tiên]] * [[Đại Hàn Dân Quốc]] ; thực thể bao gồm toàn bộ bán đảo * [[Triều Tiên]] {{-trans-}} ; một quốc gia thuộc Đông Á {{đầu}} * {{ara}}: [[كوريا الجنوبية]] {{f}} (''kuriya al-janubíyya'') * {{sqi}}: [[Koreja e Jugut]] * {{hye}}: [[Հարավային Կորեա]] (''Haravayin Korea'') * {{pol}}: [[Korea Południowa]] * {{fas}}: [[کره جنوبی]] * {{bel}}: [[Паўднёвая Карэя]] {{f}} (''Paŭdnjóvaja Karéja'') * {{ben}}: [[দক্ষিণ কোরিয়া]] (''dôkhin koriẏa'') * {{por}}: [[Coreia do Sul]] {{term|Bồ Đào Nha}}, [[Coréia do Sul]] {{term|Brasil}} * {{ina}}: [[Corea del Sud]] * {{bos}}: [[Južna Koreja]] {{f}}, [[Republika Koreja]] {{f}} * {{bre}}: [[Korea ar Su]] * {{bul}}: [[Южна Корея]] {{f}} (''Júžna Koréja'') * {{cat-old}}: [[Corea del Sud]] {{f}} * {{hrv}}: [[Južna Koreja]] {{f}} * {{dan}}: [[Sydkorea]] * {{heb}}: [[דרום קוריאה]] {{f}} (''daróm korea'') * {{deu}}: [[Südkorea]] {{n}}, [[Republik Korea]] {{f}} * {{kat}}: [[სამხრეთი კორეა]] (''samxret’i korea'') * {{nld}}: [[Zuid-Korea]] * {{hin}}: [[दक्षिण कोरिया]] (''dakṣiṇ kōriyā'') * {{hun}}: [[Dél-Korea]] * {{ell}}: [[Νότια Κορέα]] {{f}} (''Nótia Koréa'') * {{ind}}: [[Korea Selatan]] * {{gle}}: [[Cóiré Theas]] {{f}}, [[Poblacht na Cóiré]] {{f}} * {{khm}}: [[កូរ៉េ​ខាង​​ត្បូង]] (''kooree kʰaang tboong'') * {{msa}}: [[Korea Selatan]] {{giữa}} * {{mkd}}: [[Јужна Кореја]] {{f}} (''Júžna Koréja''), [[Република Кореја]] {{f}} (''Repúblika Koréja'') * {{mlt}}: il-[[Korea t'Isfel]] * {{mon}}: [[Өмнөд Солонгос]] (''Ömnöd Solongos'') * {{nor}}: [[Sør-Korea]], [[Republikken Korea]] * {{rus}}: [[Южная Корея]] {{f}} (''Júžnaja Koréja''), [[Республика Корея]] {{f}} (''Respúblika Koréja'') * {{jpn}}: [[韓国]] (かんこく, ''Kankoku'', Hàn Quốc) * {{fin}}: [[Etelä-Korea]], [[Korean tasavalta]] * {{fra}}: [[Corée du Sud]] {{f}} * {{cmn}}: ** {{Hant}}: [[韓國]] (''Hánguó'', Hàn Quốc) ** {{Hans}}: [[韩国]] (''Hánguó'', Hàn Quốc) * {{epo}}: [[Sud-Koreio]], [[Koreio Suda]], [[Koreujo Sud-Koreujo]], [[Koreujo Suda]] * {{ron}}: [[Coreea de Sud]] {{f}} * {{ces}}: [[Jižní Korea]] {{f}}, [[Korejská republika]] {{f}} * {{srp}}: ** {{Cyrl}}: [[Јужна Кореја]] {{f}}, [[Република Кореја]] {{f}} ** {{Latn}}: [[Južna Koreja]] {{f}}, [[Republika Koreja]] {{f}} * {{crh}}: [[Cenübiy Koreya]], [[Kоreya Cumhuriyeti]] * {{spa}}: [[Corea del Sur]] * {{tur}}: [[Güney Kore]], [[Kore Cumhuriyeti]] * {{swe}}: [[Sydkorea]] * {{kor}}: [[남한]] (''Namhan'', [[南韓]], Nam Hàn), [[남조선]] (''Namjoseon'', [[南朝鮮]], Nam Triều Tiên), [[한국]] (''Hanguk'', [[韓國]], Hàn Quốc), [[대한민국]] (''Daehanminguk'', [[大韓民國]], Đại Hàn Dân Quốc) * {{ukr}}: [[Південна Корея]] {{f}} (''Pivdénna Koréja'') * {{ita}}: [[Corea del Sud]] {{f}} {{cuối}} {{-ant-}} ; một quốc gia thuộc Đông Á * [[Triều Tiên]] * [[Bắc Triều Tiên]] [[Thể loại:Địa danh tiếng Việt]] 4tiubd9ensre3tnh0skjg6y3oyewhvg đô la 0 242992 2350718 2098910 2026-05-07T07:57:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350718 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:US Silvercert1.jpg|nhỏ|Mặt trước và mặt sau của tờ tiền giấy 1 '''đô la''' Mỹ.]] {{-alternative form-}} * [[đôla]] * [[đô-la]] {{-etymology-}} {{etym-from|lang=fra|term=dollar|from= {{etym-from|lang=eng|term=dollar}}}} {{-pron-}} {{vie-pron}} {{-paro-}} * [[đố lá]] {{-noun-}} '''đô la''' # Đơn vị [[tiền tệ]] chính thức ở một số quốc gia, khu vực trên thế giới, như [[Canada]], [[Hoa Kỳ]], [[Úc]], [[New Zealand]], [[Hồng Kông]], v.v.. Được ký hiệu là [[$]]. #* {{quote-book|vi|title=Tuyển tập các công trình nghiên cứu sinh thái và tài nguyên sinh vật|year=1995|publisher=NXB Khoa học và Kỹ thuật|page=338|passage=Theo Kong - But (1985), vào năm 1981, Hồng Kông đã nhập khẩu 107 tấn nhung cùng các sản phẩm phụ, trị giá khoảng 54 triệu '''đô la''' Hồng Kông (tương đương 4,5 triệu bảng Anh).}} #* '''2021''', [[w:Kamala Devi Harris|Kamala Devi Harris]], ''[[s:Phát biểu của Phó Tổng thống Harris tại Lễ khai trương Văn phòng Khu vực Đông Nam Á CDC Hoa Kỳ|Phát biểu của Phó Tổng thống Harris tại Lễ khai trương Văn phòng Khu vực Đông Nam Á CDC Hoa Kỳ]]'', Đại sứ quán Hoa Kỳ tại Việt Nam dịch: #*: Bên cạnh đó, chúng tôi đã cam kết tài trợ 500.000 '''đô la''' Mỹ cho Quỹ Ứng phó COVID-19 của ASEAN để hỗ trợ mua thêm vắc xin. {{-syn-}} * [[đô]] (''nói tắt'') {{-usage-}} * Trong tiếng Việt, từ “đô la” nếu không có tên quốc gia hay khu vực sử dụng đồng tiền này đặt ở đằng sau như ''{{w|đô la Canada}}'', ''{{w|đô la Hồng Kông}}'', v.v. thì nó thường được dùng để chỉ đồng ''{{w|đô la Mỹ|đô la của nước Mỹ}}''. {{-trans-}} {{trans-top|Đơn vị tiền tệ}} * {{ara}}: {{t+|ar|دولار|m|tr=dūlār}} * {{sqi}}: {{t+|sq|dollar|m}} * {{amh}}: {{t+|am|ዶላር|tr=dolar}} * {{eng}}: {{t+|en|dollar}} * {{hye}}: {{t+|hy|դոլար|tr=dolar}} * {{ast}}: {{t+|ast|dólar|m}} * {{aze}}: {{t+|az|dollar}} * {{pol}}: {{t+|pl|dolar|m}} * {{fas}}: {{t+|fa|دلار‎|tr=dolâr}} * {{eus}}: {{t+|eu|dolar}} * {{isl}}: {{t+|is|dollari|m}} * {{bel}}: {{t+|be|долар|m|tr=dólar}}, {{t+|be|даляр|m|tr=daljár}} {{qualifier|Taraškievica}} * {{ben}}: {{t+|bn|ডলার|tr=ḍôlar}} * {{por}}: {{t+|pt|dólar|m}} * {{cat-2}}: {{t+|ca|dòlar|m}} * {{chr}}: {{t+|chr|ᎠᏕᎸᎢ|tr=adelvi}} * {{cic}}: {{t+|cic|daala'}}, {{t+|cic|taala'}} * {{div}}: {{t+|dv|ޑޮލަރު‎|tr=ḍolaru}} * {{heb}}: {{t+|he|דולר|tr=dolar}} * {{dan}}: {{t+|da|dollar|c}} * {{deu}}: {{t+|de|Dollar|m}} * {{est}}: {{t+|et|dollar}} * {{fao}}: {{t+|fo|dollari|m}} * {{glg}}: {{t+|gl|dólar|m}} * {{kat}}: {{t+|ka|დოლარი|tr=dolari}} * {{nld}}: {{t+|nl|dollar|m}} * {{hau}}: {{t+|ha|dala}} * {{haw}}: {{t+|haw|kālā}} * {{hin}}: {{t+|hi|डॉलर|m|tr=ḍŏlar}}, {{t+|hi|डौलर|m|tr=ḍaular}}, {{t+|hi|डालर|tr=ḍālar}} * {{hun}}: {{t+|hu|dollár}} * {{ell}}: {{t+|el|δολλάριο|n}}, {{t+|el|δολάριο|n}} * {{ido}}: {{t+|io|dolaro}}, {{t+|io|dollar}} * {{ind}}: {{t+|id|dolar}} * {{gle}}: {{t+|ga|dollar|m}} * {{kaz}}: {{t+|kk|доллар|tr=dollar}} * {{khm}}: {{t+|km|ដុល្លារ|tr=dollaa}} * {{kir}}: {{t+|ky|доллар|tr=dollar}} * {{lao}}: {{t+|lo|ໂດລາ|tr=dō lā}} * {{lav}}: {{t+|lv|dolārs|m}} * {{lit}}: {{t+|lt|doleris|m}} * {{msa}}: {{t+|ms|dolar}} * {{mkd}}: {{t+|mk|долар|m|tr=dolar}} * {{mar}}: {{t+|mr|डॉलर|m|tr=ḍŏlar}} * {{mri}}: {{t+|mi|tāra}} * {{mya}}: {{t+|my|ဒေါ်လာ|tr=daula}} * {{mon}}: {{t+|mn|доллар|tr=dollar}} * {{nor}}: ** {{nob}}: {{t+|nb|dollar|m}} ** {{nno}}: {{t+|nn|dollar|m}} * {{nep}}: {{t+|ne|डलर|tr=ḍalar}} {{trans-mid}} * {{rus}}: {{t+|ru|доллар|m|tr=dóllar}} * {{jpn}}: {{t+|ja|ドル|tr=doru}}, {{t+|ja|弗|tr=ドル, doru}} * {{orm}}: {{t+|om|doolaarii}} * {{pus}}: {{t+|ps|دالر‎|m|tr=dālár}}, {{t+|ps|ډالر‎|m|tr=ḍālár}} * {{fra}}: {{t+|fr|dollar|m}} * {{fin}}: {{t+|fi|dollari}}, {{t+|fi|taala}} {{qualifier|thông tục}} * {{epo}}: {{t+|eo|dolaro}} * {{ron}}: {{t+|ro|dolar|m}} * {{ces}}: {{t+|cs|dolar|m}} * {{scr}}: ** {{Cyrl}}: {{t+|sh|долар|m}} ** {{Latn}}: {{t+|sh|dolar|m}} * {{sin}}: {{t+|si|ඩොලර්|tr=ḍolar}} * {{slk}}: {{t+|sk|dolár|m}} * {{slv}}: {{t+|sl|dolar|m}} * {{swa}}: {{t+|sw|dola}} * {{tgl}}: {{t+|tl|dolyar}} * {{tgk}}: {{t+|tg|доллар|tr=dollar}} * {{tam}}: {{t+|ta|டாலர்|tr=ṭālar}} * {{tat}}: {{t+|tt|доллар|tr=dollar}} * {{spa}}: {{t+|es|dólar|m}} * {{tha}}: {{t+|th|ดอลลาร์|tr=dɔn-lâa}}, {{t+|th|ดอล|tr=dɔn}} * {{tur}}: {{t+|tr|dolar}} * {{swe}}: {{t+|sv|dollar|c}} * {{tir}}: {{t+|ti|ዶላር|tr=dolar}} * {{kor}}: {{t+|ko|달러|tr=dalleo}}, {{t+|ko|불|tr=bul}} * {{zho}}: ** {{hak}}: {{t+|hak|圓}}, {{t+|hak|圆|tr=ièn}} {{qualifier|chính thức}}, {{t+|hak|元|tr=ngièn, ièn}}, {{t+|hak|個銀}}, {{t+|hak|个银|tr=ke ngiùn}} {{qualifier|dùng làm đơn vị sau một số lượng}} ** {{nan}}: {{t+|nan|箍|tr=kho͘}} ** {{cmn}}: {{t+|cmn|圓}}, {{t+|cmn|圆|tr=yuán}} {{qualifier|dạng viết, chính thức}}, {{t+|cmn|元|tr=yuán}} {{qualifier|dạng viết}}, {{t+|cmn|塊}}, {{t+|cmn|块|tr=kuài}} {{qualifier|dạng nói}}, {{t+|cmn|塊錢}}, {{t+|cmn|块钱|tr=kuài qián}} {{qualifier|dùng làm đơn vị sau một số lượng}}, {{t+|cmn|刀|tr=dāo}} {{qualifier|từ mới, thông tục}} ** {{yue}}: {{t+|yue|圓}}, {{t+|yue|圆|tr=jyun4}} {{qualifier|dạng viết, chính thức}}, {{t+|yue|元|tr=jyun4}} {{qualifier|dạng viết}}, {{t+|yue|緡}}, {{t+|yue|缗|tr=man1}} {{qualifier|tiếng bản xứ}} * {{tuk}}: {{t+|tk|dollar}} * {{ukr}}: {{t+|uk|долар|m|tr=dólar}}, {{t+|uk|доляр|m|tr=dóljar}} * {{urd}}: {{t+|ur|ڈالر‎|m|tr=ḍālar}} * {{uig}}: {{t+|ug|دوللار‎|tr=dollar}} * {{uzb}}: {{t+|uz|dollar}} * {{vol}}: {{t+|vo|dolar}}, {{qualifier|từ cũ hơn}} {{t+|vo|doab}} * {{cym}}: {{t+|cy|doler|f}} * {{ita}}: {{t+|it|dollaro|m}} * {{yid}}: {{t+|yi|דאָלאַר|m|tr=dolar}} * {{yor}}: {{t+|yo|dọ́là}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tiền tệ/Tiếng Việt]] 2v49m4uo0gqgtzv0v0nlndg1hxecajm 2350981 2350718 2026-05-07T10:43:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350981 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:US Silvercert1.jpg|nhỏ|Mặt trước và mặt sau của tờ tiền giấy 1 '''đô la''' Mỹ.]] {{-alternative form-}} * [[đôla]] * [[đô-la]] {{-etymology-}} {{etym-from|lang=fra|term=dollar|from= {{etym-from|lang=eng|term=dollar}}}} {{-pron-}} {{vie-pron}} {{-paro-}} * [[đố lá]] {{-noun-}} '''đô la''' # Đơn vị [[tiền tệ]] chính thức ở một số quốc gia, khu vực trên thế giới, như [[Canada]], [[Hoa Kỳ]], [[Úc]], [[New Zealand]], [[Hồng Kông]], v.v.. Được ký hiệu là [[$]]. #* {{quote-book|vi|title=Tuyển tập các công trình nghiên cứu sinh thái và tài nguyên sinh vật|year=1995|publisher=NXB Khoa học và Kỹ thuật|page=338|passage=Theo Kong - But (1985), vào năm 1981, Hồng Kông đã nhập khẩu 107 tấn nhung cùng các sản phẩm phụ, trị giá khoảng 54 triệu '''đô la''' Hồng Kông (tương đương 4,5 triệu bảng Anh).}} #* '''2021''', [[w:Kamala Devi Harris|Kamala Devi Harris]], ''[[s:Phát biểu của Phó Tổng thống Harris tại Lễ khai trương Văn phòng Khu vực Đông Nam Á CDC Hoa Kỳ|Phát biểu của Phó Tổng thống Harris tại Lễ khai trương Văn phòng Khu vực Đông Nam Á CDC Hoa Kỳ]]'', Đại sứ quán Hoa Kỳ tại Việt Nam dịch: #*: Bên cạnh đó, chúng tôi đã cam kết tài trợ 500.000 '''đô la''' Mỹ cho Quỹ Ứng phó COVID-19 của ASEAN để hỗ trợ mua thêm vắc xin. {{-syn-}} * [[đô]] (''nói tắt'') {{-usage-}} * Trong tiếng Việt, từ “đô la” nếu không có tên quốc gia hay khu vực sử dụng đồng tiền này đặt ở đằng sau như ''{{w|đô la Canada}}'', ''{{w|đô la Hồng Kông}}'', v.v. thì nó thường được dùng để chỉ đồng ''{{w|đô la Mỹ|đô la của nước Mỹ}}''. {{-trans-}} {{trans-top|Đơn vị tiền tệ}} * {{ara}}: {{t+|ar|دولار|m|tr=dūlār}} * {{sqi}}: {{t+|sq|dollar|m}} * {{amh}}: {{t+|am|ዶላር|tr=dolar}} * {{eng}}: {{t+|en|dollar}} * {{hye}}: {{t+|hy|դոլար|tr=dolar}} * {{ast}}: {{t+|ast|dólar|m}} * {{aze}}: {{t+|az|dollar}} * {{pol}}: {{t+|pl|dolar|m}} * {{fas}}: {{t+|fa|دلار‎|tr=dolâr}} * {{eus}}: {{t+|eu|dolar}} * {{isl}}: {{t+|is|dollari|m}} * {{bel}}: {{t+|be|долар|m|tr=dólar}}, {{t+|be|даляр|m|tr=daljár}} {{qualifier|Taraškievica}} * {{ben}}: {{t+|bn|ডলার|tr=ḍôlar}} * {{por}}: {{t+|pt|dólar|m}} * {{cat-old}}: {{t+|ca|dòlar|m}} * {{chr}}: {{t+|chr|ᎠᏕᎸᎢ|tr=adelvi}} * {{cic}}: {{t+|cic|daala'}}, {{t+|cic|taala'}} * {{div}}: {{t+|dv|ޑޮލަރު‎|tr=ḍolaru}} * {{heb}}: {{t+|he|דולר|tr=dolar}} * {{dan}}: {{t+|da|dollar|c}} * {{deu}}: {{t+|de|Dollar|m}} * {{est}}: {{t+|et|dollar}} * {{fao}}: {{t+|fo|dollari|m}} * {{glg}}: {{t+|gl|dólar|m}} * {{kat}}: {{t+|ka|დოლარი|tr=dolari}} * {{nld}}: {{t+|nl|dollar|m}} * {{hau}}: {{t+|ha|dala}} * {{haw}}: {{t+|haw|kālā}} * {{hin}}: {{t+|hi|डॉलर|m|tr=ḍŏlar}}, {{t+|hi|डौलर|m|tr=ḍaular}}, {{t+|hi|डालर|tr=ḍālar}} * {{hun}}: {{t+|hu|dollár}} * {{ell}}: {{t+|el|δολλάριο|n}}, {{t+|el|δολάριο|n}} * {{ido}}: {{t+|io|dolaro}}, {{t+|io|dollar}} * {{ind}}: {{t+|id|dolar}} * {{gle}}: {{t+|ga|dollar|m}} * {{kaz}}: {{t+|kk|доллар|tr=dollar}} * {{khm}}: {{t+|km|ដុល្លារ|tr=dollaa}} * {{kir}}: {{t+|ky|доллар|tr=dollar}} * {{lao}}: {{t+|lo|ໂດລາ|tr=dō lā}} * {{lav}}: {{t+|lv|dolārs|m}} * {{lit}}: {{t+|lt|doleris|m}} * {{msa}}: {{t+|ms|dolar}} * {{mkd}}: {{t+|mk|долар|m|tr=dolar}} * {{mar}}: {{t+|mr|डॉलर|m|tr=ḍŏlar}} * {{mri}}: {{t+|mi|tāra}} * {{mya}}: {{t+|my|ဒေါ်လာ|tr=daula}} * {{mon}}: {{t+|mn|доллар|tr=dollar}} * {{nor}}: ** {{nob}}: {{t+|nb|dollar|m}} ** {{nno}}: {{t+|nn|dollar|m}} * {{nep}}: {{t+|ne|डलर|tr=ḍalar}} {{trans-mid}} * {{rus}}: {{t+|ru|доллар|m|tr=dóllar}} * {{jpn}}: {{t+|ja|ドル|tr=doru}}, {{t+|ja|弗|tr=ドル, doru}} * {{orm}}: {{t+|om|doolaarii}} * {{pus}}: {{t+|ps|دالر‎|m|tr=dālár}}, {{t+|ps|ډالر‎|m|tr=ḍālár}} * {{fra}}: {{t+|fr|dollar|m}} * {{fin}}: {{t+|fi|dollari}}, {{t+|fi|taala}} {{qualifier|thông tục}} * {{epo}}: {{t+|eo|dolaro}} * {{ron}}: {{t+|ro|dolar|m}} * {{ces}}: {{t+|cs|dolar|m}} * {{scr}}: ** {{Cyrl}}: {{t+|sh|долар|m}} ** {{Latn}}: {{t+|sh|dolar|m}} * {{sin}}: {{t+|si|ඩොලර්|tr=ḍolar}} * {{slk}}: {{t+|sk|dolár|m}} * {{slv}}: {{t+|sl|dolar|m}} * {{swa}}: {{t+|sw|dola}} * {{tgl}}: {{t+|tl|dolyar}} * {{tgk}}: {{t+|tg|доллар|tr=dollar}} * {{tam}}: {{t+|ta|டாலர்|tr=ṭālar}} * {{tat}}: {{t+|tt|доллар|tr=dollar}} * {{spa}}: {{t+|es|dólar|m}} * {{tha}}: {{t+|th|ดอลลาร์|tr=dɔn-lâa}}, {{t+|th|ดอล|tr=dɔn}} * {{tur}}: {{t+|tr|dolar}} * {{swe}}: {{t+|sv|dollar|c}} * {{tir}}: {{t+|ti|ዶላር|tr=dolar}} * {{kor}}: {{t+|ko|달러|tr=dalleo}}, {{t+|ko|불|tr=bul}} * {{zho}}: ** {{hak}}: {{t+|hak|圓}}, {{t+|hak|圆|tr=ièn}} {{qualifier|chính thức}}, {{t+|hak|元|tr=ngièn, ièn}}, {{t+|hak|個銀}}, {{t+|hak|个银|tr=ke ngiùn}} {{qualifier|dùng làm đơn vị sau một số lượng}} ** {{nan}}: {{t+|nan|箍|tr=kho͘}} ** {{cmn}}: {{t+|cmn|圓}}, {{t+|cmn|圆|tr=yuán}} {{qualifier|dạng viết, chính thức}}, {{t+|cmn|元|tr=yuán}} {{qualifier|dạng viết}}, {{t+|cmn|塊}}, {{t+|cmn|块|tr=kuài}} {{qualifier|dạng nói}}, {{t+|cmn|塊錢}}, {{t+|cmn|块钱|tr=kuài qián}} {{qualifier|dùng làm đơn vị sau một số lượng}}, {{t+|cmn|刀|tr=dāo}} {{qualifier|từ mới, thông tục}} ** {{yue}}: {{t+|yue|圓}}, {{t+|yue|圆|tr=jyun4}} {{qualifier|dạng viết, chính thức}}, {{t+|yue|元|tr=jyun4}} {{qualifier|dạng viết}}, {{t+|yue|緡}}, {{t+|yue|缗|tr=man1}} {{qualifier|tiếng bản xứ}} * {{tuk}}: {{t+|tk|dollar}} * {{ukr}}: {{t+|uk|долар|m|tr=dólar}}, {{t+|uk|доляр|m|tr=dóljar}} * {{urd}}: {{t+|ur|ڈالر‎|m|tr=ḍālar}} * {{uig}}: {{t+|ug|دوللار‎|tr=dollar}} * {{uzb}}: {{t+|uz|dollar}} * {{vol}}: {{t+|vo|dolar}}, {{qualifier|từ cũ hơn}} {{t+|vo|doab}} * {{cym}}: {{t+|cy|doler|f}} * {{ita}}: {{t+|it|dollaro|m}} * {{yid}}: {{t+|yi|דאָלאַר|m|tr=dolar}} * {{yor}}: {{t+|yo|dọ́là}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tiền tệ/Tiếng Việt]] n7acx0zmnrrcv1sj0219fyz9fx9me8j uýt-ki 0 243150 2350719 1942186 2026-05-07T07:57:56Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350719 wikitext text/x-wiki {{-vie-}} {{-info-|Whisky}} [[Tập tin:Scotch Whisky (aka).jpg|nhỏ|phải|upright|uýt-ki]] {{-pron-}} {{vie-pron|uýt|ki}} {{-noun-}} '''uýt-ki''' # Một [[loại]] [[rượu]] có chứa [[cồn]] được [[sản xuất]] từ [[ngũ cốc]] bằng cách [[lên men]] và [[chưng cất]]. {{-trans-}} {{đầu}} * {{akz}}: [[okiimi]] * {{eng}}: [[whisky]], [[whiskey]] {{term|Ireland, Mỹ}} * {{hye}}: [[վիսկի]] (''viski'') * {{pol}}: [[whisky]] {{f}} * {{isl}}: [[viskí]] * {{por}}: [[whisky]] * {{bul}}: [[уиски]] * {{cat-2}}: [[whisky]] {{m}} * {{hrv}}: [[viski]] {{m}} * {{deu}}: [[Whisky]] {{m}} * {{est}}: [[viski]] * {{gla}}: [[uisge-beatha]] {{m}} * {{glg}}: [[whisky]] {{m}} * {{nld}}: [[wisky]] {{m}} * {{hun}}: [[whisky]] * {{ell}}: [[ουίσκι]] (''ouíski'') {{n}} * {{ido}}: [[wiskio]] * {{gle}}: [[uisce beatha]] * {{lat}}: [[viskijs]] * {{lit}}: [[viskis]] * {{msa}}: [[wiski]] {{giữa}} * {{nor}}: [[whisky]] * {{rus}}: [[виски]] (''víski'') {{mn}} * {{jpn}}: [[ウィスキー]] (''wisukii'') * {{fin}}: [[viski]] * {{fra}}: [[whisky]] {{m}} * {{epo}}: [[viskio]] * {{ron}}: [[whisky]] * {{ces}}: [[whisky]] {{f}} * {{srp}}: ** {{Cyrl}}: [[виски]] {{m}} ** {{Latn}}: [[viski]] {{m}} * {{slk}}: [[whisky]] f * {{spa}}: [[güisqui]] {{m}} {{term|Tây Ban Nha}}, [[whisky]] {{m}} * {{tur}}: [[viski]] * {{swe}}: [[whisky]], [[visky]] * {{kor}}: [[위스키]] (''wiseuki'') * {{zho}}: [[威士忌酒]] (''wēishìjì jiǔ'', uy sĩ kị tửu) * {{ukr}}: [[віскі]] (''víski'') {{m}}, [[горілка]] (''horílka'') {{f}} * {{vol}}: [[viskin]], [[filavin]] {{term|cũ}}, [[lifavat]] {{term|từ Gaelic}} * {{ita}}: [[whisky]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] f24xjcp1ln8qy6m7d60kwydmzk85p2m 2350982 2350719 2026-05-07T10:43:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350982 wikitext text/x-wiki {{-vie-}} {{-info-|Whisky}} [[Tập tin:Scotch Whisky (aka).jpg|nhỏ|phải|upright|uýt-ki]] {{-pron-}} {{vie-pron|uýt|ki}} {{-noun-}} '''uýt-ki''' # Một [[loại]] [[rượu]] có chứa [[cồn]] được [[sản xuất]] từ [[ngũ cốc]] bằng cách [[lên men]] và [[chưng cất]]. {{-trans-}} {{đầu}} * {{akz}}: [[okiimi]] * {{eng}}: [[whisky]], [[whiskey]] {{term|Ireland, Mỹ}} * {{hye}}: [[վիսկի]] (''viski'') * {{pol}}: [[whisky]] {{f}} * {{isl}}: [[viskí]] * {{por}}: [[whisky]] * {{bul}}: [[уиски]] * {{cat-old}}: [[whisky]] {{m}} * {{hrv}}: [[viski]] {{m}} * {{deu}}: [[Whisky]] {{m}} * {{est}}: [[viski]] * {{gla}}: [[uisge-beatha]] {{m}} * {{glg}}: [[whisky]] {{m}} * {{nld}}: [[wisky]] {{m}} * {{hun}}: [[whisky]] * {{ell}}: [[ουίσκι]] (''ouíski'') {{n}} * {{ido}}: [[wiskio]] * {{gle}}: [[uisce beatha]] * {{lat}}: [[viskijs]] * {{lit}}: [[viskis]] * {{msa}}: [[wiski]] {{giữa}} * {{nor}}: [[whisky]] * {{rus}}: [[виски]] (''víski'') {{mn}} * {{jpn}}: [[ウィスキー]] (''wisukii'') * {{fin}}: [[viski]] * {{fra}}: [[whisky]] {{m}} * {{epo}}: [[viskio]] * {{ron}}: [[whisky]] * {{ces}}: [[whisky]] {{f}} * {{srp}}: ** {{Cyrl}}: [[виски]] {{m}} ** {{Latn}}: [[viski]] {{m}} * {{slk}}: [[whisky]] f * {{spa}}: [[güisqui]] {{m}} {{term|Tây Ban Nha}}, [[whisky]] {{m}} * {{tur}}: [[viski]] * {{swe}}: [[whisky]], [[visky]] * {{kor}}: [[위스키]] (''wiseuki'') * {{zho}}: [[威士忌酒]] (''wēishìjì jiǔ'', uy sĩ kị tửu) * {{ukr}}: [[віскі]] (''víski'') {{m}}, [[горілка]] (''horílka'') {{f}} * {{vol}}: [[viskin]], [[filavin]] {{term|cũ}}, [[lifavat]] {{term|từ Gaelic}} * {{ita}}: [[whisky]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 2lmhypg56kyyw30ff01e4nm2o058ou6 tầm ma 0 243271 2350720 2281372 2026-05-07T07:57:59Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350720 wikitext text/x-wiki {{-vie-}} [[Tập tin:Urtica_dioica_(Blüten).jpg|nhỏ|phải|tầm ma]] {{-pron-}} {{vie-pron|tầm|ma}} {{-noun-}} '''tầm ma''' # {{@|thực vật học}} [[cây|Cây]] có nhiều [[lông]], hơi [[ngứa]]. {{-trans-}} {{đầu}} * {{ara}}: [[قراص]] (''qurrāṣ'') {{g|m}} * {{sqi}}: [[hithëra]] * {{eng}}: [[nettle]] * {{hye}}: [[եղինջ]] (''eġinǰ'') * {{aze}}: [[gicitkən]] * {{pol}}: [[pokrzywa]] {{f}} * {{fas}}: [[گزنه]] (''gazne'') * {{eus}}: [[asun]] * {{bel}}: [[крапіва]] (''krapiva'') {{f}} * {{por}}: [[urtiga]] {{f}} * {{bul}}: [[коприва]] (''kopriva'') {{f}} * {{cat-2}}: [[ortiga]] {{f}} * {{dan}}: [[nælde]] {{g|c}}, [[brændenælde]] {{g|c}} * {{heb}}: [[סרפד]] (''sarpad'') {{g|m}} * {{deu}}: [[Nessel]] {{f}}, [[Brennnessel]] {{f}} * {{est}}: [[nõgene]] * {{fao}}: [[nota]] {{f}}, [[brenninota]] {{f}} * {{glg}}: [[ortiga]] {{f}} * {{nld}}: [[netel]] {{g|m}}, [[brandnetel]] {{g|m}} * {{hun}}: [[csalán]] * {{ell}}: [[τσουκνίδα]] (''tsuknída'') {{f}} * {{ido}}: [[urtiko]] * {{lat}}: [[urtica]] {{f}} * {{lav}}: [[nātre]] {{f}} * {{lit}}: [[dilgėlė]] {{f}} {{giữa}} * {{ltz}}: [[Brennnessel]] {{f}} * {{mon}}: [[халгай]] (''halgaj'') * {{rus}}: [[крапива]] (''krapíva'') {{f}} * {{jpn}}: [[蕁麻]] (いらくさ, ''irakusa'', tầm ma) * {{fin}}: [[nokkonen]] * {{fra}}: [[ortie]] {{f}} * {{cmn}}: ** {{Hant}}: [[蕁麻]] (''qiánmá'', tầm ma) ** {{Hans}}: [[荨麻]] (''qiánmá'', tầm ma) * {{epo}}: [[urtiko]] * {{ron}}: [[urzică]] {{f}} * {{ces}}: [[kopřiva]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[коприва]] {{f}} ** {{Latn}}: [[kopriva]] {{f}} * {{slv}}: [[kopriva]] {{f}} * {{tat}}: [[кычыткан]] (''qıçıtqan'') * {{spa}}: [[ortiga]] {{f}} * {{tur}}: [[ısırgan]] * {{swe}}: [[nässla]] {{g|c}}, [[brännässla]] * {{kor}}: [[쐐기풀]] (''sswaegipul'') * {{ukr}}: [[кропива]] (''kropyvá'') {{f}} * {{ita}}: [[ortica]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] kwzqmndjipad552nvtl7ks7jof6ond7 2350983 2350720 2026-05-07T10:43:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350983 wikitext text/x-wiki {{-vie-}} [[Tập tin:Urtica_dioica_(Blüten).jpg|nhỏ|phải|tầm ma]] {{-pron-}} {{vie-pron|tầm|ma}} {{-noun-}} '''tầm ma''' # {{@|thực vật học}} [[cây|Cây]] có nhiều [[lông]], hơi [[ngứa]]. {{-trans-}} {{đầu}} * {{ara}}: [[قراص]] (''qurrāṣ'') {{g|m}} * {{sqi}}: [[hithëra]] * {{eng}}: [[nettle]] * {{hye}}: [[եղինջ]] (''eġinǰ'') * {{aze}}: [[gicitkən]] * {{pol}}: [[pokrzywa]] {{f}} * {{fas}}: [[گزنه]] (''gazne'') * {{eus}}: [[asun]] * {{bel}}: [[крапіва]] (''krapiva'') {{f}} * {{por}}: [[urtiga]] {{f}} * {{bul}}: [[коприва]] (''kopriva'') {{f}} * {{cat-old}}: [[ortiga]] {{f}} * {{dan}}: [[nælde]] {{g|c}}, [[brændenælde]] {{g|c}} * {{heb}}: [[סרפד]] (''sarpad'') {{g|m}} * {{deu}}: [[Nessel]] {{f}}, [[Brennnessel]] {{f}} * {{est}}: [[nõgene]] * {{fao}}: [[nota]] {{f}}, [[brenninota]] {{f}} * {{glg}}: [[ortiga]] {{f}} * {{nld}}: [[netel]] {{g|m}}, [[brandnetel]] {{g|m}} * {{hun}}: [[csalán]] * {{ell}}: [[τσουκνίδα]] (''tsuknída'') {{f}} * {{ido}}: [[urtiko]] * {{lat}}: [[urtica]] {{f}} * {{lav}}: [[nātre]] {{f}} * {{lit}}: [[dilgėlė]] {{f}} {{giữa}} * {{ltz}}: [[Brennnessel]] {{f}} * {{mon}}: [[халгай]] (''halgaj'') * {{rus}}: [[крапива]] (''krapíva'') {{f}} * {{jpn}}: [[蕁麻]] (いらくさ, ''irakusa'', tầm ma) * {{fin}}: [[nokkonen]] * {{fra}}: [[ortie]] {{f}} * {{cmn}}: ** {{Hant}}: [[蕁麻]] (''qiánmá'', tầm ma) ** {{Hans}}: [[荨麻]] (''qiánmá'', tầm ma) * {{epo}}: [[urtiko]] * {{ron}}: [[urzică]] {{f}} * {{ces}}: [[kopřiva]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[коприва]] {{f}} ** {{Latn}}: [[kopriva]] {{f}} * {{slv}}: [[kopriva]] {{f}} * {{tat}}: [[кычыткан]] (''qıçıtqan'') * {{spa}}: [[ortiga]] {{f}} * {{tur}}: [[ısırgan]] * {{swe}}: [[nässla]] {{g|c}}, [[brännässla]] * {{kor}}: [[쐐기풀]] (''sswaegipul'') * {{ukr}}: [[кропива]] (''kropyvá'') {{f}} * {{ita}}: [[ortica]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] lnncwfie3bbaujnxljmt6skfl0cowx8 rutherfordi 0 243529 2350721 1908979 2026-05-07T07:58:02Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350721 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|rơ|tơ|phót|đi}} {{-noun-}} '''rutherfordi''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] có [[ký hiệu]] [[Rf]] và [[số nguyên tử]] 104. # {{@|hóa học||cũ}} [[tên gọi|Tên gọi]] [[từ chối]] của [[seaborgi]]. {{-syn-}} * [[kurchatovi]] {{term|cũ}} * [[unnilquadi]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[روذرفورديوم]] (''roðarfórdiyum'') {{m}} * {{eng}}: [[rutherfordium]], [[eka-hafnium]] {{term|cũ}}, [[kurchatovium]] {{term|cũ}}, [[unnilquadium]] {{term|cũ}} * {{hye}}: [[ռեզերֆորդիում]] (''ṙezerfordium'') * {{cat-2}}: [[#Tiếng Catalan|rutherfordi]] * {{heb}}: [[רותרפורדיום]] (''ruterfórdiyum'') * {{deu}}: [[Rutherfordium]] {{n}} * {{kat}}: [[კურჩატოვიუმი]] (''kurč‘atoviumi'') * {{ell}}: [[ραδερφόρντιο]] (''raderfórntio'') {{n}} * {{nor}}: [[rutherfordium]] * {{rus}}: [[резерфордий]] (''rezerfórdij'') {{m}} {{giữa}} * {{jpn}}: [[ラザホルジウム]] (''razahorujiumu'') * {{fra}}: [[rutherfordium]] {{m}} * {{tam}}: [[ருதெர்போர்டியம்]] (''ruterpōrţiyam'') * {{spa}}: [[rutherfordio]] {{m}} * {{tha}}: [[รูเทอร์ฟอร์เดียม]] (''rūthoefodiam'') * {{kor}}: [[러더포듐]] (''reodeopodyum'') * {{zho}}: ** {{Hant}}: [[鑪]] (''lú'', lô) {{cuối}} {{-cat-}} {{-noun-}} '''rutherfordi''' {{m}} # [[#Tiếng Việt|Rutherfordi]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] j6khzoe1kkynuqjiarw9ua65gbquyx6 2350984 2350721 2026-05-07T10:43:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350984 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|rơ|tơ|phót|đi}} {{-noun-}} '''rutherfordi''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] có [[ký hiệu]] [[Rf]] và [[số nguyên tử]] 104. # {{@|hóa học||cũ}} [[tên gọi|Tên gọi]] [[từ chối]] của [[seaborgi]]. {{-syn-}} * [[kurchatovi]] {{term|cũ}} * [[unnilquadi]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[روذرفورديوم]] (''roðarfórdiyum'') {{m}} * {{eng}}: [[rutherfordium]], [[eka-hafnium]] {{term|cũ}}, [[kurchatovium]] {{term|cũ}}, [[unnilquadium]] {{term|cũ}} * {{hye}}: [[ռեզերֆորդիում]] (''ṙezerfordium'') * {{cat-old}}: [[#Tiếng Catalan|rutherfordi]] * {{heb}}: [[רותרפורדיום]] (''ruterfórdiyum'') * {{deu}}: [[Rutherfordium]] {{n}} * {{kat}}: [[კურჩატოვიუმი]] (''kurč‘atoviumi'') * {{ell}}: [[ραδερφόρντιο]] (''raderfórntio'') {{n}} * {{nor}}: [[rutherfordium]] * {{rus}}: [[резерфордий]] (''rezerfórdij'') {{m}} {{giữa}} * {{jpn}}: [[ラザホルジウム]] (''razahorujiumu'') * {{fra}}: [[rutherfordium]] {{m}} * {{tam}}: [[ருதெர்போர்டியம்]] (''ruterpōrţiyam'') * {{spa}}: [[rutherfordio]] {{m}} * {{tha}}: [[รูเทอร์ฟอร์เดียม]] (''rūthoefodiam'') * {{kor}}: [[러더포듐]] (''reodeopodyum'') * {{zho}}: ** {{Hant}}: [[鑪]] (''lú'', lô) {{cuối}} {{-cat-}} {{-noun-}} '''rutherfordi''' {{m}} # [[#Tiếng Việt|Rutherfordi]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] d7bzb9tqjo87c400uj2gg5wi9cbx311 dubni 0 243530 2350722 1828826 2026-05-07T07:58:05Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350722 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|đúp|ni}} {{-etymology-}} {{etym-from | lang = eng | term = dubnium | from = {{etym-from | term = Dubna }} }} {{-noun-}} '''dubni''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] có tính [[phóng xạ]] với [[ký hiệu]] [[Db]] và [[số nguyên tử]] 105. # {{@|hóa học||cũ}} [[tên gọi|Tên gọi]] [[từ chối]] của [[rutherfordi]]. {{-syn-}} * [[hahni]] {{term|cũ}} * [[jolioti]] {{term|cũ}} * [[nielsbohri]] {{term|cũ}} * [[unnilpenti]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[دوبنيوم]] (''dúbniyum'') {{m}} * {{eng}}: [[dubnium]], [[eka-tantalum]] {{term|cũ}}, [[hahnium]] {{term|Mỹ; hiếm}}, [[joliotium]] {{term|cũ}}, [[nielsbohrium]] {{term|cũ}}, [[unnilpentium]] {{term|cũ}} * {{hye}}: [[դուբնիում]] (''dubnium'') * {{cat-2}}: [[#Tiếng Catalan|dubni]] {{m}} * {{heb}}: [[דובניום]] (''dúbniyum'') * {{deu}}: [[Dubnium]] {{n}} * {{nld}}: [[dubnium]] {{n}} * {{ell}}: [[ντούμπνιο]] (''vtoúmpnio'') {{n}} * {{nor}}: [[dubnium]] * {{rus}}: [[дубний]] (''dúbnij'') {{m}}, [[нильсборий]] (''nil’sborij'') {{m}} {{giữa}} * {{jpn}}: [[ドブニウム]] (''dobuniumu'') * {{fra}}: [[dubnium]] {{m}} * {{tam}}: [[டப்னியம்]] (''ţapniyam'') * {{spa}}: [[dubnio]] {{m}} * {{tha}}: [[ดุบเนียม]] (''dubniam'') * {{swe}}: [[dubnium]] {{n}} * {{kor}}: [[더브늄]] (''deobeunyum'') * {{zho}}: ** {{Hant}}: [[𨧀]] (''dù'') {{cuối}} {{-cat-}} {{-noun-}} '''dubni''' {{m}} # [[#Tiếng Việt|Dubni]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] g2oytiag6ktwbwe6qmeygumbv6pmvv8 2350985 2350722 2026-05-07T10:43:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350985 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|đúp|ni}} {{-etymology-}} {{etym-from | lang = eng | term = dubnium | from = {{etym-from | term = Dubna }} }} {{-noun-}} '''dubni''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] có tính [[phóng xạ]] với [[ký hiệu]] [[Db]] và [[số nguyên tử]] 105. # {{@|hóa học||cũ}} [[tên gọi|Tên gọi]] [[từ chối]] của [[rutherfordi]]. {{-syn-}} * [[hahni]] {{term|cũ}} * [[jolioti]] {{term|cũ}} * [[nielsbohri]] {{term|cũ}} * [[unnilpenti]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[دوبنيوم]] (''dúbniyum'') {{m}} * {{eng}}: [[dubnium]], [[eka-tantalum]] {{term|cũ}}, [[hahnium]] {{term|Mỹ; hiếm}}, [[joliotium]] {{term|cũ}}, [[nielsbohrium]] {{term|cũ}}, [[unnilpentium]] {{term|cũ}} * {{hye}}: [[դուբնիում]] (''dubnium'') * {{cat-old}}: [[#Tiếng Catalan|dubni]] {{m}} * {{heb}}: [[דובניום]] (''dúbniyum'') * {{deu}}: [[Dubnium]] {{n}} * {{nld}}: [[dubnium]] {{n}} * {{ell}}: [[ντούμπνιο]] (''vtoúmpnio'') {{n}} * {{nor}}: [[dubnium]] * {{rus}}: [[дубний]] (''dúbnij'') {{m}}, [[нильсборий]] (''nil’sborij'') {{m}} {{giữa}} * {{jpn}}: [[ドブニウム]] (''dobuniumu'') * {{fra}}: [[dubnium]] {{m}} * {{tam}}: [[டப்னியம்]] (''ţapniyam'') * {{spa}}: [[dubnio]] {{m}} * {{tha}}: [[ดุบเนียม]] (''dubniam'') * {{swe}}: [[dubnium]] {{n}} * {{kor}}: [[더브늄]] (''deobeunyum'') * {{zho}}: ** {{Hant}}: [[𨧀]] (''dù'') {{cuối}} {{-cat-}} {{-noun-}} '''dubni''' {{m}} # [[#Tiếng Việt|Dubni]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] in9l5lldcvxegrlxtzb215wvom88zye seaborgi 0 243531 2350723 1912714 2026-05-07T07:58:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350723 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|xi|bo|ghi}} {{-etymology-}} {{etym-from | lang = eng | term = seaborgium | from = {{etym-from | term = Glenn T. Seaborg }} }} {{-noun-}} '''seaborgi''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] với [[ký hiệu]] [[Sg]] và [[số nguyên tử]] 106. {{-syn-}} * [[rutherfordi]] {{term|cũ}} * [[unnilhexi]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[سيبورجيوم]] (''sibórgiyum'') {{m}} * {{eng}}: [[seaborgium]], [[eka-tungsten]] {{term|cũ}}, [[rutherfordium]] {{term|cũ}}, [[unnilhexium]] {{term|cũ}} * {{hye}}: [[սիբորգիում]] (''siborgium'') * {{cat-2}}: [[#Tiếng Catalan|seaborgi]] {{m}} * {{heb}}: [[סיבורגיום]] (''sibórgiyum'') * {{deu}}: [[Seaborgium]] {{n}} * {{kat}}: [[სიბორგიუმი]] (''siborgiumi'') * {{nld}}: [[seaborgium]] {{n}} * {{ell}}: [[σιμπόργκιο]] (''simpórgkio'') {{n}} * {{nor}}: [[seaborgium]] * {{rus}}: [[сиборгий]] (''sibórgij'') {{m}} {{giữa}} * {{jpn}}: [[シーボーギウム]] (''shibōgiumu'') * {{fra}}: [[seaborgium]] {{m}} * {{tam}}: [[சீபோர்ஜியம்]] (''cīpōrjiyam'') * {{spa}}: [[seaborgio]] {{m}} * {{tha}}: [[ชีบอรเกียม]] (''sībokiam'') * {{swe}}: [[seaborgium]] {{n}} * {{kor}}: [[시보귬]] (''sibogyum'') * {{zho}}: ** {{Hant}}: [[𨭎]] (''xǐ'') {{cuối}} {{-cat-}} {{-noun-}} '''seaborgi''' {{m}} # [[#Tiếng Việt|Seaborgi]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] q7jtepfb2qxhd6mcw2x4x1sqd9uyake 2350986 2350723 2026-05-07T10:43:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350986 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|xi|bo|ghi}} {{-etymology-}} {{etym-from | lang = eng | term = seaborgium | from = {{etym-from | term = Glenn T. Seaborg }} }} {{-noun-}} '''seaborgi''' # {{@|hóa học}} [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] với [[ký hiệu]] [[Sg]] và [[số nguyên tử]] 106. {{-syn-}} * [[rutherfordi]] {{term|cũ}} * [[unnilhexi]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[سيبورجيوم]] (''sibórgiyum'') {{m}} * {{eng}}: [[seaborgium]], [[eka-tungsten]] {{term|cũ}}, [[rutherfordium]] {{term|cũ}}, [[unnilhexium]] {{term|cũ}} * {{hye}}: [[սիբորգիում]] (''siborgium'') * {{cat-old}}: [[#Tiếng Catalan|seaborgi]] {{m}} * {{heb}}: [[סיבורגיום]] (''sibórgiyum'') * {{deu}}: [[Seaborgium]] {{n}} * {{kat}}: [[სიბორგიუმი]] (''siborgiumi'') * {{nld}}: [[seaborgium]] {{n}} * {{ell}}: [[σιμπόργκιο]] (''simpórgkio'') {{n}} * {{nor}}: [[seaborgium]] * {{rus}}: [[сиборгий]] (''sibórgij'') {{m}} {{giữa}} * {{jpn}}: [[シーボーギウム]] (''shibōgiumu'') * {{fra}}: [[seaborgium]] {{m}} * {{tam}}: [[சீபோர்ஜியம்]] (''cīpōrjiyam'') * {{spa}}: [[seaborgio]] {{m}} * {{tha}}: [[ชีบอรเกียม]] (''sībokiam'') * {{swe}}: [[seaborgium]] {{n}} * {{kor}}: [[시보귬]] (''sibogyum'') * {{zho}}: ** {{Hant}}: [[𨭎]] (''xǐ'') {{cuối}} {{-cat-}} {{-noun-}} '''seaborgi''' {{m}} # [[#Tiếng Việt|Seaborgi]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] agqe21ldd1nut3ng4fwg9uyeumbzqu8 bohri 0 243532 2350724 1803394 2026-05-07T07:58:11Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350724 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|bô|ri}} {{-etymology-}} {{etym-from | lang = eng | term = bohrium | from = {{etym-from | term = Niels Bohr | 2 lang = lat | 2 term = -ium }} }} {{-noun-}} '''bohri''' # [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] với [[ký hiệu]] [[Bh]] và [[số nguyên tử]] 107. {{-syn-}} * [[unnilsepti]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[بوريوم]] (''bóryum'') {{m}} * {{eng}}: [[bohrium]], [[eka-rhenium]] {{term|cũ}}, [[unnilseptium]] {{term|cũ}} * {{hye}}: [[բորիում]] (''borium'') * {{cat-2}}: [[#Tiếng Catalan|bohri]] {{m}} * {{dan}}: [[bohrium]] * {{heb}}: [[בוהריום]] (''bóhriyum'') * {{deu}}: [[Bohrium]] {{n}} * {{kat}}: [[ბორიუმი]] (''boriumi'') * {{nld}}: [[bohrium]] {{n}} * {{ido}}: [[borio]] * {{nor}}: [[bohrium]] {{giữa}} * {{rus}}: [[борий]] (''bórij'') {{m}} * {{jpn}}: [[ボーリウム]] (''bōriumu'') * {{fra}}: [[bohrium]] {{m}} * {{spa}}: [[bohrio]] {{m}} * {{tha}}: [[มอหเรียม]] (''boriam'') * {{swe}}: [[bohrium]] {{n}} * {{kor}}: [[보륨]] (''boryum'') * {{zho}}: ** {{Hant}}: [[𨨏]] (''bō'', ba) {{cuối}} {{-cat-}} {{-noun-}} '''bohri''' {{m}} # [[#Tiếng Việt|Bohri]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] 0lj5zkk1nmpnmvhia7e27vrfcy14u7j 2350987 2350724 2026-05-07T10:43:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350987 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|bô|ri}} {{-etymology-}} {{etym-from | lang = eng | term = bohrium | from = {{etym-from | term = Niels Bohr | 2 lang = lat | 2 term = -ium }} }} {{-noun-}} '''bohri''' # [[nguyên tố|Nguyên tố]] [[hóa học]] [[tổng hợp]] với [[ký hiệu]] [[Bh]] và [[số nguyên tử]] 107. {{-syn-}} * [[unnilsepti]] {{term|cũ}} {{-trans-}} {{đầu}} * {{ara}}: [[بوريوم]] (''bóryum'') {{m}} * {{eng}}: [[bohrium]], [[eka-rhenium]] {{term|cũ}}, [[unnilseptium]] {{term|cũ}} * {{hye}}: [[բորիում]] (''borium'') * {{cat-old}}: [[#Tiếng Catalan|bohri]] {{m}} * {{dan}}: [[bohrium]] * {{heb}}: [[בוהריום]] (''bóhriyum'') * {{deu}}: [[Bohrium]] {{n}} * {{kat}}: [[ბორიუმი]] (''boriumi'') * {{nld}}: [[bohrium]] {{n}} * {{ido}}: [[borio]] * {{nor}}: [[bohrium]] {{giữa}} * {{rus}}: [[борий]] (''bórij'') {{m}} * {{jpn}}: [[ボーリウム]] (''bōriumu'') * {{fra}}: [[bohrium]] {{m}} * {{spa}}: [[bohrio]] {{m}} * {{tha}}: [[มอหเรียม]] (''boriam'') * {{swe}}: [[bohrium]] {{n}} * {{kor}}: [[보륨]] (''boryum'') * {{zho}}: ** {{Hant}}: [[𨨏]] (''bō'', ba) {{cuối}} {{-cat-}} {{-noun-}} '''bohri''' {{m}} # [[#Tiếng Việt|Bohri]]. [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Catalan]] jx4hjluqo8kw0gs95ibxdeuzhxroqvd lý lẽ 0 243646 2350725 2258750 2026-05-07T07:58:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350725 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|lý|lẽ}} {{-noun-}} '''lý lẽ''', '''lí lẽ''' # [[điều|Điều]] [[nêu]] lên để [[ủng hộ]] một [[đề xuất]]. #: ''Dùng '''lý lẽ''' để thuyết phục.'' {{-trans-}} {{đầu}} * {{sqi}}: [[argument]] * {{eng}}: [[argument]], [[assertion]], [[basis]], [[claim]], [[contention]], [[proof]] * {{hye}}: [[փաստարկ]] (''p’astark''), [[կռվան]] (''kṙvan'') * {{pol}}: [[argument]] {{m}} * {{por}}: [[argumento]] {{m}} * {{bre}}: [[arguz]] {{m}}, [[arguzoù]] {{plur}} * {{bul}}: [[довод]], [[аргумент]] * {{cat-2}}: [[argument]] {{m}} * {{heb}}: [[טענה]] (''t’a’ana'') {{f}}; [[טיעון]] (''t’i’un'') {{m}} * {{deu}}: [[Argument]] {{n}} * {{ell}}: [[επιχείρημα]] (''epicheírima'') {{n}} * {{lat}}: [[argumentum]] {{n}} {{giữa}} * {{rus}}: [[обоснование]] (''obosnovánije'') {{n}}, [[аргумент]] (''argumént'') {{m}} * {{fin}}: [[argumentti]] * {{fra}}: [[argument]] {{m}} * {{ron}}: [[argument]] {{n}} * {{ces}}: [[argument]] {{m}} * {{slv}}: [[prepir]] {{m}}, [[spor]] {{m}} * {{spa}}: [[argumento]] {{m}} * {{tur}}: [[delil]], [[hüccet]], [[kanıt]], [[sav]] * {{swe}}: [[argument]] {{n}} * {{ita}}: [[argomento]] {{m}} {{cuối}} {{-related-}} * [[lý do]] * [[lý luận]] [[Thể loại:Tính từ tiếng Việt]] 372is5os8x11wdykfnu7i2idlameyoe 2350988 2350725 2026-05-07T10:43:56Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350988 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|lý|lẽ}} {{-noun-}} '''lý lẽ''', '''lí lẽ''' # [[điều|Điều]] [[nêu]] lên để [[ủng hộ]] một [[đề xuất]]. #: ''Dùng '''lý lẽ''' để thuyết phục.'' {{-trans-}} {{đầu}} * {{sqi}}: [[argument]] * {{eng}}: [[argument]], [[assertion]], [[basis]], [[claim]], [[contention]], [[proof]] * {{hye}}: [[փաստարկ]] (''p’astark''), [[կռվան]] (''kṙvan'') * {{pol}}: [[argument]] {{m}} * {{por}}: [[argumento]] {{m}} * {{bre}}: [[arguz]] {{m}}, [[arguzoù]] {{plur}} * {{bul}}: [[довод]], [[аргумент]] * {{cat-old}}: [[argument]] {{m}} * {{heb}}: [[טענה]] (''t’a’ana'') {{f}}; [[טיעון]] (''t’i’un'') {{m}} * {{deu}}: [[Argument]] {{n}} * {{ell}}: [[επιχείρημα]] (''epicheírima'') {{n}} * {{lat}}: [[argumentum]] {{n}} {{giữa}} * {{rus}}: [[обоснование]] (''obosnovánije'') {{n}}, [[аргумент]] (''argumént'') {{m}} * {{fin}}: [[argumentti]] * {{fra}}: [[argument]] {{m}} * {{ron}}: [[argument]] {{n}} * {{ces}}: [[argument]] {{m}} * {{slv}}: [[prepir]] {{m}}, [[spor]] {{m}} * {{spa}}: [[argumento]] {{m}} * {{tur}}: [[delil]], [[hüccet]], [[kanıt]], [[sav]] * {{swe}}: [[argument]] {{n}} * {{ita}}: [[argomento]] {{m}} {{cuối}} {{-related-}} * [[lý do]] * [[lý luận]] [[Thể loại:Tính từ tiếng Việt]] sndwyof74dzvpwz686l4o97wekdnp12 bọ rùa 0 243699 2350726 2009767 2026-05-07T07:58:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350726 wikitext text/x-wiki {{-vie-}} {{wikipedia}} {{-pron-}} {{vie-pron|bọ|rùa}} {{-noun-}} [[Hình:BIEDRONA mirrored, cropped.png|thumb|'''bọ rùa''']] '''bọ rùa''' # Một loài [[côn trùng]] có [[cánh]] [[cứng]] tạo thành hình giống mai [[rùa]], thuộc họ [[Coccinellidae]]. {{-trans-}} * {{eng}}: [[ladybug]], [[ladybird]] * {{cat-2}}: [[marieta]] {{f}} * {{glg}}: [[xoaniña]] {{f}} * {{fra}}: [[coccinelle]] {{f}} * {{tgl}}: [[marikita]] [[Thể loại:Danh từ tiếng Việt]] i1xtsuynbumxhxnbbll08fpz3gr5fvq 2350989 2350726 2026-05-07T10:43:59Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350989 wikitext text/x-wiki {{-vie-}} {{wikipedia}} {{-pron-}} {{vie-pron|bọ|rùa}} {{-noun-}} [[Hình:BIEDRONA mirrored, cropped.png|thumb|'''bọ rùa''']] '''bọ rùa''' # Một loài [[côn trùng]] có [[cánh]] [[cứng]] tạo thành hình giống mai [[rùa]], thuộc họ [[Coccinellidae]]. {{-trans-}} * {{eng}}: [[ladybug]], [[ladybird]] * {{cat-old}}: [[marieta]] {{f}} * {{glg}}: [[xoaniña]] {{f}} * {{fra}}: [[coccinelle]] {{f}} * {{tgl}}: [[marikita]] [[Thể loại:Danh từ tiếng Việt]] dl8cuub1wsy04ct52ueirz5y8ddyco7 tiếng Malaysia 0 243713 2350727 1529501 2026-05-07T07:58:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350727 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Ma|lay|si|a}} {{-noun-}} '''tiếng Malaysia''' # là tiếng nói ở [[Malaysia]] {{-syn-}} * [[tiếng Mã Lai]] {{-trans-}} {{đầu}} * {{ara}}: [[لغة ملايو]] (''lúġat milāyū'') {{f}} * {{eng}}: [[Malaysian]], [[Malay]], [[Malayan]] * {{hye}}: [[մալայերեն]] (''malayeren'') * {{pol}}: [[malajski]] * {{fas}}: [[زبان مالایی]] (''zabân-e Mâlâyi'') * {{eus}}: [[malaiera]] * {{por}}: [[malaio]] {{m}} * {{cat-2}}: [[malai]] {{m}} * {{deu}}: [[Malaiisch]] {{n}} * {{nld}}: [[Maleis]] {{n}} * {{hun}}: [[maláj]] * {{ell}}: [[μαλαισιανά]] (''malaisianá'') {{n}} {{plur}} * {{ind}}: [[bahasa Melayu]], [[Melayu]] * {{gle}}: [[Malaeis]] {{f}} * {{msa}}: [[bahasa Melayu]], [[Melayu]] * {{mkd}}: [[малајски]] (''málajski'') {{m}} * {{nor}}: [[malayisk]] {{m}}, [[malaysisk]] {{m}} {{giữa}} * {{rus}}: [[малайский язык]] (''malájskij jazýk'') {{m}}, [[малайский]] (''malájskij'') {{m}} * {{jpn}}: [[マレー語]] (''marēgo'') * {{fin}}: [[malaiji]] * {{fra}}: [[malais]] {{m}} * {{cmn}}: ** {{Hant}}: [[馬來語]] (''Mǎláiyǔ'', Mã Lai ngữ) ** {{Hans}}: [[马来语]] (''Mǎláiyǔ'', Mã Lai ngữ) * {{epo}}: [[Malaja]] * {{ces}}: [[malajština]] {{f}} * {{slk}}: [[malajština]] {{f}} * {{tgl}}: [[Malayo]], [[Malayo]] * {{spa}}: [[malayo]] {{m}} * {{tha}}: [[ภาษามาเลย์]] (''paasăa maalây'') * {{swe}}: [[malajiska]] * {{kor}}: [[말레이어]] (''Mallei-eo'') {{cuối}} [[Thể loại:Danh từ tiếng Việt]] diubvt5b0t4rdx0pnj124y520ohosq9 2350990 2350727 2026-05-07T10:44:02Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350990 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|tiếng|Ma|lay|si|a}} {{-noun-}} '''tiếng Malaysia''' # là tiếng nói ở [[Malaysia]] {{-syn-}} * [[tiếng Mã Lai]] {{-trans-}} {{đầu}} * {{ara}}: [[لغة ملايو]] (''lúġat milāyū'') {{f}} * {{eng}}: [[Malaysian]], [[Malay]], [[Malayan]] * {{hye}}: [[մալայերեն]] (''malayeren'') * {{pol}}: [[malajski]] * {{fas}}: [[زبان مالایی]] (''zabân-e Mâlâyi'') * {{eus}}: [[malaiera]] * {{por}}: [[malaio]] {{m}} * {{cat-old}}: [[malai]] {{m}} * {{deu}}: [[Malaiisch]] {{n}} * {{nld}}: [[Maleis]] {{n}} * {{hun}}: [[maláj]] * {{ell}}: [[μαλαισιανά]] (''malaisianá'') {{n}} {{plur}} * {{ind}}: [[bahasa Melayu]], [[Melayu]] * {{gle}}: [[Malaeis]] {{f}} * {{msa}}: [[bahasa Melayu]], [[Melayu]] * {{mkd}}: [[малајски]] (''málajski'') {{m}} * {{nor}}: [[malayisk]] {{m}}, [[malaysisk]] {{m}} {{giữa}} * {{rus}}: [[малайский язык]] (''malájskij jazýk'') {{m}}, [[малайский]] (''malájskij'') {{m}} * {{jpn}}: [[マレー語]] (''marēgo'') * {{fin}}: [[malaiji]] * {{fra}}: [[malais]] {{m}} * {{cmn}}: ** {{Hant}}: [[馬來語]] (''Mǎláiyǔ'', Mã Lai ngữ) ** {{Hans}}: [[马来语]] (''Mǎláiyǔ'', Mã Lai ngữ) * {{epo}}: [[Malaja]] * {{ces}}: [[malajština]] {{f}} * {{slk}}: [[malajština]] {{f}} * {{tgl}}: [[Malayo]], [[Malayo]] * {{spa}}: [[malayo]] {{m}} * {{tha}}: [[ภาษามาเลย์]] (''paasăa maalây'') * {{swe}}: [[malajiska]] * {{kor}}: [[말레이어]] (''Mallei-eo'') {{cuối}} [[Thể loại:Danh từ tiếng Việt]] n4yezv0368yi4br1rvrzuu3w5teo0uv com pa 0 243745 2350728 2281316 2026-05-07T07:58:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350728 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Zirkel.jpg|nhỏ|phải|com-pa]] {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:compas]] }} {{-noun-}} '''com pa''', '''com-pa''' # Một [[dụng cụ]] [[vẽ]] [[kỹ thuật]] có thể được [[sử dụng]] để vẽ [[hình tròn]], [[đường tròn]], hoặc [[vòng cung]]. {{-trans-}} {{đầu}} * {{ara}}: [[بركار]] (''birkaar'') {{g|m}}, [[فرجار]] (''firjaar'') {{g|m}}, [[دوارة]] (''dawwaara'') {{f}} * {{eng}}: [[pair of compasses]], [[compass]] * {{hye}}: [[կարկին]] (''karkin'') * {{pol}}: [[cyrkiel]] {{g|m}} * {{fas}}: [[پرگار]] (''pargâr'') * {{isl}}: [[sirkill]] {{g|m}}, [[hringfari]] {{g|m}} * {{bel}}: [[цыркуль]] * {{por}}: [[compasso]] {{g|m}} * {{bul}}: [[пергел]] (''pergel'') {{g|m}} * {{cat-2}}: [[compàs]] {{g|m}} * {{hrv}}: [[šestar]] * {{dan}}: [[passer]] {{g|c}} * {{heb}}: [[מחוגה]] (''mekhuga'') {{f}} * {{deu}}: [[Zirkel]] {{g|m}} * {{est}}: [[sirkel]] * {{fry}}: [[passer]] {{g|c}} * {{glg}}: [[compás]] {{g|m}} * {{nld}}: [[passer]] {{g|m}} * {{hun}}: [[körző]] * {{ell}}: [[διαβήτης]] (''diavítis'') {{g|m}} * {{ido}}: [[kompaso]] * {{ind}}: [[jangka]] * {{gle}}: [[compás]] {{g|m}} * {{kaz}}: ** {{Arab}}: [[كرونتسىيركۋل]] ** {{Cyrl}}: [[кронциркуль]] ** {{Latn}}: [[kroncïrkwlʹ]] * {{khm}}: [[មេដ្យានទ័រ]] * {{lat}}: [[circinus]] {{g|m}} * {{lav}}: [[cirkulis]] {{g|m}} * {{lit}}: [[skriestuvas]] {{g|m}} * {{msa}}: [[jangka lukis]], [[kompas]] * {{mkd}}: [[шестар]] (''šéstar'') {{g|m}} * {{nor}}: [[passer]] {{g|m}} * {{rus}}: [[циркуль]] {{g|m}} (''církul’'') * {{jpn}}: [[コンパス]] (''konpasu'') * {{fin}}: [[harppi]] * {{fra}}: [[compas]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[圓規]] (''yuánguī'', viên quy) ** {{Hans}}: [[圆规]] (''yuánguī'', viên quy) * {{yue}}: ** {{Hant}}: [[圓規]] (''yun4kwai1'', viên quy) ** {{Hans}}: [[圆规]] (''yun4kwai1'', viên quy) * {{epo}}: [[cirkelo]] * {{ron}}: [[compas]] * {{ces}}: [[kružítko]] {{n}} * {{srp}}: [[šestar]] * {{hbs}}: [[šestar]] {{g|m}} * {{slk}}: [[kružidlo]] * {{slv}}: [[šestilo]] {{n}} * {{tgl}}: [[aguhon]] * {{spa}}: [[compás]] {{g|m}} * {{tel}}: [[వృత్తలేఖిని]] (''vruttaleakhini'') * {{tur}}: [[pergel]] * {{swe}}: [[passare]] {{g|c}} * {{kor}}: [[컴퍼스]] * {{uzb}}: [[sirkul]] * {{ita}}: [[compasso]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] rre50u96wryw4t8xrskli49h9p09bq9 2350991 2350728 2026-05-07T10:44:05Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350991 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Zirkel.jpg|nhỏ|phải|com-pa]] {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:compas]] }} {{-noun-}} '''com pa''', '''com-pa''' # Một [[dụng cụ]] [[vẽ]] [[kỹ thuật]] có thể được [[sử dụng]] để vẽ [[hình tròn]], [[đường tròn]], hoặc [[vòng cung]]. {{-trans-}} {{đầu}} * {{ara}}: [[بركار]] (''birkaar'') {{g|m}}, [[فرجار]] (''firjaar'') {{g|m}}, [[دوارة]] (''dawwaara'') {{f}} * {{eng}}: [[pair of compasses]], [[compass]] * {{hye}}: [[կարկին]] (''karkin'') * {{pol}}: [[cyrkiel]] {{g|m}} * {{fas}}: [[پرگار]] (''pargâr'') * {{isl}}: [[sirkill]] {{g|m}}, [[hringfari]] {{g|m}} * {{bel}}: [[цыркуль]] * {{por}}: [[compasso]] {{g|m}} * {{bul}}: [[пергел]] (''pergel'') {{g|m}} * {{cat-old}}: [[compàs]] {{g|m}} * {{hrv}}: [[šestar]] * {{dan}}: [[passer]] {{g|c}} * {{heb}}: [[מחוגה]] (''mekhuga'') {{f}} * {{deu}}: [[Zirkel]] {{g|m}} * {{est}}: [[sirkel]] * {{fry}}: [[passer]] {{g|c}} * {{glg}}: [[compás]] {{g|m}} * {{nld}}: [[passer]] {{g|m}} * {{hun}}: [[körző]] * {{ell}}: [[διαβήτης]] (''diavítis'') {{g|m}} * {{ido}}: [[kompaso]] * {{ind}}: [[jangka]] * {{gle}}: [[compás]] {{g|m}} * {{kaz}}: ** {{Arab}}: [[كرونتسىيركۋل]] ** {{Cyrl}}: [[кронциркуль]] ** {{Latn}}: [[kroncïrkwlʹ]] * {{khm}}: [[មេដ្យានទ័រ]] * {{lat}}: [[circinus]] {{g|m}} * {{lav}}: [[cirkulis]] {{g|m}} * {{lit}}: [[skriestuvas]] {{g|m}} * {{msa}}: [[jangka lukis]], [[kompas]] * {{mkd}}: [[шестар]] (''šéstar'') {{g|m}} * {{nor}}: [[passer]] {{g|m}} * {{rus}}: [[циркуль]] {{g|m}} (''církul’'') * {{jpn}}: [[コンパス]] (''konpasu'') * {{fin}}: [[harppi]] * {{fra}}: [[compas]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[圓規]] (''yuánguī'', viên quy) ** {{Hans}}: [[圆规]] (''yuánguī'', viên quy) * {{yue}}: ** {{Hant}}: [[圓規]] (''yun4kwai1'', viên quy) ** {{Hans}}: [[圆规]] (''yun4kwai1'', viên quy) * {{epo}}: [[cirkelo]] * {{ron}}: [[compas]] * {{ces}}: [[kružítko]] {{n}} * {{srp}}: [[šestar]] * {{hbs}}: [[šestar]] {{g|m}} * {{slk}}: [[kružidlo]] * {{slv}}: [[šestilo]] {{n}} * {{tgl}}: [[aguhon]] * {{spa}}: [[compás]] {{g|m}} * {{tel}}: [[వృత్తలేఖిని]] (''vruttaleakhini'') * {{tur}}: [[pergel]] * {{swe}}: [[passare]] {{g|c}} * {{kor}}: [[컴퍼스]] * {{uzb}}: [[sirkul]] * {{ita}}: [[compasso]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ib3p65y2sqvhts0buvfk7dnb4742dh9 viển vông 0 244256 2350729 2111606 2026-05-07T07:58:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350729 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|viển|vông}} {{-adj-}} {{pn}} # {{context|láy}} [[không tưởng|Không tưởng]], sẽ không [[bao giờ]] [[xảy ra]]. # [[Không]] [[thiết thực]], [[hết sức]] [[xa]] [[rời]] [[thực tế]]. #:{{ux|vi|mơ ước '''viển vông'''}} #:{{ux|vi|toàn nói những chuyện '''viển vông'''}} {{-syn-}} * [[hão huyền]] {{-trans-}} {{đầu}} * {{eng}}: [[impractical]], [[quixotic]], [[unrealizable]], [[utopian]] * {{cat-2}}: [[quixotesc]], [[utòpic]] * {{deu}}: [[unpraktisch]], [[unnütz]], [[unbrauchbar]], [[untauglich]], [[quichottisch]], [[utopisch]] * {{kat}}: [[უტოპიური]] * {{nld}}: [[onpraktisch]], [[onhandig]], [[wereldvreemd]], [[donquichotterig]], [[impulsief]], [[utopisch]] * {{hun}}: [[használhatatlan]] * {{ell}}: [[ουτοπικός]] (''outopikós'') * {{lit}}: [[utopiškas]] * {{rus}}: [[донкихотский]] (''donkixótskij'') * {{fin}}: [[epäkäytännöllinen]], [[epätarkoituksenmukainen]] * {{fra}}: [[quichottesque]] * {{ces}}: [[nepraktický]] {{m}}, [[neuskutečnitelný]] {{m}}, [[utopický]] {{m}} * {{spa}}: [[quijotesco]] {{m}}, [[quijotesco]] {{f}}, [[utópico]] {{m}}, [[utópico]] {{f}} * {{ita}}: [[donchisciottesco]] {{cuối}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Tính từ|tiếng Việt}} [[Thể loại:Từ láy tiếng Việt]] ff2xvrs6wheqqlx79ktsc8ivwq1uwfc 2350992 2350729 2026-05-07T10:44:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350992 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|viển|vông}} {{-adj-}} {{pn}} # {{context|láy}} [[không tưởng|Không tưởng]], sẽ không [[bao giờ]] [[xảy ra]]. # [[Không]] [[thiết thực]], [[hết sức]] [[xa]] [[rời]] [[thực tế]]. #:{{ux|vi|mơ ước '''viển vông'''}} #:{{ux|vi|toàn nói những chuyện '''viển vông'''}} {{-syn-}} * [[hão huyền]] {{-trans-}} {{đầu}} * {{eng}}: [[impractical]], [[quixotic]], [[unrealizable]], [[utopian]] * {{cat-old}}: [[quixotesc]], [[utòpic]] * {{deu}}: [[unpraktisch]], [[unnütz]], [[unbrauchbar]], [[untauglich]], [[quichottisch]], [[utopisch]] * {{kat}}: [[უტოპიური]] * {{nld}}: [[onpraktisch]], [[onhandig]], [[wereldvreemd]], [[donquichotterig]], [[impulsief]], [[utopisch]] * {{hun}}: [[használhatatlan]] * {{ell}}: [[ουτοπικός]] (''outopikós'') * {{lit}}: [[utopiškas]] * {{rus}}: [[донкихотский]] (''donkixótskij'') * {{fin}}: [[epäkäytännöllinen]], [[epätarkoituksenmukainen]] * {{fra}}: [[quichottesque]] * {{ces}}: [[nepraktický]] {{m}}, [[neuskutečnitelný]] {{m}}, [[utopický]] {{m}} * {{spa}}: [[quijotesco]] {{m}}, [[quijotesco]] {{f}}, [[utópico]] {{m}}, [[utópico]] {{f}} * {{ita}}: [[donchisciottesco]] {{cuối}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Tính từ|tiếng Việt}} [[Thể loại:Từ láy tiếng Việt]] qg3hzfojb1ndarif1ff5hp8y682c4jz cà rốt 0 244325 2350730 2281319 2026-05-07T07:58:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350730 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:CarrotRoots.jpg|nhỏ|phải|cà rốt]] {{-pron-}} {{vie-pron|cà|rốt|HN=kɐ̤ː˨˩ ɹot˧˥|SG=kɐː˨˩ ɹot˧}} {{pron-audio |place=Miền nam Việt Nam (nam giới) |file=Vi-cà rốt.ogg |pron=}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:carotte]] }} {{-noun-}} '''cà rốt''', '''cà-rốt''' # Một loại [[cây]] có [[củ]], thường có màu [[vàng]] [[cam]], [[đỏ]], vàng, [[trắng]] hay [[tía]]. # [[củ|Củ]] của [[cây]] này. {{-syn-}} * [[ca rốt]] {{-trans-}} {{đầu}} * {{ara}}: [[جزر]] {{g|m}} (''jázar'') * {{afr}}: [[wortel]] * {{eng}}: [[carrot]] * {{arg}}: [[azanoria]] {{f}} * {{hye}}: [[գազար]] (''gazar''), [[ստեպղին]] (''stepġin'') * {{aze}}: [[kök]], [[yerkökü]] * {{pol}}: [[marchewka]] {{f}} * {{fas}}: [[هویج]] (''havij''), [[گزر]] (''gazar'') * {{bal}}: [[گزرک]] (''gizirk'', ''gazirk'') * {{isl}}: [[gulrót]] {{f}} * {{bak}}: [[кишер]] (''kişer'') * {{eus}}: [[azenario]] * {{bel}}: [[морква]] {{f}} (''mórkva'') * {{ben}}: [[গাজর]] (''gājar'') * {{por}}: [[cenoura]] {{f}} * {{bul}}: [[морков]] {{g|m}} (''mórkov'') * {{cat-2}}: [[pastanaga]] {{f}} * {{che}}: [[жӀонка]] (''ƶjonka'') * {{chv}}: [[кишĕр]] (''kişĕr'') * {{dan}}: [[gulerod]] {{g|c}} * {{heb}}: [[גזר]] {{g|m}} (''gezer'') * {{sce}}: [[tuma]] * {{deu}}: [[Möhre]] {{f}}, [[Mohrrübe]] {{f}}, [[Karotte]] {{f}} * {{est}}: [[porgand]] * {{fao}}: [[gularót]] {{f}} * {{fij}}: [[kareti]] * {{fry}}: [[woartel]] {{g|c}} * {{gla}}: [[curran]] {{g|m}} * {{glg}}: [[cenoria]] * {{kat}}: [[სტაფილო]] (''stap’ilo'') * {{nld}}: [[wortel]] {{g|m}}, [[peen]] {{g|m}} * {{hin}}: [[गाजर]] {{g|m}} (''gājar''), [[गज़र]] {{g|m}} (''gazar'') * {{hun}}: [[sárgarépa]] * {{ell}}: [[καρότο]] {{n}} (''karóto'') * {{ido}}: [[karoto]] * {{ind}}: [[wortel]] * {{ile}}: [[carotte]] * {{xal}}: [[шар луувң]] (''shar luuvng'') * {{kan}}: [[ಕ್ಯಾರೇಟು]] (''kyārēṭu'') * {{krc}}: [[быхы]] (''bıxı'') * {{kaz}}: [[сәбіз]] (''säbiz'') * {{khm}}: [[ការ៉ុត]] (''kaarot'') * {{kum}}: [[чыта]] (''çıta'') * {{kur}}: [[گوێزه‌ر]] * {{kir}}: [[сабиз]] (''sabiz'') * {{lao}}: [[ຫົວກາລົດ]] (''hūa kā lot'') * {{lat}}: [[carota]] {{f}}, [[daucum]] {{n}} * {{lav}}: [[burkāns]] {{g|m}} * {{lit}}: [[morka]] {{f}} * {{ltz}}: [[Muert]] {{f}}, [[Wuerzel]] {{f}} * {{msa}}: [[wortel]], [[karot]], [[lobak merah]] * {{mkd}}: [[морков]] {{g|m}} (''mórkov'') * {{mlt}}: [[zunnarija]] {{f}}, [[karrota]] {{f}} * {{mar}}: [[गाजर]] (''gājar'') * {{mya}}: [[မုန်လာဥဝါ]] (''moun la u wa'') * {{mon}}: [[шар лууван]] (''šar luuvan'') * {{nor}}: [[gulrot]] {{g|c}} * {{langname|alt}}: [[моркоп]] (''morqop'') * {{nap}}: [[pastenaca]] * {{nav}}: [[chąąshtʼezhiitsoh]] * {{rus}}: [[морковь]] {{f}} (''morkóvʹ''), [[морковка]] {{f}} (''morkóvka'') {{term|thông tục}},[[морква]] {{f}} (''morkvá'', ''mórkva'') {{term|phương ngữ}} * {{jpn}}: [[ニンジン]] (''ninjin''), [[人参]] (にんじん, ''ninjin'', nhân sâm) * {{oji}}: [[okaadaakoons]], [[okaadaak]] * {{oss}}: [[æпхæ]] (''æpxæ''), [[уырыдзы]] (''uyrydzy'') * {{fin}}: [[porkkana]] * {{fra}}: [[carotte]] {{f}} * {{cmn}}: ** {{Hant}}: [[紅蘿卜]] (''hóngluóbo'', hồng la bặc), [[胡蘿卜]] (''húluóbo'', hồ la bặc) ** {{Hans}}: [[红萝卜]] (''hóngluóbo'', hồng la bặc), [[胡萝卜]] (''húluóbo'', hồ la bặc) * {{epo}}: [[karoto]] * {{ron}}: [[morcov]] {{g|m}}, [[carotă]] {{f}} * {{roh}}: [[risch melna]] {{f}}, [[rischmelna]] {{f}}, [[carotta]] {{f}}, [[riebla]] {{f}}, [[ragisch cotschna]] {{f}}, [[carota]] {{f}} * {{sah}}: [[моркуоп]] (''morkuop'') * {{sme}}: [[rušpi]] * {{ces}}: [[mrkev]] {{f}} * {{hbs}}: [[мрква]] {{f}}, [[шаргарепа]] {{f}}, [[mrkva]] {{f}}, [[šargarepa]] {{f}} * {{slk}}: [[mrkva]] * {{slv}}: [[korenje]] {{n}}, [[korenček]] {{g|m}} * {{sot}}: [[sehwete]] * {{swa}}: [[karoti]] * {{tgl}}: [[karot]] * {{tgk}}: [[сабзӣ]] (''sabzī''), [[бехӣ]] (''bexī'') * {{tam}}: [[காரட்]] (''kāraṭ'') * {{tat}}: [[кишер]] (''kişer'') * {{spa}}: [[zanahoria]] {{f}} * {{tel}}: [[కారెట్]] (''kāreṭ'') * {{tha}}: [[แครอท]] (''kaerôt'') * {{tur}}: [[havuç]] * {{swe}}: [[morot]] {{g|c}} * {{kor}}: [[당근]] (''danggeun'') * {{tuk}}: [[käşir]] * {{ukr}}: [[морква]] {{f}} (''mórkva'') * {{urd}}: [[گاجر]] {{g|m}} (''gājar''), [[گزر]] {{g|m}} (''gazar'') * {{uzb}}: [[sabzi]] * {{cym}}: [[moron]] * {{ita}}: [[carota]] {{f}} * {{yid}}: [[מייער]] (''meyer'') [[מער]] {{f}} (''mer'') {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 8mep4mw2nbbk8pqg6u8okhm2ij97bks 2350993 2350730 2026-05-07T10:44:11Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350993 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:CarrotRoots.jpg|nhỏ|phải|cà rốt]] {{-pron-}} {{vie-pron|cà|rốt|HN=kɐ̤ː˨˩ ɹot˧˥|SG=kɐː˨˩ ɹot˧}} {{pron-audio |place=Miền nam Việt Nam (nam giới) |file=Vi-cà rốt.ogg |pron=}} {{-etymology-}} {{etym|lang=vie|from= * [[fra:carotte]] }} {{-noun-}} '''cà rốt''', '''cà-rốt''' # Một loại [[cây]] có [[củ]], thường có màu [[vàng]] [[cam]], [[đỏ]], vàng, [[trắng]] hay [[tía]]. # [[củ|Củ]] của [[cây]] này. {{-syn-}} * [[ca rốt]] {{-trans-}} {{đầu}} * {{ara}}: [[جزر]] {{g|m}} (''jázar'') * {{afr}}: [[wortel]] * {{eng}}: [[carrot]] * {{arg}}: [[azanoria]] {{f}} * {{hye}}: [[գազար]] (''gazar''), [[ստեպղին]] (''stepġin'') * {{aze}}: [[kök]], [[yerkökü]] * {{pol}}: [[marchewka]] {{f}} * {{fas}}: [[هویج]] (''havij''), [[گزر]] (''gazar'') * {{bal}}: [[گزرک]] (''gizirk'', ''gazirk'') * {{isl}}: [[gulrót]] {{f}} * {{bak}}: [[кишер]] (''kişer'') * {{eus}}: [[azenario]] * {{bel}}: [[морква]] {{f}} (''mórkva'') * {{ben}}: [[গাজর]] (''gājar'') * {{por}}: [[cenoura]] {{f}} * {{bul}}: [[морков]] {{g|m}} (''mórkov'') * {{cat-old}}: [[pastanaga]] {{f}} * {{che}}: [[жӀонка]] (''ƶjonka'') * {{chv}}: [[кишĕр]] (''kişĕr'') * {{dan}}: [[gulerod]] {{g|c}} * {{heb}}: [[גזר]] {{g|m}} (''gezer'') * {{sce}}: [[tuma]] * {{deu}}: [[Möhre]] {{f}}, [[Mohrrübe]] {{f}}, [[Karotte]] {{f}} * {{est}}: [[porgand]] * {{fao}}: [[gularót]] {{f}} * {{fij}}: [[kareti]] * {{fry}}: [[woartel]] {{g|c}} * {{gla}}: [[curran]] {{g|m}} * {{glg}}: [[cenoria]] * {{kat}}: [[სტაფილო]] (''stap’ilo'') * {{nld}}: [[wortel]] {{g|m}}, [[peen]] {{g|m}} * {{hin}}: [[गाजर]] {{g|m}} (''gājar''), [[गज़र]] {{g|m}} (''gazar'') * {{hun}}: [[sárgarépa]] * {{ell}}: [[καρότο]] {{n}} (''karóto'') * {{ido}}: [[karoto]] * {{ind}}: [[wortel]] * {{ile}}: [[carotte]] * {{xal}}: [[шар луувң]] (''shar luuvng'') * {{kan}}: [[ಕ್ಯಾರೇಟು]] (''kyārēṭu'') * {{krc}}: [[быхы]] (''bıxı'') * {{kaz}}: [[сәбіз]] (''säbiz'') * {{khm}}: [[ការ៉ុត]] (''kaarot'') * {{kum}}: [[чыта]] (''çıta'') * {{kur}}: [[گوێزه‌ر]] * {{kir}}: [[сабиз]] (''sabiz'') * {{lao}}: [[ຫົວກາລົດ]] (''hūa kā lot'') * {{lat}}: [[carota]] {{f}}, [[daucum]] {{n}} * {{lav}}: [[burkāns]] {{g|m}} * {{lit}}: [[morka]] {{f}} * {{ltz}}: [[Muert]] {{f}}, [[Wuerzel]] {{f}} * {{msa}}: [[wortel]], [[karot]], [[lobak merah]] * {{mkd}}: [[морков]] {{g|m}} (''mórkov'') * {{mlt}}: [[zunnarija]] {{f}}, [[karrota]] {{f}} * {{mar}}: [[गाजर]] (''gājar'') * {{mya}}: [[မုန်လာဥဝါ]] (''moun la u wa'') * {{mon}}: [[шар лууван]] (''šar luuvan'') * {{nor}}: [[gulrot]] {{g|c}} * {{langname|alt}}: [[моркоп]] (''morqop'') * {{nap}}: [[pastenaca]] * {{nav}}: [[chąąshtʼezhiitsoh]] * {{rus}}: [[морковь]] {{f}} (''morkóvʹ''), [[морковка]] {{f}} (''morkóvka'') {{term|thông tục}},[[морква]] {{f}} (''morkvá'', ''mórkva'') {{term|phương ngữ}} * {{jpn}}: [[ニンジン]] (''ninjin''), [[人参]] (にんじん, ''ninjin'', nhân sâm) * {{oji}}: [[okaadaakoons]], [[okaadaak]] * {{oss}}: [[æпхæ]] (''æpxæ''), [[уырыдзы]] (''uyrydzy'') * {{fin}}: [[porkkana]] * {{fra}}: [[carotte]] {{f}} * {{cmn}}: ** {{Hant}}: [[紅蘿卜]] (''hóngluóbo'', hồng la bặc), [[胡蘿卜]] (''húluóbo'', hồ la bặc) ** {{Hans}}: [[红萝卜]] (''hóngluóbo'', hồng la bặc), [[胡萝卜]] (''húluóbo'', hồ la bặc) * {{epo}}: [[karoto]] * {{ron}}: [[morcov]] {{g|m}}, [[carotă]] {{f}} * {{roh}}: [[risch melna]] {{f}}, [[rischmelna]] {{f}}, [[carotta]] {{f}}, [[riebla]] {{f}}, [[ragisch cotschna]] {{f}}, [[carota]] {{f}} * {{sah}}: [[моркуоп]] (''morkuop'') * {{sme}}: [[rušpi]] * {{ces}}: [[mrkev]] {{f}} * {{hbs}}: [[мрква]] {{f}}, [[шаргарепа]] {{f}}, [[mrkva]] {{f}}, [[šargarepa]] {{f}} * {{slk}}: [[mrkva]] * {{slv}}: [[korenje]] {{n}}, [[korenček]] {{g|m}} * {{sot}}: [[sehwete]] * {{swa}}: [[karoti]] * {{tgl}}: [[karot]] * {{tgk}}: [[сабзӣ]] (''sabzī''), [[бехӣ]] (''bexī'') * {{tam}}: [[காரட்]] (''kāraṭ'') * {{tat}}: [[кишер]] (''kişer'') * {{spa}}: [[zanahoria]] {{f}} * {{tel}}: [[కారెట్]] (''kāreṭ'') * {{tha}}: [[แครอท]] (''kaerôt'') * {{tur}}: [[havuç]] * {{swe}}: [[morot]] {{g|c}} * {{kor}}: [[당근]] (''danggeun'') * {{tuk}}: [[käşir]] * {{ukr}}: [[морква]] {{f}} (''mórkva'') * {{urd}}: [[گاجر]] {{g|m}} (''gājar''), [[گزر]] {{g|m}} (''gazar'') * {{uzb}}: [[sabzi]] * {{cym}}: [[moron]] * {{ita}}: [[carota]] {{f}} * {{yid}}: [[מייער]] (''meyer'') [[מער]] {{f}} (''mer'') {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ti3uhhlpx8cahli03k8p1rwi52oiue9 Bản mẫu:error 10 245026 2350461 2296803 2026-05-06T13:43:43Z Hiyuune 50834 2350461 wikitext text/x-wiki <includeonly>{{safesubst:#invoke:debug|error|{{{message|{{{1}}}}}}}}<br/></includeonly><noinclude>{{documentation}}</noinclude> 6e7wsql1y3uu4zjpiidhshnclrjjryu 2350470 2350461 2026-05-06T14:08:21Z Hiyuune 50834 Hồi sửa về bản sửa đổi 2296803 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]): Lỗi 2350470 wikitext text/x-wiki <{{#switch:{{lc:{{{tag}}}}} |p=p |span=span |div=div |#default=strong }} class="error"><!-- -->{{{message|{{{1}}}}}}<!-- --></{{#switch:{{lc:{{{tag}}}}} |p=p |span=span |div=div |#default=strong }}><noinclude> </noinclude> <noinclude>{{Tài liệu}}[[Thể loại:Bản mẫu giao diện]]</noinclude> q5gzl8j9a11gdjl7wkmyiz52xnnqldf bách khoa toàn thư 0 245163 2350731 2281312 2026-05-07T07:58:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350731 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = zho | term = 百科全書 | hv = bách khoa toàn thư }} {{-noun-}} '''bách khoa toàn thư''' # [[bộ sách|Bộ sách]] [[tra cứu]] [[tổng quát]] về nhiều [[lĩnh vực]] [[kiến thức]] [[nhân loại]]. #: ''Wikipedia là một '''bách khoa toàn thư''' nội dung mở bằng nhiều ngôn ngữ trên Internet.'' {{-synonym-}} * [[từ điển bách khoa]] {{-trans-}} {{đầu}} * {{ara}}: [[موسوعة]] (''mausuu3a'') {{f}} * {{afr}}: [[ensiklopedie]] * {{eng}}: [[encyclopedia]], [[encyclopaedia]] {{term|Anh}}, [[encyclopædia]] {{term|Anh; cũ}} * {{hye}}: [[հանրագիտարան]] (''hanragitaran'') * {{aze}}: [[ensiklopediya]] * {{pol}}: [[encyklopedia]] {{f}} * {{fas}}: [[دانشنامه]] (''dânešnâmeh''), [[دایرةالمعارف]] (''dâyeratolma’âref''), [[دائرةالمعارف]] (''dâ’eratolma’âref'') * {{isl}}: [[alfræðiorðabók]] {{f}} * {{eus}}: [[entziklopedia]] * {{bel}}: [[энцыклапедыя]] (''encyklapédyja'') {{f}} * {{por}}: [[enciclopédia]] {{f}} * {{ina}}: [[encyclopedia]] * {{bul}}: [[енциклопедия]] (''enciklopédija'') {{f}} * {{cat-2}}: [[enciclopèdia]] * {{chv}}: [[энциклопеди]] (''entsiklopédi'') * {{dan}}: [[encyklopædi]] * {{heb}}: [[אנציקלופדיה|אֶנְצִיקְלוֹפֶּדְיָה]] {{f}} (''entsiklopédya'') * {{deu}}: [[Enzyklopädie]] {{f}} * {{est}}: [[entsüklopeedia]] * {{fao}}: [[Alfrøðibók]] * {{kat}}: [[ენციკლოპედია]] (''enc’iklopedia'') * {{nds}}: [[nokieksel]] * {{nld}}: [[encyclopedie]] {{g|m}} * {{hin}}: [[ज्ञानकोष]] (''gyānkoṣ'') {{g|m}}, [[विश्वकोश]] (''viśvakoś'') {{g|m}} * {{hun}}: [[enciklopédia]], [[lexikon]] * {{ell}}: [[εγκυκλοπαίδεια]] (''egkyklopaídeia'') {{f}} * {{ido}}: [[enciklopedio]] * {{ind}}: [[ensiklopedia]] * {{gle}}: [[ciclipéid]] {{f}} * {{krc}}: [[энциклопедия]], [[энциклопедия]] (''entsiklopédija'') * {{lat}}: [[encyclopaedia]], [[pandectes|pandectēs]] {{g|m}} * {{lav}}: [[enciklopēdija]] {{f}} * {{lim}}: [[encyklopedie]] * {{lit}}: [[enciklopedija]] {{f}} * {{ltz}}: [[encyklopedie]] * {{mkd}}: [[енциклопедија]] (''enciklopédija'') {{f}} * {{mal}}: [[സര്‍വവിജ്ഞാനകോശം]] (''sarvavijñānakōśam''), [[വിജ്ഞാനകോശം]] (''vijñānakōśam'') * {{mri}}: [[mātāpunenga]] * {{nor}}: [[encyklopedi]] * {{nav}}: [[ínsadoobíídiiya]] * {{rus}}: [[энциклопедия]] (''enciklopédija'') {{f}} * {{jpn}}: [[百科事典]] (ひゃっかじてん, ''hyakkajiten'', bách khoa tự điển), [[大事典]] (だいじてん, ''dai-jiten'', đại tự điển) * {{fin}}: [[tietosanakirja]], [[ensyklopedia]] * {{fra}}: [[encyclopédie]] {{f}} * {{cmn}}: ** {{Hant}}: [[百科全書]] (''bǎikē quánshū'', bách khoa toàn thư) ** {{Hans}}: [[百科全书]] (''bǎikē quánshū'', bách khoa toàn thư) * {{epo}}: [[enciklopedio]] * {{ron}}: [[enciclopedie]] {{f}} * {{sah}}: [[энциклопедия]] (''entsiklopédija'') * {{ces}}: [[encyklopedie]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[енциклопедија|енциклопе́дија]] {{f}} ** {{Latn}}: [[enciklopedija|enciklopédija]] {{f}} * {{slk}}: [[encyklopédia]] {{f}} * {{slv}}: [[enciklopedija]] {{f}} * {{tgl}}: [[ensiklopedya]] * {{tat}}: [[énsíklopédí]] * {{crh}}: [[entsiklopediya]] * {{spa}}: [[enciclopedia]] {{f}} * {{tel}}: [[విజ్ఞానసర్వస్వం]] * {{tha}}: [[สารานุกรม]] (''săaraanúkrom'') * {{tur}}: [[ansiklopedi]] * {{swe}}: [[encyklopedi]] {{g|c}}, [[konversationslexikon]] {{n}}, [[uppslagsverk]] {{n}} * {{kor}}: [[백과사전]] (''baekkwasajeon'') * {{ukr}}: [[енциклопедія]] (''encyklopédija'') {{f}} * {{uzb}}: [[ensiklopediya]] * {{vol}}: [[sikloped]], [[züklopäod]], [[realasikloped]] * {{cym}}: [[gwyddoniadur]] {{g|m}} * {{ita}}: [[enciclopedia]] {{f}} {{cuối}} {{-related-}} * [[Wikipedia]] * [[từ điển]] * [[tự điển]] * [[đại từ điển]] [[Thể loại:Danh từ tiếng Việt]] bkiazqerwchnn5i2r42ik29m7502fhi 2350994 2350731 2026-05-07T10:44:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350994 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = zho | term = 百科全書 | hv = bách khoa toàn thư }} {{-noun-}} '''bách khoa toàn thư''' # [[bộ sách|Bộ sách]] [[tra cứu]] [[tổng quát]] về nhiều [[lĩnh vực]] [[kiến thức]] [[nhân loại]]. #: ''Wikipedia là một '''bách khoa toàn thư''' nội dung mở bằng nhiều ngôn ngữ trên Internet.'' {{-synonym-}} * [[từ điển bách khoa]] {{-trans-}} {{đầu}} * {{ara}}: [[موسوعة]] (''mausuu3a'') {{f}} * {{afr}}: [[ensiklopedie]] * {{eng}}: [[encyclopedia]], [[encyclopaedia]] {{term|Anh}}, [[encyclopædia]] {{term|Anh; cũ}} * {{hye}}: [[հանրագիտարան]] (''hanragitaran'') * {{aze}}: [[ensiklopediya]] * {{pol}}: [[encyklopedia]] {{f}} * {{fas}}: [[دانشنامه]] (''dânešnâmeh''), [[دایرةالمعارف]] (''dâyeratolma’âref''), [[دائرةالمعارف]] (''dâ’eratolma’âref'') * {{isl}}: [[alfræðiorðabók]] {{f}} * {{eus}}: [[entziklopedia]] * {{bel}}: [[энцыклапедыя]] (''encyklapédyja'') {{f}} * {{por}}: [[enciclopédia]] {{f}} * {{ina}}: [[encyclopedia]] * {{bul}}: [[енциклопедия]] (''enciklopédija'') {{f}} * {{cat-old}}: [[enciclopèdia]] * {{chv}}: [[энциклопеди]] (''entsiklopédi'') * {{dan}}: [[encyklopædi]] * {{heb}}: [[אנציקלופדיה|אֶנְצִיקְלוֹפֶּדְיָה]] {{f}} (''entsiklopédya'') * {{deu}}: [[Enzyklopädie]] {{f}} * {{est}}: [[entsüklopeedia]] * {{fao}}: [[Alfrøðibók]] * {{kat}}: [[ენციკლოპედია]] (''enc’iklopedia'') * {{nds}}: [[nokieksel]] * {{nld}}: [[encyclopedie]] {{g|m}} * {{hin}}: [[ज्ञानकोष]] (''gyānkoṣ'') {{g|m}}, [[विश्वकोश]] (''viśvakoś'') {{g|m}} * {{hun}}: [[enciklopédia]], [[lexikon]] * {{ell}}: [[εγκυκλοπαίδεια]] (''egkyklopaídeia'') {{f}} * {{ido}}: [[enciklopedio]] * {{ind}}: [[ensiklopedia]] * {{gle}}: [[ciclipéid]] {{f}} * {{krc}}: [[энциклопедия]], [[энциклопедия]] (''entsiklopédija'') * {{lat}}: [[encyclopaedia]], [[pandectes|pandectēs]] {{g|m}} * {{lav}}: [[enciklopēdija]] {{f}} * {{lim}}: [[encyklopedie]] * {{lit}}: [[enciklopedija]] {{f}} * {{ltz}}: [[encyklopedie]] * {{mkd}}: [[енциклопедија]] (''enciklopédija'') {{f}} * {{mal}}: [[സര്‍വവിജ്ഞാനകോശം]] (''sarvavijñānakōśam''), [[വിജ്ഞാനകോശം]] (''vijñānakōśam'') * {{mri}}: [[mātāpunenga]] * {{nor}}: [[encyklopedi]] * {{nav}}: [[ínsadoobíídiiya]] * {{rus}}: [[энциклопедия]] (''enciklopédija'') {{f}} * {{jpn}}: [[百科事典]] (ひゃっかじてん, ''hyakkajiten'', bách khoa tự điển), [[大事典]] (だいじてん, ''dai-jiten'', đại tự điển) * {{fin}}: [[tietosanakirja]], [[ensyklopedia]] * {{fra}}: [[encyclopédie]] {{f}} * {{cmn}}: ** {{Hant}}: [[百科全書]] (''bǎikē quánshū'', bách khoa toàn thư) ** {{Hans}}: [[百科全书]] (''bǎikē quánshū'', bách khoa toàn thư) * {{epo}}: [[enciklopedio]] * {{ron}}: [[enciclopedie]] {{f}} * {{sah}}: [[энциклопедия]] (''entsiklopédija'') * {{ces}}: [[encyklopedie]] {{f}} * {{hbs}}: ** {{Cyrl}}: [[енциклопедија|енциклопе́дија]] {{f}} ** {{Latn}}: [[enciklopedija|enciklopédija]] {{f}} * {{slk}}: [[encyklopédia]] {{f}} * {{slv}}: [[enciklopedija]] {{f}} * {{tgl}}: [[ensiklopedya]] * {{tat}}: [[énsíklopédí]] * {{crh}}: [[entsiklopediya]] * {{spa}}: [[enciclopedia]] {{f}} * {{tel}}: [[విజ్ఞానసర్వస్వం]] * {{tha}}: [[สารานุกรม]] (''săaraanúkrom'') * {{tur}}: [[ansiklopedi]] * {{swe}}: [[encyklopedi]] {{g|c}}, [[konversationslexikon]] {{n}}, [[uppslagsverk]] {{n}} * {{kor}}: [[백과사전]] (''baekkwasajeon'') * {{ukr}}: [[енциклопедія]] (''encyklopédija'') {{f}} * {{uzb}}: [[ensiklopediya]] * {{vol}}: [[sikloped]], [[züklopäod]], [[realasikloped]] * {{cym}}: [[gwyddoniadur]] {{g|m}} * {{ita}}: [[enciclopedia]] {{f}} {{cuối}} {{-related-}} * [[Wikipedia]] * [[từ điển]] * [[tự điển]] * [[đại từ điển]] [[Thể loại:Danh từ tiếng Việt]] mkdi5n7nml5kh5cki3cgufkrl9xvn3n nốt tròn 0 245214 2350732 2281373 2026-05-07T07:58:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350732 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Figure rythmique ronde.svg|nhỏ|phải|alt=𝅝|nốt tròn]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn''' # {{label|vi|music}} [[nốt nhạc|Nốt nhạc]] viết dài nhất được dùng [[phổ biến]], [[trường độ]] bằng hai [[nốt trắng]] hoặc nửa [[nốt tròn đôi]], tức 4 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[semibreve]] {{term|Anh, Úc}}, [[whole note]] {{term|Mỹ, Canada}} * {{pol}}: [[cała nuta]] * {{eus}}: [[biribila]] * {{por}}: [[semibreve]] * {{cat-2}}: [[rodona]] * {{est}}: [[täisnoot]] * {{gla}}: [[punc cruinn]] {{g|m}} * {{glg}}: [[redonda]] * {{haw}}: [[hua mele ʻokoʻa]] * {{nor}}: [[helnote]] * {{rus}}: [[семибревис]] * {{fra}}: [[ronde]] {{f}} * {{cmn}}: [[全音符]] (''quányīnfú'', toàn âm phù) * {{yue}}: [[全音符]] (''quányīnfú'', toàn âm phù) * {{srp}}: ** {{Cyrl}}: [[цела нота]] ** {{Latn}}: [[cela nota]] * {{hbs}}: [[cela nota]] * {{spa}}: [[redonda]] {{f}}, [[semibrevis]] {{f}}, [[semibreve]] {{f}} * {{swe}}: [[helnot]] {{g|c}} * {{swe}}: [[helnot]] * {{kor}}: [[온음표]] * {{cym}}: [[hannerbrif]] * {{ita}}: [[semibreve]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 5033409el8ic37to4gsbz09yhw4ntqa 2350995 2350732 2026-05-07T10:44:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350995 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Figure rythmique ronde.svg|nhỏ|phải|alt=𝅝|nốt tròn]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn''' # {{label|vi|music}} [[nốt nhạc|Nốt nhạc]] viết dài nhất được dùng [[phổ biến]], [[trường độ]] bằng hai [[nốt trắng]] hoặc nửa [[nốt tròn đôi]], tức 4 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[semibreve]] {{term|Anh, Úc}}, [[whole note]] {{term|Mỹ, Canada}} * {{pol}}: [[cała nuta]] * {{eus}}: [[biribila]] * {{por}}: [[semibreve]] * {{cat-old}}: [[rodona]] * {{est}}: [[täisnoot]] * {{gla}}: [[punc cruinn]] {{g|m}} * {{glg}}: [[redonda]] * {{haw}}: [[hua mele ʻokoʻa]] * {{nor}}: [[helnote]] * {{rus}}: [[семибревис]] * {{fra}}: [[ronde]] {{f}} * {{cmn}}: [[全音符]] (''quányīnfú'', toàn âm phù) * {{yue}}: [[全音符]] (''quányīnfú'', toàn âm phù) * {{srp}}: ** {{Cyrl}}: [[цела нота]] ** {{Latn}}: [[cela nota]] * {{hbs}}: [[cela nota]] * {{spa}}: [[redonda]] {{f}}, [[semibrevis]] {{f}}, [[semibreve]] {{f}} * {{swe}}: [[helnot]] {{g|c}} * {{swe}}: [[helnot]] * {{kor}}: [[온음표]] * {{cym}}: [[hannerbrif]] * {{ita}}: [[semibreve]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] oh8y8gxsqyl540za7wa0g8iijihniuj nốt tròn đôi 0 245217 2350733 2281374 2026-05-07T07:58:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350733 wikitext text/x-wiki {{-vie-}} [[Tập tin:Breve notation.png|nhỏ|phải|nốt tròn đôi]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn đôi''' # {{@|âm nhạc|ít dùng}} [[nốt nhạc|Nốt nhạc]] có [[trường độ]] bằng hai [[nốt tròn]] hoặc nửa [[nốt tròn ba]], tức 8 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-syn-}} * [[nốt vuông]] {{-trans-}} {{đầu}} * {{eng}}: [[breve]] {{term|Anh, Úc}}, [[double whole note]] {{term|Mỹ, Canada}} * {{eus}}: [[karratua]], [[laburra]] * {{por}}: [[breve]] * {{cat-2}}: [[quadrada]] {{f}}, [[breu]] * {{deu}}: [[Brevis]], [[Doppelganze]] * {{est}}: [[brevis]], [[lühike]] * {{glg}}: [[cadrada]] * {{nld}}: [[brevis]] {{g|c}} * {{gle}}: [[lán-nóta dúbailte]] {{g|m}} * {{rus}}: [[бревис]] * {{fra}}: [[carrée]] {{f}} * {{ces}}: [[brevis]], [[nota dvoucelá]] * {{spa}}: [[cuadrada]] {{f}} * {{swe}}: [[brevisnot]] * {{ita}}: [[breve]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 4ne6zrrrhi6pil1a9b6nzdi49omubsr 2350996 2350733 2026-05-07T10:44:21Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350996 wikitext text/x-wiki {{-vie-}} [[Tập tin:Breve notation.png|nhỏ|phải|nốt tròn đôi]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn đôi''' # {{@|âm nhạc|ít dùng}} [[nốt nhạc|Nốt nhạc]] có [[trường độ]] bằng hai [[nốt tròn]] hoặc nửa [[nốt tròn ba]], tức 8 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-syn-}} * [[nốt vuông]] {{-trans-}} {{đầu}} * {{eng}}: [[breve]] {{term|Anh, Úc}}, [[double whole note]] {{term|Mỹ, Canada}} * {{eus}}: [[karratua]], [[laburra]] * {{por}}: [[breve]] * {{cat-old}}: [[quadrada]] {{f}}, [[breu]] * {{deu}}: [[Brevis]], [[Doppelganze]] * {{est}}: [[brevis]], [[lühike]] * {{glg}}: [[cadrada]] * {{nld}}: [[brevis]] {{g|c}} * {{gle}}: [[lán-nóta dúbailte]] {{g|m}} * {{rus}}: [[бревис]] * {{fra}}: [[carrée]] {{f}} * {{ces}}: [[brevis]], [[nota dvoucelá]] * {{spa}}: [[cuadrada]] {{f}} * {{swe}}: [[brevisnot]] * {{ita}}: [[breve]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 7c7l0fl84kh70278igg6ffqy6p8xkxu nốt tròn ba 0 245222 2350734 1496358 2026-05-07T07:58:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350734 wikitext text/x-wiki {{-vie-}} [[Tập tin:Music-quadwholenote.svg|nhỏ|phải|nốt tròn ba]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn ba''' # {{@|âm nhạc|cổ}} [[nốt nhạc|Nốt nhạc]] có [[trường độ]] bằng hai [[nốt tròn đôi]] hoặc nửa [[nốt tròn tư]], tức 16 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[longa]] * {{eus}}: [[longa]] * {{por}}: [[longa]] {{f}} * {{cat-2}}: [[longa]] {{f}} * {{spa}}: [[longa]] {{f}} * {{ita}}: [[lunga]] {{f}} * {{rus}}: [[лонга]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] pwqapa4unzbme4qsmtyylygern6l5xk 2350997 2350734 2026-05-07T10:44:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350997 wikitext text/x-wiki {{-vie-}} [[Tập tin:Music-quadwholenote.svg|nhỏ|phải|nốt tròn ba]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt tròn ba''' # {{@|âm nhạc|cổ}} [[nốt nhạc|Nốt nhạc]] có [[trường độ]] bằng hai [[nốt tròn đôi]] hoặc nửa [[nốt tròn tư]], tức 16 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[longa]] * {{eus}}: [[longa]] * {{por}}: [[longa]] {{f}} * {{cat-old}}: [[longa]] {{f}} * {{spa}}: [[longa]] {{f}} * {{ita}}: [[lunga]] {{f}} * {{rus}}: [[лонга]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] kgmyc57gr85qdq71g7foq9ow672d8ti nốt đen 0 245224 2350735 2281375 2026-05-07T07:58:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350735 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Figure rythmique noire hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥|nốt đen]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt đen''' # {{label|vi|music}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc đơn]] hoặc nửa [[nốt trắng]], tức 1 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[crotchet]] {{term|Anh, Úc}}, [[quarter note]] {{term|Mỹ, Canada}} * {{arg}}: [[negra]] {{f}} * {{pol}}: [[ćwierćnuta]] {{f}} * {{isl}}: [[fjórðapartsnóta]] {{f}}, [[fjórðipartur]] {{g|m}} * {{eus}}: [[beltz]] * {{por}}: [[semínima]] {{f}} * {{bul}}: [[четвъртина нота]] * {{cat-2}}: [[negra]] {{f}} * {{hrv}}: [[četvrtinka]] * {{dan}}: [[fjerdedelsnode]] {{g|c}} * {{deu}}: [[Viertelnote]] {{f}} * {{est}}: [[veerandnoot]] * {{gla}}: [[punc dubh]] {{g|m}} * {{glg}}: [[negra]] * {{nld}}: [[kwartnoot]] * {{haw}}: [[hua mele hapahā]] * {{ell}}: [[τέταρτο]] (''tétarto'') {{n}} * {{msa}}: [[krocet]] * {{nor}}: [[fjerdedelsnote]] * {{rus}}: [[четвертная]] (''četvertnája'') {{f}}, [[четверть]] (''čétvert’'') {{f}} * {{jpn}}: [[四分音符]] (''shibun onpu'', tứ phân âm phù), [[4分音符]] * {{oci}}: [[negra]] {{f}} * {{fin}}: [[neljäsosanuotti]] * {{fra}}: [[noire]] {{f}} * {{cmn}}: [[四分音符]] (''sì fēn yīnfú'', tứ phân âm phù) * {{yue}}: [[四分音符]] (tứ phân âm phù) * {{ces}}: [[čtvrťová nota]] * {{srp}}: ** {{Cyrl}}: [[четвртина ноте]] ** {{Latn}}: [[četvrtina note]] * {{hbs}}: [[četvrtina note]] * {{slk}}: [[štvrťová nota]] * {{slv}}: [[četrtinka]] {{f}} * {{spa}}: [[negra]] {{f}} * {{tha}}: [[โน๊ตตัวดำ]] * {{tur}}: [[dörtlük nota]] * {{swe}}: [[fjärdedelsnot]] * {{kor}}: [[사분음표]] * {{cym}}: [[crosiet]] * {{ita}}: [[semiminima]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 53gmviztsx06iw3ptpjkr44g4vg6i9h 2350998 2350735 2026-05-07T10:44:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350998 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Figure rythmique noire hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥|nốt đen]] {{-pron-}} {{vie-pron}} {{-noun-}} '''nốt đen''' # {{label|vi|music}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc đơn]] hoặc nửa [[nốt trắng]], tức 1 [[phách]] trong [[nhịp]] <math>_4^4</math>. {{-trans-}} {{đầu}} * {{eng}}: [[crotchet]] {{term|Anh, Úc}}, [[quarter note]] {{term|Mỹ, Canada}} * {{arg}}: [[negra]] {{f}} * {{pol}}: [[ćwierćnuta]] {{f}} * {{isl}}: [[fjórðapartsnóta]] {{f}}, [[fjórðipartur]] {{g|m}} * {{eus}}: [[beltz]] * {{por}}: [[semínima]] {{f}} * {{bul}}: [[четвъртина нота]] * {{cat-old}}: [[negra]] {{f}} * {{hrv}}: [[četvrtinka]] * {{dan}}: [[fjerdedelsnode]] {{g|c}} * {{deu}}: [[Viertelnote]] {{f}} * {{est}}: [[veerandnoot]] * {{gla}}: [[punc dubh]] {{g|m}} * {{glg}}: [[negra]] * {{nld}}: [[kwartnoot]] * {{haw}}: [[hua mele hapahā]] * {{ell}}: [[τέταρτο]] (''tétarto'') {{n}} * {{msa}}: [[krocet]] * {{nor}}: [[fjerdedelsnote]] * {{rus}}: [[четвертная]] (''četvertnája'') {{f}}, [[четверть]] (''čétvert’'') {{f}} * {{jpn}}: [[四分音符]] (''shibun onpu'', tứ phân âm phù), [[4分音符]] * {{oci}}: [[negra]] {{f}} * {{fin}}: [[neljäsosanuotti]] * {{fra}}: [[noire]] {{f}} * {{cmn}}: [[四分音符]] (''sì fēn yīnfú'', tứ phân âm phù) * {{yue}}: [[四分音符]] (tứ phân âm phù) * {{ces}}: [[čtvrťová nota]] * {{srp}}: ** {{Cyrl}}: [[четвртина ноте]] ** {{Latn}}: [[četvrtina note]] * {{hbs}}: [[četvrtina note]] * {{slk}}: [[štvrťová nota]] * {{slv}}: [[četrtinka]] {{f}} * {{spa}}: [[negra]] {{f}} * {{tha}}: [[โน๊ตตัวดำ]] * {{tur}}: [[dörtlük nota]] * {{swe}}: [[fjärdedelsnot]] * {{kor}}: [[사분음표]] * {{cym}}: [[crosiet]] * {{ita}}: [[semiminima]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ptc7sggk5qra525816egy1rfpoig7s6 móc đôi 0 245225 2350736 1496352 2026-05-07T07:58:48Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350736 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique double croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅯|móc đôi]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc đôi''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc ba]] hoặc nửa [[móc đơn]], tức ¼ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và hai [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[semiquaver]] {{term|Anh, Úc}}, [[sixteenth note]] {{term|Mỹ, Canada}} * {{pol}}: [[szesnastka]] {{f}} * {{isl}}: [[sextándapartsnóta]] {{f}}, [[sextándipartur]] {{m}} * {{eus}}: [[erdikortxea]] * {{por}}: [[semicolcheia]] {{f}} * {{cat-2}}: [[semicorxera]] {{f}} * {{deu}}: [[Sechzehntelnote]] {{f}} * {{est}}: [[kuueteistkümnendiknoot]] * {{gla}}: [[leth-chaman]] {{m}} * {{glg}}: [[semicorchea]] * {{nld}}: [[zestiende noot]] * {{haw}}: [[hua mele hapa ‘umikūmāono]] * {{ell}}: [[δέκατο έκτο]] * {{ido}}: [[dekesisima noto]], [[duima okima-noto]] * {{nor}}: [[sekstendedelsnote]] * {{rus}}: [[шестнадцатая]] * {{jpn}}: [[十六分音符]] (''jūrokubun onpu'', thập lục phân âm phù), [[16分音符]] * {{fin}}: [[kuudestoistaosanuotti]] * {{fra}}: [[double croche]] {{f}} * {{cmn}}: [[十六分音符]] (''shíliùfēn yīnfú'', thập lục phân âm phù) * {{yue}}: [[十六分音符]] (thập lục phân âm phù) * {{ron}}: [[şaisprezecime]] * {{slv}}: [[šestnajstinka]] {{f}} * {{spa}}: [[semicorchea]] {{f}} * {{tha}}: [[โน๊ตตัวเขบ็ตสองชั้น]] * {{swe}}: [[sextondelsnot]] * {{kor}}: [[십육분음표]] * {{cym}}: [[hannercwafer]] * {{ita}}: [[semicroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 3dllpoyi93gfeoyin4u4osfki5w0ha5 2350999 2350736 2026-05-07T10:44:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350999 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique double croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅯|móc đôi]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc đôi''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc ba]] hoặc nửa [[móc đơn]], tức ¼ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và hai [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[semiquaver]] {{term|Anh, Úc}}, [[sixteenth note]] {{term|Mỹ, Canada}} * {{pol}}: [[szesnastka]] {{f}} * {{isl}}: [[sextándapartsnóta]] {{f}}, [[sextándipartur]] {{m}} * {{eus}}: [[erdikortxea]] * {{por}}: [[semicolcheia]] {{f}} * {{cat-old}}: [[semicorxera]] {{f}} * {{deu}}: [[Sechzehntelnote]] {{f}} * {{est}}: [[kuueteistkümnendiknoot]] * {{gla}}: [[leth-chaman]] {{m}} * {{glg}}: [[semicorchea]] * {{nld}}: [[zestiende noot]] * {{haw}}: [[hua mele hapa ‘umikūmāono]] * {{ell}}: [[δέκατο έκτο]] * {{ido}}: [[dekesisima noto]], [[duima okima-noto]] * {{nor}}: [[sekstendedelsnote]] * {{rus}}: [[шестнадцатая]] * {{jpn}}: [[十六分音符]] (''jūrokubun onpu'', thập lục phân âm phù), [[16分音符]] * {{fin}}: [[kuudestoistaosanuotti]] * {{fra}}: [[double croche]] {{f}} * {{cmn}}: [[十六分音符]] (''shíliùfēn yīnfú'', thập lục phân âm phù) * {{yue}}: [[十六分音符]] (thập lục phân âm phù) * {{ron}}: [[şaisprezecime]] * {{slv}}: [[šestnajstinka]] {{f}} * {{spa}}: [[semicorchea]] {{f}} * {{tha}}: [[โน๊ตตัวเขบ็ตสองชั้น]] * {{swe}}: [[sextondelsnot]] * {{kor}}: [[십육분음표]] * {{cym}}: [[hannercwafer]] * {{ita}}: [[semicroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 27izf3crqboty5ucfxtr23xoa964q9u móc ba 0 245226 2350737 1496351 2026-05-07T07:58:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350737 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique triple croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅯|móc ba]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc ba''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc tư]] hoặc nửa [[móc đôi]], tức ⅛ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và ba [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[demisemiquaver]] {{term|Anh, Úc}}, [[thirty-second note]] {{term|Mỹ, Canada}} * {{pol}}: [[trzydziestodwójka]] {{f}} * {{eus}}: [[fusa]] * {{por}}: [[fusa]] {{f}} * {{cat-2}}: [[fusa]] {{f}} * {{deu}}: [[Zweiunddreißigstelnote]] {{f}} * {{est}}: [[kolmekümnekahendiknoot]] * {{gla}}: [[leathach-lethchaman]] {{m}} * {{glg}}: [[fusa]] * {{nld}}: [[tweeëndertigste noot]] * {{haw}}: [[hua mele hapa kanakolukūmālua]] * {{rus}}: [[тридцатьвторая]] * {{jpn}}: [[三十二分音符]] (''sanjūnibun onpu'', tam thập nhị phân âm phù) * {{fra}}: [[triple croche]] {{f}} * {{cmn}}: [[三十二分音符]] (''sānshíèrfēn yīnfú'', tam thập nhị phân âm phù) * {{yue}}: [[卅二分音符]] (tạp nhị phân âm phù) * {{srp}}: ** {{Cyrl}}: [[тридесетдвојина ноте]] ** {{Latn}}: [[tridesetdvojina note]] * {{hbs}}: [[tridesetdvojina note]] * {{spa}}: [[fusa]] {{f}} * {{swe}}: [[trettiotvåondelsnot]] * {{ita}}: [[biscroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 0kg83j9bn7z30jk2oknh8sx7xmw15ld 2351000 2350737 2026-05-07T10:44:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351000 wikitext text/x-wiki {{-vie-}} [[Tập tin:Figure rythmique triple croche hampe haut.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅯|móc ba]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc ba''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc tư]] hoặc nửa [[móc đôi]], tức ⅛ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và ba [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[demisemiquaver]] {{term|Anh, Úc}}, [[thirty-second note]] {{term|Mỹ, Canada}} * {{pol}}: [[trzydziestodwójka]] {{f}} * {{eus}}: [[fusa]] * {{por}}: [[fusa]] {{f}} * {{cat-old}}: [[fusa]] {{f}} * {{deu}}: [[Zweiunddreißigstelnote]] {{f}} * {{est}}: [[kolmekümnekahendiknoot]] * {{gla}}: [[leathach-lethchaman]] {{m}} * {{glg}}: [[fusa]] * {{nld}}: [[tweeëndertigste noot]] * {{haw}}: [[hua mele hapa kanakolukūmālua]] * {{rus}}: [[тридцатьвторая]] * {{jpn}}: [[三十二分音符]] (''sanjūnibun onpu'', tam thập nhị phân âm phù) * {{fra}}: [[triple croche]] {{f}} * {{cmn}}: [[三十二分音符]] (''sānshíèrfēn yīnfú'', tam thập nhị phân âm phù) * {{yue}}: [[卅二分音符]] (tạp nhị phân âm phù) * {{srp}}: ** {{Cyrl}}: [[тридесетдвојина ноте]] ** {{Latn}}: [[tridesetdvojina note]] * {{hbs}}: [[tridesetdvojina note]] * {{spa}}: [[fusa]] {{f}} * {{swe}}: [[trettiotvåondelsnot]] * {{ita}}: [[biscroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] acz4fwlpbl9ek2xmfisqqteguamu6x8 móc tư 0 245227 2350738 1496350 2026-05-07T07:58:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350738 wikitext text/x-wiki {{-vie-}} [[Tập tin:64th note.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅱|móc tư]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc tư''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc năm]] hoặc nửa [[móc ba]], tức ¹⁄₁₆ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và bốn [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[hemidemisemiquaver]] {{term|Anh, Úc}}, [[sixty-fourth note]] {{term|Mỹ, Canada}} * {{pol}}: [[sześćdziesięcioczwórka]] * {{eus}}: [[erdifusa]] * {{por}}: [[semifusa]] {{f}} * {{cat-2}}: [[semifusa]] {{f}} * {{deu}}: [[Vierundsechzigstelnote]] * {{est}}: [[kuuekümneneljandiknoot]] * {{glg}}: [[semifusa]] {{f}} * {{nld}}: [[vierenzestigste noot]] * {{haw}}: [[hua mele hapa kanaonokūmāhā]] * {{rus}}: [[шестьдесятчетвёртая]] * {{jpn}}: [[六十四分音符]] (''rokujūshibun onpu'', lục thập tứ phân âm phù) * {{fra}}: [[quadruple croche]] {{f}} * {{cmn}}: [[六十四分音符]] (''liùshísìfēn yīnfú'', lục thập tứ phân âm phù) * {{yue}}: [[六十四分音符]] (lục thập tứ phân âm phù) * {{spa}}: [[semifusa]] {{f}} * {{ita}}: [[semibiscroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 6vjzded1mxyhwmhudapjhl4qvoanycs 2351001 2350738 2026-05-07T10:44:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351001 wikitext text/x-wiki {{-vie-}} [[Tập tin:64th note.svg|nhỏ|phải|x100px|alt=𝅘𝅥𝅱|móc tư]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc tư''' # {{@|nhạc}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc năm]] hoặc nửa [[móc ba]], tức ¹⁄₁₆ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và bốn [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[hemidemisemiquaver]] {{term|Anh, Úc}}, [[sixty-fourth note]] {{term|Mỹ, Canada}} * {{pol}}: [[sześćdziesięcioczwórka]] * {{eus}}: [[erdifusa]] * {{por}}: [[semifusa]] {{f}} * {{cat-old}}: [[semifusa]] {{f}} * {{deu}}: [[Vierundsechzigstelnote]] * {{est}}: [[kuuekümneneljandiknoot]] * {{glg}}: [[semifusa]] {{f}} * {{nld}}: [[vierenzestigste noot]] * {{haw}}: [[hua mele hapa kanaonokūmāhā]] * {{rus}}: [[шестьдесятчетвёртая]] * {{jpn}}: [[六十四分音符]] (''rokujūshibun onpu'', lục thập tứ phân âm phù) * {{fra}}: [[quadruple croche]] {{f}} * {{cmn}}: [[六十四分音符]] (''liùshísìfēn yīnfú'', lục thập tứ phân âm phù) * {{yue}}: [[六十四分音符]] (lục thập tứ phân âm phù) * {{spa}}: [[semifusa]] {{f}} * {{ita}}: [[semibiscroma]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 7wt1zqj7euxu9xfkxeavpsncptyiii4 móc năm 0 245228 2350739 1496348 2026-05-07T07:58:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350739 wikitext text/x-wiki {{-vie-}} [[Tập tin:Music-hundredtwentyeighthnote.svg|nhỏ|phải|alt=𝅘𝅥𝅲|móc năm]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc năm''' # {{@|nhạc|ít dùng}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc sáu]] hoặc nửa [[móc tư]], tức ¹⁄₃₂ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và năm [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[quasihemidemisemiquaver]] {{term|Anh, Úc}}, [[semihemidemisemiquaver]] {{term|Anh, Úc}}, [[hundred twenty-eighth note]] {{term|Mỹ, Canada}} * {{pol}}: [[stodwudziestoósemka]] * {{eus}}: [[garrapatea]] * {{por}}: [[quartifusa]] {{f}}, [[tremifusa]] {{f}} * {{cat-2}}: [[garrapatea]] {{f}} * {{haw}}: [[hua mele hapa hanelekūmāiwakāluakūmāwalu]] * {{fra}}: [[quintuple croche]] {{f}} * {{cmn}}: [[一百二十八分音符]] (''yībǎièrshíbāfēn yīnfú'', nhất bách nhị thập bát phân âm phù) * {{yue}}: [[一百二十八分音符]] (nhất bách nhị thập bát phân âm phù) * {{spa}}: [[garrapatea]] {{f}}, [[cuartifusa]] {{f}} * {{ita}}: [[fusa]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] b3elfbcbkpgvflqmplnhtsiw1a50z54 2351002 2350739 2026-05-07T10:44:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351002 wikitext text/x-wiki {{-vie-}} [[Tập tin:Music-hundredtwentyeighthnote.svg|nhỏ|phải|alt=𝅘𝅥𝅲|móc năm]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc năm''' # {{@|nhạc|ít dùng}} [[nốt|Nốt]] có [[trường độ]] bằng hai nốt [[móc sáu]] hoặc nửa [[móc tư]], tức ¹⁄₃₂ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và năm [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[quasihemidemisemiquaver]] {{term|Anh, Úc}}, [[semihemidemisemiquaver]] {{term|Anh, Úc}}, [[hundred twenty-eighth note]] {{term|Mỹ, Canada}} * {{pol}}: [[stodwudziestoósemka]] * {{eus}}: [[garrapatea]] * {{por}}: [[quartifusa]] {{f}}, [[tremifusa]] {{f}} * {{cat-old}}: [[garrapatea]] {{f}} * {{haw}}: [[hua mele hapa hanelekūmāiwakāluakūmāwalu]] * {{fra}}: [[quintuple croche]] {{f}} * {{cmn}}: [[一百二十八分音符]] (''yībǎièrshíbāfēn yīnfú'', nhất bách nhị thập bát phân âm phù) * {{yue}}: [[一百二十八分音符]] (nhất bách nhị thập bát phân âm phù) * {{spa}}: [[garrapatea]] {{f}}, [[cuartifusa]] {{f}} * {{ita}}: [[fusa]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] nj6epawg6ce3y6amx6x9haiinukp856 móc sáu 0 245229 2350740 1521318 2026-05-07T07:59:00Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350740 wikitext text/x-wiki {{-vie-}} [[Tập tin:Semigarrapatea.svg|nhỏ|phải|móc sáu]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc sáu''' # {{@|nhạc|ít dùng}} [[nốt|Nốt]] ngắn nhất, [[trường độ]] bằng nửa [[móc năm]], tức ¹⁄₆₄ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và sáu [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[demisemihemidemisemiquaver]] {{term|Anh, Úc}}, [[two hundred fifty-sixth note]] {{term|Mỹ, Canada}} * {{eus}}: [[erdigarrapatea]] * {{cat-2}}: [[semigarrapatea]] {{f}} * {{fra}}: [[sextuple croche]] {{f}} * {{spa}}: [[semigarrapatea]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ggm79tljx1ro6q1gj923kevjgi68lke 2351003 2350740 2026-05-07T10:44:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351003 wikitext text/x-wiki {{-vie-}} [[Tập tin:Semigarrapatea.svg|nhỏ|phải|móc sáu]] {{-pron-}} {{vie-pron}} {{-noun-}} '''móc sáu''' # {{@|nhạc|ít dùng}} [[nốt|Nốt]] ngắn nhất, [[trường độ]] bằng nửa [[móc năm]], tức ¹⁄₆₄ [[phách]] trong [[nhịp]] <math>_4^4</math>; [[dấu hiệu]] gồm một [[nốt đen]] và sáu [[móc]]. {{-trans-}} {{đầu}} * {{eng}}: [[demisemihemidemisemiquaver]] {{term|Anh, Úc}}, [[two hundred fifty-sixth note]] {{term|Mỹ, Canada}} * {{eus}}: [[erdigarrapatea]] * {{cat-old}}: [[semigarrapatea]] {{f}} * {{fra}}: [[sextuple croche]] {{f}} * {{spa}}: [[semigarrapatea]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] qebm10eepd4rlv7mur1u10pqybrsqfs bơ thực vật 0 245447 2350741 1806740 2026-05-07T07:59:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350741 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Margarine BMK.jpg|nhỏ|phải|bơ thực vật]] {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | term = bơ | 2 term = thực vật }} {{-noun-}} '''bơ thực vật''' # [[loại|Loại]] [[bơ]] có [[nguồn gốc]] từ [[thực vật]]; loại bơ được [[chế biến]] từ [[dầu]] thực vật qua [[quá trình]] [[hydro hóa]] để làm thành [[dạng]] [[cứng]] hoặc [[dẻo]] và có thể [[đóng]] thành [[bánh]]. {{-syn-}} * [[ma-ga-rin]] * [[mác-ga-rin]] {{-trans-}} {{đầu}} * {{ara}}: [[سمن نباتي]] (''samn banātiyy'') {{m}} * {{eng}}: [[margarine]], [[marge]], [[oleo]] {{term|thông tục}}, [[oleomargarine]] * {{hye}}: [[մարգարին]] (''margarin'') * {{pol}}: [[margaryna]] {{f}} * {{fas}}: [[مارگارین]] (''mârgârin'') * {{isl}}: [[smjörlíki]] {{n}} * {{bel}}: [[маргарын]] (''marharýn'') {{m}} * {{por}}: [[margarina]] {{f}} * {{bul}}: [[маргарин]] (''margarín'') {{m}} * {{cat-2}}: [[margarina]] {{f}} * {{hrv}}: [[margarin]] * {{heb}}: [[מרגרינה]] * {{deu}}: [[Margarine]] {{f}} * {{est}}: [[margariin]] * {{fry}}: [[margarine]] * {{kat}}: [[მარგარინი]] (''margarini'') * {{guj}}: [[માર્જરિન]] * {{nld}}: [[margarine]] {{m}} * {{hin}}: [[मार्जरीन]] (''mārjarīn'') * {{hun}}: [[margarin]] * {{ell}}: [[μαργαρίνη]] (''margaríni'') {{f}} * {{ido}}: [[margarino]] * {{ind}}: [[margarin]] * {{gle}}: [[buíoc]] * {{jav}}: [[margarin]] * {{kan}}: [[ಮಾರ್ಗರೀನ್]] * {{kaz}}: [[маргарин]] * {{lav}}: [[margarīns]] {{m}} * {{lit}}: [[margarinas]] {{m}} * {{msa}}: [[marjerin]] * {{mkd}}: [[маргарин]] (''margarin'') {{m}} * {{nob}}: [[margarin]] {{m}} * {{nno}}: [[margarin]] {{m}} * {{rus}}: [[маргарин]] (''margarín'') {{m}} * {{jpn}}: [[マーガリン]] (''māgarin'') * {{fin}}: [[margariini]] * {{fra}}: [[margarine]] {{f}} * {{cmn}}: ** {{Hans}}: [[植物黄油]] (''zhíwù huángyóu'', thực vật hoàng du), [[人造奶油]] (''rénzào nǎiyóu'', nhân tạo nãi du), [[麦淇淋]] (''màiqílín'', mạch kỳ lâm), [[玛琪琳]] (''mǎqílín'', mã kỳ lâm), [[马芝莲]] (''mǎzhīlián'', mã chi liên), [[植物牛油]] (''zhíwù niúyóu'', thực vật ngưu du) ** {{Hant}}: [[植物黃油]] (''zhíwù huángyóu'', thực vật hoàng du), [[人造奶油]] (''rénzào nǎiyóu'', nhân tạo nãi du), [[麥淇淋]] (''màiqílín'', mạch kỳ lâm), [[瑪琪琳]] (''mǎqílín'', mã kỳ lâm), [[馬芝蓮]] (''mǎzhīlián'', mã chi liên), [[植物牛油]] (''zhíwù niúyóu'', thực vật ngưu du) * {{yue}}: [[人造牛油]] (''rénzào niúyóu'', nhân tạo ngưu du) * {{epo}}: [[margarino]] * {{ron}}: [[margarină]] {{f}} * {{ces}}: [[margarín]] * {{hbs}}: ** {{Latn}}: [[margarin]] {{m}} ** {{Cyrl}}: [[маргарин]] {{m}} * {{slk}}: [[margarín]] {{m}} * {{slv}}: [[margarina]] {{f}} * {{spa}}: [[margarina]] {{f}} * {{tha}}: [[เนยเทียม]] (''noie tiam'') * {{tur}}: [[margarin]] * {{swe}}: [[margarin]] {{n}} * {{kor}}: [[마가린]] (''magarin'') * {{ukr}}: [[маргарин]] (''marharýn'') {{m}} * {{ita}}: [[margarina]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] nhda7xaeqqq0mnlwqe0z8gwk0kd0zaq 2351004 2350741 2026-05-07T10:44:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351004 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Margarine BMK.jpg|nhỏ|phải|bơ thực vật]] {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | term = bơ | 2 term = thực vật }} {{-noun-}} '''bơ thực vật''' # [[loại|Loại]] [[bơ]] có [[nguồn gốc]] từ [[thực vật]]; loại bơ được [[chế biến]] từ [[dầu]] thực vật qua [[quá trình]] [[hydro hóa]] để làm thành [[dạng]] [[cứng]] hoặc [[dẻo]] và có thể [[đóng]] thành [[bánh]]. {{-syn-}} * [[ma-ga-rin]] * [[mác-ga-rin]] {{-trans-}} {{đầu}} * {{ara}}: [[سمن نباتي]] (''samn banātiyy'') {{m}} * {{eng}}: [[margarine]], [[marge]], [[oleo]] {{term|thông tục}}, [[oleomargarine]] * {{hye}}: [[մարգարին]] (''margarin'') * {{pol}}: [[margaryna]] {{f}} * {{fas}}: [[مارگارین]] (''mârgârin'') * {{isl}}: [[smjörlíki]] {{n}} * {{bel}}: [[маргарын]] (''marharýn'') {{m}} * {{por}}: [[margarina]] {{f}} * {{bul}}: [[маргарин]] (''margarín'') {{m}} * {{cat-old}}: [[margarina]] {{f}} * {{hrv}}: [[margarin]] * {{heb}}: [[מרגרינה]] * {{deu}}: [[Margarine]] {{f}} * {{est}}: [[margariin]] * {{fry}}: [[margarine]] * {{kat}}: [[მარგარინი]] (''margarini'') * {{guj}}: [[માર્જરિન]] * {{nld}}: [[margarine]] {{m}} * {{hin}}: [[मार्जरीन]] (''mārjarīn'') * {{hun}}: [[margarin]] * {{ell}}: [[μαργαρίνη]] (''margaríni'') {{f}} * {{ido}}: [[margarino]] * {{ind}}: [[margarin]] * {{gle}}: [[buíoc]] * {{jav}}: [[margarin]] * {{kan}}: [[ಮಾರ್ಗರೀನ್]] * {{kaz}}: [[маргарин]] * {{lav}}: [[margarīns]] {{m}} * {{lit}}: [[margarinas]] {{m}} * {{msa}}: [[marjerin]] * {{mkd}}: [[маргарин]] (''margarin'') {{m}} * {{nob}}: [[margarin]] {{m}} * {{nno}}: [[margarin]] {{m}} * {{rus}}: [[маргарин]] (''margarín'') {{m}} * {{jpn}}: [[マーガリン]] (''māgarin'') * {{fin}}: [[margariini]] * {{fra}}: [[margarine]] {{f}} * {{cmn}}: ** {{Hans}}: [[植物黄油]] (''zhíwù huángyóu'', thực vật hoàng du), [[人造奶油]] (''rénzào nǎiyóu'', nhân tạo nãi du), [[麦淇淋]] (''màiqílín'', mạch kỳ lâm), [[玛琪琳]] (''mǎqílín'', mã kỳ lâm), [[马芝莲]] (''mǎzhīlián'', mã chi liên), [[植物牛油]] (''zhíwù niúyóu'', thực vật ngưu du) ** {{Hant}}: [[植物黃油]] (''zhíwù huángyóu'', thực vật hoàng du), [[人造奶油]] (''rénzào nǎiyóu'', nhân tạo nãi du), [[麥淇淋]] (''màiqílín'', mạch kỳ lâm), [[瑪琪琳]] (''mǎqílín'', mã kỳ lâm), [[馬芝蓮]] (''mǎzhīlián'', mã chi liên), [[植物牛油]] (''zhíwù niúyóu'', thực vật ngưu du) * {{yue}}: [[人造牛油]] (''rénzào niúyóu'', nhân tạo ngưu du) * {{epo}}: [[margarino]] * {{ron}}: [[margarină]] {{f}} * {{ces}}: [[margarín]] * {{hbs}}: ** {{Latn}}: [[margarin]] {{m}} ** {{Cyrl}}: [[маргарин]] {{m}} * {{slk}}: [[margarín]] {{m}} * {{slv}}: [[margarina]] {{f}} * {{spa}}: [[margarina]] {{f}} * {{tha}}: [[เนยเทียม]] (''noie tiam'') * {{tur}}: [[margarin]] * {{swe}}: [[margarin]] {{n}} * {{kor}}: [[마가린]] (''magarin'') * {{ukr}}: [[маргарин]] (''marharýn'') {{m}} * {{ita}}: [[margarina]] {{f}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 4tltqqm4tn5xoagp6igrbonv5xg1p5z Tylosaurus 0 245450 2350742 1788569 2026-05-07T07:59:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350742 wikitext text/x-wiki {{-mul-}} [[Tập tin:TylosaurusDB2.jpg|nhỏ|phải|Tylosaurus]] {{-etymology-}} {{etym-from | lang = ell | term = τυλος | rom = tylos | meaning = chỗ nhô lên | 2 term = σαυρος | 2 rom = sauros | 2 meaning = thằn lằn }} {{-pr-noun-}} '''Tylosaurus''' # Một [[loài]] [[thương long]] có [[mảnh trước hàm]] dài [[hình trụ]]. {{-trans-}} {{đầu}} * {{pol}}: [[Tylozaur]] * {{por}}: [[Tilossauro]] * {{bul}}: [[Тилозаври]] * {{cat-2}}: [[Tilosaure]] * {{heb}}: [[טילוזאור]] * {{rus}}: [[Тилозавры]] * {{jpn}}: [[ティロサウルス]] * {{kor}}: [[틸로사우루스]] * {{zho}}: ** {{Hans}}: [[海王龙属]] (''hǎiwáng lóngshǔ'', hải vương long thuộc) ** {{Hant}}: [[海王龍屬]] (''hǎiwáng lóngshǔ'', hải vương long thuộc) {{cuối}} [[Thể loại:Danh từ riêng đa ngữ]] kxwq1k0zj1psqf3linu7fxwzllx81p9 2351005 2350742 2026-05-07T10:44:48Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351005 wikitext text/x-wiki {{-mul-}} [[Tập tin:TylosaurusDB2.jpg|nhỏ|phải|Tylosaurus]] {{-etymology-}} {{etym-from | lang = ell | term = τυλος | rom = tylos | meaning = chỗ nhô lên | 2 term = σαυρος | 2 rom = sauros | 2 meaning = thằn lằn }} {{-pr-noun-}} '''Tylosaurus''' # Một [[loài]] [[thương long]] có [[mảnh trước hàm]] dài [[hình trụ]]. {{-trans-}} {{đầu}} * {{pol}}: [[Tylozaur]] * {{por}}: [[Tilossauro]] * {{bul}}: [[Тилозаври]] * {{cat-old}}: [[Tilosaure]] * {{heb}}: [[טילוזאור]] * {{rus}}: [[Тилозавры]] * {{jpn}}: [[ティロサウルス]] * {{kor}}: [[틸로사우루스]] * {{zho}}: ** {{Hans}}: [[海王龙属]] (''hǎiwáng lóngshǔ'', hải vương long thuộc) ** {{Hant}}: [[海王龍屬]] (''hǎiwáng lóngshǔ'', hải vương long thuộc) {{cuối}} [[Thể loại:Danh từ riêng đa ngữ]] aswyyohm39xs74ocbatsp89zuunglqe ngôn ngữ ký hiệu 0 245891 2350743 1880156 2026-05-07T07:59:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350743 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''ngôn ngữ ký hiệu''', '''ngôn ngữ kí hiệu''' # [[Ngôn ngữ]] [[chủ yếu]] được [[cộng đồng]] [[người]] [[câm]] [[điếc]] [[sử dụng]] [[nhằm]] [[chuyển tải]] [[thông tin]] qua [[cử chỉ]], [[điệu]] bộ của [[cơ thể]] và [[nét mặt]] [[thay]] cho [[lời nói]]. {{-syn-}} * [[ngôn ngữ dấu hiệu]] * [[ngôn ngữ cử chỉ]] * [[thủ ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[لغة إشارة]] * {{afr}}: [[gebaretaal]] * {{eng}}: [[sign language]] * {{pol}}: [[język migowy]] {{m}} * {{fas}}: [[زبان اشاره]] * {{isl}}: [[táknmál]] {{n}} * {{bjn}}: [[utau]] * {{eus}}: [[keinu hizkuntza]] * {{ben}}: [[প্রতীকী ভাষা]] (''protiki bhasha'') * {{por}}: [[linguagem de sinais]] {{f}} * {{ina}}: [[lingua de signo]] * {{bul}}: [[жестомимичен език]] * {{cat-2}}: [[llengua de signes]] {{f}} * {{hrv}}: [[znakovni jezici]] * {{dan}}: [[tegnsprog]] {{n}} * {{heb}}: [[שפת סימנים]] * {{deu}}: [[Gebärdensprache]] {{f}} * {{est}}: [[viipekeel]] * {{fao}}: [[teknmál]] * {{glg}}: [[lingua de signos]] {{f}} * {{kal}}: ''ussersuutit'' * {{nld}}: [[gebarentaal]] * {{hin}}: [[सांकेतिक भाषा]] * {{hun}}: [[jelnyelv]] * {{ind}}: [[bahasa isyarat]] * {{ike}}: [[ᐆᒃᑐᐊᕋᐅᓯᕋᖅ]] (''uuktuarausiraq'') * {{ikt}}: [[ujjiqsuuraq]], [[tikuraq]] * {{gle}}: [[teanga chomharthaíochta]] {{f}} * {{lkt}}: [[wíyutȟapi]] * {{lat}}: [[linguae gesticulatoriae]] * {{lav}}: [[žestu valoda]] * {{lit}}: [[gestų kalba]] * {{msa}}: [[bahasa isyarat]] * {{nor}}: ** {{nob}}: [[tegnspråk]] {{n}} ** {{nno}}: [[teiknspråk]] {{n}} * {{nep}}: [[सांकेतिक भाषा]] * {{rus}}: [[язык жестов]] {{m}} (''jazýk žéstov''), [[жестовый язык]] {{m}} (''žéstovyj jazýk'') * {{jpn}}: [[手話]] (しゅわ, ''shuwa'', thủ ngữ) * {{oss}}: [[къухамындтыты æвзаг]] * {{fin}}: [[viittomakieli]] * {{fra}}: [[langue des signes]] {{f}} * {{cmn}}: ** {{Hant}}: [[手語]] (''shǒuyǔ'', thủ ngữ) ** {{Hans}}: [[手语]] (''shǒuyǔ'', thủ ngữ) * {{epo}}: [[gestolingvo]] * {{ron}}: [[limbajul semnelor]] * {{sme}}: [[giehtagiella]] * {{smj}}: [[siejvvemgiella]] * {{ces}}: [[znakový jazyk]] {{m}} * {{scn}}: [[lingua dî signa]] * {{sin}}: [[සංඥා භාෂාව]] * {{slk}}: [[posunková reč]] * {{som}}: [[fara-ka hadal]] * {{tgl}}: [[wikang pakumpas]] * {{tgk}}: [[забони ишоратӣ]] * {{bod}}: [[བརྡ་སྐད​]] (''brda skad'') * {{spa}}: [[lenguaje por señas]] {{m}}, [[lengua de signos]] {{f}} * {{tel}}: [[సంకేత భాష]] * {{tha}}: [[ภาษามือ]] * {{tur}}: [[işaret dili]] * {{swe}}: [[teckenspråk]] {{n}} * {{kor}}: [[수화]] (''suhwa'', 手話, thủ ngữ) * {{ukr}}: [[мова жестів]] * {{urd}}: [[اشاراتی زبانیں]] * {{cym}}: [[iaith arwyddo]] * {{ita}}: [[lingua dei segni]] * {{yid}}: [[שטום לשון]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] a1spbghpy7alnzfgd6gnqrv29mm6513 2351006 2350743 2026-05-07T10:44:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351006 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''ngôn ngữ ký hiệu''', '''ngôn ngữ kí hiệu''' # [[Ngôn ngữ]] [[chủ yếu]] được [[cộng đồng]] [[người]] [[câm]] [[điếc]] [[sử dụng]] [[nhằm]] [[chuyển tải]] [[thông tin]] qua [[cử chỉ]], [[điệu]] bộ của [[cơ thể]] và [[nét mặt]] [[thay]] cho [[lời nói]]. {{-syn-}} * [[ngôn ngữ dấu hiệu]] * [[ngôn ngữ cử chỉ]] * [[thủ ngữ]] {{-trans-}} {{đầu}} * {{ara}}: [[لغة إشارة]] * {{afr}}: [[gebaretaal]] * {{eng}}: [[sign language]] * {{pol}}: [[język migowy]] {{m}} * {{fas}}: [[زبان اشاره]] * {{isl}}: [[táknmál]] {{n}} * {{bjn}}: [[utau]] * {{eus}}: [[keinu hizkuntza]] * {{ben}}: [[প্রতীকী ভাষা]] (''protiki bhasha'') * {{por}}: [[linguagem de sinais]] {{f}} * {{ina}}: [[lingua de signo]] * {{bul}}: [[жестомимичен език]] * {{cat-old}}: [[llengua de signes]] {{f}} * {{hrv}}: [[znakovni jezici]] * {{dan}}: [[tegnsprog]] {{n}} * {{heb}}: [[שפת סימנים]] * {{deu}}: [[Gebärdensprache]] {{f}} * {{est}}: [[viipekeel]] * {{fao}}: [[teknmál]] * {{glg}}: [[lingua de signos]] {{f}} * {{kal}}: ''ussersuutit'' * {{nld}}: [[gebarentaal]] * {{hin}}: [[सांकेतिक भाषा]] * {{hun}}: [[jelnyelv]] * {{ind}}: [[bahasa isyarat]] * {{ike}}: [[ᐆᒃᑐᐊᕋᐅᓯᕋᖅ]] (''uuktuarausiraq'') * {{ikt}}: [[ujjiqsuuraq]], [[tikuraq]] * {{gle}}: [[teanga chomharthaíochta]] {{f}} * {{lkt}}: [[wíyutȟapi]] * {{lat}}: [[linguae gesticulatoriae]] * {{lav}}: [[žestu valoda]] * {{lit}}: [[gestų kalba]] * {{msa}}: [[bahasa isyarat]] * {{nor}}: ** {{nob}}: [[tegnspråk]] {{n}} ** {{nno}}: [[teiknspråk]] {{n}} * {{nep}}: [[सांकेतिक भाषा]] * {{rus}}: [[язык жестов]] {{m}} (''jazýk žéstov''), [[жестовый язык]] {{m}} (''žéstovyj jazýk'') * {{jpn}}: [[手話]] (しゅわ, ''shuwa'', thủ ngữ) * {{oss}}: [[къухамындтыты æвзаг]] * {{fin}}: [[viittomakieli]] * {{fra}}: [[langue des signes]] {{f}} * {{cmn}}: ** {{Hant}}: [[手語]] (''shǒuyǔ'', thủ ngữ) ** {{Hans}}: [[手语]] (''shǒuyǔ'', thủ ngữ) * {{epo}}: [[gestolingvo]] * {{ron}}: [[limbajul semnelor]] * {{sme}}: [[giehtagiella]] * {{smj}}: [[siejvvemgiella]] * {{ces}}: [[znakový jazyk]] {{m}} * {{scn}}: [[lingua dî signa]] * {{sin}}: [[සංඥා භාෂාව]] * {{slk}}: [[posunková reč]] * {{som}}: [[fara-ka hadal]] * {{tgl}}: [[wikang pakumpas]] * {{tgk}}: [[забони ишоратӣ]] * {{bod}}: [[བརྡ་སྐད​]] (''brda skad'') * {{spa}}: [[lenguaje por señas]] {{m}}, [[lengua de signos]] {{f}} * {{tel}}: [[సంకేత భాష]] * {{tha}}: [[ภาษามือ]] * {{tur}}: [[işaret dili]] * {{swe}}: [[teckenspråk]] {{n}} * {{kor}}: [[수화]] (''suhwa'', 手話, thủ ngữ) * {{ukr}}: [[мова жестів]] * {{urd}}: [[اشاراتی زبانیں]] * {{cym}}: [[iaith arwyddo]] * {{ita}}: [[lingua dei segni]] * {{yid}}: [[שטום לשון]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] j6qwl42aoihn5hnc5obvona71a9aojp tên miền 0 245921 2350744 2281378 2026-05-07T07:59:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350744 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tên miền''' # {{@|máy tính}} Một [[định danh]] [[đơn nhất]], không [[phân biệt]] [[chữ hoa]] và [[chữ thường]], gồm các [[chuỗi]] [[chữ cái]] và [[con số]] được [[phân tách]] bằng [[dấu chấm]], được [[hệ thống|Hệ thống]] Tên miền [[tương quan]] với [[địa chỉ]] [[IP]] và các [[thông tin]] khác; [[phần]] [[chính]] của [[địa chỉ]] [[máy chủ]] hoặc [[website]] trên [[Internet]]. {{-trans-}} {{đầu}} * {{ara}}: [[مجال]] {{g|m}} (''majaal'') * {{eng}}: [[domain name]], [[domain]] * {{pol}}: [[domena]] {{f}} * {{isl}}: [[lén]] * {{por}}: [[domínio]] {{g|m}} * {{cat-2}}: [[domini]] * {{dan}}: [[domænenavn]] * {{deu}}: [[Domain]] {{f}}, [[Domäne]] {{f}} * {{est}}: [[domeeninimi]] * {{fry}}: [[domeinnamme]] * {{gla}}: [[àrainn-lìn]] {{f}} * {{glg}}: [[dominio]] {{g|m}} * {{nld}}: [[domeinnaam]] * {{ind}}: [[nama domain]] * {{lim}}: [[domeinname]] * {{msa}}: [[nama domain]] * {{rus}}: [[домен]] {{g|m}} (''domén'') * {{jpn}}: [[ドメイン]] (''domein'') * {{oci}}: [[nom de domeni]] * {{fin}}: [[verkkotunnus]] * {{fra}}: [[nom de domaine]] {{g|m}}, [[domaine]] {{g|m}} * {{cmn}}: [[域名]] (''yùmíng'', vực danh) * {{epo}}: [[domajno]] * {{ron}}: [[domeniu]] * {{slk}}: [[doména]] * {{spa}}: [[dominio]] {{g|m}} * {{swe}}: [[domännamn]], [[domän]] {{g|c}} * {{kor}}: [[도메인]] (''domein'') * {{ita}}: [[dominio]] {{g|m}} {{cuối}} {{-related-}} * [[máy chủ]] * [[không gian tên]] * [[vùng]] [[Thể loại:Danh từ tiếng Việt]] t8aua5hibjnuw31b2pngghk5mhog7r0 2351007 2350744 2026-05-07T10:44:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351007 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tên miền''' # {{@|máy tính}} Một [[định danh]] [[đơn nhất]], không [[phân biệt]] [[chữ hoa]] và [[chữ thường]], gồm các [[chuỗi]] [[chữ cái]] và [[con số]] được [[phân tách]] bằng [[dấu chấm]], được [[hệ thống|Hệ thống]] Tên miền [[tương quan]] với [[địa chỉ]] [[IP]] và các [[thông tin]] khác; [[phần]] [[chính]] của [[địa chỉ]] [[máy chủ]] hoặc [[website]] trên [[Internet]]. {{-trans-}} {{đầu}} * {{ara}}: [[مجال]] {{g|m}} (''majaal'') * {{eng}}: [[domain name]], [[domain]] * {{pol}}: [[domena]] {{f}} * {{isl}}: [[lén]] * {{por}}: [[domínio]] {{g|m}} * {{cat-old}}: [[domini]] * {{dan}}: [[domænenavn]] * {{deu}}: [[Domain]] {{f}}, [[Domäne]] {{f}} * {{est}}: [[domeeninimi]] * {{fry}}: [[domeinnamme]] * {{gla}}: [[àrainn-lìn]] {{f}} * {{glg}}: [[dominio]] {{g|m}} * {{nld}}: [[domeinnaam]] * {{ind}}: [[nama domain]] * {{lim}}: [[domeinname]] * {{msa}}: [[nama domain]] * {{rus}}: [[домен]] {{g|m}} (''domén'') * {{jpn}}: [[ドメイン]] (''domein'') * {{oci}}: [[nom de domeni]] * {{fin}}: [[verkkotunnus]] * {{fra}}: [[nom de domaine]] {{g|m}}, [[domaine]] {{g|m}} * {{cmn}}: [[域名]] (''yùmíng'', vực danh) * {{epo}}: [[domajno]] * {{ron}}: [[domeniu]] * {{slk}}: [[doména]] * {{spa}}: [[dominio]] {{g|m}} * {{swe}}: [[domännamn]], [[domän]] {{g|c}} * {{kor}}: [[도메인]] (''domein'') * {{ita}}: [[dominio]] {{g|m}} {{cuối}} {{-related-}} * [[máy chủ]] * [[không gian tên]] * [[vùng]] [[Thể loại:Danh từ tiếng Việt]] fuxibbwm8rnhs6y3y5ls9zg4gpbjukp Tàu 0 246309 2350745 1788571 2026-05-07T07:59:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350745 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''Tàu''' # [[chữ viết|Chữ viết]] [[tắt]] cho [[Trung Quốc]]. # [[đất|Đất]] [[quốc gia]] [[người]] [[Trung Quốc]] và người [[Hán]] [[sống]] trên. {{-syn-}} * [[[[Trung Quốc]]]] {{-trans-}} {{đầu}} * {{afr}}: [[Sjina]] * {{eng}}: [[China]] * {{ast}}: [[China]] * {{bos}}: [[Kina]] * {{cat-2}}: [[Xina]] * {{glg}}: [[China]] * {{haw}}: [[Kina]] * {{hin}}: [[चीन]] * {{ido}}: [[Chinia]] * {{ind}}: [[Cina]] * {{gle}}: [[Síne]] * {{kur}}: [[Çîn]] * {{lat}}: [[Sina]] * {{lav}}: [[Ķīna]] * {{jbo}}: [[jugygu'e]] * {{rus}}: [[Кита́й]] * {{jpn}}: [[中国]] * {{fra}}: [[Chine]] * {{ron}}: [[Chineză]] * {{slk}}: [[Čína]] * {{swa}}: [[China]], [[Uchina]], [[Sina]] * {{tgl}}: [[Tsina]] * {{tat}}: [[КХҖ]], [[Кытай]] * {{spa}}: [[China]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] pn1msoqyh79gqnn6rbhmq23l3lrlafo 2351008 2350745 2026-05-07T10:44:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351008 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''Tàu''' # [[chữ viết|Chữ viết]] [[tắt]] cho [[Trung Quốc]]. # [[đất|Đất]] [[quốc gia]] [[người]] [[Trung Quốc]] và người [[Hán]] [[sống]] trên. {{-syn-}} * [[[[Trung Quốc]]]] {{-trans-}} {{đầu}} * {{afr}}: [[Sjina]] * {{eng}}: [[China]] * {{ast}}: [[China]] * {{bos}}: [[Kina]] * {{cat-old}}: [[Xina]] * {{glg}}: [[China]] * {{haw}}: [[Kina]] * {{hin}}: [[चीन]] * {{ido}}: [[Chinia]] * {{ind}}: [[Cina]] * {{gle}}: [[Síne]] * {{kur}}: [[Çîn]] * {{lat}}: [[Sina]] * {{lav}}: [[Ķīna]] * {{jbo}}: [[jugygu'e]] * {{rus}}: [[Кита́й]] * {{jpn}}: [[中国]] * {{fra}}: [[Chine]] * {{ron}}: [[Chineză]] * {{slk}}: [[Čína]] * {{swa}}: [[China]], [[Uchina]], [[Sina]] * {{tgl}}: [[Tsina]] * {{tat}}: [[КХҖ]], [[Кытай]] * {{spa}}: [[China]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] 5oal41skme3vshfwus138rc47gtwqkk phó tế 0 246575 2350746 1892311 2026-05-07T07:59:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350746 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''phó tế''' # {{@|Công giáo}} Một [[chức]] [[thánh]] sau chức [[linh mục]] và [[giám mục]]. #: ''thầy '''phó tế''''' {{-syn-}} * [[chấp sự]] {{term|Tin Lành}} * [[thầy sáu]] {{-trans-}} {{đầu}} * {{eng}}: [[deacon]] * {{por}}: [[diácono]] {{m}} * {{cat-2}}: [[diaca]] {{m}} * {{deu}}: [[Diakon]] {{m}} * {{nld}}: [[diaken]] {{m}} * {{gle}}: [[deagánach]] {{m}} * {{lat}}: [[diaconus]] {{m}} * {{mlt}}: [[djaknu]] * {{nor}}: [[diakon]] {{m}} * {{rus}}: [[дьякон]] (''dʹjakon'') {{m}}, [[диакон]] (''diakon'') {{m}} * {{jpn}}: [[助祭]] (''josai'', [[trợ tế]]) * {{fra}}: [[diacre]] {{m}} * {{spa}}: [[diácono]] {{m}} * {{kor}}: [[부제]] (''buje'') * {{ita}}: [[diacono]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] busmxa9ie9ylt278nq6oxiumt19t3dg 2351009 2350746 2026-05-07T10:45:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351009 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''phó tế''' # {{@|Công giáo}} Một [[chức]] [[thánh]] sau chức [[linh mục]] và [[giám mục]]. #: ''thầy '''phó tế''''' {{-syn-}} * [[chấp sự]] {{term|Tin Lành}} * [[thầy sáu]] {{-trans-}} {{đầu}} * {{eng}}: [[deacon]] * {{por}}: [[diácono]] {{m}} * {{cat-old}}: [[diaca]] {{m}} * {{deu}}: [[Diakon]] {{m}} * {{nld}}: [[diaken]] {{m}} * {{gle}}: [[deagánach]] {{m}} * {{lat}}: [[diaconus]] {{m}} * {{mlt}}: [[djaknu]] * {{nor}}: [[diakon]] {{m}} * {{rus}}: [[дьякон]] (''dʹjakon'') {{m}}, [[диакон]] (''diakon'') {{m}} * {{jpn}}: [[助祭]] (''josai'', [[trợ tế]]) * {{fra}}: [[diacre]] {{m}} * {{spa}}: [[diácono]] {{m}} * {{kor}}: [[부제]] (''buje'') * {{ita}}: [[diacono]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 24na5er54w5qlwl162tx77woajngw98 hiệu ứng nhà kính 0 246597 2350747 2281379 2026-05-07T07:59:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350747 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = fra | term = effet de serre }} {{-noun-}} '''hiệu ứng nhà kính''' # Là hiệu ứng diễn ra khi [[khí quyển]] chứa [[khí]] đã [[hấp thụ]] [[tia]] [[cực quang]] và [[nóng]] lên. #: '''''Hiệu ứng nhà kính''' đang ngày càng gia tăng.'' {{-trans-}} {{đầu}} * {{ara}}: [[الاحتباس الحراري]] (''al-iHtibaas al-Haraariy'') {{g|m}} * {{eng}}: [[greenhouse effect]] * {{pol}}: [[efekt cieplarniany]] {{g|m}} * {{eus}} [[berotegi-efektu]] * {{por}}: [[efeito estufa]] {{g|m}} * {{cat-2}}: [[efecte hivernacle]] {{g|m}} * {{heb}}: [[אפקט החממה]] * {{deu}}: [[Treibhauseffekt]] {{g|m}} * {{gla}}: [[buaidh an taigh-ghlainne]] {{f}} * {{hun}}: [[üvegházhatás]] * {{ell}}: [[φαινόμενο θερμοκηπίου]] (''fenómeno thermokipíou'') {{n}} * {{ind}}: [[efek rumah kaca]] * {{mri}}: [[pānga kati kōtuhi]] * {{rus}}: [[парниковый эффект]] (''parnikóvyj effékt'') {{g|m}} * {{jpn}}: [[温室効果]] (おんしつこうか, ''onshitsu-kōka'', ôn thất hiệu quả) * {{fin}}: [[kasvihuoneilmiö]] * {{fra}}: [[effet de serre]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[溫室效應]] (''wēnshì xiàoyìng'', ôn thất hiệu ứng) ** {{Hans}}: [[温室效应]] (''wēnshì xiàoyìng'', ôn thất hiệu ứng) * {{ron}}: [[efect de seră]] {{n}} * {{ces}}: [[skleníkový efekt]] {{g|m}} * {{spa}}: [[efecto invernadero]] {{g|m}} * {{tur}}: [[sera etkisi]] * {{swe}}: [[växthuseffekt]] {{g|c}} * {{ita}}: [[effetto serra]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] cjdoe8q6sg2dreuglu2yk457y8ymcjp 2351010 2350747 2026-05-07T10:45:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351010 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etymology-}} {{etym-from | lang = fra | term = effet de serre }} {{-noun-}} '''hiệu ứng nhà kính''' # Là hiệu ứng diễn ra khi [[khí quyển]] chứa [[khí]] đã [[hấp thụ]] [[tia]] [[cực quang]] và [[nóng]] lên. #: '''''Hiệu ứng nhà kính''' đang ngày càng gia tăng.'' {{-trans-}} {{đầu}} * {{ara}}: [[الاحتباس الحراري]] (''al-iHtibaas al-Haraariy'') {{g|m}} * {{eng}}: [[greenhouse effect]] * {{pol}}: [[efekt cieplarniany]] {{g|m}} * {{eus}} [[berotegi-efektu]] * {{por}}: [[efeito estufa]] {{g|m}} * {{cat-old}}: [[efecte hivernacle]] {{g|m}} * {{heb}}: [[אפקט החממה]] * {{deu}}: [[Treibhauseffekt]] {{g|m}} * {{gla}}: [[buaidh an taigh-ghlainne]] {{f}} * {{hun}}: [[üvegházhatás]] * {{ell}}: [[φαινόμενο θερμοκηπίου]] (''fenómeno thermokipíou'') {{n}} * {{ind}}: [[efek rumah kaca]] * {{mri}}: [[pānga kati kōtuhi]] * {{rus}}: [[парниковый эффект]] (''parnikóvyj effékt'') {{g|m}} * {{jpn}}: [[温室効果]] (おんしつこうか, ''onshitsu-kōka'', ôn thất hiệu quả) * {{fin}}: [[kasvihuoneilmiö]] * {{fra}}: [[effet de serre]] {{g|m}} * {{cmn}}: ** {{Hant}}: [[溫室效應]] (''wēnshì xiàoyìng'', ôn thất hiệu ứng) ** {{Hans}}: [[温室效应]] (''wēnshì xiàoyìng'', ôn thất hiệu ứng) * {{ron}}: [[efect de seră]] {{n}} * {{ces}}: [[skleníkový efekt]] {{g|m}} * {{spa}}: [[efecto invernadero]] {{g|m}} * {{tur}}: [[sera etkisi]] * {{swe}}: [[växthuseffekt]] {{g|c}} * {{ita}}: [[effetto serra]] {{g|m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] d34q87v12c9fel1y9w0zm10ggaaqpb2 đảo quốc 0 248294 2350748 2114439 2026-05-07T07:59:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350748 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym-from|lang=zh|term=岛国}} {{-pron-}} {{vie-pron}} {{-noun-}} '''đảo quốc''' # [[quốc gia|Quốc gia]] [[nằm]] trên một [[đảo]] hoặc một [[quần đảo]]. #: '''''Đảo quốc''' Nhật Bản.'' {{-trans-}} {{đầu}} * {{sqi}}: [[shtet ishullor]] {{m}} * {{eng}}: [[island country]], [[island nation]], [[island state]] * {{eus}}: [[uharte-estatu]] * {{cat-2}}: [[estat insular]] {{m}} * {{deu}}: [[Inselstaat]] {{m}} * {{nld}}: [[eilandstaat]] {{m}} * {{hun}}: [[szigetország]] * {{fra}}: [[pays insulaire]] {{m}}, [[état insulaire]] {{m}} * {{fin}}: [[saarivaltio]] * {{ces}}: [[ostrovní stát]] {{m}} * {{tur}}: [[ada ülkesi]] * {{zho}}: [[島嶼國家]], [[岛屿国家]], [[島國]], [[岛国]] * {{ita}}: [[stato insulare]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ry0dfdevqdj7exyrygbwc7l31l5o0wo 2351011 2350748 2026-05-07T10:45:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351011 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym-from|lang=zh|term=岛国}} {{-pron-}} {{vie-pron}} {{-noun-}} '''đảo quốc''' # [[quốc gia|Quốc gia]] [[nằm]] trên một [[đảo]] hoặc một [[quần đảo]]. #: '''''Đảo quốc''' Nhật Bản.'' {{-trans-}} {{đầu}} * {{sqi}}: [[shtet ishullor]] {{m}} * {{eng}}: [[island country]], [[island nation]], [[island state]] * {{eus}}: [[uharte-estatu]] * {{cat-old}}: [[estat insular]] {{m}} * {{deu}}: [[Inselstaat]] {{m}} * {{nld}}: [[eilandstaat]] {{m}} * {{hun}}: [[szigetország]] * {{fra}}: [[pays insulaire]] {{m}}, [[état insulaire]] {{m}} * {{fin}}: [[saarivaltio]] * {{ces}}: [[ostrovní stát]] {{m}} * {{tur}}: [[ada ülkesi]] * {{zho}}: [[島嶼國家]], [[岛屿国家]], [[島國]], [[岛国]] * {{ita}}: [[stato insulare]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ck92v27nvfm51wne94v1862bspessdw xăng đá 0 248315 2350749 1615720 2026-05-07T07:59:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350749 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-etym-}} # từ bắt nguồn từ tiếng Pháp là Soldat, French soldier in French Indochina. {{-noun-}} '''xăng đá''' # [[lính|Lính]]. {{-syn-}} * [[săng đá]] * [[sơn đá]] {{-trans-}} {{đầu}} * {{eng}}: [[soldier]] * {{cat-2}}: [[soldat]] * {{fra}}: [[soldat]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] t0ng69171ha4lgasfjqbchv4pvlale6 2351012 2350749 2026-05-07T10:45:10Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351012 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-etym-}} # từ bắt nguồn từ tiếng Pháp là Soldat, French soldier in French Indochina. {{-noun-}} '''xăng đá''' # [[lính|Lính]]. {{-syn-}} * [[săng đá]] * [[sơn đá]] {{-trans-}} {{đầu}} * {{eng}}: [[soldier]] * {{cat-old}}: [[soldat]] * {{fra}}: [[soldat]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] gi9xgoikfz2lbwlb939pcwm1gmskkqg trình đơn 0 248503 2350750 2281381 2026-05-07T07:59:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350750 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''trình đơn''' # {{@|máy tính}} [[danh sách|Danh sách]] các [[thao tác]] mà [[người dùng]] có thể [[thực hiện]], khi ấn [[chuột]] hay các [[phương tiện]] khác trên [[giao diện]] [[đồ họa]] [[máy tính]], hoặc dùng [[bàn phím]]. {{-syn-}} * [[danh mục]] * [[bảng chọn]] {{-trans-}} {{trans-top|danh sách các thao tác mà người dùng có thể thực hiện}} * {{ara}}: [[قَائِمَة]] {{f}} * {{eng}}: {{t+|en|menu}} * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[فهرست]] (''fehrest'') * {{por}}: [[menu]] * {{cat-2}}: [[menú]] {{g|m}} * {{deu}}: [[Menü]] {{n}} * {{gla}}: [[clàr-iùil]] {{g|m}} * {{nld}}: [[menu]] {{n}} * {{hun}}: [[menü]] * {{ell}}: [[μενού]] {{n}}, [[κατάλογος]] {{g|m}} * {{gle}}: [[roghchlár]] {{g|m}} * {{kaz}}: [[мәзір]] * {{lat}}: [[izvēlne]] {{f}} * {{mkd}}: [[мени́]] {{n}} * {{mri}}: [[rārangi tono]] * {{nob}}: [[meny]] {{g|m}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū'') * {{fin}}: [[valikko]] * {{fra}}: [[menu]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[选单]] (''xuăndān'', tuyển đơn), [[菜单]] (''càidān'', thái đơn), [[项目单]] (''xiàngmùdān'', hạng mục đơn), [[项目表]] (''xiàngmùbiǎo'', hạng mục biểu), [[选项单]] (''xuǎnxiàngdān'', tuyển hạng đơn) ** {{Hant}}: [[選單]] (''xuăndān'', tuyển đơn), [[菜單]] (''càidān'', thái đơn), [[項目單]] (''xiàngmùdān'', hạng mục đơn), [[項目表]] (''xiàngmùbiǎo'', hạng mục biểu), [[選項單]] (''xuǎnxiàngdān'', tuyển hạng đơn) * {{ron}}: [[meniu]] {{n}} * {{ces}}: [[nabídka]] {{f}}, [[menu]] {{n}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[изборник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[ìzbōrnīk]] {{g|m}} * {{spa}}: [[menú]] {{g|m}} * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]] * {{cym}}: [[dewislen]] {{f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] gwg6xs63n7q5a2a0i3u2dkylmbn738e 2351013 2350750 2026-05-07T10:45:13Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351013 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''trình đơn''' # {{@|máy tính}} [[danh sách|Danh sách]] các [[thao tác]] mà [[người dùng]] có thể [[thực hiện]], khi ấn [[chuột]] hay các [[phương tiện]] khác trên [[giao diện]] [[đồ họa]] [[máy tính]], hoặc dùng [[bàn phím]]. {{-syn-}} * [[danh mục]] * [[bảng chọn]] {{-trans-}} {{trans-top|danh sách các thao tác mà người dùng có thể thực hiện}} * {{ara}}: [[قَائِمَة]] {{f}} * {{eng}}: {{t+|en|menu}} * {{pol}}: [[menu]] {{n}} * {{fas}}: [[منو]] (''meno''), [[فهرست]] (''fehrest'') * {{por}}: [[menu]] * {{cat-old}}: [[menú]] {{g|m}} * {{deu}}: [[Menü]] {{n}} * {{gla}}: [[clàr-iùil]] {{g|m}} * {{nld}}: [[menu]] {{n}} * {{hun}}: [[menü]] * {{ell}}: [[μενού]] {{n}}, [[κατάλογος]] {{g|m}} * {{gle}}: [[roghchlár]] {{g|m}} * {{kaz}}: [[мәзір]] * {{lat}}: [[izvēlne]] {{f}} * {{mkd}}: [[мени́]] {{n}} * {{mri}}: [[rārangi tono]] * {{nob}}: [[meny]] {{g|m}} * {{rus}}: [[меню́]] {{n}} * {{jpn}}: [[メニュー]] (''menyū'') * {{fin}}: [[valikko]] * {{fra}}: [[menu]] {{g|m}} * {{cmn}}: ** {{Hans}}: [[选单]] (''xuăndān'', tuyển đơn), [[菜单]] (''càidān'', thái đơn), [[项目单]] (''xiàngmùdān'', hạng mục đơn), [[项目表]] (''xiàngmùbiǎo'', hạng mục biểu), [[选项单]] (''xuǎnxiàngdān'', tuyển hạng đơn) ** {{Hant}}: [[選單]] (''xuăndān'', tuyển đơn), [[菜單]] (''càidān'', thái đơn), [[項目單]] (''xiàngmùdān'', hạng mục đơn), [[項目表]] (''xiàngmùbiǎo'', hạng mục biểu), [[選項單]] (''xuǎnxiàngdān'', tuyển hạng đơn) * {{ron}}: [[meniu]] {{n}} * {{ces}}: [[nabídka]] {{f}}, [[menu]] {{n}} * {{hbs}}: ** {{Cyrl}}: [[мени]] {{g|m}}, [[изборник]] {{g|m}} ** {{Latn}}: [[mènī]] {{g|m}}, [[ìzbōrnīk]] {{g|m}} * {{spa}}: [[menú]] {{g|m}} * {{tur}}: [[menü]] * {{swe}}: [[meny]] {{g|c}} * {{kor}}: [[메뉴]] * {{cym}}: [[dewislen]] {{f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] lloppisu5dbgl9n2v8u0r8esuglpu3y Toki Pona 0 249042 2350751 1788519 2026-05-07T07:59:34Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350751 wikitext text/x-wiki ==Toki Pona== {{-info-}} {{-etym-}} Ghép từ [[toki]] (tức [[ngôn ngữ]]...) (có nguồn gốc từ từ [[tok]] trong tiếng [[Tok Pisin]], từ [[talk]] trong [[tiếng Anh]]) + [[pona]] (tức [[tốt]], [[đơn giản]]...) (gốc từ [[bona]] trong [[Quốc tế Ngữ]], từ [[bona]] trong [[tiếng Latin]]), tức "ngôn ngữ-tốt", "ngôn ngữ-đơn giản". {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈtoki'pona/|lang=art-top}} {{-pr-noun-}} # Một [[ngôn ngữ nhân tạo]], tạo ra bởi nhà [[dịch thuật]] và nhà [[ngôn ngữ học]] [[w:Sonja Lang|Sonja Lang]] (hay Sonja Elen Kisa). {{-trans-}} {{đầu}} *{{bel}}: [[Такіпона]] ‎([[Takipona]]) {{giữa}} *{{cat-2}}: [[toki pona]] *{{zho}}: phồn thể: [[道本語]], giản thể: [[道本语]] *{{dut}}: Toki Pona (nl) *{{epo}}: [[Tokipono]] (eo) *{{fin}}: [[tokipona]] *{{heb}}: [[טוקי פונה]] *{{hin}}: [[टोकि पोना]] ‎([[ṭoki ponā]]) *{{jpn}}: [[トキポナ]] (ja) ‎(Toki Pona) *{{kor}}: [[도기 보나]] ‎([[dogi bona]]) *{{lim}}: Toki Pona *{{fas}}: [[توکی پونا]] *{{tha}}: [[ภาษาโทคิโพนา]] {{cuối}} 1wa1uo8xqh9auv0xxtaluj3nf2j5pbi 2351014 2350751 2026-05-07T10:45:16Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351014 wikitext text/x-wiki ==Toki Pona== {{-info-}} {{-etym-}} Ghép từ [[toki]] (tức [[ngôn ngữ]]...) (có nguồn gốc từ từ [[tok]] trong tiếng [[Tok Pisin]], từ [[talk]] trong [[tiếng Anh]]) + [[pona]] (tức [[tốt]], [[đơn giản]]...) (gốc từ [[bona]] trong [[Quốc tế Ngữ]], từ [[bona]] trong [[tiếng Latin]]), tức "ngôn ngữ-tốt", "ngôn ngữ-đơn giản". {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈtoki'pona/|lang=art-top}} {{-pr-noun-}} # Một [[ngôn ngữ nhân tạo]], tạo ra bởi nhà [[dịch thuật]] và nhà [[ngôn ngữ học]] [[w:Sonja Lang|Sonja Lang]] (hay Sonja Elen Kisa). {{-trans-}} {{đầu}} *{{bel}}: [[Такіпона]] ‎([[Takipona]]) {{giữa}} *{{cat-old}}: [[toki pona]] *{{zho}}: phồn thể: [[道本語]], giản thể: [[道本语]] *{{dut}}: Toki Pona (nl) *{{epo}}: [[Tokipono]] (eo) *{{fin}}: [[tokipona]] *{{heb}}: [[טוקי פונה]] *{{hin}}: [[टोकि पोना]] ‎([[ṭoki ponā]]) *{{jpn}}: [[トキポナ]] (ja) ‎(Toki Pona) *{{kor}}: [[도기 보나]] ‎([[dogi bona]]) *{{lim}}: Toki Pona *{{fas}}: [[توکی پونا]] *{{tha}}: [[ภาษาโทคิโพนา]] {{cuối}} 9ah40n4fq3zvwysrxp2604p4h0cnvat ngữ hệ 0 249919 2350752 2299874 2026-05-07T07:59:37Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350752 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''ngữ hệ''' {{-trans-}} {{đầu}} * {{eng}}: [[language family]] * {{deu}}: [[sprachfamilie]] * {{fra}}: [[famille de langues]] * {{cat-2}}: [[família lingüística]] * {{rus}}: [[Генетическая классификация языков]] * {{spa}}: [[familia de lenguas]] * {{tur}}: [[dil aileleri]] * {{zho}}: [[语言系属分类]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] 0t5mi5zj1tteucohwni643rf7bavzcy 2351015 2350752 2026-05-07T10:45:19Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351015 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''ngữ hệ''' {{-trans-}} {{đầu}} * {{eng}}: [[language family]] * {{deu}}: [[sprachfamilie]] * {{fra}}: [[famille de langues]] * {{cat-old}}: [[família lingüística]] * {{rus}}: [[Генетическая классификация языков]] * {{spa}}: [[familia de lenguas]] * {{tur}}: [[dil aileleri]] * {{zho}}: [[语言系属分类]] {{cuối}} {{mẫu}} [[Thể loại:Danh từ tiếng Việt]] 999d3bl7mscu2wqdvutzr5elgyhbriw hóa học hữu cơ 0 249929 2350753 2126611 2026-05-07T07:59:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350753 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''hóa học hữu cơ''' # {{term|Hóa học}} [[ngành|Ngành]] [[khoa học]] [[nghiên cứu]] các [[hợp chất]] có [[chứa]] [[cacbon]], [[đặc biệt]] là những gì [[xảy ra]] [[tự nhiên]] trong các [[thực thể]] [[sống]]. #: ''Nghiên cứu '''hoá học hữu cơ'''.'' {{-trans-}} {{đầu}} * {{eng}}: [[organic chemistry]] * {{pol}}: [[chemia organiczna]] * {{por}}: [[química orgânica]] * {{cat-2}}: [[química orgànica]] * {{dan}}: [[organisk kemi]] * {{deu}}: [[organische Chemie]] * {{glg}}: [[química orgánica]] * {{nld}}: [[organische chemie]] * {{ell}}: [[οργανική χημεία]] ([[organikí chimeía]]) * {{gle}}: [[lífræn efnafræði]] * {{rus}}: [[органическая химия]] ([[organíčeskaja xímija]]) * {{jpn}}: [[有機化学]]) ([[ゆ う き か が く]], [[yūki kagaku]]) * {{fra}}: [[chimie organique]] * {{fin}}: [[orgaaninen kemia]] * {{cmn}}: [[有機化學]], [[有机化学]] * {{ces}}: [[organická chemie]] * {{spa}}: [[ quýmica orgánica]] * {{tur}}: [[ organik kimya]] * {{kor}}: [[유기 화학]] ([[yugihwahak]]) * {{zho}}: [[有機化學]], [[有机化学]] * {{ita}}: [[chimica organica]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Hóa học]] bmm3vf1geia85vo42ucomujybociwtf 2351016 2350753 2026-05-07T10:45:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351016 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''hóa học hữu cơ''' # {{term|Hóa học}} [[ngành|Ngành]] [[khoa học]] [[nghiên cứu]] các [[hợp chất]] có [[chứa]] [[cacbon]], [[đặc biệt]] là những gì [[xảy ra]] [[tự nhiên]] trong các [[thực thể]] [[sống]]. #: ''Nghiên cứu '''hoá học hữu cơ'''.'' {{-trans-}} {{đầu}} * {{eng}}: [[organic chemistry]] * {{pol}}: [[chemia organiczna]] * {{por}}: [[química orgânica]] * {{cat-old}}: [[química orgànica]] * {{dan}}: [[organisk kemi]] * {{deu}}: [[organische Chemie]] * {{glg}}: [[química orgánica]] * {{nld}}: [[organische chemie]] * {{ell}}: [[οργανική χημεία]] ([[organikí chimeía]]) * {{gle}}: [[lífræn efnafræði]] * {{rus}}: [[органическая химия]] ([[organíčeskaja xímija]]) * {{jpn}}: [[有機化学]]) ([[ゆ う き か が く]], [[yūki kagaku]]) * {{fra}}: [[chimie organique]] * {{fin}}: [[orgaaninen kemia]] * {{cmn}}: [[有機化學]], [[有机化学]] * {{ces}}: [[organická chemie]] * {{spa}}: [[ quýmica orgánica]] * {{tur}}: [[ organik kimya]] * {{kor}}: [[유기 화학]] ([[yugihwahak]]) * {{zho}}: [[有機化學]], [[有机化学]] * {{ita}}: [[chimica organica]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Hóa học]] qiq7colljv1ss4ib7aatfrra5ntj7bd inorganic chemistry 0 249930 2350754 2215282 2026-05-07T07:59:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350754 wikitext text/x-wiki {{-eng-}} {{wikipedia}} {{-noun-}} {{eng-noun|inorganic chemistries}} # ([[hóa học]]) [[Hóa học]] [[vô cơ]]; [[ngành]] [[khoa học]] [[nghiên cứu]] các [[nguyên tố]] ([[bao gồm]] cả [[carbon]]), và những [[hợp chất]] không [[chứa]] carbon. ===Ghi chú sử dụng=== Các hợp chất như [[cacbonat]] cũng được bao gồm trong hóa học vô cơ. ===Thuật ngữ liên quan=== *[[organic chemistry]] {{-trans-}} {{đầu}} * {{por}}: [[química inorgânica]] * {{cat-2}}: [[química inorgànica]] * {{deu}}: [[anorganische Chemie]] * {{rus}}: [[неорганическая химия]] (neorganíčeskaja xímija) * {{jpn}}: [[無機 化学]] (む き か が く, muki kagaku) * {{fra}}: [[chimie inorganique]] * {{fin}}: [[epäorgaaninen kemia]] * {{cmn}}: [[無機化學]], [[无机化学]] * {{ces}}: [[anorganická chemie]] * {{spa}}: [[química inorgánica]] * {{tur}}: [[inorganik kimya]] * {{kor}}: [[무기 화학]] (mugihwahak) * {{zho}}: [[無機化學]], [[无机化学]] * {{ita}}: [[chimica inorganica]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] 158qr6qcoa73cpx5pn1os6oil0a6zyb 2351017 2350754 2026-05-07T10:45:25Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351017 wikitext text/x-wiki {{-eng-}} {{wikipedia}} {{-noun-}} {{eng-noun|inorganic chemistries}} # ([[hóa học]]) [[Hóa học]] [[vô cơ]]; [[ngành]] [[khoa học]] [[nghiên cứu]] các [[nguyên tố]] ([[bao gồm]] cả [[carbon]]), và những [[hợp chất]] không [[chứa]] carbon. ===Ghi chú sử dụng=== Các hợp chất như [[cacbonat]] cũng được bao gồm trong hóa học vô cơ. ===Thuật ngữ liên quan=== *[[organic chemistry]] {{-trans-}} {{đầu}} * {{por}}: [[química inorgânica]] * {{cat-old}}: [[química inorgànica]] * {{deu}}: [[anorganische Chemie]] * {{rus}}: [[неорганическая химия]] (neorganíčeskaja xímija) * {{jpn}}: [[無機 化学]] (む き か が く, muki kagaku) * {{fra}}: [[chimie inorganique]] * {{fin}}: [[epäorgaaninen kemia]] * {{cmn}}: [[無機化學]], [[无机化学]] * {{ces}}: [[anorganická chemie]] * {{spa}}: [[química inorgánica]] * {{tur}}: [[inorganik kimya]] * {{kor}}: [[무기 화학]] (mugihwahak) * {{zho}}: [[無機化學]], [[无机化学]] * {{ita}}: [[chimica inorganica]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] hcvvpyn0hqxdmg4hsk5a00bdposkl5j organic chemistry 0 249931 2350755 2028705 2026-05-07T07:59:46Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350755 wikitext text/x-wiki {{-eng-}} {{-noun-}} '''organic chemistry''' (không đếm được) # ([[hóa học]]) [[hóa học hữu cơ|Hóa học hữu cơ]], [[ngành]] [[khoa học]] [[nghiên cứu]] các [[hợp chất]] có [[chứa]] [[carbon]], [[đặc biệt]] là những gì [[xảy ra]] [[tự nhiên]] trong các [[thực thể]] [[sống]]. ===Ghi chú sử dụng=== Các hợp chất như [[cacbonat]] cũng được bao gồm trong [[hóa học vô cơ]]. ===Thuật ngữ liên quan=== *[[biochemistry]] *[[carbochemistry]] *[[inorganic chemistry]] {{-trans-}} {{đầu}} * {{pol}}: [[chemia organiczna]] * {{por}}: [[química orgânica]] * {{cat-2}}: [[química orgànica]] * {{dan}}: [[organisk kemi]] * {{deu}}: [[organische Chemie]] * {{glg}}: [[química orgánica]] * {{nld}}: [[organische chemie]] * {{ell}}: [[οργανική χημεία]] ([[organikí chimeía]]) * {{gle}}: [[lífræn efnafræði]] * {{ron}}: [[chimie organică ]] * {{rus}}: [[органическая химия]] ([[organíčeskaja xímija]]) * {{jpn}}: [[有機化学]]) ([[ゆ う き か が く]], [[yūki kagaku]]) * {{fra}}: [[chimie organique]] * {{fin}}: [[orgaaninen kemia]] * {{cmn}}:1 [[有機化學]], [[有机化学]] * {{ces}}: [[organická chemie]] * {{spa}}: [[ quýmica orgánica]] * {{tur}}: [[ organik kimya]] * {{kor}}: [[유기 화학]] ([[yugihwahak]]) * {{zho}}: 2[[有機化學]], [[有机化学]] * {{ita}}: [[chimica organica]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] o6yup9zs08xzti2owminiszxcnoa5r9 2351018 2350755 2026-05-07T10:45:28Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351018 wikitext text/x-wiki {{-eng-}} {{-noun-}} '''organic chemistry''' (không đếm được) # ([[hóa học]]) [[hóa học hữu cơ|Hóa học hữu cơ]], [[ngành]] [[khoa học]] [[nghiên cứu]] các [[hợp chất]] có [[chứa]] [[carbon]], [[đặc biệt]] là những gì [[xảy ra]] [[tự nhiên]] trong các [[thực thể]] [[sống]]. ===Ghi chú sử dụng=== Các hợp chất như [[cacbonat]] cũng được bao gồm trong [[hóa học vô cơ]]. ===Thuật ngữ liên quan=== *[[biochemistry]] *[[carbochemistry]] *[[inorganic chemistry]] {{-trans-}} {{đầu}} * {{pol}}: [[chemia organiczna]] * {{por}}: [[química orgânica]] * {{cat-old}}: [[química orgànica]] * {{dan}}: [[organisk kemi]] * {{deu}}: [[organische Chemie]] * {{glg}}: [[química orgánica]] * {{nld}}: [[organische chemie]] * {{ell}}: [[οργανική χημεία]] ([[organikí chimeía]]) * {{gle}}: [[lífræn efnafræði]] * {{ron}}: [[chimie organică ]] * {{rus}}: [[органическая химия]] ([[organíčeskaja xímija]]) * {{jpn}}: [[有機化学]]) ([[ゆ う き か が く]], [[yūki kagaku]]) * {{fra}}: [[chimie organique]] * {{fin}}: [[orgaaninen kemia]] * {{cmn}}:1 [[有機化學]], [[有机化学]] * {{ces}}: [[organická chemie]] * {{spa}}: [[ quýmica orgánica]] * {{tur}}: [[ organik kimya]] * {{kor}}: [[유기 화학]] ([[yugihwahak]]) * {{zho}}: 2[[有機化學]], [[有机化学]] * {{ita}}: [[chimica organica]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] oc715xopgfg1ctkyro5p7qnzyoc277g ascorbic acid 0 249933 2350756 1991607 2026-05-07T07:59:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350756 wikitext text/x-wiki {{-eng-}} {{-noun-}} '''ascorbic acid''' (không đếm được) # ([[hóa học]]) [[hợp chất|Hợp chất]] [[hữu cơ]] [[tinh thể]] [[trắng]], C<sub>6</sub>H<sub>8</sub>O<sub>6</sub>, được [[tìm thấy]] trong [[trái]] [[cây]] có [[múi]] và nhiều [[loại]] [[rau]]; là một [[chất chống oxy hoá]] (ức chế quá trình oxy hóa hoặc các phản ứng được thúc đẩy bởi oxy) và có [[khả năng]] [[đào thải]] [[hiệu quả]] [[các gốc tự do]]. ====Đồng nghĩa==== * (C<sub>6</sub>H<sub>8</sub>O<sub>6</sub>): [[E300]] ( như chất chống oxy hoá ), [[vitamin C]], [[axit hexuronic]] {{-trans-}} {{đầu}} * {{pol}}: [[ kwas askorbinowy]] * {{por}}: [[ácido ascórbico]] * {{cat-2}}: [[ àcid ascòrbic]] * {{dan}}: [[askorbinsyre ]] * {{deu}}: [[Ascorbinsäure]], [[Askorbinsäure]] * {{est}}: [[askorbiinhape]] * {{hun}}: [[aszkorbinsav]] * {{gle}}: [[ askorbínsýra]] * {{rus}}: [[ аскорбиновая кислота]] ([[askorbínovaja kislotá]])[[]] * {{fra}}: [[acide ascorbique]] * {{fin}}: [[askorbiinihappo]] * {{cmn}}: [[抗壞血酸]], [[抗坏血酸]] * {{ron}}: [[ acid ascorbic]] * {{slk}}: [[ askorbová kyselina]] * {{sl}}: [[askorbinska kislina]] * {{spa}}: [[ ácido ascórbico]] * {{swe}}: [[ askorbinsyra]] * {{ukr}}: [[ аскорбінова кислота]] ([[askorbínova kislotá]])[[]] * {{ita}}: [[ acido ascorbico]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] [[Thể loại:Vitamin]] fmhqp4tvyjjv602tlexcoj2wkh6xi5h 2351019 2350756 2026-05-07T10:45:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351019 wikitext text/x-wiki {{-eng-}} {{-noun-}} '''ascorbic acid''' (không đếm được) # ([[hóa học]]) [[hợp chất|Hợp chất]] [[hữu cơ]] [[tinh thể]] [[trắng]], C<sub>6</sub>H<sub>8</sub>O<sub>6</sub>, được [[tìm thấy]] trong [[trái]] [[cây]] có [[múi]] và nhiều [[loại]] [[rau]]; là một [[chất chống oxy hoá]] (ức chế quá trình oxy hóa hoặc các phản ứng được thúc đẩy bởi oxy) và có [[khả năng]] [[đào thải]] [[hiệu quả]] [[các gốc tự do]]. ====Đồng nghĩa==== * (C<sub>6</sub>H<sub>8</sub>O<sub>6</sub>): [[E300]] ( như chất chống oxy hoá ), [[vitamin C]], [[axit hexuronic]] {{-trans-}} {{đầu}} * {{pol}}: [[ kwas askorbinowy]] * {{por}}: [[ácido ascórbico]] * {{cat-old}}: [[ àcid ascòrbic]] * {{dan}}: [[askorbinsyre ]] * {{deu}}: [[Ascorbinsäure]], [[Askorbinsäure]] * {{est}}: [[askorbiinhape]] * {{hun}}: [[aszkorbinsav]] * {{gle}}: [[ askorbínsýra]] * {{rus}}: [[ аскорбиновая кислота]] ([[askorbínovaja kislotá]])[[]] * {{fra}}: [[acide ascorbique]] * {{fin}}: [[askorbiinihappo]] * {{cmn}}: [[抗壞血酸]], [[抗坏血酸]] * {{ron}}: [[ acid ascorbic]] * {{slk}}: [[ askorbová kyselina]] * {{sl}}: [[askorbinska kislina]] * {{spa}}: [[ ácido ascórbico]] * {{swe}}: [[ askorbinsyra]] * {{ukr}}: [[ аскорбінова кислота]] ([[askorbínova kislotá]])[[]] * {{ita}}: [[ acido ascorbico]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Hóa học]] [[Thể loại:Vitamin]] 2xv2tw7tiesaink7n1hqnku92j8e3ok endorphin 0 249943 2350757 1991621 2026-05-07T07:59:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350757 wikitext text/x-wiki ==English== {{wikipedia}} {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈtaɪmskeɪp/}} * ([[British English|UK]]) [[Wiktionary:IPA|IPA]]: {{IPA|/ɛnˈdɔːfɪn/}} * ([[US|American English]]) [[Wiktionary:IPA|IPA]]: {{IPA|/ɛnˈdɔ(ɹ)fɪn/}} ===Từ nguyên=== Bắt nguồn từ [[endorphine]] trong tiếng Pháp, được ghép từ ''[[endogène|endo(gène)]]'' ‘nội sinh’ + ''[[morphine|(mo)rphine]]'' ‘mocfin’. {{-noun-}} {{eng-noun}} # ([[hóa sinh]]) [[bất kỳ|Bất kỳ]] một nhóm [[hoóc môn]] [[peptide]] nào trong [[não]] [[hoạt động]] như những [[chất dẫn truyền thần kinh]] và có các tính chất tương tự như [[morphine]] . {{-trans-}} {{trans-top|bất kỳ nhóm hoocmon peptide nào}} * {{pol}}: [[endorfina]] * {{por}}: [[endorfina]] * {{cat-2}}: [[endorfina]] * {{deu}}: [[Endorphin]] * {{hun}}: [[endorfin]] * {{ell}}: [[ενδορφίνη]] ([[endorfíni]]) * {{rus}}: [[эндорфин]] ([[endorfín]]) * {{jpn}}: [[エ ン ド ル フ ィ ン]] ([[endorufin]]) * {{fra}}: [[ endorphine]] * {{fin}}: [[endorfiini]] * {{cmn}}: [[腦內啡]], [[脑内啡]] * {{ces}}: [[endorfin]] * {{spa}}: [[endorfina]] * {{swe}}: [[endorfin]] * {{ita}}: [[endorfina]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Anh không đếm được]] [[Thể loại:Các thuật ngữ tiếng Anh với phát âm IPA]] [[Thể loại:Hóa sinh]] [[Thể loại:Từ 3 âm tiết tiếng Anh]] 1w2njx16djd1ecx8eqlatw0sb0idh89 2351020 2350757 2026-05-07T10:45:34Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351020 wikitext text/x-wiki ==English== {{wikipedia}} {{-eng-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ˈtaɪmskeɪp/}} * ([[British English|UK]]) [[Wiktionary:IPA|IPA]]: {{IPA|/ɛnˈdɔːfɪn/}} * ([[US|American English]]) [[Wiktionary:IPA|IPA]]: {{IPA|/ɛnˈdɔ(ɹ)fɪn/}} ===Từ nguyên=== Bắt nguồn từ [[endorphine]] trong tiếng Pháp, được ghép từ ''[[endogène|endo(gène)]]'' ‘nội sinh’ + ''[[morphine|(mo)rphine]]'' ‘mocfin’. {{-noun-}} {{eng-noun}} # ([[hóa sinh]]) [[bất kỳ|Bất kỳ]] một nhóm [[hoóc môn]] [[peptide]] nào trong [[não]] [[hoạt động]] như những [[chất dẫn truyền thần kinh]] và có các tính chất tương tự như [[morphine]] . {{-trans-}} {{trans-top|bất kỳ nhóm hoocmon peptide nào}} * {{pol}}: [[endorfina]] * {{por}}: [[endorfina]] * {{cat-old}}: [[endorfina]] * {{deu}}: [[Endorphin]] * {{hun}}: [[endorfin]] * {{ell}}: [[ενδορφίνη]] ([[endorfíni]]) * {{rus}}: [[эндорфин]] ([[endorfín]]) * {{jpn}}: [[エ ン ド ル フ ィ ン]] ([[endorufin]]) * {{fra}}: [[ endorphine]] * {{fin}}: [[endorfiini]] * {{cmn}}: [[腦內啡]], [[脑内啡]] * {{ces}}: [[endorfin]] * {{spa}}: [[endorfina]] * {{swe}}: [[endorfin]] * {{ita}}: [[endorfina]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Anh không đếm được]] [[Thể loại:Các thuật ngữ tiếng Anh với phát âm IPA]] [[Thể loại:Hóa sinh]] [[Thể loại:Từ 3 âm tiết tiếng Anh]] rmnkstsw0vs1oa5wbvlkfi9kh3t3bca Patroclus 0 249973 2350758 1991836 2026-05-07T07:59:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350758 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pəˈtroʊkləs, pəˈtrɒkləs/}} {{-etym-}} Có nguồn gốc Patroclus trong tiếng [[La Tinh]]. Patroclus lại bắt nguồn từ [[tiếng Hy Lạp cổ đại]] là [[Πάτροκλος]] (Pátroklos). {{-pr-noun-}} '''Patroclus''' # ([[thần thoại|Thần thoại]] [[Hy lạp|Hy Lạp]]) Một [[nhân vật]] trong [[Iliad]], được [[biết]] đến với mối [[quan hệ]] [[gần gũi]] với [[achilles|Achilles]]. {{-trans-}} {{đầu}} * {{por}}: [[Pátroclo]] * {{cat-2}}: [[Pàtrocle]] * {{deu}}: [[Patroklos]] * {{ell}}: [[Πάτροκλος]] ([[Pátroklos]]) * {{lat}}: [[Patroclus]] * {{fra}}: [[Patrocle]] * {{spa}}: [[Patroclo]] * {{ita}}: [[Patroclo]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ riêng tiếng Anh]] [[Thể loại:Danh từ riêng Latinh]] [[Thể loại:Thuật ngữ Latin bắt nguồn từ tiếng Hy Lạp cổ]] [[Thể loại:Thuật ngữ tiếng Anh bắt nguồn từ tiếng Hy Lạp cổ]] [[Thể loại:Thuật ngữ tiếng Anh bắt nguồn từ tiếng La Tinh]] [[Thể loại:Thần thoại Hy Lạp]] r6ptvdnied5qcdvjx8dgpqxoi64yxtm 2351021 2350758 2026-05-07T10:45:37Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351021 wikitext text/x-wiki {{-eng-}} {{-info-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pəˈtroʊkləs, pəˈtrɒkləs/}} {{-etym-}} Có nguồn gốc Patroclus trong tiếng [[La Tinh]]. Patroclus lại bắt nguồn từ [[tiếng Hy Lạp cổ đại]] là [[Πάτροκλος]] (Pátroklos). {{-pr-noun-}} '''Patroclus''' # ([[thần thoại|Thần thoại]] [[Hy lạp|Hy Lạp]]) Một [[nhân vật]] trong [[Iliad]], được [[biết]] đến với mối [[quan hệ]] [[gần gũi]] với [[achilles|Achilles]]. {{-trans-}} {{đầu}} * {{por}}: [[Pátroclo]] * {{cat-old}}: [[Pàtrocle]] * {{deu}}: [[Patroklos]] * {{ell}}: [[Πάτροκλος]] ([[Pátroklos]]) * {{lat}}: [[Patroclus]] * {{fra}}: [[Patrocle]] * {{spa}}: [[Patroclo]] * {{ita}}: [[Patroclo]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ riêng tiếng Anh]] [[Thể loại:Danh từ riêng Latinh]] [[Thể loại:Thuật ngữ Latin bắt nguồn từ tiếng Hy Lạp cổ]] [[Thể loại:Thuật ngữ tiếng Anh bắt nguồn từ tiếng Hy Lạp cổ]] [[Thể loại:Thuật ngữ tiếng Anh bắt nguồn từ tiếng La Tinh]] [[Thể loại:Thần thoại Hy Lạp]] gyflxkrvponn8u046uf6ycnmjumsi8m thoát vị 0 249982 2350759 2124824 2026-05-07T07:59:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350759 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''thoát vị''' hay '''chứng thoát vị''' ([[không đếm được]]) # {{term|Bệnh lý học}} Một [[rối loạn]] trong đó một phần của [[cơ thể]] [[nhô]] ra [[bất thường]] thông qua [[vết rách]] hoặc khe hở ra ở phần xung quanh vết rách, đặc biệt là vùng [[bụng]] & [[háng]], [[ngực]], [[bẹn]], [[đùi]]. {{-syn-}} * [[nhô tạng]] {{-trans-}} {{đầu}} * {{por}}: [[hérnia]] * {{cat-2}}: [[hèrnia]] * {{deu}}: [[hernie]] * {{nld}}: [[hernia]] * {{lat}}: [[hernia]] * {{jpn}}: [[ヘルニア]] * {{fra}}: [[hernie]] {{cuối}} [[Thể loại:Bệnh lý học]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Việt không đếm được]] npuqr657daenyq3asrx8jjg6posv75r 2351022 2350759 2026-05-07T10:45:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351022 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''thoát vị''' hay '''chứng thoát vị''' ([[không đếm được]]) # {{term|Bệnh lý học}} Một [[rối loạn]] trong đó một phần của [[cơ thể]] [[nhô]] ra [[bất thường]] thông qua [[vết rách]] hoặc khe hở ra ở phần xung quanh vết rách, đặc biệt là vùng [[bụng]] & [[háng]], [[ngực]], [[bẹn]], [[đùi]]. {{-syn-}} * [[nhô tạng]] {{-trans-}} {{đầu}} * {{por}}: [[hérnia]] * {{cat-old}}: [[hèrnia]] * {{deu}}: [[hernie]] * {{nld}}: [[hernia]] * {{lat}}: [[hernia]] * {{jpn}}: [[ヘルニア]] * {{fra}}: [[hernie]] {{cuối}} [[Thể loại:Bệnh lý học]] [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Danh từ tiếng Việt không đếm được]] p4mwnmasfgpce3hl0q5e4ufem89tymu metanarrative 0 250033 2350760 1991842 2026-05-07T08:00:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350760 wikitext text/x-wiki {{-eng-}} {{-etym-}} [[meta-]] +‎ [[narrative]] {{-noun-}} {{eng-noun}} # [[siêu tự sự|Siêu tự sự]], [[đại tự sự]], [[nguyên tự sự]]. # Một [[tường thuật]] về các [[câu chuyện]] có [[ý nghĩa]] [[lịch sử]], [[kinh nghiệm]] hay [[kiến ​​thức]] nhằm đưa ra [[quan điểm]] [[biện minh]] [[xã hội]] thông qua [[hoàn thiện]] các [[tư tưởng]] [[chủ đạo]] (quan niệm lớn) được [[mong chờ]]. {{-syn-}} * [[meta-narrative]] * [[grand narrative]] {{-trans-}} {{đầu}} * {{por}}: [[metanarrativa]] * {{roa-ptg}}: [[metanarrativa]] * {{cat-2}}: [[metanarrativa]], [[consciència popular]], [[realitat col·lectiva]] * {{deu}}: [[meistererzählung]], [[metanarrativ]] * {{fra}}: [[métarécit]] * {{spa}}: [[metanarrativa]], [[metarrelato]], [[macrorrelato]] * {{tur}}: [[üst anlatı]] * {{ita}}: [[metanarrazione]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Anh đếm được]] [[Thể loại:Các từ tiếng Anh có tiền tố meta-]] b65xvrixqpk8ioka6xdqhp791ca8ldf 2351023 2350760 2026-05-07T10:45:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351023 wikitext text/x-wiki {{-eng-}} {{-etym-}} [[meta-]] +‎ [[narrative]] {{-noun-}} {{eng-noun}} # [[siêu tự sự|Siêu tự sự]], [[đại tự sự]], [[nguyên tự sự]]. # Một [[tường thuật]] về các [[câu chuyện]] có [[ý nghĩa]] [[lịch sử]], [[kinh nghiệm]] hay [[kiến ​​thức]] nhằm đưa ra [[quan điểm]] [[biện minh]] [[xã hội]] thông qua [[hoàn thiện]] các [[tư tưởng]] [[chủ đạo]] (quan niệm lớn) được [[mong chờ]]. {{-syn-}} * [[meta-narrative]] * [[grand narrative]] {{-trans-}} {{đầu}} * {{por}}: [[metanarrativa]] * {{roa-ptg}}: [[metanarrativa]] * {{cat-old}}: [[metanarrativa]], [[consciència popular]], [[realitat col·lectiva]] * {{deu}}: [[meistererzählung]], [[metanarrativ]] * {{fra}}: [[métarécit]] * {{spa}}: [[metanarrativa]], [[metarrelato]], [[macrorrelato]] * {{tur}}: [[üst anlatı]] * {{ita}}: [[metanarrazione]] {{cuối}} [[Thể loại:Danh từ tiếng Anh]] [[Thể loại:Danh từ tiếng Anh đếm được]] [[Thể loại:Các từ tiếng Anh có tiền tố meta-]] 40gbq7d1nwnjmy5spcrfvmbpdehldpu Thành viên:NHHP/tháng Ba 2 250156 2350837 2252588 2026-05-07T08:15:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350837 wikitext text/x-wiki {{also|tháng ba}} {{-vie-}} {{-info-|Tháng Ba}} {{-pron-}} {{vie-pron|tháng|Ba}} {{-pr-noun-}} '''tháng Ba''' # Tháng [[thứ ba]] của [[lịch Gregorian]], sau [[tháng Hai]] và trước [[tháng Tư]]. Viết ở dạng số: [[tháng 3]]. #: "Thanh minh trong tiết '''tháng Ba'''.'' #: Lễ là tảo mộ hội là đạp thanh" (Truyện Kiều - Nguyễn Du) ====Chú thích sử dụng==== '''Lưu ý chính tả''': viết "tháng Ba" khi từ này nằm giữa hoặc cuối câu. Viết "Tháng Ba" khi từ này xuất hiện ở đầu câu hoặc đầu đoạn văn theo quy tắc viết hoa chữ cái đầu tiên của âm tiết đầu tiên trong từ khi nó đứng đầu câu hoặc đầu đoạn văn. Cách viết thường danh từ riêng "tháng Ba" thành "tháng ba" thường gặp trong các văn bản tiếng Việt là lối viết sai chính tả phổ biến nhưng vẫn được chấp nhận hiểu là "tháng thứ Ba trong năm theo lịch Gregorius", và cũng thường được coi là "tháng thứ Ba của năm dương lịch". {{-syn-}} * [[tháng 3]] * [[tháng ba]] {{-trans-}} '''tháng thứ ba của lịch Gregorius''' {{đầu}} * {{ara}}: [[مارس|مَارِس]] (''máːris'') {{m}}, [[اذار|آذَارٌ]] (''’āðar'') {{m}} * {{afr}}: [[maart]] * {{akz}}: [[hasiholtina istatótchìina]], [[Màchka]] * {{sqi}}: [[mars]] * {{eng}}: [[March]] * {{ang}}: [[hreþmonaþ|hreþmōnaþ]] {{m}} * {{arg}}: [[marzo]] {{m}} * {{ast}}: [[marzu]] {{m}} * {{pol}}: [[marzec]] {{m}} * {{isl}}: [[mars]] * {{eus}}: [[martxo]] * {{bel}}: [[сакавік]] (''sakavik'') * {{por}}: [[março]] {{m}} * {{ina}}: [[martio]] * {{bos}}: [[mart#Tiếng Bosni|mart]] {{m}} * {{bre}}: [[Meurzh]], miz Meurzh * {{bul}}: [[март#Tiếng Bulgari|март]] (''mart'') {{m}} * {{cat-2}}: [[març]] {{m}} * {{chr}}: [[ᎤᏄᎳᎯ]] (''unulahi'') * {{chv}}: [[пуш]] (''puš'') * {{cor}}: [[mys merth]] * {{hrv}}: [[ožujak]] * {{dan}}: [[marts]] * {{heb}}: [[מרס]] (''mars''), [[מרץ]] (''merts''; không chính thức) * {{deu}}: [[März]] {{m}}, [[Lenzing]] {{m}} * {{est}}: [[märts]] * {{fur}}: [[març]] {{m}} * {{fry}}: [[mars]] * {{kat}}: [[მარტი]] (''marti'') * {{nld}}: [[maart]] * {{kor}}: [[삼월]] ([[三月]], [[tam]] [[nguyệt]], ''samweol'') * {{hin}}: [[मार्च]] (''mārch'') * {{hun}}: [[március]] * {{ell}}: [[Μάρτιος]] {{IPA|[ˈmar.ti.o̞s]}} {{m}}, [[Μάρτης]] {{IPA|[ˈmar.tis]}} {{m}} * {{ido}}: [[marto]] * {{ilo}}: [[marso]] * {{ind}}: [[maret]] * {{ile}}: [[marte]] * {{gle}}: [[Márta]] * {{jav}}: [[maret]] * {{kan}}: [[ಮಾರ್ಚಿ]] (''maarci'') * {{lat}}: [[Martius]] {{m}} * {{lav}}: [[marts]] * {{lim}}: [[miert]] {{giữa}} * {{lit}}: [[kovas]] {{m}} * {{ltz}}: [[Mäerz]] * {{msa}}: [[Mac]], [[مچ]] * {{mnc}}: ''[[ilan biya]]'' * {{mri}}: [[mäehe]] * {{mar}}: [[मार्च]] (''mārch'') * {{nor}}: [[mars]] * {{nap}}: [[màrzo]] {{m}} * {{rus}}: [[март]] (''mart'') {{m}} * {{jpn}}: [[三月]] (さんがつ, [[tam]] [[nguyệt]], ''sángatsu'') * {{nov}}: [[marte]] * {{oci}}: [[març]] {{m}} * {{oji}}: [[onaabani-giizis]] * {{fin}}: [[maaliskuu]] * {{fra}}: [[mars]] {{m}} * {{epo}}: [[marto]] * {{ron}}: [[martie]] * {{sme}}: [[njukčamánnu]] * {{srd}}: [[martzu]] {{m}} * {{sco}}: [[mairch]] * {{ces}}: [[březen]] {{m}} * {{srp}}: ** {{Cyrl}}: [[март#Tiếng Serbi|март]] {{m}} ** {{Latn}}: [[mart#Tiếng Serbi|mart]] {{m}} * {{scn}}: [[marzu]] {{m}} * {{slk}}: [[marec]] {{m}} * {{slv}}: márec {{m}} * {{sun}}: [[maret]] * {{tgl}}: [[Marso]] * {{tam}}: [[மார்ச்]] (''maarc'') * {{tat}}: [[mart#Tatar|mart]] * {{spa}}: [[marzo]] {{m}} * {{tel}}: [[మార్చి]] (''maarchi'') * {{tha}}: [[มีนาคม]] (''mee naa khohm'') * {{tur}}: [[mart#Tiếng Thổi Nhĩ Kỳ|mart]] * {{swe}}: [[mars]] * {{tpi}}: [[mac#Tiếng Tok Pisin|mac]] * {{zho}}: [[三月]] ([[tam]] [[nguyệt]], ''sānyuè'') * {{ukr}}: [[березень]] (''berezen’'') {{m}} * {{vol}}: [[mäzul]] * {{cym}}: [[Mawrth]] {{m}} * {{wol}}: [[måss]] * {{ita}}: [[marzo]] {{m}} {{cuối}} {{Tháng trong năm |[[tháng Một]] |[[tháng Hai]] |[[tháng Ba]] |[[tháng Tư]] |[[tháng Năm]] |[[tháng Sáu]] |[[tháng Bảy]] |[[tháng Tám]] |[[tháng Chín]] |[[tháng Mười]] |[[tháng Mười một]] |[[tháng Mười hai]] }} [[Thể loại:Danh từ riêng tiếng Việt]] 2n1lfwze68e0jfu19nyszflsihon76u 2351075 2350837 2026-05-07T10:48:22Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351075 wikitext text/x-wiki {{also|tháng ba}} {{-vie-}} {{-info-|Tháng Ba}} {{-pron-}} {{vie-pron|tháng|Ba}} {{-pr-noun-}} '''tháng Ba''' # Tháng [[thứ ba]] của [[lịch Gregorian]], sau [[tháng Hai]] và trước [[tháng Tư]]. Viết ở dạng số: [[tháng 3]]. #: "Thanh minh trong tiết '''tháng Ba'''.'' #: Lễ là tảo mộ hội là đạp thanh" (Truyện Kiều - Nguyễn Du) ====Chú thích sử dụng==== '''Lưu ý chính tả''': viết "tháng Ba" khi từ này nằm giữa hoặc cuối câu. Viết "Tháng Ba" khi từ này xuất hiện ở đầu câu hoặc đầu đoạn văn theo quy tắc viết hoa chữ cái đầu tiên của âm tiết đầu tiên trong từ khi nó đứng đầu câu hoặc đầu đoạn văn. Cách viết thường danh từ riêng "tháng Ba" thành "tháng ba" thường gặp trong các văn bản tiếng Việt là lối viết sai chính tả phổ biến nhưng vẫn được chấp nhận hiểu là "tháng thứ Ba trong năm theo lịch Gregorius", và cũng thường được coi là "tháng thứ Ba của năm dương lịch". {{-syn-}} * [[tháng 3]] * [[tháng ba]] {{-trans-}} '''tháng thứ ba của lịch Gregorius''' {{đầu}} * {{ara}}: [[مارس|مَارِس]] (''máːris'') {{m}}, [[اذار|آذَارٌ]] (''’āðar'') {{m}} * {{afr}}: [[maart]] * {{akz}}: [[hasiholtina istatótchìina]], [[Màchka]] * {{sqi}}: [[mars]] * {{eng}}: [[March]] * {{ang}}: [[hreþmonaþ|hreþmōnaþ]] {{m}} * {{arg}}: [[marzo]] {{m}} * {{ast}}: [[marzu]] {{m}} * {{pol}}: [[marzec]] {{m}} * {{isl}}: [[mars]] * {{eus}}: [[martxo]] * {{bel}}: [[сакавік]] (''sakavik'') * {{por}}: [[março]] {{m}} * {{ina}}: [[martio]] * {{bos}}: [[mart#Tiếng Bosni|mart]] {{m}} * {{bre}}: [[Meurzh]], miz Meurzh * {{bul}}: [[март#Tiếng Bulgari|март]] (''mart'') {{m}} * {{cat-old}}: [[març]] {{m}} * {{chr}}: [[ᎤᏄᎳᎯ]] (''unulahi'') * {{chv}}: [[пуш]] (''puš'') * {{cor}}: [[mys merth]] * {{hrv}}: [[ožujak]] * {{dan}}: [[marts]] * {{heb}}: [[מרס]] (''mars''), [[מרץ]] (''merts''; không chính thức) * {{deu}}: [[März]] {{m}}, [[Lenzing]] {{m}} * {{est}}: [[märts]] * {{fur}}: [[març]] {{m}} * {{fry}}: [[mars]] * {{kat}}: [[მარტი]] (''marti'') * {{nld}}: [[maart]] * {{kor}}: [[삼월]] ([[三月]], [[tam]] [[nguyệt]], ''samweol'') * {{hin}}: [[मार्च]] (''mārch'') * {{hun}}: [[március]] * {{ell}}: [[Μάρτιος]] {{IPA|[ˈmar.ti.o̞s]}} {{m}}, [[Μάρτης]] {{IPA|[ˈmar.tis]}} {{m}} * {{ido}}: [[marto]] * {{ilo}}: [[marso]] * {{ind}}: [[maret]] * {{ile}}: [[marte]] * {{gle}}: [[Márta]] * {{jav}}: [[maret]] * {{kan}}: [[ಮಾರ್ಚಿ]] (''maarci'') * {{lat}}: [[Martius]] {{m}} * {{lav}}: [[marts]] * {{lim}}: [[miert]] {{giữa}} * {{lit}}: [[kovas]] {{m}} * {{ltz}}: [[Mäerz]] * {{msa}}: [[Mac]], [[مچ]] * {{mnc}}: ''[[ilan biya]]'' * {{mri}}: [[mäehe]] * {{mar}}: [[मार्च]] (''mārch'') * {{nor}}: [[mars]] * {{nap}}: [[màrzo]] {{m}} * {{rus}}: [[март]] (''mart'') {{m}} * {{jpn}}: [[三月]] (さんがつ, [[tam]] [[nguyệt]], ''sángatsu'') * {{nov}}: [[marte]] * {{oci}}: [[març]] {{m}} * {{oji}}: [[onaabani-giizis]] * {{fin}}: [[maaliskuu]] * {{fra}}: [[mars]] {{m}} * {{epo}}: [[marto]] * {{ron}}: [[martie]] * {{sme}}: [[njukčamánnu]] * {{srd}}: [[martzu]] {{m}} * {{sco}}: [[mairch]] * {{ces}}: [[březen]] {{m}} * {{srp}}: ** {{Cyrl}}: [[март#Tiếng Serbi|март]] {{m}} ** {{Latn}}: [[mart#Tiếng Serbi|mart]] {{m}} * {{scn}}: [[marzu]] {{m}} * {{slk}}: [[marec]] {{m}} * {{slv}}: márec {{m}} * {{sun}}: [[maret]] * {{tgl}}: [[Marso]] * {{tam}}: [[மார்ச்]] (''maarc'') * {{tat}}: [[mart#Tatar|mart]] * {{spa}}: [[marzo]] {{m}} * {{tel}}: [[మార్చి]] (''maarchi'') * {{tha}}: [[มีนาคม]] (''mee naa khohm'') * {{tur}}: [[mart#Tiếng Thổi Nhĩ Kỳ|mart]] * {{swe}}: [[mars]] * {{tpi}}: [[mac#Tiếng Tok Pisin|mac]] * {{zho}}: [[三月]] ([[tam]] [[nguyệt]], ''sānyuè'') * {{ukr}}: [[березень]] (''berezen’'') {{m}} * {{vol}}: [[mäzul]] * {{cym}}: [[Mawrth]] {{m}} * {{wol}}: [[måss]] * {{ita}}: [[marzo]] {{m}} {{cuối}} {{Tháng trong năm |[[tháng Một]] |[[tháng Hai]] |[[tháng Ba]] |[[tháng Tư]] |[[tháng Năm]] |[[tháng Sáu]] |[[tháng Bảy]] |[[tháng Tám]] |[[tháng Chín]] |[[tháng Mười]] |[[tháng Mười một]] |[[tháng Mười hai]] }} [[Thể loại:Danh từ riêng tiếng Việt]] o302aa2cy6e7mi45rhfmin8rdjn6m3l gia cụ 0 250377 2350584 1993222 2026-05-07T06:07:35Z Kateru Zakuro 34522 2350584 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun}} # [[vật dụng|Vật dụng]] trong [[nhà]], [[đồ]] [[nội thất]]. ===={{ĐM|syn}}==== * {{l|vi|gia thập}} * {{l|vi|gia câu}} ===={{ĐM|trans}}==== {{trans-top}} * {{langname|en}}: {{t|en|furniture}} * {{langname|zh}}: {{t|zh|家具}}, {{t|zh|家什}}, {{t|zh|傢俱}} {{trans-bottom}} fcmm47z76wlbe7jsx91ccwim6y9ervl 家具 0 250378 2350582 1993221 2026-05-07T06:03:22Z Kateru Zakuro 34522 2350582 wikitext text/x-wiki {{also|家俱|傢俱|傢具}} =={{langname|zh}}== {{zh-forms|t2=傢具|t3=家俱|t4=傢俱}} {{wp|zh:,wuu:,gan:}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=jiājù |ma=Zh-jiajù.ogg |c=gaa1 geoi6 |ca=LL-Q9186-Luilui6666-家具.wav |g='ga1 qy5 |h=pfs=kâ-khí;hrs=h:gaˋ ki˖ |j=jia1 jy3 |mn=xm,qz,tw:ka-kū/zz:kee-kī/twv:ka-khū/za:kee-kīr |w=sh:1ka jiu,1cia jiu |x=jia1 jy4 |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # Đồ [[nội thất]] {{zh-mw|m:件|m:套}} #: {{zh-x|那 家 店 有 很 多 家具 可 供 挑選。|Cửa hàng đó có nhiều lựa chọn '''đồ nội thất''' tốt.}} grnfoysctqpewqbgfn9cjs325a4mrkg 2350585 2350582 2026-05-07T06:08:24Z Kateru Zakuro 34522 2350585 wikitext text/x-wiki {{also|家俱|傢俱|傢具}} =={{langname|zh}}== {{zh-forms|t2=傢具|t3=家俱|t4=傢俱}} {{wp|zh:,wuu:,gan:}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=jiājù |ma=Zh-jiajù.ogg |c=gaa1 geoi6 |ca=LL-Q9186-Luilui6666-家具.wav |g='ga1 qy5 |h=pfs=kâ-khí;hrs=h:gaˋ ki˖ |j=jia1 jy3 |mn=xm,qz,tw:ka-kū/zz:kee-kī/twv:ka-khū/za:kee-kīr |w=sh:1ka jiu,1cia jiu |x=jia1 jy4 |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[gia cụ|Gia cụ]] {{zh-mw|m:件|m:套}} #: {{zh-x|那 家 店 有 很 多 家具 可 供 挑選。|Cửa hàng đó có nhiều lựa chọn '''gia cụ''' tốt.}} q2m8w8n1oj3ejcuhflukj48c1yw0yuy 2350606 2350585 2026-05-07T06:29:04Z Hiyuune 50834 /* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350606 wikitext text/x-wiki {{also|家俱|傢俱|傢具}} =={{langname|zh}}== {{zh-forms|t2=傢具|t3=家俱|t4=傢俱}} {{wp|zh:,wuu:,gan:}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=jiājù |ma=Zh-jiajù.ogg |c=gaa1 geoi6 |ca=LL-Q9186-Luilui6666-家具.wav |g='ga1 qy5 |h=pfs=kâ-khí;hrs=h:gaˋ ki˖ |j=jia1 jy3 |mn=xm,qz,tw:ka-kū/zz:kee-kī/twv:ka-khū/za:kee-kīr |w=sh:1ka jiu,1cia jiu |x=jia1 jy4 |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[gia cụ|Gia cụ]] {{zh-mw|m:件|m:套}} #: {{zh-x|那 家 店 有 很 多 家具 可 供 挑選。|Cửa hàng đó có nhiều lựa chọn '''gia cụ''' tốt.}} ===={{ĐM|syn}}==== {{zh-dial|家具}} thqlzlznp1afyso228g92b8493rjsin 2350607 2350606 2026-05-07T06:30:25Z Hiyuune 50834 /* Tiếng Trung Quốc */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350607 wikitext text/x-wiki {{also|家俱|傢俱|傢具}} =={{langname|ja}}== {{ja-kanjitab|か|ぐ|yomi=kanon,goon}} ==={{ĐM|pron}}=== {{ja-pron|かぐ|acc=a}} ==={{ĐM|n}}=== {{ja-noun|かぐ}} # Đồ [[nội thất]]. ===={{ĐM|drv}}==== {{col|ja |{{ja-r|収納家具|しゅうのうかぐ}} |{{ja-r|スチール家具|スチール かぐ}} |{{ja-r|ユニット家具|ユニット かぐ}} |{{ja-r|ラタン家具|ラタン かぐ}} |{{ja-r|籐家具|とうかぐ}} |{{ja-r|家具屋|かぐや}} |{{ja-r|調度家具|ちょうどかぐ}} |{{ja-r|家具店|かぐてん}} |{{ja-r|家具付きアパート|かぐつき アパート}} }} ==={{ĐM|ref}}=== * {{R:Kanjipedia Kotoba|0000677600}} {{C|ja|Vật dụng nội thất}} =={{langname|zh}}== {{zh-forms|t2=傢具|t3=家俱|t4=傢俱}} {{wp|zh:,wuu:,gan:}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=jiājù |ma=Zh-jiajù.ogg |c=gaa1 geoi6 |ca=LL-Q9186-Luilui6666-家具.wav |g='ga1 qy5 |h=pfs=kâ-khí;hrs=h:gaˋ ki˖ |j=jia1 jy3 |mn=xm,qz,tw:ka-kū/zz:kee-kī/twv:ka-khū/za:kee-kīr |w=sh:1ka jiu,1cia jiu |x=jia1 jy4 |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[gia cụ|Gia cụ]] {{zh-mw|m:件|m:套}} #: {{zh-x|那 家 店 有 很 多 家具 可 供 挑選。|Cửa hàng đó có nhiều lựa chọn '''gia cụ''' tốt.}} ===={{ĐM|syn}}==== {{zh-dial|家具}} da2fq6knvir3iyuu14asiyvgc3xpjvr gia thập 0 250379 2350596 1993219 2026-05-07T06:14:27Z Kateru Zakuro 34522 2350596 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun}} # {{see-entry|gia cụ}} {{mẫu}} 9zmfzq3s5c7g2d7irq7ymfmp62sfexp gia câu 0 250380 2350597 1993220 2026-05-07T06:14:37Z Kateru Zakuro 34522 2350597 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun}} # {{see-entry|gia cụ}} {{mẫu}} 9zmfzq3s5c7g2d7irq7ymfmp62sfexp 家什 0 250381 2350601 1993225 2026-05-07T06:17:01Z Kateru Zakuro 34522 2350601 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|t2=傢什}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=jiāshi,jiāshí,1nb=Mainland,2nb=Taiwan |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # {{lb|zh|thông tục}} [[vật|Vật]] [[dụng]] trong [[nhà]]; đồ dùng [[nhà bếp]] hoặc đồ [[nội thất]] ===={{ĐM|synonyms}}==== {{zh-dial|家具}} kcpkmbvj085eq159v1lkvsj12dwjm1a 傢俱 0 250382 2350578 1993226 2026-05-07T06:00:32Z Kateru Zakuro 34522 2350578 wikitext text/x-wiki {{also|傢具|家具|家俱}} =={{langname|zh}}== {{zh-see|家具|v}} 6zvbi98gvehlhy34890kei8gzl5xtre 世家 0 250525 2350529 1993780 2026-05-06T17:04:02Z Kateru Zakuro 34522 2350529 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìjiā |c=sai3 gaa1 |mn=xm,qz,tw:sè-ka/zz:sì-kee |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[thế gia]] #: {{zh-x|孔子'''世家'''|Khổng Tử thế gia}}. #: {{zh-x|仲子, 齊之'''世家'''也|Trọng Tử, Tề chi thế gia dã}} ===={{ĐM|related terms}}==== * {{zh-l|世族}} * {{zh-l|士族}} {{C|zh|Family|Historiography|Collectives}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|thế gia}} #* {{quote-book|vi|year=1870|title=大南國史演歌<tr:Đại Nam quốc sử diễn ca>|page=23a|url=https://lib.nomfoundation.org/collection/2/volume/1322/page/59|passage=吳王本固𡥵賢<br>長羅昌岌𫄑傳'''世家'''|tr=Ngô vương vốn có con hiền,<br>Trưởng là Xương Ngập nối truyền '''thế gia'''.|t=King Ngô naturally had virtuous sons.<br>The eldest was Xương Ngập, who continued the rule of the '''aristocratic family'''.}} {{C|vi|Family}} o1ji1unzgkzu8rpusjnuqa3qflnvaql 2350530 2350529 2026-05-06T17:04:22Z Kateru Zakuro 34522 2350530 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìjiā |c=sai3 gaa1 |mn=xm,qz,tw:sè-ka/zz:sì-kee |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[thế gia]] #: {{zh-x|孔子'''世家'''|Khổng Tử thế gia}}. #: {{zh-x|仲子, 齊之'''世家'''也|Trọng Tử, Tề chi thế gia dã}} ===={{ĐM|related terms}}==== * {{zh-l|世族}} * {{zh-l|士族}} {{C|zh|Family|Historiography|Collectives}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|thế gia}} #* {{quote-book|vi|year=1870|title=大南國史演歌<tr:Đại Nam quốc sử diễn ca>|page=23a|url=https://lib.nomfoundation.org/collection/2/volume/1322/page/59|passage=吳王本固𡥵賢<br>長羅昌岌𫄑傳'''世家'''|tr=Ngô vương vốn có con hiền,<br>Trưởng là Xương Ngập nối truyền '''thế gia'''.}} {{C|vi|Family}} smuvy297mgjzjq2ilnx6dgdsqwj1u3j 2350531 2350530 2026-05-06T17:05:37Z Kateru Zakuro 34522 2350531 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìjiā |c=sai3 gaa1 |mn=xm,qz,tw:sè-ka/zz:sì-kee |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[thế gia]] #: {{zh-x|孔子'''世家'''|Khổng Tử thế gia}}. #: {{zh-x|仲子, 齊之'''世家'''也|Trọng Tử, Tề chi thế gia dã}} ===={{ĐM|related terms}}==== * {{zh-l|世族}} * {{zh-l|士族}} {{C|zh|Family|Historiography|Collectives}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|thế gia}} #* {{quote-book|vi|year=1870|title=大南國史演歌<tr:Đại Nam quốc sử diễn ca>|page=23a|url=https://lib.nomfoundation.org/collection/2/volume/1322/page/59|passage=吳王本固𡥵賢<br>長羅昌岌𫄑傳'''世家'''|tr=Ngô vương vốn có con hiền,<br>Trưởng là Xương Ngập nối truyền '''thế gia'''.|t=Vua Ngô đương nhiên có những người con trai đức hạnh.<br>Con trai cả là Xương Ngập, người tiếp tục cai trị '''gia tộc quý tộc'''.}} {{C|vi|Family}} kft6xegirzdl6tx76yax8rtsvq7wo5l 信封 0 250930 2350576 1994693 2026-05-07T05:58:19Z Kateru Zakuro 34522 2350576 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} [[File:Briefumschlag (fcm).jpg|thumb|信封]] ==={{ĐM|pronunciation}}=== {{zh-pron |m=xìnfēng,er=y |m-s=xin4fong1 |c=seon3 fung1 |ca=LL-Q9186-Luilui6666-信封.wav |h=pfs=sin-fûng;hrs=h:sinˇ fungˋ |j=xing3 fung1 |w=sh:5shin fon |mn=ml:sìn-hong |ma=y |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[tín phong|Tín phong]] ===={{ĐM|synonyms}}==== * {{zh-l|封套}} {{zh-dial}} ===={{ĐM|descendants}}==== * {{desc|bor=1|pcc|xinqfungy}} * {{desc|bor=1|za|saenqfung}} {{q|dialectal}} 9c80d49w6prge6zm9wt46argebrsnzm 2350577 2350576 2026-05-07T05:59:08Z Kateru Zakuro 34522 2350577 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} [[File:Briefumschlag (fcm).jpg|thumb|信封]] ==={{ĐM|pronunciation}}=== {{zh-pron |m=xìnfēng,er=y |m-s=xin4fong1 |c=seon3 fung1 |ca=LL-Q9186-Luilui6666-信封.wav |h=pfs=sin-fûng;hrs=h:sinˇ fungˋ |j=xing3 fung1 |w=sh:5shin fon |mn=ml:sìn-hong |ma=y |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[bao thư|Bao thư]], [[phong bì]] ===={{ĐM|synonyms}}==== * {{zh-l|封套}} {{zh-dial}} ===={{ĐM|descendants}}==== * {{desc|bor=1|pcc|xinqfungy}} * {{desc|bor=1|za|saenqfung}} {{q|dialectal}} 8l16md1loeu9xxtyrcc1324l1oycyoo Seoul 0 253815 2350761 2124816 2026-05-07T08:00:05Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350761 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:South Korea-Seoul.svg|nhỏ|Vị trí '''Seoul''' trên bản đồ Hàn Quốc.]] {{-pron-}} {{vie-pron|Xơ-un}} {{vie-pron|Xê-un}} * Phiên âm tiếng Việt: [[Xơ-un]], [[Xê-un]] {{-place-}} '''Seoul''' # Thành phố [[thủ đô]] của [[Hàn Quốc]]. {{-syn-}} * {{term|Lỗi thời}} [[Hán Thành]], [[Thủ Nhĩ]] {{-trans-}} {{trans-top|Thủ đô Hàn Quốc}} * {{afr}}: {{l|af|Seoel}} {{n}} * {{sqi}}: {{l|sqi|Seoul}} {{m}}, {{l|sqi|Seuli}} {{m}} * {{amh}}: {{l|amh|ሴኡል|tr=seʾul}} {{m}}, {{l|amh|ሶል|tr=sol}} {{m}} * {{eng}}: {{l|eng|Seoul}} * {{cat-2}}: {{l|cat|Seül}} * {{dan}}: {{l|dan|Seoul}} {{n}} * {{deu}}: {{l|deu|Seoul}} {{n}}, {{term|hiếm}} {{l|deu|Söul}} {{n}}, {{l|deu|Soul}} {{n}} * {{est}}: {{l|est|Sŏul}}, {{l|est|Soul}} * {{glg}}: {{l|glg|Seúl}} {{f}} * {{kat}}: {{l|kat|სეული|tr=seuli}} * {{nld}}: {{l|nld|Seoel}} {{n}}, {{l|nld|Seoul}} {{n}} * {{hin}}: {{l|hin|सिऊल|tr=siūl}} {{m}}, {{l|hin|सियूल|tr=siyūl}} {{m}}, {{l|hin|सियोल|tr=siyol}} {{m}} * {{hun}}: {{l|hun|Szöul}} * {{ell}}: {{l|ell|Σεούλ|tr=Seoúl}} {{f}} * {{khm}}: {{l|khm|សេអ៊ូល|tr=seiʼuul}} * {{rus}}: {{l|rus|Сеул|Сеу́л|tr=Seúl}} * {{jpn}}: {{l|jpn|ソウル|tr=Souru}} * {{fra}}: {{l|fra|Séoul}} {{f}} * {{fin}}: {{l|fin|Soul}} * {{epo}}: {{l|epo|Seulo}} * {{ces}}: {{l|ces|Soul}} {{m}} * {{spa}}: {{l|spa|Seúl}} {{m}} * {{swe}}: {{l|swe|Söul}} {{n}}, {{l|swe|Seoul}} {{n}} * {{kor}}: {{l|kor|서울|tr=Seoul}} * {{zho}}: *: {{hak}}: {{l|hak|首爾}}, {{l|hak|首尔|tr=Sú-ngì}}, {{l|hak|漢城}}, {{l|hak|汉城|tr=Hon-sàng}} *: {{cdo}}: {{l|cdo|首爾}}, {{l|cdo|首尔|tr=Siū-ī}}, {{l|cdo|漢城}}, {{l|cdo|汉城|tr=Háng-siàng}} *: {{nan}}: {{l|nan|首爾}}, {{l|nan|首尔|tr=Siú-ní, Siú-jíⁿ}}, {{l|nan|漢城}}, {{l|nan|汉城|tr=Hàn-siâⁿ}} *: {{wuu}}: {{l|wuu|首爾}}, {{l|wuu|首尔|tr=seu er}}, {{l|wuu|漢城}}, {{l|wuu|汉城|tr=hoe zen}} *: {{cmn}}: {{l|cmn|首爾}}, {{l|cmn|首尔|tr=Shǒu’ěr}}, {{l|cmn|漢城}}, {{l|cmn|汉城|tr=Hànchéng}} *: {{yue}}: {{l|yue|首爾}}, {{l|yue|首尔|tr=sau<sup>2</sup> ji<sup>5</sup>}}, {{l|yue|漢城}}, {{l|yue|汉城|tr=hon<sup>3</sup> sing<sup>4</sup>}} * {{uzb}}: {{l|uzb|Seul}} * {{ita}}: {{l|ita|Seul}} {{f}}, {{l|ita|Seoul}} {{f}} {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] {{-eng-}} {{-place-}} '''Seoul''' # Thành phố [[thủ đô]] của [[Hàn Quốc]]. [[Thể loại:Địa danh tiếng Anh]] fwd1djzcnfwnqxe7o5z5fcjobeqkhv1 2351024 2350761 2026-05-07T10:45:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351024 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:South Korea-Seoul.svg|nhỏ|Vị trí '''Seoul''' trên bản đồ Hàn Quốc.]] {{-pron-}} {{vie-pron|Xơ-un}} {{vie-pron|Xê-un}} * Phiên âm tiếng Việt: [[Xơ-un]], [[Xê-un]] {{-place-}} '''Seoul''' # Thành phố [[thủ đô]] của [[Hàn Quốc]]. {{-syn-}} * {{term|Lỗi thời}} [[Hán Thành]], [[Thủ Nhĩ]] {{-trans-}} {{trans-top|Thủ đô Hàn Quốc}} * {{afr}}: {{l|af|Seoel}} {{n}} * {{sqi}}: {{l|sqi|Seoul}} {{m}}, {{l|sqi|Seuli}} {{m}} * {{amh}}: {{l|amh|ሴኡል|tr=seʾul}} {{m}}, {{l|amh|ሶል|tr=sol}} {{m}} * {{eng}}: {{l|eng|Seoul}} * {{cat-old}}: {{l|cat|Seül}} * {{dan}}: {{l|dan|Seoul}} {{n}} * {{deu}}: {{l|deu|Seoul}} {{n}}, {{term|hiếm}} {{l|deu|Söul}} {{n}}, {{l|deu|Soul}} {{n}} * {{est}}: {{l|est|Sŏul}}, {{l|est|Soul}} * {{glg}}: {{l|glg|Seúl}} {{f}} * {{kat}}: {{l|kat|სეული|tr=seuli}} * {{nld}}: {{l|nld|Seoel}} {{n}}, {{l|nld|Seoul}} {{n}} * {{hin}}: {{l|hin|सिऊल|tr=siūl}} {{m}}, {{l|hin|सियूल|tr=siyūl}} {{m}}, {{l|hin|सियोल|tr=siyol}} {{m}} * {{hun}}: {{l|hun|Szöul}} * {{ell}}: {{l|ell|Σεούλ|tr=Seoúl}} {{f}} * {{khm}}: {{l|khm|សេអ៊ូល|tr=seiʼuul}} * {{rus}}: {{l|rus|Сеул|Сеу́л|tr=Seúl}} * {{jpn}}: {{l|jpn|ソウル|tr=Souru}} * {{fra}}: {{l|fra|Séoul}} {{f}} * {{fin}}: {{l|fin|Soul}} * {{epo}}: {{l|epo|Seulo}} * {{ces}}: {{l|ces|Soul}} {{m}} * {{spa}}: {{l|spa|Seúl}} {{m}} * {{swe}}: {{l|swe|Söul}} {{n}}, {{l|swe|Seoul}} {{n}} * {{kor}}: {{l|kor|서울|tr=Seoul}} * {{zho}}: *: {{hak}}: {{l|hak|首爾}}, {{l|hak|首尔|tr=Sú-ngì}}, {{l|hak|漢城}}, {{l|hak|汉城|tr=Hon-sàng}} *: {{cdo}}: {{l|cdo|首爾}}, {{l|cdo|首尔|tr=Siū-ī}}, {{l|cdo|漢城}}, {{l|cdo|汉城|tr=Háng-siàng}} *: {{nan}}: {{l|nan|首爾}}, {{l|nan|首尔|tr=Siú-ní, Siú-jíⁿ}}, {{l|nan|漢城}}, {{l|nan|汉城|tr=Hàn-siâⁿ}} *: {{wuu}}: {{l|wuu|首爾}}, {{l|wuu|首尔|tr=seu er}}, {{l|wuu|漢城}}, {{l|wuu|汉城|tr=hoe zen}} *: {{cmn}}: {{l|cmn|首爾}}, {{l|cmn|首尔|tr=Shǒu’ěr}}, {{l|cmn|漢城}}, {{l|cmn|汉城|tr=Hànchéng}} *: {{yue}}: {{l|yue|首爾}}, {{l|yue|首尔|tr=sau<sup>2</sup> ji<sup>5</sup>}}, {{l|yue|漢城}}, {{l|yue|汉城|tr=hon<sup>3</sup> sing<sup>4</sup>}} * {{uzb}}: {{l|uzb|Seul}} * {{ita}}: {{l|ita|Seul}} {{f}}, {{l|ita|Seoul}} {{f}} {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] {{-eng-}} {{-place-}} '''Seoul''' # Thành phố [[thủ đô]] của [[Hàn Quốc]]. [[Thể loại:Địa danh tiếng Anh]] fw06exvlu8unqcfjv6by8ecl9tbi5j8 Thái Bình Dương 0 253967 2350762 2128075 2026-05-07T08:00:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350762 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etym-}} Phiên âm từ chữ Hán [[太平洋]]. Trong đó [[太平]] (“thái bình”), [[洋]] (“đại dương”). {{-place-}} '''Thái Bình Dương''' # [[đại dương|Đại dương]] lớn [[nhất]] [[thế giới]]. {{-trans-}} {{đầu}} * {{sqi}}: [[Oqeani Paqësor]] {{m}} * {{eng}}: [[Pacific Ocean]] * {{cat-2}}: [[Oceà Pacífic]] {{m}} {{cuối}} {{-see also-}} {{Đại dương/vie}} [[Thể loại:Địa danh tiếng Việt]] 816yrdg5tv4fp1e4hkqagil3047i86k 2351025 2350762 2026-05-07T10:45:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351025 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etym-}} Phiên âm từ chữ Hán [[太平洋]]. Trong đó [[太平]] (“thái bình”), [[洋]] (“đại dương”). {{-place-}} '''Thái Bình Dương''' # [[đại dương|Đại dương]] lớn [[nhất]] [[thế giới]]. {{-trans-}} {{đầu}} * {{sqi}}: [[Oqeani Paqësor]] {{m}} * {{eng}}: [[Pacific Ocean]] * {{cat-old}}: [[Oceà Pacífic]] {{m}} {{cuối}} {{-see also-}} {{Đại dương/vie}} [[Thể loại:Địa danh tiếng Việt]] 1hnohqhb4jgwkvj1temrq6m5sj57fij 仕女 0 254125 2350573 2000576 2026-05-07T05:46:38Z Kateru Zakuro 34522 2350573 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìnǚ |mn=sū-lí |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[Người]] [[đàn bà]] [[đứng tuổi]] [[tuyệt]] [[đẹp]] ===={{ĐM|derived terms}}==== {{col3|zh|仕女圖|仕女畫}} kt9qoxqnn195qe1zd9fuch6pwqlkuk3 2350574 2350573 2026-05-07T05:47:40Z Kateru Zakuro 34522 2350574 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìnǚ |mn=sū-lí |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[sĩ nữ]] ===={{ĐM|derived terms}}==== {{col3|zh|仕女圖|仕女畫}} fuxjqimxi9ybfbwze7vlg4yr3rhprp4 光芒 0 254794 2350618 2002545 2026-05-07T06:43:16Z Kateru Zakuro 34522 2350618 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=guāngmáng |c=gwong1 mong4 |ca=LL-Q9186 (yue)-Luilui6666-光芒.wav |h=pfs=kông-mòng |mn=kong-bông |mc=1,2 |oc=1,1;2,1 |ma=Zh-guangmáng.ogg |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # {{lb|zh|văn học}} [[tia|Tia]] [[sáng]] #: {{zh-x|光芒 四射|'''tia sáng''' tỏa ra mọi phía}} ===={{ĐM|synonyms}}==== * {{s|tia sáng}} {{zh-l|光線}} ===={{ĐM|derived terms}}==== {{col3|zh|光芒萬丈}} ===={{ĐM|descendants}}==== {{CJKV||こうぼう|광망}} {{cat|cmn|Advanced Mandarin}} {{C|zh|Ánh sáng}} r9g2xuccfvjakxqs8ts65zidfqyzujq 佩蘭 0 254826 2350575 2065279 2026-05-07T05:50:08Z Kateru Zakuro 34522 2350575 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|s=佩兰}} {{zh-wp|zh:佩蘭 (植物)}} [[File:Cây Mần tưới (Eupatorium fortunei) 2.JPG|250px|thumb|Bội lan]] ==={{ĐM|pronunciation}}=== {{zh-pron |m=pèilán |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[bội lan|Bội lan]] =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=패란}} # {{hanja form of|패란}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{han tu form of|bội lan}} m1w3wk167phbb91bopg3bxwnpqm6asj Paris 0 255151 2350763 2020134 2026-05-07T08:00:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350763 wikitext text/x-wiki {{-mul-}} [[Tập tin:Paris quadrifolia 1 beentree.jpg|nhỏ|''[[Paris quadrifolia|'''Paris''' quadrifolia]].'']] {{-pr-noun-}} '''Paris''' {{f}} # [[danh pháp khoa học|Danh pháp khoa học]] của {{w|chi Trọng lâu}}, một chi thực vật thuộc {{w|họ Hắc dược hoa}} ([[Melanthiaceae]]). [[Thể loại:Danh từ riêng đa ngữ]] {{-vie-}} {{-info-}} [[Tập tin:La Tour Eiffel vue de la Tour Saint-Jacques, Paris août 2014.jpg|nhỏ|Quang cảnh thành phố '''Paris''' bên bờ sông Seine với tháp Eiffel ở đằng xa.]] {{-pron-}} {{vie-pron|Pa-ri}} {{-place-}} '''Paris''' (''phiên âm'' '''[[Pa-ri]]''') # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. {{-syn-}} * [[Ba Lê]] (''lỗi thời'') {{-trans-}} {{trans-top|Thủ đô Pháp}} * {{afr}}: [[Parys#Tiếng Afrikaans|Parys]] * {{eng}}: [[Paris#Tiếng Anh|Paris]] * {{arg}}: [[París#Tiếng Aragon|París]] {{m}} * {{ast}}: [[París#Tiếng Asturias|París]] * {{pol}}: [[Paryż]] {{m}} * {{cat-2}}: [[París#Tiếng Catalan|París]] {{m}} * {{nld}}: [[Parijs]] {{n}} * {{haw}}: [[Palika]] * {{hin}}: [[पेरिस]] (peris) * {{oci}}: [[París#Tiếng Oc|París]] * {{fra}}: [[Paris#Tiếng Pháp|Paris]] * {{ces}}: [[Paříž]] {{f}} * {{spa}}: [[París#Tiếng Tây Ban Nha|París]] {{m}} * {{zho}}: [[巴黎]] (Ba Lê) {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] {{-eng-}} {{-place-}} '''Paris''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. [[Thể loại:Địa danh tiếng Anh]] {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ʁi/}} {{-place-}} '''Paris''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. [[Thể loại:Địa danh tiếng Pháp]] 0um2ryisgiu6uxi0009j3c7fo3p78jy 2351026 2350763 2026-05-07T10:45:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351026 wikitext text/x-wiki {{-mul-}} [[Tập tin:Paris quadrifolia 1 beentree.jpg|nhỏ|''[[Paris quadrifolia|'''Paris''' quadrifolia]].'']] {{-pr-noun-}} '''Paris''' {{f}} # [[danh pháp khoa học|Danh pháp khoa học]] của {{w|chi Trọng lâu}}, một chi thực vật thuộc {{w|họ Hắc dược hoa}} ([[Melanthiaceae]]). [[Thể loại:Danh từ riêng đa ngữ]] {{-vie-}} {{-info-}} [[Tập tin:La Tour Eiffel vue de la Tour Saint-Jacques, Paris août 2014.jpg|nhỏ|Quang cảnh thành phố '''Paris''' bên bờ sông Seine với tháp Eiffel ở đằng xa.]] {{-pron-}} {{vie-pron|Pa-ri}} {{-place-}} '''Paris''' (''phiên âm'' '''[[Pa-ri]]''') # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. {{-syn-}} * [[Ba Lê]] (''lỗi thời'') {{-trans-}} {{trans-top|Thủ đô Pháp}} * {{afr}}: [[Parys#Tiếng Afrikaans|Parys]] * {{eng}}: [[Paris#Tiếng Anh|Paris]] * {{arg}}: [[París#Tiếng Aragon|París]] {{m}} * {{ast}}: [[París#Tiếng Asturias|París]] * {{pol}}: [[Paryż]] {{m}} * {{cat-old}}: [[París#Tiếng Catalan|París]] {{m}} * {{nld}}: [[Parijs]] {{n}} * {{haw}}: [[Palika]] * {{hin}}: [[पेरिस]] (peris) * {{oci}}: [[París#Tiếng Oc|París]] * {{fra}}: [[Paris#Tiếng Pháp|Paris]] * {{ces}}: [[Paříž]] {{f}} * {{spa}}: [[París#Tiếng Tây Ban Nha|París]] {{m}} * {{zho}}: [[巴黎]] (Ba Lê) {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] {{-eng-}} {{-place-}} '''Paris''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. [[Thể loại:Địa danh tiếng Anh]] {{-fra-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/pa.ʁi/}} {{-place-}} '''Paris''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Pháp]]. [[Thể loại:Địa danh tiếng Pháp]] 1bwidpop5nqfatj5hkse7ihjo7102pb 0 255610 2350527 2022322 2026-05-06T16:53:44Z Kateru Zakuro 34522 2350527 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=48|rad=工|as=03|sn=6|four=|canj=SSN,XSSN|ids=⿱巨𠃍}} ===={{ĐM|references}}==== * {{Han ref|kx=0325.171|dj=0629.040|hdz=10082.051|uh=5DEA}} 2jzo98kfvbf4j4ytgv733vncw1f3l0u 世子 0 255719 2350528 2003722 2026-05-06T16:58:35Z Kateru Zakuro 34522 2350528 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} {{wp|zh:,yue:,nan:sè-chú}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=shìzǐ |c=sai3 zi2 |mn=tw:sè-chú |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[thế tử|Thế tử]] ===={{ĐM|synonyms}}==== {{syn-saurus|zh|王儲}} ===={{ĐM|descendants}}==== {{CJKV||せいし|세자|thế tử}} {{C|zh|Monarchy|People}} =={{langname|ja}}== {{ja-kanjitab|せい|し|yomi=on}} ==={{ĐM|alternative forms}}=== * {{l|ja|世嗣}} ==={{ĐM|pronunciation}}=== {{ja-pron|せいし|acc=1|acc_ref=DJR}} ==={{ĐM|noun}}=== {{ja-noun|せいし}} # Người [[thừa kế]] hoặc [[kế vị]] của một người quan trọng như [[hoàng đế]], [[lãnh chúa]] hoặc [[daimyo]] ===={{ĐM|synonyms}}==== * {{ja-r|世継ぎ|よつぎ}} ==={{ĐM|ref}}=== <references /> :* {{R:Kanjipedia Kotoba|0003822400}} =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=세자}} # {{hanja form of|세자|[[thái tử]]}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|thế tử}} 1u3kmv47u85du2ptqmc085mw1a0ztrr 元子 0 255720 2350608 2065123 2026-05-07T06:33:45Z Kateru Zakuro 34522 2350608 wikitext text/x-wiki =={{langname|zh}}== ==={{ĐM|pronunciation}}=== {{zh-pron|m=yuánzǐ}} ==={{ĐM|noun}}=== {{head|zh|Danh từ}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. {{mẫu}} 5uu4ym6al5e6f53c1jmj6zrl0s9qgyg 2350609 2350608 2026-05-07T06:33:54Z Kateru Zakuro 34522 2350609 wikitext text/x-wiki =={{langname|zh}}== ==={{ĐM|pronunciation}}=== {{zh-pron|m=yuánzǐ}} ==={{ĐM|noun}}=== {{head|zh|Danh từ}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. mqmgl2pefc19rwx1ntfrdcxwfvlq89b 2350615 2350609 2026-05-07T06:40:41Z Hiyuune 50834 /* Cách phát âm */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350615 wikitext text/x-wiki =={{langname|zh}}== ==={{ĐM|pronunciation}}=== {{zh-pron|m=yuánzǐ|cat=n}} ==={{ĐM|noun}}=== {{head|zh|Danh từ}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. o22x8n532w4nf5l1689ls8b80ulvitm 2350616 2350615 2026-05-07T06:42:00Z Hiyuune 50834 2350616 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|げん|し|yomi=o}} ==={{DM|pronunciation}}=== {{ja-pron|げんし|acc=0}} ==={{ĐM|n}}=== {{ja-noun|げんし}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. =={{langname|zh}}== ==={{ĐM|pronunciation}}=== {{zh-pron|m=yuánzǐ|cat=n}} ==={{ĐM|noun}}=== {{head|zh|Danh từ}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. ixqtyczk5vefy6t785d32s9jgdrcrm0 2350617 2350616 2026-05-07T06:42:07Z Hiyuune 50834 /* {{langname|ja}} */ 2350617 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|げん|し|yomi=o}} ==={{ĐM|pronunciation}}=== {{ja-pron|げんし|acc=0}} ==={{ĐM|n}}=== {{ja-noun|げんし}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. =={{langname|zh}}== ==={{ĐM|pronunciation}}=== {{zh-pron|m=yuánzǐ|cat=n}} ==={{ĐM|noun}}=== {{head|zh|Danh từ}} # [[con trai|Con trai]] cả của [[hoàng đế]] và các [[lãnh chúa]] [[phong kiến]]. mg8e342wzho2mv38136lpg7zzu6ybra Mô đun:languages/data/2 828 256179 2350488 2349204 2026-05-06T14:41:53Z TheHighFighter2 42988 2350488 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", "Tiếng Ả Rập", "Ả Rập", translit = {Arab = "ar-translit"}, entry_name = {Arab = "ar-entryname"}, -- put Judeo-Arabic (Hebrew-script Arabic) 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["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", entry_name = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standardChars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. 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-eas", "Beng, Newa", "Tiếng Bengal", "Bengal", ancestors = "inc-mbn", 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", 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", "Tiếng Igbo", "Igbo", 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", entry_name = {remove_diacritics = c.grave .. c.acute .. c.tilde}, sort_key = { from = {"ą", "č", "ę", "ė", "į", "y", "š", "ų", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "i" .. p[1], "i" .. p[2], "s" .. p[1], "u" .. p[1], "u" .. p[2], "z" .. p[1]} }, standardChars = "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", entry_name = { -- 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]} }, standardChars = "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 Macedoni", 9296, "zls", "Cyrl", "Tiếng Macedoni", "Macedoni", 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 = "inc-opa", 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, Cyrs, Brai", "Tiếng Nga", "Nga", ancestors = "zle-mru", translit = {Cyrl = "ru-translit"}, display_text = { from = {"'"}, to = {"’"} }, entry_name = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, sort_key = { from = { "ё", "ѣ̈", "я̈", -- 2 chars "і", "ѣ", "ѳ", "ѵ" -- 1 char }, to = { "е" .. p[1], "ь" .. p[2], "я" .. p[1], "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, standardChars = { 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", --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 = "Brah-translit", Deva = "sa-translit", Gujr = "sa-Gujr-translit", Java = "sa-Java-translit", Khmr = "pi-translit", Knda = "sa-Knda-translit", Lana = "pi-translit", Laoo = "pi-translit", Mlym = "sa-Mlym-translit", Modi = "sa-Modi-translit", Mong = "Mong-translit", ["mnc-Mong"] = "mnc-translit", ["xwo-Mong"] = "xal-translit", Mymr = "pi-translit", Orya = "sa-Orya-translit", Sinh = "si-translit", Taml = "sa-Taml-translit", Telu = "sa-Telu-translit", Thai = "pi-translit", Tibt = "Tibt-translit", }, display_text = { Mong = s["Mong-displaytext"], Tibt = s["Tibt-displaytext"], }, entry_name = { Mong = s["Mong-entryname"], Tibt = s["Tibt-entryname"], 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 = { Tibt = "Tibt-sortkey", { -- 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~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, }, } 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", translit = {Sind = "Sind-translit"}, entry_name = { ["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 = {"ˈ"} }, entry_name = {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]} }, standardChars = "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", "Tiếng Serbia-Croatia", "Serbia-Croatia", wikimedia_codes = "sh, bs, hr, sr", entry_name = { 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 = { 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 = { from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standardChars = { 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", entry_name = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"} }, sort_key = { remove_diacritics = c.tilde .. c.dotabove .. c.diaer .. c.ringabove .. c.ringbelow .. c.ogonek, from = {"č", "š", "ž"}, to = {"c" .. p[1], "s" .. p[1], "z" .. p[1]} }, standardChars = "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", entry_name = {remove_diacritics = c.acute}, } m["so"] = { "tiếng Somali", 13275, "cus-som", "Latn, Arab, Osma", "Tiếng Somali", "Somali", entry_name = {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", entry_name = {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", entry_name = {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, entry_name = {remove_diacritics = c.grave .. c.acute}, 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, 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", entry_name = {remove_diacritics = c.macron}, 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, entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ}}, standardChars = { 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", entry_name = {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] } }, standardChars = "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"}, override_translit = true, 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", entry_name = {remove_diacritics = c.grave .. c.acute}, sort_key = { from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standardChars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. 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]} }, }, } 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", entry_name = {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", entry_name = {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", entry_name = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") f2cwdni3fs2yu5k4nre632vffcot9u7 2350586 2350488 2026-05-07T06:09:25Z TheHighFighter2 42988 2350586 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", "Tiếng Ả Rập", "Ả Rập", translit = {Arab = "ar-translit"}, entry_name = {Arab = "ar-entryname"}, -- put Judeo-Arabic (Hebrew-script Arabic) 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["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", entry_name = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standardChars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. 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-eas", "Beng, Newa", "Tiếng Bengal", "Bengal", ancestors = "inc-mbn", 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", 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", entry_name = {remove_diacritics = c.grave .. c.acute .. c.tilde}, sort_key = { from = {"ą", "č", "ę", "ė", "į", "y", "š", "ų", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "i" .. p[1], "i" .. p[2], "s" .. p[1], "u" .. p[1], "u" .. p[2], "z" .. p[1]} }, standardChars = "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", entry_name = { -- 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]} }, standardChars = "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 Macedoni", 9296, "zls", "Cyrl", "Tiếng Macedoni", "Macedoni", 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 = "inc-opa", 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, Cyrs, Brai", "Tiếng Nga", "Nga", ancestors = "zle-mru", translit = {Cyrl = "ru-translit"}, display_text = { from = {"'"}, to = {"’"} }, entry_name = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, sort_key = { from = { "ё", "ѣ̈", "я̈", -- 2 chars "і", "ѣ", "ѳ", "ѵ" -- 1 char }, to = { "е" .. p[1], "ь" .. p[2], "я" .. p[1], "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, standardChars = { 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", --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 = "Brah-translit", Deva = "sa-translit", Gujr = "sa-Gujr-translit", Java = "sa-Java-translit", Khmr = "pi-translit", Knda = "sa-Knda-translit", Lana = "pi-translit", Laoo = "pi-translit", Mlym = "sa-Mlym-translit", Modi = "sa-Modi-translit", Mong = "Mong-translit", ["mnc-Mong"] = "mnc-translit", ["xwo-Mong"] = "xal-translit", Mymr = "pi-translit", Orya = "sa-Orya-translit", Sinh = "si-translit", Taml = "sa-Taml-translit", Telu = "sa-Telu-translit", Thai = "pi-translit", Tibt = "Tibt-translit", }, display_text = { Mong = s["Mong-displaytext"], Tibt = s["Tibt-displaytext"], }, entry_name = { Mong = s["Mong-entryname"], Tibt = s["Tibt-entryname"], 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 = { Tibt = "Tibt-sortkey", { -- 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~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, }, } 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", translit = {Sind = "Sind-translit"}, entry_name = { ["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 = {"ˈ"} }, entry_name = {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]} }, standardChars = "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", "Tiếng Serbia-Croatia", "Serbia-Croatia", wikimedia_codes = "sh, bs, hr, sr", entry_name = { 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 = { 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 = { from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standardChars = { 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", entry_name = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"} }, sort_key = { remove_diacritics = c.tilde .. c.dotabove .. c.diaer .. c.ringabove .. c.ringbelow .. c.ogonek, from = {"č", "š", "ž"}, to = {"c" .. p[1], "s" .. p[1], "z" .. p[1]} }, standardChars = "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", entry_name = {remove_diacritics = c.acute}, } m["so"] = { "tiếng Somali", 13275, "cus-som", "Latn, Arab, Osma", "Tiếng Somali", "Somali", entry_name = {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", entry_name = {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", entry_name = {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, entry_name = {remove_diacritics = c.grave .. c.acute}, 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, 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", entry_name = {remove_diacritics = c.macron}, 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, entry_name = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ}}, standardChars = { 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", entry_name = {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] } }, standardChars = "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"}, override_translit = true, 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", entry_name = {remove_diacritics = c.grave .. c.acute}, sort_key = { from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standardChars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. 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]} }, }, } 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", entry_name = {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", entry_name = {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", entry_name = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") tut3p7mb61xgmx9yjki6awhzckmfo11 Thảo luận Thành viên:Kateru Zakuro 3 256634 2350463 2349079 2026-05-06T13:46:24Z Hiyuune 50834 /* Mô đun:headword */ Đề tài mới ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]]) 2350463 wikitext text/x-wiki {{Thành viên:Kateru Zakuro/Trang Chính thành viên/Menu}} ==Hoan nghênh== {| width="100%" cellspacing="2" cellpadding="2" style="background: #F8F8FF; border: 1px solid #ddddee;" |- | colspan="6" style="background: #FFE4B5;" |[[Hình:Nuvola apps kteatime.png|40px]]<big> [[Wiktionary:Giới thiệu|Xin chào]] [[Thành viên:{{PAGENAME}}|{{PAGENAME}}]]!</big> |- | colspan="6" style="padding-left: 30px"| [[Hình:Nuvola apps bookcase.png|24px]] [[Wiktionary|Wiktionary tiếng Việt]] đến nay đã có '''{{formatnum:243272}}''' mục từ, đó là kết quả đóng góp quý báu của rất nhiều thành viên trong Wiktionary, mà mọi người đều bắt đầu như bạn. Bạn đã khởi đầu rất tốt và mong rằng bạn sẽ mang đến những [[Đặc biệt:Đóng góp/{{PAGENAME}}|đóng góp]] có giá trị cho quyển từ điển mở này. |- | colspan="6" style="padding-left: 130px"| [[Hình:Nuvola apps edu languages.svg|60px]] |- | colspan="6" style="padding-left: 30px"| Mời bạn [[Wiktionary:Trang thành viên|giới thiệu về bản thân]] tại trang [[Thành viên:{{PAGENAME}}]].<br>Khi thảo luận, bạn nhớ ký tên bằng cách dùng 4 dấu ngã <nowiki>~~~~</nowiki>!. |- | colspan="3" width="50%" style="padding-left: 30px"| <font color="red"><big> Bạn hãy nhớ các nguyên tắc</big></font><br> [[Hình:Nuvola apps important.svg|20px]] [[Từ điển|chỉ viết những gì thuộc từ điển]], <br> [[Hình:Nuvola apps digikam.png|20px]] không truyền lên hình ảnh thiếu nguồn gốc, <br> [[Hình:Red copyright.svg|20px]] [[Wiktionary:Quyền tác giả|không vi phạm quyền tác giả]]. | colspan="3" width="50%" style="padding-left: 30px"| <font color="green"><big>Đầu tiên bạn nên mạnh dạn</big></font> <br> [[Hình:Nuvola apps keyboard.png|20px]] [[Trợ giúp:Tìm kiếm|thử mọi liên kết mà bạn muốn]],<br> [[Hình:Nuvola apps kig.png|20px]] viết thử thoải mái [[Wiktionary:Chỗ thử|tại đây]],<br> [[Hình:Gnome-help.svg|20px]] [[Wiktionary:Bàn giúp đỡ|đề nghị giúp đỡ của bất cứ ai]]. |- |colspan="6" style="padding-left: 30px"| Những chỉ dẫn có ích: [[Wiktionary:Câu thường hỏi|các câu thường hỏi]], [[Wiktionary:Viết trang mới|cách viết mục từ mới]], [[Trợ giúp:Sửa đổi|soạn thảo mục từ]], và [[Trợ giúp:Mục lục|những hướng dẫn khác]].<br> '''Welcome''' to the Vietnamese Wiktionary, and thank you for registering! If you do not speak Vietnamese, feel free to use our [[Wiktionary:Guestbook for non-Vietnamese speakers|guestbook for non-Vietnamese speakers]].<br> ¡'''Bienvenido''' al Wikcionario vietnamita y gracias por registrarse! Si usted no habla vietnamita, puede utilizar nuestro [[Wiktionary:Guestbook for non-Vietnamese speakers|libro de visitas para los hablantes no vietnamitas]]. |- | colspan="6" style="border-top:2px solid #faecc8;" | Lời khuyên cuối cùng, bạn hãy làm lần lượt: [[Wiktionary:Chỗ thử|thử]], [[Wiktionary:Chào mừng người mới đến|đọc]], [[Wiktionary:Bàn giúp đỡ|hỏi]] rồi hẵng [[Wiktionary:Viết trang mới|viết]]. Chúc bạn thành công. |}&nbsp;[[Thành viên:Huỳnh Nhân-thập|'''<tt><span style="color:#4169e1;">Ios.</span></tt>''']] ([[Thảo luận Thành viên:Huỳnh Nhân-thập|thảo luận]]) 09:28, ngày 4 tháng 2 năm 2020 (UTC) == Thư mời == Mời bạn tham gia [[Thảo luận Wiktionary:Hành chính viên|BQ chọn hành chính viên]]. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 08:23, ngày 11 tháng 12 năm 2020 (UTC) == [[Mô đun:Unicode data]] == Chào bạn. Không biết khi nào bạn sửa xong nó nhỉ? Mong nhận được phản hồi của bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:25, ngày 13 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Em cố gắng sửa lỗi bằng cách thêm mô đun còn thiếu nhưng có vẻ mã nguồn gốc bên en nó không tương thích bên đây nên bị lỗi hiện không biết sửa sao nữa, mong anh thông cảm, nhờ người khác ạ.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 05:06, ngày 14 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Cái này sửa được nhưng thiếu nhiều mô đun quá. Nhờ anh chép hết [https://en.wiktionary.org/wiki/Special:PrefixIndex/Module:Unicode_data/ toàn bộ mô đun con này sang đây] thì may ra hết lỗi, do quá nhiều nên em chắc làm không nổi.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 05:15, ngày 14 tháng 7 năm 2021 (UTC) == [[Bản mẫu:character info]] == Chào bạn. Bản mẫu này có một lỗi: Khi nhúng vào các trang khác thì không dùng chuột để nhấn vào được. Bạn qua đây xem xét lỗi một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:25, ngày 18 tháng 7 năm 2021 (UTC) :À thôi, lỗi hết rồi. Xin lỗi vì đã làm phiền bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:31, ngày 18 tháng 7 năm 2021 (UTC) ::Xin lỗi vì đã làm phiền bạn một lần nữa. Hóa ra là tùy trình duyệt bạn à. Dùng Google Chrome không nhấn chuột để vào được. Bạn qua đây xem xét lỗi một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:17, ngày 19 tháng 7 năm 2021 (UTC) ::{{u|Ccv2020}} Cái này thật ra là lỗi của hệ thống Tab theo ngôn ngữ của Wiktionary tiếng Việt. Từ lâu chúng ta đã sử dụng hệ thống Tab trang theo ngôn ngữ, thực hiện chuyển đổi đề mục cấp 2 theo ngôn ngữ kiểu <pre>==Tiếng Việt==</pre> thành Tab "Việt" bên trái anh đã thấy, nhưng vấn đề là nó không hoạt động tốt, đặc biệt là những bản mẫu được đặt ngoài phạm vi nội dung Tab phân theo ngôn ngữ, vì thế khi đặt bên ngoài nó vẫn hiển thị nhưng không dùng được.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:30, ngày 19 tháng 7 năm 2021 (UTC) Em cũng không biết sửa sao, anh nên hỏi những người từ đầu thành lập hay lập trình Wiktionary tiếng Việt có lẽ sẽ có cách, hoặc không được thì chịu hoặc thực hiện '''cách mà em không muốn''': '''Gọi Meta đề xuất họ sao lưu dữ liệu bài viết và trang lại, sau đó cài lại Mediawiki như bên en rồi nhập dữ liệu vào'''.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:30, ngày 19 tháng 7 năm 2021 (UTC) :Hic… Thôi chắc tạm thời tắt tính năng “Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ” (mục Tiên ích) vậy. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:42, ngày 19 tháng 7 năm 2021 (UTC) ::Nên đề nghị tắt ba cái tab đi, rõ là thấy rườm rà, không có ích lợi gì. [[Thành viên:P.T.Đ|P.T.Đ]] ([[Thảo luận Thành viên:P.T.Đ|thảo luận]]) 17:40, ngày 19 tháng 7 năm 2021 (UTC) :::{{u|P.T.Đ}}: Tôi nghĩ là các tài khoản mới trong tương lai sẽ không bật sẵn tính năng tôi đã nêu trên. Muốn làm vậy thì phải qua đâu để nhờ các kỹ thuật viên làm vậy? [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:47, ngày 20 tháng 7 năm 2021 (UTC) ::@[[Thành viên:Ccv2020|Ccv2020]]: Các thông tin về ký tự không thuộc về ngôn ngữ nào nên được sắp xếp vào phần "Chữ x", thí dụ {{LKBM|-Hani-}} là "Chữ Hán". Đối với ký tự không thuộc về một hệ thống viết cụ thể thì có thể đưa vào phần {{LKBM|-mul-}} ("Đa ngôn ngữ"). – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 06:17, ngày 14 tháng 10 năm 2021 (UTC) == Về giao diện Wiktionary phiên bản di động == Chào bạn. Tôi thấy giao diện di động của Wiktionary có vấn đề: phần ví dụ tra cứu bị lỗi không tải được, chỉ hiện chữ “đang tải…” thôi. Mong bạn dành chút thời gian xem xét và sửa lỗi, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:08, ngày 21 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Không sửa lỗi được vì cái phần đó trên di động là phần tĩnh, không động được nên nó mới vậy. Em cũng đã làm xong [[Bản mẫu:Trang Chính 2]] rồi, bạn xem qua rồi có gì áp dụng luôn cũng được, coi như là '''viện trợ không cần hoàn vốn từ Trung tâm xây dựng Thienhau2003 tại Wikipedia tiếng Việt''' của em nhé.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 02:21, ngày 21 tháng 7 năm 2021 (UTC) <nowiki>:</nowiki>), OK bạn. Tôi sẽ xem xét giao diện này. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:38, ngày 21 tháng 7 năm 2021 (UTC) == [[;]] == Tôi không tạo được trang này vì nó có trong danh sách đen. Bên enwiki cũng bị lỗi. Làm thế nào đây bạn? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:08, ngày 9 tháng 8 năm 2021 (UTC) :{{u|Ccv2020}} Cụm từ bị cấm, đây là một trong nhiều [https://helpex.vn/question/nhung-ky-tu-nao-bi-cam-trong-ten-thu-muc-windows-va-linux--5cb7dea2ae03f646703bf39d ký tự đặc biệt trong hệ thống Linux và Windows]. Nên không thể tạo được. Rất tiếc.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 09:20, ngày 2 tháng 9 năm 2021 (UTC) == [[𬖾]] == Chào bạn. Mục từ này dù đang chứa {{tl|cảnh báo Unicode}}, nhưng [[:Thể loại:Mục từ Unicode cần chú ý]] không chứa trang này. Phiền bạn qua đây xử lý một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:19, ngày 23 tháng 8 năm 2021 (UTC) :Thôi, mình chữa được lỗi rồi. Xin lỗi vì đã làm phiền bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 23:41, ngày 25 tháng 8 năm 2021 (UTC) == [[Mô đun:character info]] == Chào bạn. Bạn có thể dịch giúp mình dòng 119 ( cat_name = script_name .. " script characters") được không bạn? Mình sửa nhưng nó cứ báo lỗi. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:55, ngày 24 tháng 9 năm 2021 (UTC) == Phụ lục:… == Lúc mình tạo ra những trang đó, mình mới phát hiện ra là Wiktionary tiếng Việt '''không''' có không gian tên “Phụ lục”. Có cách nào để yêu cầu thêm không gian tên này vào Wiktionary tiếng Việt không? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 04:44, ngày 31 tháng 10 năm 2021 (UTC) :{{u|Ccv2020}} Cái này thì phải đề xuất lên https://phabricator.wikimedia.org/ để họ nhập không gian tên mới về. Nhưng nên tham khảo ý kiến các thành viên khác, đặc biệt là BQV, có đồng thuận rồi thì mới nên tiến hành.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 06:40, ngày 31 tháng 10 năm 2021 (UTC) ::Vậy thì bạn giúp mình được không? Sắp tới mình thi nên sẽ hạn chế hoạt động. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:37, ngày 31 tháng 10 năm 2021 (UTC) :::Cái này cần biểu quyết, đúng không nhỉ… [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:40, ngày 23 tháng 11 năm 2021 (UTC) == Lỗi == Chào bạn. Hiện có nhiều trang có lỗi ở mục "dịch", vd như trang [[dương cầm|này]]. Không biết bạn có thể khắc phục được không? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:16, ngày 10 tháng 11 năm 2021 (UTC) :{{u|TheHighFighter2}} Bó tay, bản mẫu ở đây quá lỗi thời nên sửa kiểu nào cũng "hết lỗi chỗ này thì lại lỗi chỗ khác".--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:41, ngày 10 tháng 11 năm 2021 (UTC) == BQV == Bạn muốn làm BQV ở đây không? Tôi nghĩ bạn phù hợp với vị trí đó. Bạn có thể ra ứng cử. Sau 1 tuần, nếu bạn có vài phiếu ok thì tôi sẽ cấp quyền BQV cho bạn. Làm BQV ở đây lấy kinh nghiệm. Sau này, ứng cử làm BQV ở Wikipedia dễ hơn. Chắc vài năm nữa khi bạn tốt nghiệp và có nhiều thời gian hơn. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 04:06, ngày 3 tháng 12 năm 2021 (UTC) :{{ping|Nguyentrongphu}} Mời cho ý kiến tại [[Thảo luận Wiktionary:Bảo quản viên#Kateru Zakuro]]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:16, ngày 3 tháng 12 năm 2021 (UTC) :{{ping|Nguyentrongphu}} Em đã ra ứng cử và đã hơn 1 tuần rồi. Mong anh thực hiện đúng lời trên, cảm ơn.--[[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]]) 01:50, ngày 6 tháng 12 năm 2021 (UTC) == Tạo bản mẫu tính số mục từ Unicode == Chào bạn. Bạn có cách nào tạo ra bản mẫu tính số mục từ Unicode (những mục từ chỉ dùng 1 ký tự trên tiêu đề) không? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:29, ngày 12 tháng 12 năm 2021 (UTC) == [[Thành viên:Ccv2020/Nháp MediaWiki 1]] == Nhờ bạn xóa trang này, cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:00, ngày 15 tháng 12 năm 2021 (UTC) == Thẻ ngôn ngữ == Tôi đang nghiên cứu về lỗi mà bạn [[Đặc biệt:Khác/2037419|đã đề cập đến]] khi tắt chức năng thẻ ngôn ngữ. Phần âm thanh không hiển thị trong mục từ nào? Tôi đã xem "[[dictionary]]" (sử dụng {{LKBM|pron-audio}}) và "[[ăn tết]]" ({{LKBM|âm thanh}}); hình như cả hai bản mẫu này vẫn hoạt động tốt khi bật chức năng thẻ. Có phải lỗi này tùy theo trình duyệt hay tiện ích khác không? Đây là chức năng quan trọng của Wiktionary vì phần nhiều người chỉ quan tâm đến một ngôn ngữ và bố trí mục từ mặc định có vẻ khó sử dụng. Tiện ích này phỏng theo [[:en:MediaWiki:Gadget-TabbedLanguages.js|tiện ích tại Wiktionary tiếng Anh]], nhưng [[:en:MediaWiki talk:Gadget-TabbedLanguages.js#Vietnamese version|tiện ích tiếng Việt có nhiều lợi điểm hơn]]. Mai mốt có lẽ [[mw:Reading/Web/Desktop Improvements/Third prototype testing/vi|Vectơ sẽ thu nhỏ các phần ngôn ngữ]] thì không cần tạo thẻ nữa, nhưng tiện ích này sẽ vẫn có ích vì gắn neo ngôn ngữ (<code>#Tiếng Anh</code>) vào các liên kết nội bộ. Nếu không có thì chúng ta phải mất công thêm ngôn ngữ thủ công dùng {{LKBM|l}}. &ndash;&nbsp;[[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 20:56, ngày 17 tháng 12 năm 2021 (UTC) :{{u|Mxn}} Có 2 lý do tắt: :* Mặc dù cái này có lợi nhưng vì đây là Wiki, tôi muốn giữ cho trang Wiki '''truyền thống giống như các trang bách khoa toàn thư''' chứ không phải là một trang web tra cứu mục từ. Hầu như không có Wiktionary nào bặt mặc định tính năng này cả. :* Nếu anh để ý, truy cập vào [[Wiktionary#Tiếng_Việt]] rồi sau đó chuyển lại sang tiếng Anh thì phần âm thanh không chạy được mà hiện một cái dải xám. Lỗi này có thể sửa được bằng cách load lại trang. Vì lỗi này không chỉ Wiktionary tiếng Việt mà cả bên Wiktionary tiếng Anh cũng bị lỗi nên lỗi này không quá nghiêm trọng. :*Tôi muốn hạn chế tải các thành phần không cần thiết để trang mục từ load nhanh và nhẹ hơn. --[[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]]) 05:53, ngày 18 tháng 12 năm 2021 (UTC) :<p>Điều quan trọng nhất là người dùng có thể tra cứu, sửa đổi nội dung một cách tiện lợi. Từ điển Wiktionary không có trang tra cứu mục từ thì làm sao gọi là từ điển được? Tôi chưa biết đến Wiktionary nào bố trí các mục từ "như các trang bách khoa toàn thư". Wiktionary cần chức năng quản lý các phần ngôn ngữ trong mục từ vì một mục từ có thể có ý nghĩa trong nhiều ngôn ngữ, chẳng hạn "[[voi]]", "[[pan]]", "[[la]]". Wikipedia không có nhu cầu này. :<p>Đúng là chỉ có Wiktionary tiếng Việt [[m:Gadgets/wiktionary/default|kích hoạt TabbedLanguages theo mặc định]]. (Wiktionary tiếng Ba Tư kích hoạt một phiên bản hỏng của TabbedLanguages theo mặc định.) Năm 2012, Wiktionary tiếng Anh [[:en:Wiktionary:Votes/2012-10/Enabling Tabbed Languages|quyết định kích hoạt TabbedLanguages]], nhưng quyết định này bị trì hoãn mãi vì một số vấn đề tôi đã khắc phục trong phiên bản tại đây. Dù TabbedLanguages không được kích hoạt tại Wiktionary khác, nhưng nhiều người vẫn tuyển chọn kích hoạt nó thủ công. Hiện tại nó [[m:Gadgets/wiktionary|xếp hạng thứ 7 theo người dùng]], không kể những người dùng tại wiki này hoặc người sử dụng script người dùng [[:en:User:Yair rand/TabbedLanguages2.js|TabbedLanguages2]]. Thống kê này có nghĩa rằng thẻ ngôn ngữ rất có ích đối với người đã biết đến tiện ích, chưa kể những người chưa biết đến nó. :<p>Tôi rất ngạc nhiên khi đọc rằng TabbedLanguages có ảnh hưởng đến thời gian tải trang. Đây là một tiện ích '''rất''' nhỏ so với các tiện ích khác, nhỏ hơn cả CommentsInLocalTime. Ngoài ra, [[mw:ResourceLoader|ResourceLoader]] tự động nén mã nguồn thành 5,7&nbsp;kilôbyte [https://vi.wiktionary.org/w/load.php?lang=vi&modules=ext.gadget.TabbedLanguages&skin=vector&version=4nlvy] (nhỏ bằng [[:Tập tin:Brockhaus and Efron Encyclopedic Dictionary b72 889-2.jpg|hình này]]), và trình duyệt tự động đưa mã nguồn vào vùng nhớ đệm. Còn thời gian kết xuất cũng không sao. Tôi đã thử xóa sạch vùng nhớ đệm và tải lại "[[voi]]" 10 lần trong trình duyệt của tôi (Firefox 95, macOS 10.13, MacBook Pro 2,6&nbsp;GHz năm 2013) với các tiện ích mặc định. Theo thẻ Hiệu suất của công cụ nhà phát triển Firefox, TabbedLanguages chỉ tốn trung bình vào khoảng 183&nbsp;mili&nbsp;giây trên tổng số 904&nbsp;mili&nbsp;giây để kết xuất trang. Phần lớn là do trình duyệt phải bố trí lại các phần tử DOM. Dĩ nhiên thời gian kết xuất tùy theo trình duyệt và máy tính, nhưng coi như không có vấn đề đáng kể. :<p>Tôi rất mừng bạn có cơ hội và ý định cải tiến và hiện đại hóa wiki này. Tôi chỉ xin bạn nhớ rằng wiki này có một số đặc tính khác cần kỹ thuật đặc biệt. Mai mốt Wiktionary sẽ [[:en:Wiktionary:Wikidata|sử dụng cơ sở dữ liệu Wikidata]] để lưu trữ các thông tin ngữ nghĩa. Wikidata sẽ đưa rất nhiều mục từ trong rất nhiều ngôn ngữ vào wiki này, chỉ việc nhúng một [https://en.wiktionary.beta.wmflabs.org/wiki/হৃদয় bản mẫu] [https://en.wiktionary.beta.wmflabs.org/wiki/cat đơn giản]. Với mô hình này, chúng ta sẽ phải nghĩ lại nhiều quy định và quá trình, không thể dựa vào kinh nghiệm Wikipedia như ngày xưa. :<p>&nbsp; – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 08:55, ngày 18 tháng 12 năm 2021 (UTC) :Lỗi tại [[Wiktionary#Tiếng Việt]] là lỗi của trình phát âm thanh Kaltura của phần mở rộng [[mw:TimedMediaHandler|TimedMediaHandler]]. Kaltura rất cũ kỹ. Nếu bạn kích hoạt "[[mw:Extension:TimedMediaHandler/VideoJS Player/vi|trình phát video mới]]" trong [[Đặc biệt:Tùy chọn#mw-prefsection-betafeatures|tùy chọn tính năng beta]], trình phát âm thanh sẽ hoạt động tốt trong các thẻ ngôn ngữ. – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 09:53, ngày 18 tháng 12 năm 2021 (UTC) == [[Đặc biệt:Lịch sử/やり方]] == Nhờ bạn xoá tóm lược của IP trong phiên bản đầu tiên của trang. Cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:58, ngày 27 tháng 12 năm 2021 (UTC) == [[⠧]] == Chào bạn. Có lỗi ở 3 bản mẫu: {{tl|-ara-}}, {{tl|-zho-}}, {{tl|-tha-}}. Bạn xem có vấn đề gì và chữa lại giúp. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 13:13, ngày 27 tháng 12 năm 2021 (UTC) == How we will see unregistered users == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin=content/> Hi! You get this message because you are an admin on a Wikimedia wiki. When someone edits a Wikimedia wiki without being logged in today, we show their IP address. As you may already know, we will not be able to do this in the future. This is a decision by the Wikimedia Foundation Legal department, because norms and regulations for privacy online have changed. Instead of the IP we will show a masked identity. You as an admin '''will still be able to access the IP'''. There will also be a new user right for those who need to see the full IPs of unregistered users to fight vandalism, harassment and spam without being admins. Patrollers will also see part of the IP even without this user right. We are also working on [[m:IP Editing: Privacy Enhancement and Abuse Mitigation/Improving tools|better tools]] to help. If you have not seen it before, you can [[m:IP Editing: Privacy Enhancement and Abuse Mitigation|read more on Meta]]. If you want to make sure you don’t miss technical changes on the Wikimedia wikis, you can [[m:Global message delivery/Targets/Tech ambassadors|subscribe]] to [[m:Tech/News|the weekly technical newsletter]]. We have [[m:IP Editing: Privacy Enhancement and Abuse Mitigation#IP Masking Implementation Approaches (FAQ)|two suggested ways]] this identity could work. '''We would appreciate your feedback''' on which way you think would work best for you and your wiki, now and in the future. You can [[m:Talk:IP Editing: Privacy Enhancement and Abuse Mitigation|let us know on the talk page]]. You can write in your language. The suggestions were posted in October and we will decide after 17 January. Thank you. /[[m:User:Johan (WMF)|Johan (WMF)]]<section end=content/> </div> 18:20, ngày 4 tháng 1 năm 2022 (UTC) <!-- Tin nhắn của Thành viên:Johan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Target_lists/Admins2022(8)&oldid=22532697 --> == [[MediaWiki:Wiktionary-usage]] == Chào bạn, nhờ bạn sửa trang đó thành “Ghi chú sử dụng”. “Cách dùng” chỉ cho biết từ/ký tự được sử dụng làm gì, còn “Ghi chú sử dụng” mang tính tổng quát hơn: nó còn cho biết ký tự này xuất hiện nhiều hay ít, phổ biến hay không phổ biến,… Cảm ơn bạn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 09:18, ngày 14 tháng 1 năm 2022 (UTC) == Gỡ thông báo đầu trang và logo Tết cho Wiktionary tiếng Việt năm 2022 == Chào bạn. Cuộc thi “Thiết kế logo Tết cho Wiktionary tiếng Việt năm 2022” đã kết thúc, nhờ bạn gỡ xuống thông báo đầu trang. Và theo như kết quả của cuộc thi, nhờ bạn thay logo trên Wiktionary tiếng Việt thành logo Tết. Xin cảm ơn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 07:07, ngày 21 tháng 1 năm 2022 (UTC) == Lỗi mô đun == Chào bạn, không biết lỗi ở mô đun thống kê Wiktionary thì sửa như nào nhỉ? – [[Thành viên:Russian Federal Subjects|<span style="color:black ;font:16px Calibri;">'''''RFS'''''</span>]]<sup>[[Thảo luận Thành viên:Russian Federal Subjects|<span style="color:gray ;font:12px Arial;">Talk to me!</span>]]</sup> 07:08, ngày 15 tháng 2 năm 2022 (UTC) :Cái này do 3 mục từ sau, trừ sco bạn không tạo thể loại mục từ nên nó lỗi. Mặc dù đã tạo nhưng mô đun vẫn chưa nhận ra thể loại, không hiểu tại sao. – [[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]]) 07:23, ngày 15 tháng 2 năm 2022 (UTC) == Thư mời tham gia biểu quyết == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Ccv2020]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Ccv2020|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}[[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 00:53, ngày 23 tháng 2 năm 2022 (UTC) == Thẻ ngôn ngữ == Bạn giúp mình bao hết viền của thẻ tab ngôn ngữ lại với. Chỉ mỗi phần nội dung được bao viền, còn thẻ tab thì không, trông hơi kì :) – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 11:31, ngày 13 tháng 7 năm 2022 (UTC) :Cái này bạn hỏi Mxn nhé, do cái tab ngôn ngữ do bạn này cập nhật theo OOUI của Mediawiki nên nó như vậy – [[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]]) 06:00, ngày 14 tháng 7 năm 2022 (UTC) == [[Mô đun:headword]] == Nhờ bạn giúp sửa tên thể loại ở mô đun trên (dòng 666): "palindromok" thành "Mục từ tiếng ... viết xuôi ngược đều giống nhau". Xin cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:21, ngày 18 tháng 8 năm 2022 (UTC) : Chào bạn. Nó vẫn còn vấn đề ở thể loại trang [[stats|này]]. Nhờ bạn giải quyết giúp, xin cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:38, ngày 22 tháng 8 năm 2022 (UTC) == [[:Thể loại:Chờ xóa]] == Hi, could you please take a look at the deletion requests in the category above? – '''[[User:Rschen7754|Rs]][[User talk:Rschen7754|chen]][[Special:Contributions/Rschen7754|7754]]''' 00:44, ngày 2 tháng 10 năm 2022 (UTC) :My apologies, appears to be done. --'''[[User:Rschen7754|Rs]][[User talk:Rschen7754|chen]][[Special:Contributions/Rschen7754|7754]]''' 22:57, ngày 2 tháng 10 năm 2022 (UTC) == Lỗi == Hiện có nhiều trang bị lỗi ở phần "dịch", như ở mục từ ''[[yêu dấu]]'', nhờ bạn xem qua và giải quyết giùm--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:50, ngày 22 tháng 12 năm 2022 (UTC) == Nhờ tạo trang == Nhờ bạn tạo hộ tôi trang [[:en:MediaWiki:Gadget-defaultVisibilityToggles.js]]. Xim cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:56, ngày 13 tháng 3 năm 2023 (UTC) :Em đang thắc mắc là bên mình dùng Navbox từ Wikipedia tiếng Anh thì sao dùng được cái này, nó cũng là navbox nhưng mà bên tiếng Anh nó là dạng Navbox cũ từ dùng tại Wikipedia tiếng Việt trước đây, cài cái này vào có bị xung đột không nhỉ? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:36, ngày 14 tháng 3 năm 2023 (UTC) ::Vậy thì thôi vậy. Xin lỗi đã làm phiền bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:55, ngày 15 tháng 3 năm 2023 (UTC) == Về bản cập nhật có lỗi trên dự án == Lỗi trong dự án ở đây là: * Ở trình duyệt trên điện thoại bỗng dưng hiển thị thanh ghi các phím lần lượt là VNI, VIQR, VIQR* với cả Bỏ dấu kiểu cũ,... trông rất khó nhìn, chèn vào nút ba chấm nên rất khó để xem được thông tin mục từ/trang. * Mọi nội dung trong mục từ đều bị ẩn, chỉ hiện mỗi thể loại. {{ping|Kateru Zakuro}} Anh có thể xem và vá lỗi này có được không vậy? – [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 15:06, ngày 30 tháng 6 năm 2023 (UTC) Thành viên này có hoạt động gần nhất là vào [https://guc.toolforge.org/?by=date&user=Kateru+Zakuro ngày 21/06], chắc không thể phản hồi sớm. Nên xin phép nhờ anh {{ping|Mxn}} vào giải quyết lỗi trên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:34, ngày 1 tháng 7 năm 2023 (UTC) == Need your input on a policy impacting gadgets and UserJS == <div lang="en" dir="ltr" class="mw-content-ltr"> Dear interface administrator, This is Samuel from the Security team and I hope my message finds you well. There is an [[m:Talk:Third-party resources policy|ongoing discussion]] on a proposed policy governing the use of external resources in gadgets and UserJS. The proposed [[m:Special:MyLanguage/Third-party resources policy|Third-party resources policy]] aims at making the UserJS and Gadgets landscape a bit safer by encouraging best practices around external resources. After an initial non-public conversation with a small number of interface admins and staff, we've launched a much larger, public consultation to get a wider pool of feedback for improving the policy proposal. Based on the ideas received so far, the proposed policy now includes some of the risks related to user scripts and gadgets loading third-party resources, best practices for gadgets and UserJS developers, and exemptions requirements such as code transparency and inspectability. As an interface administrator, your feedback and suggestions are warmly welcome until July 17, 2023 on the [[m:Talk:Third-party resources policy|policy talk page]]. Have a great day!</div> <bdi lang="en" dir="ltr">[[m:User:Samuel (WMF)|Samuel (WMF)]], on behalf of the Foundation's Security team</bdi> 12:08, ngày 10 tháng 7 năm 2023 (UTC) <!-- Tin nhắn của Thành viên:Samuel (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Samuel_(WMF)/IAdmins_MassMessage_list_2&oldid=25272792 --> == Thư mời == Mời bạn cho đôi lời nhận xét tại [[Thảo luận Wiktionary:Bảo quản viên#P. %C4%90%C4%82NG|Biểu quyết chọn bảo quản viên]]. Xin hết lòng cảm ơn rất nhiều. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:02, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời tham gia biểu quyết == <div style="padding: 0.5em; background: #f8f8ff; margin-top: 1em; font-size: 1em"> {| class="table" style="width: 80%; background-color: #ACE1AF; border: 1px solid #fceb92; margin: auto; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[Tập tin:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | '''Mời bạn cho ý kiến về việc cấp quyền Bảo quản viên cho thành viên [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] tại trang [[Thảo luận Wiktionary:Bảo quản viên#DefenderTienMinh07|Thảo luận Wiktionary:Bảo quản viên]]. Xin cảm ơn. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái! |} </div> [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 10:25, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời == Chào bạn! Mời bạn cho ý kiến tại [[Thảo_luận_Wiktionary:Bảo_quản_viên#Nguyên_Hưng_Trần|Biểu quyết chọn bảo quản viên]]. Thanks bạn! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:33, ngày 30 tháng 12 năm 2023 (UTC) == Bản mẫu:Pp == Hiện bản mẫu đang gặp vấn đề sau khi nâng cấp (Ví dụ: [[Wiktionary:Nguồn gốc/WinVNKey/Lê Sơn Thanh]]) – [[Thành viên:Đơn giản là tôi|Đơn giản là tôi]] ([[Thảo luận Thành viên:Đơn giản là tôi|thảo luận]]) 08:35, ngày 24 tháng 8 năm 2025 (UTC) == Danh sách thông báo rộng rãi == Tôi đã tạo danh sách thông báo gửi thư rộng rãi này đến các tv tại [[Wiktionary:Danh sách thư]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 09:51, ngày 1 tháng 9 năm 2025 (UTC) == Lỗi == Xin chào, hôm nay mình có bê [[Bản mẫu:Trang Chính 3/Khung]] về Wikivoyage tại [[voy:vi:Bản mẫu:Trang Chính/Khung|đây]]. Nhưng không hiểu sao một số văn bản có màu ở [[voy:vi:Bản mẫu:Tin tức]] như "Tuần lễ vàng" và "Nhiều thành phố tại Indonesia đã xảy ra biểu tình phản đối chính phủ nay đã leo thang thành bạo loạn", mặc dù ở bản mẫu Tin tức nó vẫn hiện màu bình thường nhưng khi nhúng vào bản mẫu Trang Chính/Khung ở trên Trang Chính thì nó lại không có màu vậy nhỉ? Không biết là bạn có biết nguyên nhân của lỗi này là gì không? – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:24, ngày 4 tháng 9 năm 2025 (UTC) :Có màu mà bác, không biết bác có bặt cái gì không chứ em thấy có màu mà. Bác thử Shift+Nút làm mới trên trình duyệt xem sao. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 22:03, ngày 4 tháng 9 năm 2025 (UTC) ::Hmm thế vậy chắc là do trình duyệt trên điện thoại. Mới thử trên máy tính thì không thấy có lỗi này. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 23:21, ngày 4 tháng 9 năm 2025 (UTC) : À, thì ra là do tôi bật chế độ tối mặc định của Vector 2022 nên mới không có màu. Không biết sao nó lại bị vậy nhỉ? [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:32, ngày 9 tháng 9 năm 2025 (UTC) ::Chắc là do CSS của Wikivoyage, bác thử kiểm tra các trang CSS và JS toàn website và Vector 2022 xem có đoạn CSS hay JS nào định kiểu url no color không? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 15:34, ngày 9 tháng 9 năm 2025 (UTC) ::: @[[Thành viên:Nvdtn19|Nvdtn19]] Tôi có vào Wikivoyage nhưng font chữ nó khác so với các dự án khác. Font chữ hiện tại nó [[:ku:Destpêk|giống]] với phiên bản Wiktionary tiếng Kurd. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 15:41, ngày 9 tháng 9 năm 2025 (UTC) :::: Font hiện tại đang hơi khó nhìn với lại tôi cũng không thích nó cho lắm nên mới đổi thành Segoe UI (mặc định của Microsoft). Cũng hơi kỳ lạ là ở [[voy:vi:Thành viên:Nvdtn19/nháp1]] rõ ràng vẫn đang hiện màu bình thường ở chế độ tối nhưng ở Trang Chính thì lại không hiện, không rõ lỗi này từ đâu nữa. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:48, ngày 9 tháng 9 năm 2025 (UTC) ::::Bác kiểm tra [[MediaWiki:Common.css]] và [[MediaWiki:Vector.css]], em đang thấy trong này có một số mã thay đổi css khá nhiều, 2 trang này ảnh hưởng toàn trang nên bác nên kiểm tra trước 2 trang này xóa mấy css có thể gây lỗi đi. Em đang thấy có đoạn này ::::<code> ::::body { :::: /* generally a sans-serif font should be here */ :::: font-family: system-ui, "Segoe UI", 'Iranian Sans', 'Noto Sans Arabic', 'DejaVu Sans', sans-serif; ::::} ::::.mw-body h1, .mw-body h2, .mw-body #firstHeading, ::::.mw-body .mw-editsection, .mw-body .mw-editsection-like, ::::.mw-body #toc h2, .mw-body .toc h2, ::::#documentation-meta-data, .vector-sticky-header-context-bar-primary { :::: /* MediaWiki (e.g. English Wikipedia) uses a serif font for titles in contrast to a sans-serif font for body so :::: * we need also to use a serif font here, as Arial isn't an option let's have Calibri in the chain, :::: * it also resolves the issue of missed dots on some letters as can be seen in :::: * .... */ :::: font-family: Calibri, system-ui, "Segoe UI", 'Iranian Serif', 'Noto Sans Arabic', 'Iranian Sans', 'DejaVu Sans', serif; ::::} ::::</code> ::::có vẻ đang thay đổi font giao diện, bác là admin nên xóa đi. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 15:50, ngày 9 tháng 9 năm 2025 (UTC) ::::: Kể cả xoá cái mã đó đi thì cũng có fix được cái màu đâu nhỉ? Code này là để đổi font, mà vấn đề màu đã xảy ra trước khi add cái mã đó rồi. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 16:01, ngày 9 tháng 9 năm 2025 (UTC) ::::::Trường hợp này khả năng là lỗi khi chuyển đổi giao diện sáng sang tối, không tương thích với mediawiki. Em có test cả PC và Mobile thì không thấy lỗi đâu nên bác nên kiểm tra lại điện thoại và máy tính, vì lỗi chỉ xuất hiện bên bác nên giờ em rất khó nói là nên xử lý thế nào. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:29, ngày 9 tháng 9 năm 2025 (UTC) Nhờ bạn cấm giúp rối đang phá hoại, xem [[Đặc biệt:Thay đổi gần đây]] để biết thêm. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 02:27, ngày 12 tháng 9 năm 2025 (UTC) :Cấm vô hạn và thu hồi luôn quyền sửa trang thảo luận vì đây là LTA. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 02:28, ngày 12 tháng 9 năm 2025 (UTC) ::Đã cấm vô hạn – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:29, ngày 12 tháng 9 năm 2025 (UTC) ::Mà LTA là ai nhỉ, dạo này ít qua bên Wikipedia nên không để ý, với lại trên này ít người tham gia. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:32, ngày 12 tháng 9 năm 2025 (UTC) ::Mà LTA là ai nhỉ, dạo này ít qua bên Wikipedia nên không để ý, với lại trên này ít người tham gia. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:32, ngày 12 tháng 9 năm 2025 (UTC) :::Bạn có thể qua đọc [[w:vi:Wikipedia:Tin nhắn cho bảo quản viên/Lưu 2025 8#Báo cáo phá hoại 84]] để biết thêm. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 05:20, ngày 12 tháng 9 năm 2025 (UTC) == [[Mô đun:parameters/lite]] == Phiền bạn xóa mô đun này vì lỗi thời và không còn sử dụng bất kỳ trang nào. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 03:43, ngày 12 tháng 9 năm 2025 (UTC) == Nhờ == Theo [[m:Tech/News/2022/02]] thì việc ẩn tiêu đề Trang Chính giờ đây chỉ cần tạo [[MediaWiki:Mainpage-title]] và [[MediaWiki:Mainpage-title-loggedin]] chứ cũng không cần phụ thuộc vào CSS nữa. Hiện tại trên giao diện Minerva thì tiêu đề Trang Chính vẫn đang hiển thị khi chưa đăng nhập. Vì bạn là BQVGD ở đây nên nhờ bạn tạo hai giúp trang này. Chỉ cần tạo trang trống là được, không có dấu - [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 11:28, ngày 1 tháng 10 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]]: Yummie lại sang đây rồi kìa bác. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 11:50, ngày 25 tháng 10 năm 2025 (UTC) ::Đã xử lý – [[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]]) 11:55, ngày 25 tháng 10 năm 2025 (UTC) : @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Nhờ bạn gỡ bỏ khóa trang [[ním]] chỉ vì có bút chiến vài lần trong quá khứ mà bán khóa vô hạn thì vô lý quá. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 12:03, ngày 25 tháng 10 năm 2025 (UTC) == Question of section templates == Hi, I saw your bot recently changed some section templates to use <nowiki><h3></nowiki> HTML tags, for example [[Bản mẫu:-noun-]] and [[Bản mẫu:-pron-]]. This causes problem when parsing pages and also inconsistent with the [[Wiktionary:Sơ đồ mục từ|layout document]]. Could you revert these edits to use <nowiki>===</nowiki> wikitext? – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 06:26, ngày 17 tháng 11 năm 2025 (UTC) :@[[Thành viên:Public class|Public class]] Those templates were used for entries in the old format, before I updated the entry map in 2025, Vietnamese Wiktionary used such templates for titles, like the current Dutch Wiktionary. But to make editing entries easier and compatible with the entry structure in English Wiktionary, the rule was changed to use the === heading, and the old format templates were changed to HTML code h2 h3, to hide the edit button next to the heading, to avoid members accidentally editing the template. I intended to use CSS to hide the edit button, but after trying many ways, there is no way to hide the edit button for these templates, so I switched to HTML code. I wonder if there is a way? – [[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]]) 07:43, ngày 17 tháng 11 năm 2025 (UTC) ::<nowiki>__NOEDITSECTION__</nowiki> magic word could be used. But it's also fine to use HTML tags, I already solved my problem by overriding the templates. – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 07:58, ngày 17 tháng 11 năm 2025 (UTC) == Không thể thêm mục. == Xin chào, mình đang muốn thêm phần khái niệm của từ nắc trong tiếng Việt. Tuy nhiên mình đã bị chặn bởi bộ lọc số 10 liên quan tới Yuumi gì đấy. Làm sao để mình có thể đăng bài mà không bị chặn. --[[Thành viên:Tucute515|Tucute515]] ([[Thảo luận Thành viên:Tucute515|thảo luận]]) 11:22, ngày 22 tháng 11 năm 2025 (UTC) :Mình đã tắt bộ lọc để xem thử bạn bị cấm từ gì, vì bộ lọc này có tác động khá mạnh. Bây giờ bạn thêm được rồi đó – [[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]]) 12:44, ngày 22 tháng 11 năm 2025 (UTC) == Mô đun cây thể loại == Theo tôi nghĩ đã đến lúc phải bán khoá toàn bộ các mô đun cây thể loại (category tree) vô hạn vì hầu hết các mô đun này đều ảnh hưởng lẫn nhau và chỉ cần có một vấn đề nhỏ thôi thì tất cả các thể loại dùng với auto cat đều lỗi hàng loạt. Không biết ý kiến của bạn như thế nào về đề xuất này? – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:41, ngày 30 tháng 11 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Mô đun này hiện tại đang được sử dụng tương đối nhiều, với [https://linkcount.toolforge.org/index.php?project=vi.wiktionary.org&page=M%C3%B4_%C4%91un:category_tree 8,917 trang] nhúng thì có lẽ là đủ điều kiện để khóa rồi, bên Wiktionary tiếng Anh thì mô đun trên 1000 trang đã khóa rồi. Ở đây thì ít, để đảm bảo mọi người đều có thể cập nhật dữ liệu mô đun, chỉ nên khóa đối với các mô đun và bản mẫu có trên 2.500-5.000 trang nhúng như Wikipedia tiếng Anh là phù hợp. Giờ khóa cũng dễ mà, Twinkle một phát là xong. Mình thì đồng ý với đề xuất này, nhưng để mình hỏi thêm @[[Thành viên:TheHighFighter2|TheHighFighter2]], @[[Thành viên:Higashizakura|Higashizakura]] và @[[Thành viên:WhoAlone|WhoAlone]], không biết 3 bạn có đồng ý đề nghị này không?--[[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]]) 15:13, ngày 30 tháng 11 năm 2025 (UTC) ::Tôi thì ok theo đề xuất bạn Hiyuune --.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:53, ngày 1 tháng 12 năm 2025 (UTC) : Bổ sung mô đun cần khóa: [[Mô đun:array]]. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 09:14, ngày 4 tháng 12 năm 2025 (UTC) == Lỗi == Nhờ bạn xem qua mục từ [[アトゥインネ]], không hiểu vì sao [[Module:dialect synonyms/ain/アッコッカムイ]] bị lỗi chỗ nào tôi không biết sửa được. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 08:27, ngày 4 tháng 12 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Không nhận diện được mã ngôn ngữ, cái này phải cập nhật lại module. Vì [[ Module:dialect synonyms]] này nó dùng nhiều mô đun khác, khả năng tìm ra lỗi hơi khó. Em sẽ cố gắng, nhưng nếu không được thì khả năng bác phải hỏi AI. – [[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]]) 13:06, ngày 4 tháng 12 năm 2025 (UTC) ::Đề mục lại có vấn đề rồi. Phiền bạn xem lại chứ nhìn vào rối mắt lắm. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 12:36, ngày 6 tháng 12 năm 2025 (UTC) :::@[[Thành viên:Hiyuune|Hiyuune]] Đề mục nào bạn ơi, mình thấy vẫn ổn mà? Bạn có thể dẫn chứng mục từ nào không? – [[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]]) 13:45, ngày 6 tháng 12 năm 2025 (UTC) ::::Mục từ [[アトゥインネ|này]], khi hiển thị trên mobile nó có vấn đề. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 13:47, ngày 6 tháng 12 năm 2025 (UTC) :::::Em thấy không có gì bất thường cả, riêng mô đun thì lỗi rồi cái này em bó tay, khả năng có liên quan đến mô đun tiếng Nhật nên nó lỗi, chứ mô đun dialect synonyms trên mục từ khác vẫn được mà tiếng Ainu lại lỗi thì chỉ có thể là do tiếng Nhật thôi. Không biết cụ thể nó bị lỗi gì, bác nói rõ được không, nếu có thể bác chụp ảnh lại gửi url lên đây thử, dùng imgbb. – [[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]]) 13:52, ngày 6 tháng 12 năm 2025 (UTC) ::::::Xem [https://ibb.co/mVvWK2MM ở đây]. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:08, ngày 6 tháng 12 năm 2025 (UTC) :::::::Em đã lùi lại bản mẫu, bác F5 hoặc làm mới lại trang thử, hoặc đăng xuất, xóa hết cache, lịch sử trình duyệt xem sao. Em không bị lỗi này nên không rõ lỗi của bác từ đâu ra. – [[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]]) 15:43, ngày 6 tháng 12 năm 2025 (UTC) : Phiền bạn xóa [[Mô đun:is-noun/style.css]], [[Mô đun:eo-conj/style.css]] vì nó không còn liên kết bất kì trang nào và lỗi thời. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 16:26, ngày 11 tháng 12 năm 2025 (UTC) : Tôi mới cập nhật lại theo phiên bản mới thì nó hết lỗi, có điều nó vẫn có cảnh báo. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 15:08, ngày 3 tháng 2 năm 2026 (UTC) == Yummie == Bác nên xem xét điều chỉnh lại cái bộ lọc này. Tôi thấy hơi có nhiều false positive khi xem trong [[Đặc biệt:Nhật trình sai phạm]]. Có thể điều chỉnh để những người có quyền autoconfirmed không bị ảnh hưởng. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 07:15, ngày 6 tháng 12 năm 2025 (UTC) :Nó chỉ kích hoạt nếu tài khoản dưới 25 sửa đổi, cho nên nếu bị false thì khả năng chắc ít sửa đổi quá, em thấy bộ lọc này ít ảnh hưởng mà bác. – [[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]]) 10:34, ngày 6 tháng 12 năm 2025 (UTC) : Rối này lại tiếp tục phá hoại ở không gian tên thể loại, tag biển xóa nhanh bừa bãi. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 04:22, ngày 10 tháng 12 năm 2025 (UTC) == Cấm == Tài khoản [[Đặc_biệt:Đóng_góp/LamMaurisso|này]] đã ngừng hoạt động từ năm 2022 và các sửa đổi phá hoại đã lâu. Theo quy định, cấm để ngăn chặn phá hoại, không phải trừng phạt. Mời bạn bỏ cấm thành viên này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 09:02, ngày 7 tháng 12 năm 2025 (UTC) ==Happy Holidays== <div style="border-style:solid; border-color:violet; background-color:#fff; border-width:2px; text-align:left; padding:8px;" class="plainlinks"> {| style="border: 5px dotted #H1790; background-color: #DDDDDD; padding:4px" | rowspan="2" valign="left" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Christmas Tree 2011-12-24.jpg|left|300px|link=]]<span style="display:block;padding-top:10px;clear:both"> | <span style="font-family: Georgia; font-size: 98%; color: #190a89;">Chúc bạn Kateru Zakuro có một mùa '''Giáng sinh''' an lành, ấm áp và tràn ngập yêu thương bên gia đình!<br/> Bước sang '''năm mới''' 2026, chúc bạn gặp nhiều may mắn,<br/> gặt hái được nhiều thành công trong công việc và học tập.<br/> Một lần nữa chúc bạn sẽ có một năm mới thật an khang, hạnh phúc và vạn sự như ý!!</span> <br /> <span style="font-family: Georgia; font-size: 92%;"> | rowspan="2" valign="right" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Atlantic Firework Festival 2016 (53368638571).jpg|left|360px|link=]]<span style="display:block;padding-top:10px;clear:both"> |}</div> Lời chúc chân thành từ: <span style="background:#978FF;border:solid 1px;border-radius:8px;box-shadow:darkblue 2px 2px 2px">&nbsp;[[User:Kelly zhrm|<span style="font-family:Old English Text MT;color:#C90">Yellow</span>]]&#124;[[User talk:Kelly zhrm|&#248;]]&nbsp;</span>&nbsp; 05:40, ngày 24 tháng 12 năm 2025 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:17, ngày 28 tháng 4 năm 2026 (UTC) </div> <!-- Tin nhắn của Thành viên:Keegan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472541 --> == [[Mô đun:headword]] == Mô đun này bạn cập nhật xong nhưng nó lỗi chỗ khác, ví dụ như mục từ [[नियंत्रण]]. Lỗi: Mô_đun:table/extend tại dòng 12: attempt to index local 'list' (a nil value) (lỗi xuất phát từ mô đun trên) [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 13:46, ngày 6 tháng 5 năm 2026 (UTC) act6goydhmb67oqouskuenkbc95grlj 2350492 2350463 2026-05-06T14:49:38Z Kateru Zakuro 34522 /* Mô đun:headword 2 */ Trả lời 2350492 wikitext text/x-wiki {{Thành viên:Kateru Zakuro/Trang Chính thành viên/Menu}} ==Hoan nghênh== {| width="100%" cellspacing="2" cellpadding="2" style="background: #F8F8FF; border: 1px solid #ddddee;" |- | colspan="6" style="background: #FFE4B5;" |[[Hình:Nuvola apps kteatime.png|40px]]<big> [[Wiktionary:Giới thiệu|Xin chào]] [[Thành viên:{{PAGENAME}}|{{PAGENAME}}]]!</big> |- | colspan="6" style="padding-left: 30px"| [[Hình:Nuvola apps bookcase.png|24px]] [[Wiktionary|Wiktionary tiếng Việt]] đến nay đã có '''{{formatnum:243272}}''' mục từ, đó là kết quả đóng góp quý báu của rất nhiều thành viên trong Wiktionary, mà mọi người đều bắt đầu như bạn. Bạn đã khởi đầu rất tốt và mong rằng bạn sẽ mang đến những [[Đặc biệt:Đóng góp/{{PAGENAME}}|đóng góp]] có giá trị cho quyển từ điển mở này. |- | colspan="6" style="padding-left: 130px"| [[Hình:Nuvola apps edu languages.svg|60px]] |- | colspan="6" style="padding-left: 30px"| Mời bạn [[Wiktionary:Trang thành viên|giới thiệu về bản thân]] tại trang [[Thành viên:{{PAGENAME}}]].<br>Khi thảo luận, bạn nhớ ký tên bằng cách dùng 4 dấu ngã <nowiki>~~~~</nowiki>!. |- | colspan="3" width="50%" style="padding-left: 30px"| <font color="red"><big> Bạn hãy nhớ các nguyên tắc</big></font><br> [[Hình:Nuvola apps important.svg|20px]] [[Từ điển|chỉ viết những gì thuộc từ điển]], <br> [[Hình:Nuvola apps digikam.png|20px]] không truyền lên hình ảnh thiếu nguồn gốc, <br> [[Hình:Red copyright.svg|20px]] [[Wiktionary:Quyền tác giả|không vi phạm quyền tác giả]]. | colspan="3" width="50%" style="padding-left: 30px"| <font color="green"><big>Đầu tiên bạn nên mạnh dạn</big></font> <br> [[Hình:Nuvola apps keyboard.png|20px]] [[Trợ giúp:Tìm kiếm|thử mọi liên kết mà bạn muốn]],<br> [[Hình:Nuvola apps kig.png|20px]] viết thử thoải mái [[Wiktionary:Chỗ thử|tại đây]],<br> [[Hình:Gnome-help.svg|20px]] [[Wiktionary:Bàn giúp đỡ|đề nghị giúp đỡ của bất cứ ai]]. |- |colspan="6" style="padding-left: 30px"| Những chỉ dẫn có ích: [[Wiktionary:Câu thường hỏi|các câu thường hỏi]], [[Wiktionary:Viết trang mới|cách viết mục từ mới]], [[Trợ giúp:Sửa đổi|soạn thảo mục từ]], và [[Trợ giúp:Mục lục|những hướng dẫn khác]].<br> '''Welcome''' to the Vietnamese Wiktionary, and thank you for registering! If you do not speak Vietnamese, feel free to use our [[Wiktionary:Guestbook for non-Vietnamese speakers|guestbook for non-Vietnamese speakers]].<br> ¡'''Bienvenido''' al Wikcionario vietnamita y gracias por registrarse! Si usted no habla vietnamita, puede utilizar nuestro [[Wiktionary:Guestbook for non-Vietnamese speakers|libro de visitas para los hablantes no vietnamitas]]. |- | colspan="6" style="border-top:2px solid #faecc8;" | Lời khuyên cuối cùng, bạn hãy làm lần lượt: [[Wiktionary:Chỗ thử|thử]], [[Wiktionary:Chào mừng người mới đến|đọc]], [[Wiktionary:Bàn giúp đỡ|hỏi]] rồi hẵng [[Wiktionary:Viết trang mới|viết]]. Chúc bạn thành công. |}&nbsp;[[Thành viên:Huỳnh Nhân-thập|'''<tt><span style="color:#4169e1;">Ios.</span></tt>''']] ([[Thảo luận Thành viên:Huỳnh Nhân-thập|thảo luận]]) 09:28, ngày 4 tháng 2 năm 2020 (UTC) == Thư mời == Mời bạn tham gia [[Thảo luận Wiktionary:Hành chính viên|BQ chọn hành chính viên]]. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 08:23, ngày 11 tháng 12 năm 2020 (UTC) == [[Mô đun:Unicode data]] == Chào bạn. Không biết khi nào bạn sửa xong nó nhỉ? Mong nhận được phản hồi của bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:25, ngày 13 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Em cố gắng sửa lỗi bằng cách thêm mô đun còn thiếu nhưng có vẻ mã nguồn gốc bên en nó không tương thích bên đây nên bị lỗi hiện không biết sửa sao nữa, mong anh thông cảm, nhờ người khác ạ.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 05:06, ngày 14 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Cái này sửa được nhưng thiếu nhiều mô đun quá. Nhờ anh chép hết [https://en.wiktionary.org/wiki/Special:PrefixIndex/Module:Unicode_data/ toàn bộ mô đun con này sang đây] thì may ra hết lỗi, do quá nhiều nên em chắc làm không nổi.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 05:15, ngày 14 tháng 7 năm 2021 (UTC) == [[Bản mẫu:character info]] == Chào bạn. Bản mẫu này có một lỗi: Khi nhúng vào các trang khác thì không dùng chuột để nhấn vào được. Bạn qua đây xem xét lỗi một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:25, ngày 18 tháng 7 năm 2021 (UTC) :À thôi, lỗi hết rồi. Xin lỗi vì đã làm phiền bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:31, ngày 18 tháng 7 năm 2021 (UTC) ::Xin lỗi vì đã làm phiền bạn một lần nữa. Hóa ra là tùy trình duyệt bạn à. Dùng Google Chrome không nhấn chuột để vào được. Bạn qua đây xem xét lỗi một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:17, ngày 19 tháng 7 năm 2021 (UTC) ::{{u|Ccv2020}} Cái này thật ra là lỗi của hệ thống Tab theo ngôn ngữ của Wiktionary tiếng Việt. Từ lâu chúng ta đã sử dụng hệ thống Tab trang theo ngôn ngữ, thực hiện chuyển đổi đề mục cấp 2 theo ngôn ngữ kiểu <pre>==Tiếng Việt==</pre> thành Tab "Việt" bên trái anh đã thấy, nhưng vấn đề là nó không hoạt động tốt, đặc biệt là những bản mẫu được đặt ngoài phạm vi nội dung Tab phân theo ngôn ngữ, vì thế khi đặt bên ngoài nó vẫn hiển thị nhưng không dùng được.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:30, ngày 19 tháng 7 năm 2021 (UTC) Em cũng không biết sửa sao, anh nên hỏi những người từ đầu thành lập hay lập trình Wiktionary tiếng Việt có lẽ sẽ có cách, hoặc không được thì chịu hoặc thực hiện '''cách mà em không muốn''': '''Gọi Meta đề xuất họ sao lưu dữ liệu bài viết và trang lại, sau đó cài lại Mediawiki như bên en rồi nhập dữ liệu vào'''.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:30, ngày 19 tháng 7 năm 2021 (UTC) :Hic… Thôi chắc tạm thời tắt tính năng “Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ” (mục Tiên ích) vậy. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:42, ngày 19 tháng 7 năm 2021 (UTC) ::Nên đề nghị tắt ba cái tab đi, rõ là thấy rườm rà, không có ích lợi gì. [[Thành viên:P.T.Đ|P.T.Đ]] ([[Thảo luận Thành viên:P.T.Đ|thảo luận]]) 17:40, ngày 19 tháng 7 năm 2021 (UTC) :::{{u|P.T.Đ}}: Tôi nghĩ là các tài khoản mới trong tương lai sẽ không bật sẵn tính năng tôi đã nêu trên. Muốn làm vậy thì phải qua đâu để nhờ các kỹ thuật viên làm vậy? [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:47, ngày 20 tháng 7 năm 2021 (UTC) ::@[[Thành viên:Ccv2020|Ccv2020]]: Các thông tin về ký tự không thuộc về ngôn ngữ nào nên được sắp xếp vào phần "Chữ x", thí dụ {{LKBM|-Hani-}} là "Chữ Hán". Đối với ký tự không thuộc về một hệ thống viết cụ thể thì có thể đưa vào phần {{LKBM|-mul-}} ("Đa ngôn ngữ"). – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 06:17, ngày 14 tháng 10 năm 2021 (UTC) == Về giao diện Wiktionary phiên bản di động == Chào bạn. Tôi thấy giao diện di động của Wiktionary có vấn đề: phần ví dụ tra cứu bị lỗi không tải được, chỉ hiện chữ “đang tải…” thôi. Mong bạn dành chút thời gian xem xét và sửa lỗi, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:08, ngày 21 tháng 7 năm 2021 (UTC) :{{u|Ccv2020}} Không sửa lỗi được vì cái phần đó trên di động là phần tĩnh, không động được nên nó mới vậy. Em cũng đã làm xong [[Bản mẫu:Trang Chính 2]] rồi, bạn xem qua rồi có gì áp dụng luôn cũng được, coi như là '''viện trợ không cần hoàn vốn từ Trung tâm xây dựng Thienhau2003 tại Wikipedia tiếng Việt''' của em nhé.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 02:21, ngày 21 tháng 7 năm 2021 (UTC) <nowiki>:</nowiki>), OK bạn. Tôi sẽ xem xét giao diện này. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:38, ngày 21 tháng 7 năm 2021 (UTC) == [[;]] == Tôi không tạo được trang này vì nó có trong danh sách đen. Bên enwiki cũng bị lỗi. Làm thế nào đây bạn? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:08, ngày 9 tháng 8 năm 2021 (UTC) :{{u|Ccv2020}} Cụm từ bị cấm, đây là một trong nhiều [https://helpex.vn/question/nhung-ky-tu-nao-bi-cam-trong-ten-thu-muc-windows-va-linux--5cb7dea2ae03f646703bf39d ký tự đặc biệt trong hệ thống Linux và Windows]. Nên không thể tạo được. Rất tiếc.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 09:20, ngày 2 tháng 9 năm 2021 (UTC) == [[𬖾]] == Chào bạn. Mục từ này dù đang chứa {{tl|cảnh báo Unicode}}, nhưng [[:Thể loại:Mục từ Unicode cần chú ý]] không chứa trang này. Phiền bạn qua đây xử lý một chút, cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:19, ngày 23 tháng 8 năm 2021 (UTC) :Thôi, mình chữa được lỗi rồi. Xin lỗi vì đã làm phiền bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 23:41, ngày 25 tháng 8 năm 2021 (UTC) == [[Mô đun:character info]] == Chào bạn. Bạn có thể dịch giúp mình dòng 119 ( cat_name = script_name .. " script characters") được không bạn? Mình sửa nhưng nó cứ báo lỗi. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:55, ngày 24 tháng 9 năm 2021 (UTC) == Phụ lục:… == Lúc mình tạo ra những trang đó, mình mới phát hiện ra là Wiktionary tiếng Việt '''không''' có không gian tên “Phụ lục”. Có cách nào để yêu cầu thêm không gian tên này vào Wiktionary tiếng Việt không? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 04:44, ngày 31 tháng 10 năm 2021 (UTC) :{{u|Ccv2020}} Cái này thì phải đề xuất lên https://phabricator.wikimedia.org/ để họ nhập không gian tên mới về. Nhưng nên tham khảo ý kiến các thành viên khác, đặc biệt là BQV, có đồng thuận rồi thì mới nên tiến hành.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 06:40, ngày 31 tháng 10 năm 2021 (UTC) ::Vậy thì bạn giúp mình được không? Sắp tới mình thi nên sẽ hạn chế hoạt động. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:37, ngày 31 tháng 10 năm 2021 (UTC) :::Cái này cần biểu quyết, đúng không nhỉ… [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:40, ngày 23 tháng 11 năm 2021 (UTC) == Lỗi == Chào bạn. Hiện có nhiều trang có lỗi ở mục "dịch", vd như trang [[dương cầm|này]]. Không biết bạn có thể khắc phục được không? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:16, ngày 10 tháng 11 năm 2021 (UTC) :{{u|TheHighFighter2}} Bó tay, bản mẫu ở đây quá lỗi thời nên sửa kiểu nào cũng "hết lỗi chỗ này thì lại lỗi chỗ khác".--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 03:41, ngày 10 tháng 11 năm 2021 (UTC) == BQV == Bạn muốn làm BQV ở đây không? Tôi nghĩ bạn phù hợp với vị trí đó. Bạn có thể ra ứng cử. Sau 1 tuần, nếu bạn có vài phiếu ok thì tôi sẽ cấp quyền BQV cho bạn. Làm BQV ở đây lấy kinh nghiệm. Sau này, ứng cử làm BQV ở Wikipedia dễ hơn. Chắc vài năm nữa khi bạn tốt nghiệp và có nhiều thời gian hơn. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 04:06, ngày 3 tháng 12 năm 2021 (UTC) :{{ping|Nguyentrongphu}} Mời cho ý kiến tại [[Thảo luận Wiktionary:Bảo quản viên#Kateru Zakuro]]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:16, ngày 3 tháng 12 năm 2021 (UTC) :{{ping|Nguyentrongphu}} Em đã ra ứng cử và đã hơn 1 tuần rồi. Mong anh thực hiện đúng lời trên, cảm ơn.--[[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]]) 01:50, ngày 6 tháng 12 năm 2021 (UTC) == Tạo bản mẫu tính số mục từ Unicode == Chào bạn. Bạn có cách nào tạo ra bản mẫu tính số mục từ Unicode (những mục từ chỉ dùng 1 ký tự trên tiêu đề) không? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:29, ngày 12 tháng 12 năm 2021 (UTC) == [[Thành viên:Ccv2020/Nháp MediaWiki 1]] == Nhờ bạn xóa trang này, cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:00, ngày 15 tháng 12 năm 2021 (UTC) == Thẻ ngôn ngữ == Tôi đang nghiên cứu về lỗi mà bạn [[Đặc biệt:Khác/2037419|đã đề cập đến]] khi tắt chức năng thẻ ngôn ngữ. Phần âm thanh không hiển thị trong mục từ nào? Tôi đã xem "[[dictionary]]" (sử dụng {{LKBM|pron-audio}}) và "[[ăn tết]]" ({{LKBM|âm thanh}}); hình như cả hai bản mẫu này vẫn hoạt động tốt khi bật chức năng thẻ. Có phải lỗi này tùy theo trình duyệt hay tiện ích khác không? Đây là chức năng quan trọng của Wiktionary vì phần nhiều người chỉ quan tâm đến một ngôn ngữ và bố trí mục từ mặc định có vẻ khó sử dụng. Tiện ích này phỏng theo [[:en:MediaWiki:Gadget-TabbedLanguages.js|tiện ích tại Wiktionary tiếng Anh]], nhưng [[:en:MediaWiki talk:Gadget-TabbedLanguages.js#Vietnamese version|tiện ích tiếng Việt có nhiều lợi điểm hơn]]. Mai mốt có lẽ [[mw:Reading/Web/Desktop Improvements/Third prototype testing/vi|Vectơ sẽ thu nhỏ các phần ngôn ngữ]] thì không cần tạo thẻ nữa, nhưng tiện ích này sẽ vẫn có ích vì gắn neo ngôn ngữ (<code>#Tiếng Anh</code>) vào các liên kết nội bộ. Nếu không có thì chúng ta phải mất công thêm ngôn ngữ thủ công dùng {{LKBM|l}}. &ndash;&nbsp;[[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 20:56, ngày 17 tháng 12 năm 2021 (UTC) :{{u|Mxn}} Có 2 lý do tắt: :* Mặc dù cái này có lợi nhưng vì đây là Wiki, tôi muốn giữ cho trang Wiki '''truyền thống giống như các trang bách khoa toàn thư''' chứ không phải là một trang web tra cứu mục từ. Hầu như không có Wiktionary nào bặt mặc định tính năng này cả. :* Nếu anh để ý, truy cập vào [[Wiktionary#Tiếng_Việt]] rồi sau đó chuyển lại sang tiếng Anh thì phần âm thanh không chạy được mà hiện một cái dải xám. Lỗi này có thể sửa được bằng cách load lại trang. Vì lỗi này không chỉ Wiktionary tiếng Việt mà cả bên Wiktionary tiếng Anh cũng bị lỗi nên lỗi này không quá nghiêm trọng. :*Tôi muốn hạn chế tải các thành phần không cần thiết để trang mục từ load nhanh và nhẹ hơn. --[[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]]) 05:53, ngày 18 tháng 12 năm 2021 (UTC) :<p>Điều quan trọng nhất là người dùng có thể tra cứu, sửa đổi nội dung một cách tiện lợi. Từ điển Wiktionary không có trang tra cứu mục từ thì làm sao gọi là từ điển được? Tôi chưa biết đến Wiktionary nào bố trí các mục từ "như các trang bách khoa toàn thư". Wiktionary cần chức năng quản lý các phần ngôn ngữ trong mục từ vì một mục từ có thể có ý nghĩa trong nhiều ngôn ngữ, chẳng hạn "[[voi]]", "[[pan]]", "[[la]]". Wikipedia không có nhu cầu này. :<p>Đúng là chỉ có Wiktionary tiếng Việt [[m:Gadgets/wiktionary/default|kích hoạt TabbedLanguages theo mặc định]]. (Wiktionary tiếng Ba Tư kích hoạt một phiên bản hỏng của TabbedLanguages theo mặc định.) Năm 2012, Wiktionary tiếng Anh [[:en:Wiktionary:Votes/2012-10/Enabling Tabbed Languages|quyết định kích hoạt TabbedLanguages]], nhưng quyết định này bị trì hoãn mãi vì một số vấn đề tôi đã khắc phục trong phiên bản tại đây. Dù TabbedLanguages không được kích hoạt tại Wiktionary khác, nhưng nhiều người vẫn tuyển chọn kích hoạt nó thủ công. Hiện tại nó [[m:Gadgets/wiktionary|xếp hạng thứ 7 theo người dùng]], không kể những người dùng tại wiki này hoặc người sử dụng script người dùng [[:en:User:Yair rand/TabbedLanguages2.js|TabbedLanguages2]]. Thống kê này có nghĩa rằng thẻ ngôn ngữ rất có ích đối với người đã biết đến tiện ích, chưa kể những người chưa biết đến nó. :<p>Tôi rất ngạc nhiên khi đọc rằng TabbedLanguages có ảnh hưởng đến thời gian tải trang. Đây là một tiện ích '''rất''' nhỏ so với các tiện ích khác, nhỏ hơn cả CommentsInLocalTime. Ngoài ra, [[mw:ResourceLoader|ResourceLoader]] tự động nén mã nguồn thành 5,7&nbsp;kilôbyte [https://vi.wiktionary.org/w/load.php?lang=vi&modules=ext.gadget.TabbedLanguages&skin=vector&version=4nlvy] (nhỏ bằng [[:Tập tin:Brockhaus and Efron Encyclopedic Dictionary b72 889-2.jpg|hình này]]), và trình duyệt tự động đưa mã nguồn vào vùng nhớ đệm. Còn thời gian kết xuất cũng không sao. Tôi đã thử xóa sạch vùng nhớ đệm và tải lại "[[voi]]" 10 lần trong trình duyệt của tôi (Firefox 95, macOS 10.13, MacBook Pro 2,6&nbsp;GHz năm 2013) với các tiện ích mặc định. Theo thẻ Hiệu suất của công cụ nhà phát triển Firefox, TabbedLanguages chỉ tốn trung bình vào khoảng 183&nbsp;mili&nbsp;giây trên tổng số 904&nbsp;mili&nbsp;giây để kết xuất trang. Phần lớn là do trình duyệt phải bố trí lại các phần tử DOM. Dĩ nhiên thời gian kết xuất tùy theo trình duyệt và máy tính, nhưng coi như không có vấn đề đáng kể. :<p>Tôi rất mừng bạn có cơ hội và ý định cải tiến và hiện đại hóa wiki này. Tôi chỉ xin bạn nhớ rằng wiki này có một số đặc tính khác cần kỹ thuật đặc biệt. Mai mốt Wiktionary sẽ [[:en:Wiktionary:Wikidata|sử dụng cơ sở dữ liệu Wikidata]] để lưu trữ các thông tin ngữ nghĩa. Wikidata sẽ đưa rất nhiều mục từ trong rất nhiều ngôn ngữ vào wiki này, chỉ việc nhúng một [https://en.wiktionary.beta.wmflabs.org/wiki/হৃদয় bản mẫu] [https://en.wiktionary.beta.wmflabs.org/wiki/cat đơn giản]. Với mô hình này, chúng ta sẽ phải nghĩ lại nhiều quy định và quá trình, không thể dựa vào kinh nghiệm Wikipedia như ngày xưa. :<p>&nbsp; – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 08:55, ngày 18 tháng 12 năm 2021 (UTC) :Lỗi tại [[Wiktionary#Tiếng Việt]] là lỗi của trình phát âm thanh Kaltura của phần mở rộng [[mw:TimedMediaHandler|TimedMediaHandler]]. Kaltura rất cũ kỹ. Nếu bạn kích hoạt "[[mw:Extension:TimedMediaHandler/VideoJS Player/vi|trình phát video mới]]" trong [[Đặc biệt:Tùy chọn#mw-prefsection-betafeatures|tùy chọn tính năng beta]], trình phát âm thanh sẽ hoạt động tốt trong các thẻ ngôn ngữ. – [[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 09:53, ngày 18 tháng 12 năm 2021 (UTC) == [[Đặc biệt:Lịch sử/やり方]] == Nhờ bạn xoá tóm lược của IP trong phiên bản đầu tiên của trang. Cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:58, ngày 27 tháng 12 năm 2021 (UTC) == [[⠧]] == Chào bạn. Có lỗi ở 3 bản mẫu: {{tl|-ara-}}, {{tl|-zho-}}, {{tl|-tha-}}. Bạn xem có vấn đề gì và chữa lại giúp. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 13:13, ngày 27 tháng 12 năm 2021 (UTC) == How we will see unregistered users == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin=content/> Hi! You get this message because you are an admin on a Wikimedia wiki. When someone edits a Wikimedia wiki without being logged in today, we show their IP address. As you may already know, we will not be able to do this in the future. This is a decision by the Wikimedia Foundation Legal department, because norms and regulations for privacy online have changed. Instead of the IP we will show a masked identity. You as an admin '''will still be able to access the IP'''. There will also be a new user right for those who need to see the full IPs of unregistered users to fight vandalism, harassment and spam without being admins. Patrollers will also see part of the IP even without this user right. We are also working on [[m:IP Editing: Privacy Enhancement and Abuse Mitigation/Improving tools|better tools]] to help. If you have not seen it before, you can [[m:IP Editing: Privacy Enhancement and Abuse Mitigation|read more on Meta]]. If you want to make sure you don’t miss technical changes on the Wikimedia wikis, you can [[m:Global message delivery/Targets/Tech ambassadors|subscribe]] to [[m:Tech/News|the weekly technical newsletter]]. We have [[m:IP Editing: Privacy Enhancement and Abuse Mitigation#IP Masking Implementation Approaches (FAQ)|two suggested ways]] this identity could work. '''We would appreciate your feedback''' on which way you think would work best for you and your wiki, now and in the future. You can [[m:Talk:IP Editing: Privacy Enhancement and Abuse Mitigation|let us know on the talk page]]. You can write in your language. The suggestions were posted in October and we will decide after 17 January. Thank you. /[[m:User:Johan (WMF)|Johan (WMF)]]<section end=content/> </div> 18:20, ngày 4 tháng 1 năm 2022 (UTC) <!-- Tin nhắn của Thành viên:Johan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Target_lists/Admins2022(8)&oldid=22532697 --> == [[MediaWiki:Wiktionary-usage]] == Chào bạn, nhờ bạn sửa trang đó thành “Ghi chú sử dụng”. “Cách dùng” chỉ cho biết từ/ký tự được sử dụng làm gì, còn “Ghi chú sử dụng” mang tính tổng quát hơn: nó còn cho biết ký tự này xuất hiện nhiều hay ít, phổ biến hay không phổ biến,… Cảm ơn bạn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 09:18, ngày 14 tháng 1 năm 2022 (UTC) == Gỡ thông báo đầu trang và logo Tết cho Wiktionary tiếng Việt năm 2022 == Chào bạn. Cuộc thi “Thiết kế logo Tết cho Wiktionary tiếng Việt năm 2022” đã kết thúc, nhờ bạn gỡ xuống thông báo đầu trang. Và theo như kết quả của cuộc thi, nhờ bạn thay logo trên Wiktionary tiếng Việt thành logo Tết. Xin cảm ơn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 07:07, ngày 21 tháng 1 năm 2022 (UTC) == Lỗi mô đun == Chào bạn, không biết lỗi ở mô đun thống kê Wiktionary thì sửa như nào nhỉ? – [[Thành viên:Russian Federal Subjects|<span style="color:black ;font:16px Calibri;">'''''RFS'''''</span>]]<sup>[[Thảo luận Thành viên:Russian Federal Subjects|<span style="color:gray ;font:12px Arial;">Talk to me!</span>]]</sup> 07:08, ngày 15 tháng 2 năm 2022 (UTC) :Cái này do 3 mục từ sau, trừ sco bạn không tạo thể loại mục từ nên nó lỗi. Mặc dù đã tạo nhưng mô đun vẫn chưa nhận ra thể loại, không hiểu tại sao. – [[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]]) 07:23, ngày 15 tháng 2 năm 2022 (UTC) == Thư mời tham gia biểu quyết == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Ccv2020]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Ccv2020|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}[[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 00:53, ngày 23 tháng 2 năm 2022 (UTC) == Thẻ ngôn ngữ == Bạn giúp mình bao hết viền của thẻ tab ngôn ngữ lại với. Chỉ mỗi phần nội dung được bao viền, còn thẻ tab thì không, trông hơi kì :) – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 11:31, ngày 13 tháng 7 năm 2022 (UTC) :Cái này bạn hỏi Mxn nhé, do cái tab ngôn ngữ do bạn này cập nhật theo OOUI của Mediawiki nên nó như vậy – [[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]]) 06:00, ngày 14 tháng 7 năm 2022 (UTC) == [[Mô đun:headword]] == Nhờ bạn giúp sửa tên thể loại ở mô đun trên (dòng 666): "palindromok" thành "Mục từ tiếng ... viết xuôi ngược đều giống nhau". Xin cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:21, ngày 18 tháng 8 năm 2022 (UTC) : Chào bạn. Nó vẫn còn vấn đề ở thể loại trang [[stats|này]]. Nhờ bạn giải quyết giúp, xin cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:38, ngày 22 tháng 8 năm 2022 (UTC) == [[:Thể loại:Chờ xóa]] == Hi, could you please take a look at the deletion requests in the category above? – '''[[User:Rschen7754|Rs]][[User talk:Rschen7754|chen]][[Special:Contributions/Rschen7754|7754]]''' 00:44, ngày 2 tháng 10 năm 2022 (UTC) :My apologies, appears to be done. --'''[[User:Rschen7754|Rs]][[User talk:Rschen7754|chen]][[Special:Contributions/Rschen7754|7754]]''' 22:57, ngày 2 tháng 10 năm 2022 (UTC) == Lỗi == Hiện có nhiều trang bị lỗi ở phần "dịch", như ở mục từ ''[[yêu dấu]]'', nhờ bạn xem qua và giải quyết giùm--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:50, ngày 22 tháng 12 năm 2022 (UTC) == Nhờ tạo trang == Nhờ bạn tạo hộ tôi trang [[:en:MediaWiki:Gadget-defaultVisibilityToggles.js]]. Xim cảm ơn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:56, ngày 13 tháng 3 năm 2023 (UTC) :Em đang thắc mắc là bên mình dùng Navbox từ Wikipedia tiếng Anh thì sao dùng được cái này, nó cũng là navbox nhưng mà bên tiếng Anh nó là dạng Navbox cũ từ dùng tại Wikipedia tiếng Việt trước đây, cài cái này vào có bị xung đột không nhỉ? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:36, ngày 14 tháng 3 năm 2023 (UTC) ::Vậy thì thôi vậy. Xin lỗi đã làm phiền bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:55, ngày 15 tháng 3 năm 2023 (UTC) == Về bản cập nhật có lỗi trên dự án == Lỗi trong dự án ở đây là: * Ở trình duyệt trên điện thoại bỗng dưng hiển thị thanh ghi các phím lần lượt là VNI, VIQR, VIQR* với cả Bỏ dấu kiểu cũ,... trông rất khó nhìn, chèn vào nút ba chấm nên rất khó để xem được thông tin mục từ/trang. * Mọi nội dung trong mục từ đều bị ẩn, chỉ hiện mỗi thể loại. {{ping|Kateru Zakuro}} Anh có thể xem và vá lỗi này có được không vậy? – [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 15:06, ngày 30 tháng 6 năm 2023 (UTC) Thành viên này có hoạt động gần nhất là vào [https://guc.toolforge.org/?by=date&user=Kateru+Zakuro ngày 21/06], chắc không thể phản hồi sớm. Nên xin phép nhờ anh {{ping|Mxn}} vào giải quyết lỗi trên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:34, ngày 1 tháng 7 năm 2023 (UTC) == Need your input on a policy impacting gadgets and UserJS == <div lang="en" dir="ltr" class="mw-content-ltr"> Dear interface administrator, This is Samuel from the Security team and I hope my message finds you well. There is an [[m:Talk:Third-party resources policy|ongoing discussion]] on a proposed policy governing the use of external resources in gadgets and UserJS. The proposed [[m:Special:MyLanguage/Third-party resources policy|Third-party resources policy]] aims at making the UserJS and Gadgets landscape a bit safer by encouraging best practices around external resources. After an initial non-public conversation with a small number of interface admins and staff, we've launched a much larger, public consultation to get a wider pool of feedback for improving the policy proposal. Based on the ideas received so far, the proposed policy now includes some of the risks related to user scripts and gadgets loading third-party resources, best practices for gadgets and UserJS developers, and exemptions requirements such as code transparency and inspectability. As an interface administrator, your feedback and suggestions are warmly welcome until July 17, 2023 on the [[m:Talk:Third-party resources policy|policy talk page]]. Have a great day!</div> <bdi lang="en" dir="ltr">[[m:User:Samuel (WMF)|Samuel (WMF)]], on behalf of the Foundation's Security team</bdi> 12:08, ngày 10 tháng 7 năm 2023 (UTC) <!-- Tin nhắn của Thành viên:Samuel (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Samuel_(WMF)/IAdmins_MassMessage_list_2&oldid=25272792 --> == Thư mời == Mời bạn cho đôi lời nhận xét tại [[Thảo luận Wiktionary:Bảo quản viên#P. %C4%90%C4%82NG|Biểu quyết chọn bảo quản viên]]. Xin hết lòng cảm ơn rất nhiều. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:02, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời tham gia biểu quyết == <div style="padding: 0.5em; background: #f8f8ff; margin-top: 1em; font-size: 1em"> {| class="table" style="width: 80%; background-color: #ACE1AF; border: 1px solid #fceb92; margin: auto; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[Tập tin:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | '''Mời bạn cho ý kiến về việc cấp quyền Bảo quản viên cho thành viên [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] tại trang [[Thảo luận Wiktionary:Bảo quản viên#DefenderTienMinh07|Thảo luận Wiktionary:Bảo quản viên]]. Xin cảm ơn. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái! |} </div> [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 10:25, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời == Chào bạn! Mời bạn cho ý kiến tại [[Thảo_luận_Wiktionary:Bảo_quản_viên#Nguyên_Hưng_Trần|Biểu quyết chọn bảo quản viên]]. Thanks bạn! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:33, ngày 30 tháng 12 năm 2023 (UTC) == Bản mẫu:Pp == Hiện bản mẫu đang gặp vấn đề sau khi nâng cấp (Ví dụ: [[Wiktionary:Nguồn gốc/WinVNKey/Lê Sơn Thanh]]) – [[Thành viên:Đơn giản là tôi|Đơn giản là tôi]] ([[Thảo luận Thành viên:Đơn giản là tôi|thảo luận]]) 08:35, ngày 24 tháng 8 năm 2025 (UTC) == Danh sách thông báo rộng rãi == Tôi đã tạo danh sách thông báo gửi thư rộng rãi này đến các tv tại [[Wiktionary:Danh sách thư]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 09:51, ngày 1 tháng 9 năm 2025 (UTC) == Lỗi == Xin chào, hôm nay mình có bê [[Bản mẫu:Trang Chính 3/Khung]] về Wikivoyage tại [[voy:vi:Bản mẫu:Trang Chính/Khung|đây]]. Nhưng không hiểu sao một số văn bản có màu ở [[voy:vi:Bản mẫu:Tin tức]] như "Tuần lễ vàng" và "Nhiều thành phố tại Indonesia đã xảy ra biểu tình phản đối chính phủ nay đã leo thang thành bạo loạn", mặc dù ở bản mẫu Tin tức nó vẫn hiện màu bình thường nhưng khi nhúng vào bản mẫu Trang Chính/Khung ở trên Trang Chính thì nó lại không có màu vậy nhỉ? Không biết là bạn có biết nguyên nhân của lỗi này là gì không? – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:24, ngày 4 tháng 9 năm 2025 (UTC) :Có màu mà bác, không biết bác có bặt cái gì không chứ em thấy có màu mà. Bác thử Shift+Nút làm mới trên trình duyệt xem sao. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 22:03, ngày 4 tháng 9 năm 2025 (UTC) ::Hmm thế vậy chắc là do trình duyệt trên điện thoại. Mới thử trên máy tính thì không thấy có lỗi này. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 23:21, ngày 4 tháng 9 năm 2025 (UTC) : À, thì ra là do tôi bật chế độ tối mặc định của Vector 2022 nên mới không có màu. Không biết sao nó lại bị vậy nhỉ? [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:32, ngày 9 tháng 9 năm 2025 (UTC) ::Chắc là do CSS của Wikivoyage, bác thử kiểm tra các trang CSS và JS toàn website và Vector 2022 xem có đoạn CSS hay JS nào định kiểu url no color không? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 15:34, ngày 9 tháng 9 năm 2025 (UTC) ::: @[[Thành viên:Nvdtn19|Nvdtn19]] Tôi có vào Wikivoyage nhưng font chữ nó khác so với các dự án khác. Font chữ hiện tại nó [[:ku:Destpêk|giống]] với phiên bản Wiktionary tiếng Kurd. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 15:41, ngày 9 tháng 9 năm 2025 (UTC) :::: Font hiện tại đang hơi khó nhìn với lại tôi cũng không thích nó cho lắm nên mới đổi thành Segoe UI (mặc định của Microsoft). Cũng hơi kỳ lạ là ở [[voy:vi:Thành viên:Nvdtn19/nháp1]] rõ ràng vẫn đang hiện màu bình thường ở chế độ tối nhưng ở Trang Chính thì lại không hiện, không rõ lỗi này từ đâu nữa. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 15:48, ngày 9 tháng 9 năm 2025 (UTC) ::::Bác kiểm tra [[MediaWiki:Common.css]] và [[MediaWiki:Vector.css]], em đang thấy trong này có một số mã thay đổi css khá nhiều, 2 trang này ảnh hưởng toàn trang nên bác nên kiểm tra trước 2 trang này xóa mấy css có thể gây lỗi đi. Em đang thấy có đoạn này ::::<code> ::::body { :::: /* generally a sans-serif font should be here */ :::: font-family: system-ui, "Segoe UI", 'Iranian Sans', 'Noto Sans Arabic', 'DejaVu Sans', sans-serif; ::::} ::::.mw-body h1, .mw-body h2, .mw-body #firstHeading, ::::.mw-body .mw-editsection, .mw-body .mw-editsection-like, ::::.mw-body #toc h2, .mw-body .toc h2, ::::#documentation-meta-data, .vector-sticky-header-context-bar-primary { :::: /* MediaWiki (e.g. English Wikipedia) uses a serif font for titles in contrast to a sans-serif font for body so :::: * we need also to use a serif font here, as Arial isn't an option let's have Calibri in the chain, :::: * it also resolves the issue of missed dots on some letters as can be seen in :::: * .... */ :::: font-family: Calibri, system-ui, "Segoe UI", 'Iranian Serif', 'Noto Sans Arabic', 'Iranian Sans', 'DejaVu Sans', serif; ::::} ::::</code> ::::có vẻ đang thay đổi font giao diện, bác là admin nên xóa đi. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 15:50, ngày 9 tháng 9 năm 2025 (UTC) ::::: Kể cả xoá cái mã đó đi thì cũng có fix được cái màu đâu nhỉ? Code này là để đổi font, mà vấn đề màu đã xảy ra trước khi add cái mã đó rồi. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 16:01, ngày 9 tháng 9 năm 2025 (UTC) ::::::Trường hợp này khả năng là lỗi khi chuyển đổi giao diện sáng sang tối, không tương thích với mediawiki. Em có test cả PC và Mobile thì không thấy lỗi đâu nên bác nên kiểm tra lại điện thoại và máy tính, vì lỗi chỉ xuất hiện bên bác nên giờ em rất khó nói là nên xử lý thế nào. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:29, ngày 9 tháng 9 năm 2025 (UTC) Nhờ bạn cấm giúp rối đang phá hoại, xem [[Đặc biệt:Thay đổi gần đây]] để biết thêm. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 02:27, ngày 12 tháng 9 năm 2025 (UTC) :Cấm vô hạn và thu hồi luôn quyền sửa trang thảo luận vì đây là LTA. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 02:28, ngày 12 tháng 9 năm 2025 (UTC) ::Đã cấm vô hạn – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:29, ngày 12 tháng 9 năm 2025 (UTC) ::Mà LTA là ai nhỉ, dạo này ít qua bên Wikipedia nên không để ý, với lại trên này ít người tham gia. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:32, ngày 12 tháng 9 năm 2025 (UTC) ::Mà LTA là ai nhỉ, dạo này ít qua bên Wikipedia nên không để ý, với lại trên này ít người tham gia. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 02:32, ngày 12 tháng 9 năm 2025 (UTC) :::Bạn có thể qua đọc [[w:vi:Wikipedia:Tin nhắn cho bảo quản viên/Lưu 2025 8#Báo cáo phá hoại 84]] để biết thêm. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 05:20, ngày 12 tháng 9 năm 2025 (UTC) == [[Mô đun:parameters/lite]] == Phiền bạn xóa mô đun này vì lỗi thời và không còn sử dụng bất kỳ trang nào. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 03:43, ngày 12 tháng 9 năm 2025 (UTC) == Nhờ == Theo [[m:Tech/News/2022/02]] thì việc ẩn tiêu đề Trang Chính giờ đây chỉ cần tạo [[MediaWiki:Mainpage-title]] và [[MediaWiki:Mainpage-title-loggedin]] chứ cũng không cần phụ thuộc vào CSS nữa. Hiện tại trên giao diện Minerva thì tiêu đề Trang Chính vẫn đang hiển thị khi chưa đăng nhập. Vì bạn là BQVGD ở đây nên nhờ bạn tạo hai giúp trang này. Chỉ cần tạo trang trống là được, không có dấu - [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 11:28, ngày 1 tháng 10 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]]: Yummie lại sang đây rồi kìa bác. – [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 11:50, ngày 25 tháng 10 năm 2025 (UTC) ::Đã xử lý – [[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]]) 11:55, ngày 25 tháng 10 năm 2025 (UTC) : @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Nhờ bạn gỡ bỏ khóa trang [[ním]] chỉ vì có bút chiến vài lần trong quá khứ mà bán khóa vô hạn thì vô lý quá. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 12:03, ngày 25 tháng 10 năm 2025 (UTC) == Question of section templates == Hi, I saw your bot recently changed some section templates to use <nowiki><h3></nowiki> HTML tags, for example [[Bản mẫu:-noun-]] and [[Bản mẫu:-pron-]]. This causes problem when parsing pages and also inconsistent with the [[Wiktionary:Sơ đồ mục từ|layout document]]. Could you revert these edits to use <nowiki>===</nowiki> wikitext? – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 06:26, ngày 17 tháng 11 năm 2025 (UTC) :@[[Thành viên:Public class|Public class]] Those templates were used for entries in the old format, before I updated the entry map in 2025, Vietnamese Wiktionary used such templates for titles, like the current Dutch Wiktionary. But to make editing entries easier and compatible with the entry structure in English Wiktionary, the rule was changed to use the === heading, and the old format templates were changed to HTML code h2 h3, to hide the edit button next to the heading, to avoid members accidentally editing the template. I intended to use CSS to hide the edit button, but after trying many ways, there is no way to hide the edit button for these templates, so I switched to HTML code. I wonder if there is a way? – [[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]]) 07:43, ngày 17 tháng 11 năm 2025 (UTC) ::<nowiki>__NOEDITSECTION__</nowiki> magic word could be used. But it's also fine to use HTML tags, I already solved my problem by overriding the templates. – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 07:58, ngày 17 tháng 11 năm 2025 (UTC) == Không thể thêm mục. == Xin chào, mình đang muốn thêm phần khái niệm của từ nắc trong tiếng Việt. Tuy nhiên mình đã bị chặn bởi bộ lọc số 10 liên quan tới Yuumi gì đấy. Làm sao để mình có thể đăng bài mà không bị chặn. --[[Thành viên:Tucute515|Tucute515]] ([[Thảo luận Thành viên:Tucute515|thảo luận]]) 11:22, ngày 22 tháng 11 năm 2025 (UTC) :Mình đã tắt bộ lọc để xem thử bạn bị cấm từ gì, vì bộ lọc này có tác động khá mạnh. Bây giờ bạn thêm được rồi đó – [[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]]) 12:44, ngày 22 tháng 11 năm 2025 (UTC) == Mô đun cây thể loại == Theo tôi nghĩ đã đến lúc phải bán khoá toàn bộ các mô đun cây thể loại (category tree) vô hạn vì hầu hết các mô đun này đều ảnh hưởng lẫn nhau và chỉ cần có một vấn đề nhỏ thôi thì tất cả các thể loại dùng với auto cat đều lỗi hàng loạt. Không biết ý kiến của bạn như thế nào về đề xuất này? – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:41, ngày 30 tháng 11 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Mô đun này hiện tại đang được sử dụng tương đối nhiều, với [https://linkcount.toolforge.org/index.php?project=vi.wiktionary.org&page=M%C3%B4_%C4%91un:category_tree 8,917 trang] nhúng thì có lẽ là đủ điều kiện để khóa rồi, bên Wiktionary tiếng Anh thì mô đun trên 1000 trang đã khóa rồi. Ở đây thì ít, để đảm bảo mọi người đều có thể cập nhật dữ liệu mô đun, chỉ nên khóa đối với các mô đun và bản mẫu có trên 2.500-5.000 trang nhúng như Wikipedia tiếng Anh là phù hợp. Giờ khóa cũng dễ mà, Twinkle một phát là xong. Mình thì đồng ý với đề xuất này, nhưng để mình hỏi thêm @[[Thành viên:TheHighFighter2|TheHighFighter2]], @[[Thành viên:Higashizakura|Higashizakura]] và @[[Thành viên:WhoAlone|WhoAlone]], không biết 3 bạn có đồng ý đề nghị này không?--[[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]]) 15:13, ngày 30 tháng 11 năm 2025 (UTC) ::Tôi thì ok theo đề xuất bạn Hiyuune --.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:53, ngày 1 tháng 12 năm 2025 (UTC) : Bổ sung mô đun cần khóa: [[Mô đun:array]]. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 09:14, ngày 4 tháng 12 năm 2025 (UTC) == Lỗi == Nhờ bạn xem qua mục từ [[アトゥインネ]], không hiểu vì sao [[Module:dialect synonyms/ain/アッコッカムイ]] bị lỗi chỗ nào tôi không biết sửa được. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 08:27, ngày 4 tháng 12 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Không nhận diện được mã ngôn ngữ, cái này phải cập nhật lại module. Vì [[ Module:dialect synonyms]] này nó dùng nhiều mô đun khác, khả năng tìm ra lỗi hơi khó. Em sẽ cố gắng, nhưng nếu không được thì khả năng bác phải hỏi AI. – [[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]]) 13:06, ngày 4 tháng 12 năm 2025 (UTC) ::Đề mục lại có vấn đề rồi. Phiền bạn xem lại chứ nhìn vào rối mắt lắm. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 12:36, ngày 6 tháng 12 năm 2025 (UTC) :::@[[Thành viên:Hiyuune|Hiyuune]] Đề mục nào bạn ơi, mình thấy vẫn ổn mà? Bạn có thể dẫn chứng mục từ nào không? – [[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]]) 13:45, ngày 6 tháng 12 năm 2025 (UTC) ::::Mục từ [[アトゥインネ|này]], khi hiển thị trên mobile nó có vấn đề. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 13:47, ngày 6 tháng 12 năm 2025 (UTC) :::::Em thấy không có gì bất thường cả, riêng mô đun thì lỗi rồi cái này em bó tay, khả năng có liên quan đến mô đun tiếng Nhật nên nó lỗi, chứ mô đun dialect synonyms trên mục từ khác vẫn được mà tiếng Ainu lại lỗi thì chỉ có thể là do tiếng Nhật thôi. Không biết cụ thể nó bị lỗi gì, bác nói rõ được không, nếu có thể bác chụp ảnh lại gửi url lên đây thử, dùng imgbb. – [[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]]) 13:52, ngày 6 tháng 12 năm 2025 (UTC) ::::::Xem [https://ibb.co/mVvWK2MM ở đây]. – [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:08, ngày 6 tháng 12 năm 2025 (UTC) :::::::Em đã lùi lại bản mẫu, bác F5 hoặc làm mới lại trang thử, hoặc đăng xuất, xóa hết cache, lịch sử trình duyệt xem sao. Em không bị lỗi này nên không rõ lỗi của bác từ đâu ra. – [[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]]) 15:43, ngày 6 tháng 12 năm 2025 (UTC) : Phiền bạn xóa [[Mô đun:is-noun/style.css]], [[Mô đun:eo-conj/style.css]] vì nó không còn liên kết bất kì trang nào và lỗi thời. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 16:26, ngày 11 tháng 12 năm 2025 (UTC) : Tôi mới cập nhật lại theo phiên bản mới thì nó hết lỗi, có điều nó vẫn có cảnh báo. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 15:08, ngày 3 tháng 2 năm 2026 (UTC) == Yummie == Bác nên xem xét điều chỉnh lại cái bộ lọc này. Tôi thấy hơi có nhiều false positive khi xem trong [[Đặc biệt:Nhật trình sai phạm]]. Có thể điều chỉnh để những người có quyền autoconfirmed không bị ảnh hưởng. [[Thành viên:Nvdtn19|Nvdtn19]] ([[Thảo luận Thành viên:Nvdtn19|thảo luận]]) 07:15, ngày 6 tháng 12 năm 2025 (UTC) :Nó chỉ kích hoạt nếu tài khoản dưới 25 sửa đổi, cho nên nếu bị false thì khả năng chắc ít sửa đổi quá, em thấy bộ lọc này ít ảnh hưởng mà bác. – [[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]]) 10:34, ngày 6 tháng 12 năm 2025 (UTC) : Rối này lại tiếp tục phá hoại ở không gian tên thể loại, tag biển xóa nhanh bừa bãi. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 04:22, ngày 10 tháng 12 năm 2025 (UTC) == Cấm == Tài khoản [[Đặc_biệt:Đóng_góp/LamMaurisso|này]] đã ngừng hoạt động từ năm 2022 và các sửa đổi phá hoại đã lâu. Theo quy định, cấm để ngăn chặn phá hoại, không phải trừng phạt. Mời bạn bỏ cấm thành viên này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 09:02, ngày 7 tháng 12 năm 2025 (UTC) ==Happy Holidays== <div style="border-style:solid; border-color:violet; background-color:#fff; border-width:2px; text-align:left; padding:8px;" class="plainlinks"> {| style="border: 5px dotted #H1790; background-color: #DDDDDD; padding:4px" | rowspan="2" valign="left" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Christmas Tree 2011-12-24.jpg|left|300px|link=]]<span style="display:block;padding-top:10px;clear:both"> | <span style="font-family: Georgia; font-size: 98%; color: #190a89;">Chúc bạn Kateru Zakuro có một mùa '''Giáng sinh''' an lành, ấm áp và tràn ngập yêu thương bên gia đình!<br/> Bước sang '''năm mới''' 2026, chúc bạn gặp nhiều may mắn,<br/> gặt hái được nhiều thành công trong công việc và học tập.<br/> Một lần nữa chúc bạn sẽ có một năm mới thật an khang, hạnh phúc và vạn sự như ý!!</span> <br /> <span style="font-family: Georgia; font-size: 92%;"> | rowspan="2" valign="right" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Atlantic Firework Festival 2016 (53368638571).jpg|left|360px|link=]]<span style="display:block;padding-top:10px;clear:both"> |}</div> Lời chúc chân thành từ: <span style="background:#978FF;border:solid 1px;border-radius:8px;box-shadow:darkblue 2px 2px 2px">&nbsp;[[User:Kelly zhrm|<span style="font-family:Old English Text MT;color:#C90">Yellow</span>]]&#124;[[User talk:Kelly zhrm|&#248;]]&nbsp;</span>&nbsp; 05:40, ngày 24 tháng 12 năm 2025 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:17, ngày 28 tháng 4 năm 2026 (UTC) </div> <!-- Tin nhắn của Thành viên:Keegan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472541 --> == [[Mô đun:headword]] == Mô đun này bạn cập nhật xong nhưng nó lỗi chỗ khác, ví dụ như mục từ [[नियंत्रण]]. Lỗi: Mô_đun:table/extend tại dòng 12: attempt to index local 'list' (a nil value) (lỗi xuất phát từ mô đun trên) [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 13:46, ngày 6 tháng 5 năm 2026 (UTC) :Từ khi nào mà head nó không cập nhật được từ chữ thường nhỉ, bên tiếng Anh thì được – [[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]]) 14:49, ngày 6 tháng 5 năm 2026 (UTC) gevy1n2xa9mnhjxgcprebolaom9h868 robotyka 0 256820 2350598 2008827 2026-05-07T06:15:05Z Hiyuune 50834 2350598 wikitext text/x-wiki =={{langname|pl}}== {{wp|pl:}} ==={{section|etym}}=== {{ety|pl|:af|robot|-yka|text=+|tree=1}} ==={{section|pron}}=== {{pl-pr|&|a=LL-Q809 (pol)-Poemat-robotyka.wav}} ==={{section|n}}=== {{pl-noun|f}} # [[robot|Robot]] [[học]]. ===={{section|decl}}==== {{pl-decl-noun-f|tantum=s}} ===={{section|rel}}==== {{col|pl|title=tính từ |antyrobotniczy |roboczy |robociarski |robotniczy |robotny }} {{col|pl|title=phó từ|roboczo}} {{col|pl|title=danh từ |robociarz |robocizna |roboczodniówka |roboczogodzina |robot |robota |robotka |robotnica |robotnik |robotność |robotyzacja |robótka }} {{col|pl|title=động từ |robić<g:impf> }} ==={{section|further}}=== * {{R:pl:WSJP}} * {{R:pl:PWN}} 7teus1zw8pjq4vkohm0x5zjitep9afk động mạch 0 257100 2350764 2009737 2026-05-07T08:00:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350764 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Image:Artery.svg|nhỏ|động mạch]] {{-pron-}} {{vie-pron}} {{-noun-}} '''động mạch''' # [[mạch máu|Mạch máu]] thuộc [[hệ]] [[tuần hoàn]] trong [[cơ thể]], [[dẫn]] [[máu]] từ [[tim]] đến các [[cơ quan]]. {{-trans-}} {{đầu}} * {{afr}}: [[slagaar]] * {{eng}}: [[artery]] * {{cat-2}}: [[artèria]] {{f}} * {{fra}}: [[artère]] {{f}} * {{tgl}}: [[luwasdaluyan]], [[arterya]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] ewl2v6twbwaybtxqousi0n2laqr9cg7 2351027 2350764 2026-05-07T10:45:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351027 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Image:Artery.svg|nhỏ|động mạch]] {{-pron-}} {{vie-pron}} {{-noun-}} '''động mạch''' # [[mạch máu|Mạch máu]] thuộc [[hệ]] [[tuần hoàn]] trong [[cơ thể]], [[dẫn]] [[máu]] từ [[tim]] đến các [[cơ quan]]. {{-trans-}} {{đầu}} * {{afr}}: [[slagaar]] * {{eng}}: [[artery]] * {{cat-old}}: [[artèria]] {{f}} * {{fra}}: [[artère]] {{f}} * {{tgl}}: [[luwasdaluyan]], [[arterya]] {{cuối}} [[Thể loại:Danh từ tiếng Việt]] drhytvqvnftwz8hom2w3lhtnnlrhtfl Thảo luận Thành viên:TheHighFighter2 3 257807 2350452 2350371 2026-05-06T12:42:20Z PANG450s 61190 Đã lùi lại sửa đổi [[Special:Diff/2350371|2350371]] của [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|thảo luận]]) 2350452 wikitext text/x-wiki == Chào == Bạn có phải HighFighter mà bị quên mật khẩu không? [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 04:11, ngày 14 tháng 11 năm 2020 (UTC) Đúng vậy, thưa bạn.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == BQV == Mời bạn vô [[Thảo luận Wiktionary:Bảo quản viên]] để chấp nhận lời đề cử. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 09:44, ngày 1 tháng 12 năm 2020 (UTC) == Thư mời == Mời bạn tham gia [[Thảo luận Wiktionary:Hành chính viên|BQ chọn hành chính viên]]. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 08:21, ngày 11 tháng 12 năm 2020 (UTC) == Bảo quản viên == Cám ơn sự kiên nhẫn của bạn, bạn hiện là một bảo quản viên tại đây! Mong bạn tiếp tục phát triển dự án này. Nếu có thể, xin bạn tự giới thiệu trong [[Thành viên:‎TheHighFighter2|trang cá nhân]]. &ndash;&nbsp;[[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 19:55, ngày 19 tháng 12 năm 2020 (UTC) :Chúc mừng bạn đã trở thành BQV mới của dự án. Mong bạn dành ra ít phút mỗi ngày để theo dõi trang "Thay đổi gần đây". Nếu có trang nào viết linh tinh thì bạn có thể xóa chúng. Nếu có sửa đổi nào linh tinh thì bạn có thể lùi sửa chúng. Xin cảm ơn bạn! [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:02, ngày 19 tháng 12 năm 2020 (UTC) == Xóa trang thành viên == Xin chào! Việc bạn xóa trang thành viên Hứa Ngọc Sơn, tuy xóa thì không có ảnh hưởng xấu đến Wikitionary nhưng việc tạo trang thành viên dường như không có gì sai. Đặc biệt là trang thành viên thì có thể ghi bất cứ thông tin cá nhân nào, miễn không vi phạm nguyên tắc là được. [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 12:04, ngày 31 tháng 12 năm 2020 (UTC) : [[Thành viên:Đức Anh|Đức Anh]] Tôi đã phục hồi lại trang đó.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == Chào bác == Bác đính kèm link đến trang dũng cảm giúp [[Thành viên:Nghia12072002|Nghia12072002]] ([[Thảo luận Thành viên:Nghia12072002|thảo luận]]) 05:52, ngày 5 tháng 1 năm 2021 (UTC) == IP phá hoại == [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/1.54.201.226 IP này] tạo nhiều trang sai nghĩa và sai ngôn ngữ. Bạn nên xóa chúng nếu bắt gặp. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:14, ngày 8 tháng 1 năm 2021 (UTC) == Bị cấm tôi trên Wikipedia tiếng Việt == Help me. Tôi bị cấm bị treo IP do thằng Alphama bị cấm trên Wikipedia tiếng Việt [https://vi.wikipedia.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Danh_s%C3%A1ch_c%E1%BA%A5m&wpTarget=%2397813 xem nè]. Bạn cần hỏi Alphama để giảm thời gian cấm đi. [[Thành viên:HaThanhPhuoc|HaThanhPhuoc]] ([[Thảo luận Thành viên:HaThanhPhuoc|thảo luận]]) 07:58, ngày 21 tháng 5 năm 2021 (UTC) :Xin lỗi tôi không giúp được bạn, bạn nên thảo luận trực tiếp với Alphama.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:53, ngày 21 tháng 5 năm 2021 (UTC) == Chào == Xin chào bạn. Hình như bạn hoạt động rất tích cực ở đây đúng không? Nhờ bạn xem thử trang [[:en:Module:Unicode data]], xem có nhập về bên mình được không. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 8 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Dự án này chỉ còn mình tôi hoạt động tích cực thôi. Mấy cái mô đun, bản mẫu thì tôi chịu thua, không phải là lĩnh vực sở trường của tôi. Nếu bạn muốn nhập nó từ bên en về thì xin mời.--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:50, ngày 8 tháng 7 năm 2021 (UTC) :☹, mình tưởng bạn phải biết chứ… Thôi, mình sẽ làm những thứ nhỏ hơn trước vậy. Dù sao cũng cảm ơn bạn đã ở lại đóng góp cho từ điển mở này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 08:34, ngày 8 tháng 7 năm 2021 (UTC) == ☹ == Không thể tin nổi… Ngay cả mục từ như [[3]], [[4]], [[!]] cũng không có! Bạn có thể hỗ trợ mình trong mảng Unicode được không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:29, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Xin lỗi, tôi không thể giúp được bạn. Việc này bạn nên nhờ các thành viên bên Wikipedia, bên ấy có nhiều chuyên gia hơn bên này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:34, ngày 10 tháng 7 năm 2021 (UTC) :Không, ý mình là dịch các mục từ bên en sang đây mà. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:06, ngày 10 tháng 7 năm 2021 (UTC) ::{{ping|Ccv2020}} Việc này thì ok--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:22, ngày 10 tháng 7 năm 2021 (UTC) == Khôi phục trang == Chào bạn. Không biết bạn có thể khôi phục trang [[B]] được không nhỉ? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:01, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã khôi phục trang, tuy nhiên bạn cần phải sửa lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:12, ngày 10 tháng 7 năm 2021 (UTC) :<font color=limegreen>✓</font>. Lần sau, bạn chú ý nếu nội dung được khôi phục là phá hoại thì bạn đừng khôi phục nha. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:35, ngày 10 tháng 7 năm 2021 (UTC) == Thể loại == Chào bạn. Không biết mình có nên đổi [[:Thể loại:Unicode CJK Unified Ideographs]] thành [[:Thể loại:Khối ký tự CJK Unified Ideographs]]? Cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:49, ngày 12 tháng 7 năm 2021 (UTC) :Tôi cũng nghĩ nên đổi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:00, ngày 12 tháng 7 năm 2021 (UTC) ::Nếu vậy thì phải dùng Cat-a-lot thì mới chuyển hết các trang trong thể loại nhanh nhất. Lát tôi chép mã nguồn vào, rồi làm luôn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:39, ngày 12 tháng 7 năm 2021 (UTC) == [[:en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. [[Thành viên:Thienhau2003|Thienhau2003]] cho biết nếu chép hết đống đó sang đây thì [[Bản mẫu:character info]] sẽ hết lỗi. Do mấy ngày nay không có máy tính vào lúc thích hợp, nên nhờ bạn làm giúp việc này. Cảm ơn bạn rất nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:50, ngày 14 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Sáng mai tôi sẽ chép đống đó cho bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:38, ngày 14 tháng 7 năm 2021 (UTC) Xong bạn khóa hết các mô đun do tôi và bạn tạo ra nhé. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 05:08, ngày 16 tháng 7 năm 2021 (UTC) :Alo bạn (<big>↑</big>) – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:56, ngày 20 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi nghĩ cũng chẳng cần khóa đâu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:27, ngày 20 tháng 7 năm 2021 (UTC) == Cần hỗ trợ == Chào bạn. Do ngày mai tôi chuẩn bị thi nên sẽ cực kỳ hạn chế tham gia dự án này. Mong bạn giúp mình vừa tạo các mục từ Unicode mới, vừa thêm mã <nowiki>“{{character info}}”</nowiki> vào những mục từ Unicode hiện có. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:36, ngày 21 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} {{OK}} Chúc bạn sẽ thi thật tốt nhé--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:44, ngày 21 tháng 7 năm 2021 (UTC) == Về [[H₂SO₄]] và TCVN == Chào bạn. Cảm ơn bạn đã mang TCVN đến Wiktionary. Nhờ vậy mà tôi dễ kiểm soát hành vi của mình hơn, tránh những sửa đổi "trút giận" (mà tôi đã thử làm tại mục từ [[B]], [[I]]). Tôi nghĩ chúng ta có thể viết thảo luận thống nhất về vấn đề này một cách ngắn gọn, để những người đi sau sẽ thấy được bằng chứng. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:43, ngày 24 tháng 7 năm 2021 (UTC) ==Nhờ giúp== Chào bạn. Phiền bạn qua xem đóng góp của tôi và xem 5 trang nháp bản mẫu, xem bản mẫu nào hữu ích thì chuyển ra không gian tên Bản mẫu giúp mình. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:55, ngày 25 tháng 7 năm 2021 (UTC) Tôi thấy cái 1, 3, 4, 5 là ok. Tuy nhiên, hiện không biết đặt tên bản mẫu là gì--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:10, ngày 25 tháng 7 năm 2021 (UTC) :Tôi thấy 1–4 nên được đưa ra không gian tên Bản mẫu trước. Cái thứ 5 dễ bị nhầm lẫn: có những ký tự Unicode đã được định rõ nhưng hiển thị dưới dạng “&#1000000;”. Những trường hợp như thế thì nên cân nhắc dùng cái số 1. Về tên thì bạn có thể xem mã nguồn (đằng sau trường “name”). Nếu bạn cần hiểu rõ hơn, mình sẽ giải thích. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:39, ngày 25 tháng 7 năm 2021 (UTC) <hr> Chào bạn. Phiền bạn kiểm tra trong [https://www.compart.com/en/unicode/block/U+2B00 khối ký tự này] xem có ký tự nào ở dạng “&#1000000;” thì báo cho mình để mình cân nhắc dùng {{LKBM|cảnh báo Unicode}}. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:41, ngày 26 tháng 7 năm 2021 (UTC) :À mà máy tính bạn dùng hệ điều hành Windows đời nào vậy? Phiền bạn trả lời câu hỏi này trước. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:42, ngày 26 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Máy tôi dùng win 7. Các ký tự ở dạng “&#1000000;”: * Từ U+2B00 đến U+2B2F * U+2B45, U+2B46 * U+2B4D đến U+2BFF * --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:05, ngày 26 tháng 7 năm 2021 (UTC) :☹… Cài font chữ Symbola đi là vừa. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:07, ngày 26 tháng 7 năm 2021 (UTC) == Thư mời == Mời bạn tham gia thảo luận Wikibooks tại [[b:vi:Wikibooks:Phòng thảo luận#Cải thiện phiên bản máy tính|trang này]]. Xin cảm ơn! [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:27, ngày 1 tháng 8 năm 2021 (UTC) :{{u|Đức Anh}}: Tôi nghĩ thư mời ở đâu thì nên mời ở đó. Như thế sẽ tránh "lạc đề". [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:31, ngày 4 tháng 8 năm 2021 (UTC) == [[Đặc biệt:Đổi hướng/revision/2019991]] == Nhờ bạn ẩn giúp phiên bản này của trang, đồng thời xóa luôn trang [[Thành viên:Sinh tử hữu mệnh]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:25, ngày 4 tháng 8 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã ẩn phiên bản đó của trang, còn trang [[Thành viên:Sinh tử hữu mệnh]] thì tôi ko xóa đc--..--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 03:00, ngày 4 tháng 8 năm 2021 (UTC) :Sao không xóa được nhỉ… Hay bạn thử lại xem. Nếu vẫn không được thì bạn thử ẩn phiên bản trang thành viên đó xem có được không. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:46, ngày 4 tháng 8 năm 2021 (UTC) ::Nội dung xuất hiện trên trang này được sao chép từ [[metawiki:User:Sinh_tử_hữu_mệnh|meta]] nên tôi ko xóa hay ẩn đi đc--..-- – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 05:07, ngày 4 tháng 8 năm 2021 (UTC) :::Tôi quên mất. Vậy thì phải nhờ bên Meta xóa hộ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:43, ngày 5 tháng 8 năm 2021 (UTC) == Nhờ giúp đỡ == Chào bạn. Các mục từ chữ Hán và một số ít mục từ khác hiện nay cần được cập nhật thêm {{LKBM|character info}}. Mong bạn giúp tôi thêm chúng vào các mục từ chữ Hán nói riêng và các mục từ Unicode nói chung. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:36, ngày 15 tháng 8 năm 2021 (UTC) == Hỏi về Wikitionary == Bạn là bảo quản viên nơi này, cho mình hỏi từ điển mở này mình viết những gì. Bạn có thể minh họa giúp mình không? [[Thành viên:Nhotuo|Nhotuo]] ([[Thảo luận Thành viên:Nhotuo|thảo luận]]) 09:01, ngày 27 tháng 8 năm 2021 (UTC) :{{ping|Nhotuo}} Bạn có thể tham khảo [[Wiktionary:Giới thiệu]]. Nếu còn gì thắc mắc, bạn cứ tự nhiên hỏi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:52, ngày 28 tháng 8 năm 2021 (UTC) == Wikiquote == Chào bạn, mời bạn cho ý kiến tại [[q:Wikiquote:Thảo luận#Đề bạt bảo quản viên|Biểu quyết bảo quản viên Wikiquote]]. – [[Thành viên:Băng Tỏa|Băng Tỏa]] ([[Thảo luận Thành viên:Băng Tỏa|thảo luận]]) 18:21, ngày 28 tháng 8 năm 2021 (UTC) == Xóa trang == Nhờ bạn xóa trang thử nghiệm trong [[:Thể loại:Chờ xóa]], cảm ơn bạn. (Chỉ có 1 trang nhưng tôi vẫn nhắc vì sợ không ai chú ý đến. Xin lỗi nếu đã làm phiền bạn) [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 14:10, ngày 5 tháng 9 năm 2021 (UTC) == Unicode 14.0 và [[en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. Unicode đã chính thức ra mắt phiên bản 14.0 vào ngày 14/09/2021. Vì thế, nhờ bạn theo dõi trong liên kết enwikt mà tôi đã cho ở trên xem có những thay đổi gì. Bạn có thể tìm thông tin về phiên bản này ở trang website chính thức của Unicode (do tôi đang dùng TV nên không gửi liên kết cho bạn được, mong bạn thông cảm). Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:28, ngày 15 tháng 9 năm 2021 (UTC) :Chào bạn, [https://www.unicode.org/charts/PDF/Unicode-14.0/ đây là liên kết]. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:15, ngày 15 tháng 9 năm 2021 (UTC) ::Nếu thích thì bạn có thể tự cập nhật luôn cũng được. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:10, ngày 16 tháng 9 năm 2021 (UTC) == [[Trợ giúp:Unicode]] == Chào bạn. Bạn thử đọc xem có hiểu không, nếu chưa thì chúng ta có thể sửa. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:36, ngày 16 tháng 9 năm 2021 (UTC) :{{ping|Ccv2020}} Về nội dung thì bạn viết tương đối dễ hiểu. Tuy nhiên, tôi vẫn có vài ý kiến sau: * Ở mục cấu trúc: 1. <syntaxhighlight lang="javascript"> a.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “mul”-}}'' và b.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “symbol”-}}'' </syntaxhighlight> Cái a có thể ghi thêm là: '''mã''' ngôn ngữ của mục từ '''theo ISO 639-3'''. Cái b nên thay "ngôn ngữ" bằng "từ loại". 2. Đối với nhiều người, họ sẽ ko biết bản mẫu ''-pron-'' là gì. Nên thêm vào phần trong ngoặc bên dưới: (Cách phát âm của mục từ...) * Phần Xem thêm: Có thể liên kết thêm 1 số bài viết về Unicode trên Wiki. --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:33, ngày 16 tháng 9 năm 2021 (UTC) <font color=#80ff00>'''&#10003; – đã tiếp nhận, sẽ chỉnh sửa.'''</font> [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:04, ngày 16 tháng 9 năm 2021 (UTC) :<font color=#80ff00>'''&#10004;'''</font> – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 16 tháng 9 năm 2021 (UTC) == Cảm ơn bạn rất nhiều == Cảm ơn bạn đã xóa hộ tôi rất nhiều trang tôi gắn biển gần đây. Nếu bạn có thời gian, rất mong bạn giúp tôi một tay để xử lý hết tất cả thể loại với tên gọi cũ của 'template'. Cảm ơn bạn rất nhiều – [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 15:44, ngày 23 tháng 9 năm 2021 (UTC) == Gợi ý đóng góp == Chào bạn. Tôi thấy có chương trình “Vua tiếng Việt” trên VTV3, hay lắm vì có những từ mà tôi và chúng ta còn chưa biết. Thế nên tôi nghĩ là lấy các từ trong chương trình đó ra để viết mục từ, như thế dự án chúng ta sẽ thêm phần phong phú và đa dạng hơn. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 12:51, ngày 22 tháng 10 năm 2021 (UTC) == Giúp mở khóa == Bạn có thể '''tắt khóa theo tầng dùm 2 trang''' này: * [[Bản mẫu:Thông báo sửa đổi]] * [[Bản mẫu:=nn]] Do anh Mxn khóa theo tầng khiến mình không sửa được bản mẫu tài liệu cùng hàng loạt bản mẫu khác. Mong bạn làm giúp, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 11:32, ngày 24 tháng 10 năm 2021 (UTC) : Xin nhờ bạn tắt khóa theo tầng dùm [[Mô đun:Noarticletext]] luôn nhe, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:04, ngày 24 tháng 10 năm 2021 (UTC) == [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t?usp=sharing Font chữ] == Chào bạn. Bạn đã thử tải font chưa? Bạn nhấn vào đó để lấy bản mới nhất nhé. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:32, ngày 25 tháng 10 năm 2021 (UTC) == Nhờ xóa trang == Nhờ bạn xóa dùm * [[Bản mẫu:Hộp thông báo thể loại/cmbox.css]] * [[Bản mẫu:Hộp thông báo/ambox.css]] * [[Bản mẫu:imbox/imbox.css]] do mấy trang đó tạo css cho thông báo nhưng mình đã chuyển hết về một trang rồi nên mấy cái này không cần nữa. Cảm ơn bạn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 09:37, ngày 31 tháng 10 năm 2021 (UTC) == Nhờ giúp == Nhờ bạn giúp cập nhật [[Bản mẫu:Trang Chính 2/Dự án khác]], bằng mã trong [[Thành viên:Thienhau2003/Test]], do cần thay đổi logo Wikipedia thành hình quả cầu đúng như Trang Chính cũ, cảm ơn nhé.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:42, ngày 5 tháng 11 năm 2021 (UTC) == Các mục từ tiếng Tangut == Chào bạn. Theo dữ liệu về khả năng hiển thị hệ chữ Tangut, hiện tại '''chưa có thiết bị nào hỗ trợ sẵn các ký tự này'''. Do đó, chúng cần có {{LKBM|cảnh báo Unicode}} (xem mẫu: [[𗸨]]). Ngoài ra, ba mục từ của bạn chưa có ảnh tham khảo (đã thêm {{LKBM|yêu cầu tập tin Unicode}}). Nếu bạn gặp khó khăn trong bất kỳ vấn đề gì, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:11, ngày 19 tháng 11 năm 2021 (UTC) :Bạn có thể xem [[Trợ giúp:Unicode/Ảnh]] để biết cách thêm ảnh tham khảo vào các mục từ Unicode. Nếu bạn không tìm được ảnh, hãy thông báo tôi; tôi sẽ giúp bạn. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:00, ngày 19 tháng 11 năm 2021 (UTC) ::Nhờ bạn giúp vậy tôi không tìm thấy được ảnh--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:45, ngày 20 tháng 11 năm 2021 (UTC) :::OK, chiều nay tôi rảnh, tôi sẽ giúp bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 20 tháng 11 năm 2021 (UTC) ::::'''<font color=#80ff00>✔ – Xong.</font>''' Lần sau, bạn có thê kiếm ảnh ở [http://en.glyphwiki.org/wiki/GlyphWiki:MainPage GlyphWiki]. Nhập các cú pháp như “u1b050” hay “u2c5be” là đến nơi có ảnh. Nhớ là ảnh .svg ở bên trái; muốn lưu ảnh thì nhấn chuột phải rồi lưu lại ảnh, sau đó đăng lên Wikimedia Commons dưới giấy phép như trong mẫu [[:commons:File:U+17000.svg|này]]. Nếu bạn gặp bất kỳ khó khăn nào, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:05, ngày 20 tháng 11 năm 2021 (UTC) == Không gian tên mới == Chào bạn. Vấn đề không gian tên “Phụ lục” là một trong những vấn đề tôi đang quan tâm nhất hiện nay trên Wiktionary. Hiện tại thì để tránh lỗi ở các trang có nội dung giống hệt Wiktionary, các trang có tên “Phụ lục:…” đã được tạm thời chuyển sang “Wiktionary:Phụ lục…”. Nếu như Wiktionary chúng ta không có không gian tên này, việc chúng ta bị tụt hậu sẽ là điều tất yếu có thể xảy ra. Chính vì thế, tôi đang sắp sửa đề xuất không gian tên mới, bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:34, ngày 22 tháng 11 năm 2021 (UTC) : ✅ --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:19, ngày 23 tháng 11 năm 2021 (UTC) ::Cảm ơn ý kiến của bạn. Do ý kiến của bạn chỉ là một phần nhỏ nên tôi chưa thực hiện ngay; có thể tôi sẽ mở biểu quyết về vấn đề này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:31, ngày 23 tháng 11 năm 2021 (UTC) <hr> Mời bạn cho ý kiến tại [[Wiktionary:Thảo luận#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 13:30, ngày 28 tháng 11 năm 2021 (UTC) == Mời xem == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Kateru Zakuro]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Kateru_Zakuro|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}--[[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]]) 15:56, ngày 28 tháng 11 năm 2021 (UTC) == [[:Thể loại:Mục từ tiếng Yiddish]] == Nhờ bạn di chuyển [[:Thể loại:Mục từ tiếng Yiddish]] đến [[:Thể loại:Mục từ tiếng Do Thái]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 29 tháng 11 năm 2021 (UTC) : Nó là 2 ngôn ngữ khác nhau mà {{w|Tiếng Yiddish}}, {{w|Tiếng Do Thái}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:19, ngày 29 tháng 11 năm 2021 (UTC) == [[Bản mẫu:Edittools]] == Tôi vừa mới thêm [[Bản mẫu:Edittools]] vào [[MediaWiki:Edittools]] để khi sửa đổi, mọi người có thể thêm vào nhanh bản mẫu đề mục vào mục từ mà không cần phải tra hay nhớ bản mẫu có tên gì. Nếu bạn có muốn thêm cái gì vào thì vào [[Bản mẫu:Edittools]] để thêm nhé.--[[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]]) 15:43, ngày 9 tháng 12 năm 2021 (UTC) == Hỏi == Sao gần đây có nhiều IP lạ vào để phá hoại bằng cách tạo mục từ xúc phạm và tấn công thế? Có cách nào hạn chế vấn đề này không?--[[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]]) 01:37, ngày 11 tháng 12 năm 2021 (UTC) == Thay logo Tết cho Wiktionary == Chào bạn. Năm 2012 là lần gần nhất Wiktionary thay logo Tết cho dự án. Từ đó đến nay, Wiktionary chưa thay logo Tết thêm lần nào cả. Vì thế, tôi có ý định đề xuất một cuộc thi làm logo Tết cho Wiktionary tiếng Việt, với thành phần tham gia là các thành viên Wikipedia có kinh nghiệm trong thiết kế logo các dự án mở. Trong ngày hôm nay, tôi sẽ thực hiện mở cuộc thi đó. Bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:44, ngày 20 tháng 12 năm 2021 (UTC) : 👌 --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:56, ngày 20 tháng 12 năm 2021 (UTC) == Font chữ == Chào bạn, cuối cùng tôi cũng làm xong font cho Unicode 14.0 rồi… Phiền bạn bấm vào [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t đây] để tải bản mới nhất. Cảm ơn bạn đã sử dụng font chữ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:11, ngày 4 tháng 1 năm 2022 (UTC) :Có vấn đề ở font thứ nhất, xin lỗi :( – [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 01:46, ngày 6 tháng 1 năm 2022 (UTC) == How we will see unregistered users == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin=content/> Hi! You get this message because you are an admin on a Wikimedia wiki. When someone edits a Wikimedia wiki without being logged in today, we show their IP address. As you may already know, we will not be able to do this in the future. This is a decision by the Wikimedia Foundation Legal department, because norms and regulations for privacy online have changed. Instead of the IP we will show a masked identity. You as an admin '''will still be able to access the IP'''. There will also be a new user right for those who need to see the full IPs of unregistered users to fight vandalism, harassment and spam without being admins. Patrollers will also see part of the IP even without this user right. We are also working on [[m:IP Editing: Privacy Enhancement and Abuse Mitigation/Improving tools|better tools]] to help. If you have not seen it before, you can [[m:IP Editing: Privacy Enhancement and Abuse Mitigation|read more on Meta]]. If you want to make sure you don’t miss technical changes on the Wikimedia wikis, you can [[m:Global message delivery/Targets/Tech ambassadors|subscribe]] to [[m:Tech/News|the weekly technical newsletter]]. We have [[m:IP Editing: Privacy Enhancement and Abuse Mitigation#IP Masking Implementation Approaches (FAQ)|two suggested ways]] this identity could work. '''We would appreciate your feedback''' on which way you think would work best for you and your wiki, now and in the future. You can [[m:Talk:IP Editing: Privacy Enhancement and Abuse Mitigation|let us know on the talk page]]. You can write in your language. The suggestions were posted in October and we will decide after 17 January. Thank you. /[[m:User:Johan (WMF)|Johan (WMF)]]<section end=content/> </div> 18:20, ngày 4 tháng 1 năm 2022 (UTC) <!-- Tin nhắn của Thành viên:Johan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Target_lists/Admins2022(8)&oldid=22532697 --> == New account == Xin chào. I’m Fête, but this is my new account. Seeing that I never did vandalism at the Vietnamese Wiktionary, so can I restart to contribute here? [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 13:58, ngày 18 tháng 1 năm 2022 (UTC) :{{u|VincentPH}}: No problem. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:45, ngày 18 tháng 1 năm 2022 (UTC) ::Cám ơn. Nếu tôi tiếp tục sửa đổi, có lẽ trước sau có người cấm mãi mãi, vì thế tôi quyết đình rời Wiktionary, goodbye. [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 15:56, ngày 18 tháng 1 năm 2022 (UTC) == Thư mời tham gia biểu quyết == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Ccv2020]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Ccv2020|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}[[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 00:53, ngày 23 tháng 2 năm 2022 (UTC) == Cảm ơn bạn == Đã giúp mình hoàn thành trang NSFW trong Wiktionary! [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 09:39, ngày 1 tháng 4 năm 2022 (UTC) == Template "nod" == Somebody made [[ᨾᩯ᩠ᩅ]]. What language for the code "nod" is it in Vietnamese? --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 13:18, ngày 4 tháng 4 năm 2022 (UTC) == Trang thành viên == Chào bạn. Chắc bạn thấy trang thành viên của tôi "chất" quá nên "chôm" luôn của tôi à? (😊) Để có trải nghiệm tốt nhất thì bạn tải font Roboto về máy tính để hiển thị đúng nhé, bạn thích kiểu thiết kế font [https://www.dafont.com/roboto.font cũ] hay [https://fonts.google.com/specimen/Roboto mới] tuỳ bạn (tôi thích dùng kiểu cũ). Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:10, ngày 18 tháng 5 năm 2022 (UTC) == Việc bên wikibooks == Mời bạn sang phòng thảo luận bên wikibooks cho ý kiến nhé. – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 08:08, ngày 17 tháng 7 năm 2022 (UTC) == Mã ngôn ngữ == Chào bạn, những ngôn ngữ không có mã ISO thì cho vào Wiktionary được không nhỉ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 10:23, ngày 27 tháng 7 năm 2022 (UTC) :{{ping|Thành viên:WhoAlone}} Cái này thì tùy trường hợp, nhưng nói chung là được--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:18, ngày 28 tháng 7 năm 2022 (UTC) ::Ví dụ, nếu tôi muốn đưa [https://en.wikipedia.org/wiki/Soyot-Tsaatan_language tiếng Soyot] vào Wiktionary thì có thể đặt tên bản mẫu đề mục kiểu như {{Liên kết bản mẫu|-Soyot-}} được không, thay vì mã ngôn ngữ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 04:18, ngày 28 tháng 7 năm 2022 (UTC) :::{{ping|WhoAlone}} Tôi nghĩ nên dùng bản mẫu đề mục theo cấu trúc: mã ISO của ngữ hệ bao hàm ngôn ngữ đó + chữ viết tắt tên ngôn ngữ. Các ngôn ngữ như [[:Thể loại:Mục từ tiếng Mông Cổ Khamnigan|Mông Cổ Khamnigan]], [[:Thể loại:Mục từ tiếng Kyakala|Kyakala]],... đều không có mã ISO và chúng đều dùng bản mẫu đề mục theo cấu trúc bên trên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:23, ngày 28 tháng 7 năm 2022 (UTC) == Về trang [[Thành viên:Tongdothamlang]] == Tôi thấy đầu tiên thì thành viên tạo trang với nội dung quảng cáo rõ ràng trong [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212 lịch sử sửa đổi] của trang, song không muốn trang bị xóa thành viên đã nhanh tay giấu kín mà xóa luôn nội dung quảng cáo nên tôi mới yêu cầu xóa trang đó. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:46, ngày 19 tháng 8 năm 2022 (UTC) : Và rất có thể thành viên đã lạm dụng lịch sử sửa đổi và dùng nó với mục đích quảng bá ([https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212]) [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:49, ngày 19 tháng 8 năm 2022 (UTC) :: nên tôi nghĩ xóa rồi tạo lại với nội dung "Chẩn" hoặc ẩn một phiên bản cũ sẽ là một ý kiến hay để giải quyết vụ quảng cáo này. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:51, ngày 19 tháng 8 năm 2022 (UTC) :::✔ Đã ẩn phiên bản đầu tiên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:02, ngày 19 tháng 8 năm 2022 (UTC) == IPA == Bạn có thể sửa những mục từ IPA tiếng Thổ thành chữ Latinh được không? Tôi không thạo việc này lắm. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 14:23, ngày 20 tháng 8 năm 2022 (UTC) :{{ping|WhoAlone}} Xin lỗi bạn, việc này tôi cũng không rành cho lắm--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:29, ngày 22 tháng 8 năm 2022 (UTC) == Font chữ == 🤣… Trang thành viên của bạn làm tôi muốn đảo mắt 180 độ… Tiện thể vụ font chữ Unicode 15.0 chắc là năm nay mình không làm được rồi, mong bạn thông cảm. Nhưng trên trang thành viên của mình có để link ở mục “Lưu trữ” mà một vài trong số đó có Unicode 15.0, tuy nhiên chúng chỉ dùng được trên một số phần mềm mà thôi. Nếu cần bạn có thể tải font từ các link đó để dùng khi cần. Cảm ơn bạn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:55, ngày 16 tháng 11 năm 2022 (UTC) :{{ping|Ccv2020}} 😅... Cái này bạn phải trồng cây chuối thì may ra mới đọc được nhé... Tiện thể vụ font chữ Unicode 15.0, thì không sao đâu bạn à. Tôi cũng không quan tâm cho lắm. Nếu cần tôi sẽ tải font từ các link đó để dùng khi cần. Cảm ơn bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:34, ngày 17 tháng 11 năm 2022 (UTC) == Bản mẫu:R:Tratu == Trước đây bản mẫu đều dùng 2 tham số như |vn|vn để định cho cái đường link dẫn đến đúng mục từ, nhưng mà đổi sang bản mới như thế nó rất tai hại ở chỗ là tất cả đều chuyển sai đường liên kết như [[cánh tay]] đang dẫn sai đường liên kết. Trừ khi có bot sửa thì được còn bây giờ nên để lại bản cũ. – [[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]]) 10:32, ngày 8 tháng 12 năm 2022 (UTC) :P/S: Bác nên nhìn kỹ lại cái [https://en.wiktionary.org/w/index.php?title=Template:R:Tra_T%E1%BB%AB&action=history source gốc], nó là Mxn tạo ra cách đây 2 tháng. Tại vì bên đó không có cho nên anh ấy mới tạo.--[[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]]) 10:34, ngày 8 tháng 12 năm 2022 (UTC) :{{ping|Kateru Zakuro}} Không cần phải đổi lại đâu bạn ạ. Tôi sẽ cố gắng sửa lại đường dẫn trong thời gian sớm nhất--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:41, ngày 8 tháng 12 năm 2022 (UTC) ::Em nghĩ không cần phải sửa lại đâu, vì có đến [https://linkcount.toolforge.org/index.php?project=vi.wiktionary.org&page=B%E1%BA%A3n_m%E1%BA%ABu:R:Tratu 1,420] trang lận, ai đâu mà sửa cho hết. Mà em thấy anh rất hay nhập bản mẫu tràn lan hoặc cập nhật vào Wiki thì không ổn đâu, ở đây có nhiều bản mẫu rất lỗi thời, chưa kể có sự khác biệt ở cách dùng (phải làm sao mà có thể dùng được mã 3 ngôn ngữ khi hầu hết Wiki đều dùng 2 ngôn ngữ) nên không thể nói muốn cập nhật là cập nhật– [[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]]) 13:17, ngày 8 tháng 12 năm 2022 (UTC) == Đề xuất == Cảm ơn BQV đã lùi lại sửa đổi nhầm lẫn của tôi. Tiện đây có điều này muốn đề xuất như sau: Theo tôi thấy thì hiện tại có một số trang quy định và trang thông tin đang đổi hướng đến các trang dự án cùng tên ở Wikipedia tiếng Việt (ví dụ: [[Wiktionary:Quyền truy cập của thành viên]], đặc biệt không thể làm đổi hướng như vậy vì số cờ ở Wikipedia tiếng Việt khác so với số cờ ở bên này). Do đó, tôi có đề xuất là chúng ta nên "sao chép quy định" từ bên Wikipedia tiếng Việt sang bên này, có sửa chữa lại sao cho phù hợp, vì dù sao các dự án đều hoạt động độc lập với nhau. Nếu BQV thấy ổn tôi sẽ thực hiện. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:34, ngày 15 tháng 12 năm 2022 (UTC) Mời {{ping|Ccv2020}} cùng cho ý kiến. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:36, ngày 15 tháng 12 năm 2022 (UTC) {{u|Tryvix1509}}: Về việc sao chép quy định thì đã có {{u|Kateru Zakuro}} để lo rồi. Cho nên bạn không cần phải sợ việc Wiktionary bị thiếu quy định đâu. Nếu bạn muốn thì có thể thực hiện chung tay xây dựng quy định cho dự án này, vì Wiktionary luôn luôn tạo điều kiện cho bạn và mọi người đóng góp. Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:38, ngày 15 tháng 12 năm 2022 (UTC) == აბანო == At the entry [[აბანო]], what would the language with ISO code "oge" be in Vietnamese called? -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:12, ngày 20 tháng 2 năm 2023 (UTC) : {{ping|Apisite}} The language with the ISO code "oge" in Vietnamese is called "tiếng Gruzia cổ". – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:28, ngày 20 tháng 2 năm 2023 (UTC) :: {{ping|Nguyên Hưng Trần}} I can't add the language name to [[Mô đun:Thống kê Wiktionary]]. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:38, ngày 20 tháng 2 năm 2023 (UTC) :::{{ping|Apisite}} Don't worry, I will create the language's header template, then ask an administrator to add it. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:42, ngày 20 tháng 2 năm 2023 (UTC) ✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:25, ngày 20 tháng 2 năm 2023 (UTC) {{ping|Nguyên Hưng Trần}} The etymology template at the entry [[აბანო]] doesn't appear to be displaying the language name "tiếng Gruzia cổ" properly. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:26, ngày 21 tháng 2 năm 2023 (UTC) :✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:32, ngày 21 tháng 2 năm 2023 (UTC) == ''Cross-wiki patrol'' == Bạn có thể xem xét việc cài [[:m:User:Xiplus/TwinkleGlobal|TwinkleGlobal]] vào [[:m:Special:Mypage/global.js|global.js]] của bạn, rồi dùng chức năng CSD, tick vào ô Report to GS/R để yêu cầu xóa nhanh một trang lên [[:m:GSR|GSR]] và một [[:m:Global sysop|bảo quản viên toàn cục]] có thể xem xét giải quyết. Lý do thường là các wiki đó có thể không có BQV/có BQV nhưng ít và không có ''dấu vết'' gần đây. – [[Thành viên:Tryvix1509|Tryvix]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 14:18, ngày 24 tháng 3 năm 2023 (UTC) == bung == See [https://vi.wiktionary.org/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Nguy%C3%AAn_H%C6%B0ng_Tr%E1%BA%A7n#bung here] if you want. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 09:54, ngày 8 tháng 4 năm 2023 (UTC) == Tiếng Lombard == Regarding the Lombard language, which is of the Gallo-Italic family, [[:lmo:Jut:Grafie acetade|this webpage]] is one of the things to consider. Best regards – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 06:59, ngày 4 tháng 5 năm 2023 (UTC) == Wikiquote == What about a template for Wikiquote in, for example, the entry [[diplomacy]]? – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 20:57, ngày 20 tháng 5 năm 2023 (UTC) == Hỏi == Chào bạn, có phải các quyền trên Wikipedia tiếng Việt của tôi không dùng được trên Wiktionary đúng không?. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:34, ngày 24 tháng 6 năm 2023 (UTC) :Đúng vậy bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:35, ngày 24 tháng 6 năm 2023 (UTC) ::Vậy tôi có thể hỏi là xin quyền lùi sửa ở đâu không, vì tôi là tuần tra viên và chủ yếu tuần tra bên wiki tiếng Việt nhưng hôm nay, có một tài khoản tôi đang tuần tra phá bên wiki Việt và sang hẳn bên đây phá luôn. Nếu có quyền lùi sửa thì sẽ tiện hơn. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:38, ngày 24 tháng 6 năm 2023 (UTC) :::Bạn có thể tham khảo [[Wiktionary:Lùi sửa]]. Theo như trang đó, thành viên cần có 250 sửa đổi và ba tháng đóng góp để được cấp quyền dùng công cụ lùi sửa hàng loạt--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:48, ngày 24 tháng 6 năm 2023 (UTC) ::::Được chứ, tiện thì wiki tiếng Việt hiện giờ tuần tra cũng tương đối không quá áp lực, để tôi sang tuần tra bên đây luôn. haha. Cảm ơn bạn. Buổi trưa vui vẻ!!. – [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:51, ngày 24 tháng 6 năm 2023 (UTC) == Về các cách ngữ pháp == Tại sao bạn lại viết tắt các cách trong bản mẫu bảng biến cách/biến tố vậy? – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 03:41, ngày 23 tháng 7 năm 2023 (UTC) :{{ping|Nguyên Hưng Trần}} Tại vì làm như vậy chúng ta sẽ không cần dịch tên các cách, tránh việc dịch sai hay tệ hơn là bịa thuật ngữ--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:14, ngày 23 tháng 7 năm 2023 (UTC) == Tạo lại trang bị xóa == Chào TheHighFighter2, tôi đang muốn tạo một mục từ mới tên "[[chiến công]]" trước đó là trang đã bị xóa do một IP tạo nhưng người xóa không để lại lý do. Tôi có thể tạo lại không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:20, ngày 2 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Trang đó bị xóa do có chứa từ xúc phạm. Bạn hoàn toàn có thể tạo lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:18, ngày 6 tháng 8 năm 2023 (UTC) ::Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:06, ngày 8 tháng 8 năm 2023 (UTC) :::Mà tôi có thấy bạn tạo trang mô đun, nó có tác dụng gì trên Wiktionary vậy? Bạn dịch từ bên en sao?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:08, ngày 8 tháng 8 năm 2023 (UTC) == Thư mời == Mời bạn cho đôi lời nhận xét tại [[Thảo luận Wiktionary:Bảo quản viên#P. %C4%90%C4%82NG|Biểu quyết chọn bảo quản viên]]. Xin hết lòng cảm ơn rất nhiều. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:46, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời tham gia biểu quyết == <div style="padding: 0.5em; background: #f8f8ff; margin-top: 1em; font-size: 1em"> {| class="table" style="width: 80%; background-color: #ACE1AF; border: 1px solid #fceb92; margin: auto; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[Tập tin:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | '''Mời bạn cho ý kiến về việc cấp quyền Bảo quản viên cho thành viên [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] tại trang [[Thảo luận Wiktionary:Bảo quản viên#DefenderTienMinh07|Thảo luận Wiktionary:Bảo quản viên]]. Xin cảm ơn. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái! |} </div> [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 10:25, ngày 24 tháng 8 năm 2023 (UTC) == Nhờ giúp == Tôi đang gặp chút khó khăn khi đang sử dụng bản mẫu <nowiki>{{quote-book}}</nowiki> trong mục từ [[ngàn trùng]]. Lỗi ở đây là ở đoạn thứ 2 của phần tham khảo (đoạn ''Nguồn ân trăm trượng dễ khơi vơi...'') tôi không thể xuống dòng như [[Đặc biệt:So sánh di động/2122630|bản sửa đổi cũ này]] của FF Boyahh. Mong anh có thể sửa giúp. – [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:16, ngày 2 tháng 9 năm 2023 (UTC) == Sửa trang đổi hướng js == Phiền anh có thể tẩy trống trang [[Thành viên:DefenderTienMinh07/minerva.js]] và [[Thành viên:DefenderTienMinh07/common.js]] do tôi không thể sửa được. Nhân tiện anh có thể xóa luôn trang [[Thành viên:Nguyên Hưng Trần/style.css]] vì là một trang đổi hướng đến trang mà thành viên đã từng yêu cầu xóa trước đây. ({{ping|Nguyên Hưng Trần}} vì không biết bạn có muốn xóa trang con style.css của trang thành viên mình hay không, tôi đã đề cập đến bạn để cho ý kiến.) – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 07:31, ngày 4 tháng 9 năm 2023 (UTC) :{{ping|DefenderTienMinh07}} Tôi cũng muốn xóa cái trang con như bạn đã đề cập ở trên, do cái trang đó không còn cần thiết nữa nên nhờ bạn THF2 xóa luôn đi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 09:00, ngày 4 tháng 9 năm 2023 (UTC) == Dọn trang clk == Nhờ BQV TheHighFighter xem cùng tôi đóng góp hàng loạt của dãy IP [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/85.195.123.24 85.195.123.24], rất nhiều bài tạo clk và thiếu ngữ cảnh = thuộc tiêu chí xóa nhanh. Đáng lẽ ra tôi có ý định kêu mọi người tham gia cải thiện các bài này để chúng được giữ, nhưng clk quá lâu và số lượng rất nhiều. Xóa là cần thiết, ai muốn tạo lại thì tạo. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:07, ngày 9 tháng 9 năm 2023 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi nghĩ những mục từ trên được IP [[Thành viên:85.195.123.24|85.195.123.24]] tạo cách đây hơn chục năm rồi (có mục từ được tạo trước cả năm tôi sinh), tôi nghĩ đối với mục từ được tạo cách đây nhiều năm thế này thay vì xóa đi sao lại không đặt biển chất lượng kém vô nhỉ do thời xưa có thể BTV vẫn chưa biết cách tạo đúng quy trình một mục từ. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 18:33, ngày 9 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi đã nói trên, các mục từ này thuộc diện tiêu chí xóa nhanh nên không thể đặt biển clk. Bản mẫu chất lượng kém là một bản mẫu mà công dụng dùng để bảo trì, nghĩa là khi một bài viết chứa thông tin đầy đủ nhưng biên tập không bách khoa và một số tiêu chí khác dùng để xác định một bài clk (bạn có thể qua Wikipedia Vi đọc cái này) thì chúng ta mới đặt bản mẫu này, mục đích của nó là hy vọng trong 7 ngày tính từ khi bản mẫu được đặt vào sẽ có thành viên nào đó cải thiện, và trong 7 ngày này BQV không có quyền được xóa. Lý do các thành viên thời đó không biết cách tạo mục từ có thể hợp lí, thời trước có thể mảng tuần tra đã không được chú trọng và hiện tại đâu đó trên Wiktionary đã lọt lưới rất nhiều các bài clk tồn tại. Nếu bạn muốn cải thiện những bài này thì cứ bắt tay vào sửa đổi không cần đặt biển clk vì nó thuộc diện tiêu chí xóa nhanh, một số bài IP này tạo thiếu ngữ cảnh, không được dịch, tiêu đề sai. Số lượng bài clk có thể tồn đọng lên đến 100 bài thì làm sao cải thiện nổi và được tạo hơn 10 năm trước thì xóa là cần thiết. Ưu tiên chất lượng hơn số lượng và đương nhiên không phải lúc nào xóa, bài nào có khả năng cải thiện được thì chúng ta sẽ ưu tiên cải thiện. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 03:36, ngày 10 tháng 9 năm 2023 (UTC) == Nhiều mã quá == Em dạo này đi học nên ít lên đây như để ý cái [[MediaWiki:Common.css]] hiện tại có đến 2700 dòng, và em cho là nó quá dài và nặng. Một số cái thật ra đã có trong Ganget rồi nhưng bác lại thêm vào gây nặng mã quá như mấy cái định kiểu cho .Arab... thật ra nằm trong [[MediaWiki:Gadget-script fonts.css]] rồi, để em nhập rồi sửa lại cho bác – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 10:06, ngày 13 tháng 9 năm 2023 (UTC) == Sửa Trang Chính == Ở chỗ "Wiktionary là dự án từ điển mở, '''đa ngôn ngữ'''" có đường dẫn đến trang Wiktionary:Ngôn ngữ nhưng trang này đã bị anh Kateru [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Nh%E1%BA%ADt_tr%C3%ACnh&logid=144969 đổi thành Phụ lục:Ngôn ngữ (có tắt đổi hướng)]. Vậy phiền anh có thể sửa đường dẫn chỗ "đa ngôn ngữ" từ [[Wiktionary:Ngôn ngữ]] thành [[Phụ lục:Ngôn ngữ]] hoặc tạo trang Wiktionary:Ngôn ngữ. Xin cảm ơn. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 13:50, ngày 14 tháng 9 năm 2023 (UTC) == Nhờ khóa trang thành viên == Chào bạn, nhờ bạn khóa trang thành viên của tôi để không bị rối phá hoại trong tương lai. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 05:49, ngày 25 tháng 9 năm 2023 (UTC) == Thư mời == Chào bạn! Mời bạn cho ý kiến tại [[Thảo_luận_Wiktionary:Bảo_quản_viên#Nguyên_Hưng_Trần|Biểu quyết chọn bảo quản viên]]. Thanks bạn! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:20, ngày 30 tháng 12 năm 2023 (UTC) == [[Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js]], [[Mô đun:accel]] == Bạn có cách nào để sửa lỗi hai kịch bản cho tiện ích tạo hình thái mục từ mà tôi chép bên en không? Khi tôi định tạo mục từ hình thái tiếng Latinh ([[dictionarii]]) thì gặp lỗi không thể tìm thấy đề mục ngôn ngữ. (bạn cài đặt tiện ích này vào trong trang common.js rồi bấm vô mục từ hình thái trong bảng biến cách hoặc chia động từ để thấy lỗi của nó: <code>mw.loader.load('/w/index.php?title=Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js&action=raw&ctype=text/javascript');</code>) – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:56, ngày 31 tháng 12 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] mà chức năng và công dụng của công cụ này j v bn? – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:18, ngày 9 tháng 2 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} (chép bên en) "This [[:en:Wiktionary:Gadgets|gadget]] allows you to automatically generate entries for inflected forms of words." (tạm dịch: [[WT:Tiện ích|Tiện ích]] này cho phép tự động tạo mục từ cho dạng biến tố của các từ.) – <span style="background:#011635;border-radius:6.342px;box-shadow:1px 1px 5px #173562;padding:5px;width:100%;"><span lang="vi" xml:lang="vi" class="Hani" style="font-size: 150%; line-height: 1em;">[[Thành viên:Nguyên Hưng Trần|<span style="color:beige;">𠊛𥋴</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|𫇳𣋀]]</span></span> 11:14, ngày 9 tháng 2 năm 2024 (UTC) == Năm mới vui vẻ == Chúc năm mới vui vẻ, bảo quản viên TheHighFighter2. Lời chúc này thay cho lời cảm ơn, từ sự nhiệt thành, tận tâm và chăm chỉ của bảo quản viên trong suốt thời gian qua bằng cách này hay cách khác dành cho dự án. Xin thay mặt cộng đồng, thân kính chúc một ngày lễ vui vẻ, [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:10, ngày 9 tháng 2 năm 2024 (UTC) == Công cụ chống spam == Mời bạn vào trang [[Đặc_biệt:Trang_đặc_biệt|này]], chỗ "Công cụ chống spam", bạn nên dùng công cụ này, BQV có quyền sửa trang, như tôi đã giới thiệu tính năng và tiện lợi của nó trên trang tv của mình. Buổi tối tốt lành. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:36, ngày 15 tháng 2 năm 2024 (UTC) == Trang chính == Tôi thấy trang chính trong bảng "Ngôn ngữ khác" bị lỗi mô đun. Nhờ bạn sửa lại giúp. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:55, ngày 3 tháng 5 năm 2024 (UTC) :{{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:05, ngày 3 tháng 5 năm 2024 (UTC) == Chào bạn == Chào bạn nhé, mình mới tới và có chút thắc mắc muốn hỏi, bây giờ mình muốn cập nhật mô đun/bản mẫu liên quan đến từ mượn thì mình nên sửa/cập nhật bản mẫu hay mô đun nào bạn nhỉ? [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:48, ngày 23 tháng 7 năm 2024 (UTC) :{{ping|Pminh141}} Chào bạn! Tôi đã giúp bạn sửa/cập nhật Mô đun:etymology cùng với các trang con của nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:00, ngày 25 tháng 7 năm 2024 (UTC) ::Cảm ơn bạn, mình chủ yếu hoạt động bên wikipedia nên sang đây có nhiều cái chưa biết. Mà mình đang muốn hỏi bạn xem là không biết viwiktionary có thể update module tài liệu (bản mẫu/mô đun) để nó tự động tạo tài liệu không bạn nhỉ. Mình thấy có nhiều phiên bản ngôn ngữ áp dụng rồi ý? – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 00:46, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Pminh141}} Do dự án còn thiếu nhân lực nên là nhiều bản mẫu/mô đun không được cập nhật thường xuyên. Nên là nếu muốn, bạn có thể giúp cập nhật mô đun này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:41, ngày 26 tháng 7 năm 2024 (UTC) == [[Bản mẫu:unadapted borrowing]] == Chào bạn, mình thấy bản mẫu này đang bị lỗi, phiền bạn sửa lại giúp. Cảm ơn bạn nhiều. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:31, ngày 9 tháng 8 năm 2024 (UTC) :{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:13, ngày 10 tháng 8 năm 2024 (UTC) :: Cảm ơn bạn, mà hôm nay mình cố sửa các bản mẫu/mô đun liên quan đến bản mẫu {{Liên kết bản mẫu|transclude}} này mà vẫn chưa lần được ra nguyên nhân, nếu được bạn có thể giúp mình sửa lỗi này không. Mình nghĩ chắc là nó bị thiếu dữ liệu ở đâu đó nên cứ dùng đến là báo lỗi à. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 21:42, ngày 10 tháng 8 năm 2024 (UTC) :::{{ping|Pminh141}} Để dùng {{LKBM|transclude}}, bạn phải dùng thêm {{LKBM|senseid}}. Ví dụ như bạn muốn dùng bản mẫu transclude ở mục [[ロシア]], bạn thêm bản mẫu senseid vào mục Nga như ở [https://vi.wiktionary.org/w/index.php?title=Nga&curid=249068&diff=2170249&oldid=2170248 đây]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:06, ngày 11 tháng 8 năm 2024 (UTC) ::::Cảm ơn bạn, quả nhiên là cần nhiều thời gian hơn để làm quen với mọi thứ ở đây. Chúc bạn 1 ngày tốt lành. – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 16:14, ngày 11 tháng 8 năm 2024 (UTC) : Chào bạn nhé, hôm nay mình muốn hỏi bạn chút về mục từ này: [[北朝鮮]], phần phát âm của mục tiếng Trung thì mình có nhập từ tiếng Anh về nhưng mình lại chưa biết cách xử lý bản mẫu/mô đun được dùng ở mục đó. Nên là phiền bạn giúp mình chút. :p [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 07:37, ngày 16 tháng 8 năm 2024 (UTC) ::{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:27, ngày 16 tháng 8 năm 2024 (UTC) == Mục từ tiếng Galicia == At the entry [[xirafa]], I added an alternative spelling, that is in the writing system of {{w|en:reintegrationism|reintegrationism}}. How could the term "reintegrationism" be translated? Thanks for reading. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 01:42, ngày 29 tháng 9 năm 2024 (UTC) :"Chủ nghĩa tái hòa nhập". – [[Thành viên:Nguyên Hưng Trần|<span style="color:#74a12e;font-family:Georgia, serif;">'''NHT'''</span>]] ([[Thảo luận Thành viên:Nguyên Hưng Trần|💬]]) 07:16, ngày 29 tháng 9 năm 2024 (UTC) :: {{ping|Nguyên Hưng Trần}} I would rather use the spelling "Chủ nghĩa tái hoà nhập" but thanks for helping. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:57, ngày 2 tháng 10 năm 2024 (UTC) == [[Bản mẫu:term]] == Bản mẫu này được dùng cho phân loại một nhóm từ (ví dụ: mục từ [[chân trời sự cố]] là "vật lý học"). Tôi muốn dùng bản mẫu này nhận dạng các mục từ pháp luật được không? Bạn nghĩ sao? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:29, ngày 24 tháng 10 năm 2024 (UTC) :Cú pháp sẽ là {{term|pháp luật}}. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:31, ngày 24 tháng 10 năm 2024 (UTC) ::{{ping|P. ĐĂNG}} Theo tôi, bạn nên dùng {{LKBM|nhãn}}. Với cú pháp vd như là {{<code>nhãn|vi|pháp luật</code>}} nó sẽ tự động xếp trang vào Thể loại:Luật pháp/Tiếng Việt. ::{{LKBM|term}} đã lỗi thời, nó hiện gây ra các liên kết sai kiểu như [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/t%E1%BB%AB_M%E1%BB%B9,_ngh%C4%A9a_M%E1%BB%B9], [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/T%E1%BB%AB_c%C5%A9,_ngh%C4%A9a_c%C5%A9] – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:04, ngày 25 tháng 10 năm 2024 (UTC) :::Ok, thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:22, ngày 25 tháng 10 năm 2024 (UTC) == Mục từ các thứ tiếng == Các mục từ cùng một chủ đề (ví dụ: Luật pháp) thường trong mỗi ngôn ngữ đặc thù quốc gia nước đó thì tính đa dạng riêng. Tôi có ý định tạo thêm Thể loại:Luật pháp Việt Nam/Tiếng Việt vào các mục từ pháp lý Việt Nam. Thể loại này sẽ là "thể loại con" bên trong thể loại Luật pháp về tiếng Việt. Bạn thấy sao? Cách này sẽ phân chia nếu Wiktionary chủ đề luật có ở các thứ tiếng khác như Thể loại:Luật pháp Hoa Kỳ/Tiếng Việt. Vì tôi có ý định đóng góp chuyên sâu hơn mảng này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:01, ngày 26 tháng 10 năm 2024 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Ok, bạn cứ triển khai. Bạn có thể dùng Bản mẫu:nhãn với tham số "luật pháp Việt Nam" để xếp thể loại--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:28, ngày 27 tháng 10 năm 2024 (UTC) ::Thanks! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:59, ngày 27 tháng 10 năm 2024 (UTC) == [[Mô đun:languages/data/3/c]] == Không rõ mô đun này được nhúng vào một trang bị khóa theo tầng chỗ nào nữa. Hiện tôi không thể sửa mô đun được. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">Ayane</b>]] <span style="color:Plum">aka.</span> [[:m:User talk:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#ADD8E6;letter-spacing:">eunn</b>]] 06:53, ngày 24 tháng 12 năm 2024 (UTC) :✔ [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:languages/data/3/c&curid=272284&diff=2197134&oldid=2196315 Đã sửa]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:59, ngày 24 tháng 12 năm 2024 (UTC) == Mục từ == Không rõ công cụ trợ giúp tạo mục từ tự động Wiktionary đã lỗi thời? Tôi thấy có nhiều thành viên thay thế các sửa đổi như thế này [https://vi.wiktionary.org/w/index.php?title=c%C3%B4ng_d%C3%A2n&diff=prev&oldid=2204284][https://vi.wiktionary.org/w/index.php?title=nguy%C3%AAn_b%E1%BA%A3n&diff=prev&oldid=2204282]. Phần lớn các mục từ tại đây tuân theo cách sắp xếp cũ (do tạo từ trước), tôi cũng thường dùng công cụ hiện sẵn trợ giúp khi tạo mục từ mới nên trang vẫn theo cách trình bày này. Vậy lần sau phải tạo thủ công? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:50, ngày 15 tháng 1 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Các sửa đổi mà bạn dẫn link ở trên sử dụng dấu = cho phần đề mục; thay các [[:Thể loại:Bản mẫu ngôn ngữ|bản mẫu ngôn ngữ]] bằng {{LKBM|langname}}, các [[:Thể loại:Bản mẫu đề mục loại từ|bản mẫu đề mục loại từ]], [[:Thể loại:Bản mẫu đề mục khác|bản mẫu đề mục khác]] bằng {{LKBM|ĐM}}. Việc thay thế này nhằm: :# Trước đây dự án có nút ấn sửa ở bên phải đề mục, nhưng sau đó bị ẩn đi vì nó liên kết đến sửa đổi bản mẫu thay vì sửa nội dung bên dưới. Cách giải quyết cho vấn đề này là dùng dấu = cho đề mục. :# Tận dụng sẵn dữ liệu từ [[Đặc_biệt:Tiền_tố/Mô_đun:languages/data/|Mô đun:languages]]. Tại sao phải tạo hàng trăm bản mẫu kiểu như {{LKBM|-vie-}}, {{LKBM|-eng-}},... trong khi chỉ cần dùng một bản mẫu? :Còn về trình tạo mục từ tự động, quả thật có phần lỗi thời. Nhưng vẫn có thể dùng nó điền nội dung sau đó thay thế. :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:54, ngày 15 tháng 1 năm 2025 (UTC) ::Bạn có định sửa giao diện các trình tạo mục từ tự động để bắt kịp tiến độ mới này? Tôi nghĩ, việc này sẽ hữu ích hơn khi cứ "điền lại" nội dung sau các lần tạo trang. Hơn thế, chúng ta còn phải giúp người mới sửa lỗi này khi họ tạo bài (vì hầu hết các tv dùng trình tạo mục từ tự động khi tạo bài). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:31, ngày 16 tháng 1 năm 2025 (UTC) == Chú thích == Tôi định tạo bản mẫu chú thích sách mới (lưu tại [[Thành viên:P. ĐĂNG/Nháp 3|đây]]), nhưng tham số pages của nó cố định, không rõ có cách nào tự thêm số trang theo ý muốn khi dùng bản mẫu này không? Trong mục từ [[permanent geodetic beacon]] (tôi thêm chú thích bằng cách sao chép mã nguồn). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:26, ngày 27 tháng 3 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG/Nh%C3%A1p_3&curid=336667&diff=2224051&oldid=2224044] Bạn xem đã được hay chưa?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:04, ngày 27 tháng 3 năm 2025 (UTC) ::OK, đã được. Thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:09, ngày 28 tháng 3 năm 2025 (UTC) == [[ngilo]] == <span style="color:#b01500;"><strong>Lỗi Lua trong Mô_đun:parameters tại dòng 667: Parameter 1 must be a valid language or etymology language code; the value "General Cebuano" is not valid. See WT:LOL and WT:LOL/E.</strong></span> Tôi vô tình lướt trúng trang này và thấy nó bị lỗi mô đun như trên (không chỉ riêng trang này mà còn nhiều trang khác cũng bị lỗi ở [[Mô đun:parameters]]), nhờ bạn xem sửa giúp. – [[Thành viên:Như Gây Mê|<span style="color:orange;"><strong>Halley</strong></span>]] [[Philippines|<span style="color:#00bbe6;"><strong><sup>luv Filipino ❤</sup></strong></span>]] 00:36, ngày 19 tháng 5 năm 2025 (UTC) : @[[Thành viên:Như Gây Mê|Như Gây Mê]] Tôi mới chỉnh lại trong trang [[ngilo]], bạn có thể xem qua. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 04:10, ngày 19 tháng 5 năm 2025 (UTC) == Lỗi trong trình tạo mục từ == Vì lý do nào đó, các thay đổi gần đây của bạn khiến cho nút Tiếp không tự hiện cho phép bấm ngay khi nhập mục từ, phải thay đổi ngôn ngữ rồi đổi lại rất bất tiện mới hiện nút ra. Lý do nào bạn thay đổi vậy? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 06:16, ngày 14 tháng 6 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Về lí do tôi thay đổi: :# Sử dụng dấu = để hiển thị phần đề mục, nhằm mở lại nút sửa ở bên phải đề mục :# Sử dụng {{LKBM|langname}} và {{LKBM|ĐM}} thay cho các bản mẫu [[:Thể loại:Bản mẫu ngôn ngữ|ngôn ngữ]], [[:Thể loại:Bản mẫu đề mục loại từ|đề mục loại từ]] và [[:Thể loại:Bản mẫu đề mục khác|đề mục khác]], thay vì phải tạo thêm nhiều bản mẫu đề mục mới (nhất là cho tên ngôn ngữ) thì ta gom vào chỉ cần dùng 2 bản mẫu. Cái này tôi học hỏi từ fr.wiktionary :Về phần lỗi, tôi đã giải quyết--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:57, ngày 14 tháng 6 năm 2025 (UTC) == Bộ lọc == Tôi nhận thấy các tk rối gần đây liên tục spam "Cô Nhung" và các biến thể liên quan của từ này. Tôi có ý định đề xuất thêm tiêu đề này vào bộ lọc. Bạn nghĩ thế nào? Nếu được, tôi có thể biên soạn danh sách các từ này và biến thể liên quan có khả năng được rối tạo để tham khảo. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:47, ngày 21 tháng 6 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] 👍 Ok, bạn cứ triển khai--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 23:50, ngày 21 tháng 6 năm 2025 (UTC) ::Ok. Đã tạo trang [[Thành viên:P. ĐĂNG/Nháp 2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:32, ngày 22 tháng 6 năm 2025 (UTC) :::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi đã đưa một số biến thể vào [[MediaWiki:Titleblacklist]], thay cho việc đưa vào bộ lọc--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:16, ngày 22 tháng 6 năm 2025 (UTC) == Gửi thư == Tôi có thử test [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_%C4%91%E1%BA%B7c_bi%E1%BB%87t công cụ] gửi thư thông báo diện rộng. Nhưng sao khi gửi thư phần tin nhắn không có chữ ký MediaWiki message delivery? Ví dụ giống [https://vi.wikipedia.org/w/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG&diff=prev&oldid=73638382 vậy]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:08, ngày 11 tháng 7 năm 2025 (UTC) :{{Tick}} Đã sửa được lỗi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:46, ngày 11 tháng 7 năm 2025 (UTC) == "clause" == Từ "clause" trong tiếng Anh nên được dịch là "mệnh đề" hay "cú" / "tiểu cú" vậy? Mình thấy các trang web dạy tiếng Anh ở Việt Nam ngày nay đều dịch là mệnh đề, nhưng khi mình tra từ điển ''Thuật ngữ ngôn ngữ học Anh – Việt Việt – Anh'', tr. 44 của Cao Xuân Hạo, Hoàng Dũng thì lại dịch là "tiểu cú". Bên ''Từ điển Khái niệm Ngôn ngữ học'', tr. 136 của Nguyễn Thiện Giáp cũng dịch tương tự. Phiền bạn trợ giúp. --[[Thành viên:I can see my baby swimming|I can see my baby swimming]] ([[Thảo luận Thành viên:I can see my baby swimming|thảo luận]]) 08:13, ngày 1 tháng 8 năm 2025 (UTC) == Nhờ == Phiền bạn ẩn lại tên người dùng [https://vi.m.wiktionary.org/w/index.php?title=Th%E1%BB%83_lo%E1%BA%A1i:Ti%E1%BA%BFng_Xhosa&oldid=2277181 này] do lúc nãy tôi gặp sự cố cookie đăng xuất tài khoản không mong muốn, nên sửa đổi này tự tạo ra tài khoản tạm thời. – [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 12:49, ngày 22 tháng 9 năm 2025 (UTC) ==Happy Holidays== <div style="border-style:solid; border-color:violet; background-color:#fff; border-width:2px; text-align:left; padding:8px;" class="plainlinks"> {| style="border: 5px dotted #H1790; background-color: #DDDDDD; padding:4px" | rowspan="2" valign="left" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Christmas Tree 2011-12-24.jpg|left|300px|link=]]<span style="display:block;padding-top:10px;clear:both"> | <span style="font-family: Georgia; font-size: 98%; color: #190a89;">Chúc bạn TheHighFighter2 có một mùa '''Giáng sinh''' an lành, ấm áp và tràn ngập yêu thương bên gia đình!<br/> Bước sang '''năm mới''' 2026, chúc bạn gặp nhiều may mắn,<br/> gặt hái được nhiều thành công trong công việc và học tập.<br/> Một lần nữa chúc bạn sẽ có một năm mới thật an khang, hạnh phúc và vạn sự như ý!!</span> <br /> <span style="font-family: Georgia; font-size: 92%;"> | rowspan="2" valign="right" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Atlantic Firework Festival 2016 (53368638571).jpg|left|360px|link=]]<span style="display:block;padding-top:10px;clear:both"> |}</div> Lời chúc chân thành từ: <span style="background:#978FF;border:solid 1px;border-radius:8px;box-shadow:darkblue 2px 2px 2px">&nbsp;[[User:Kelly zhrm|<span style="font-family:Old English Text MT;color:#C90">Yellow</span>]]&#124;[[User talk:Kelly zhrm|&#248;]]&nbsp;</span>&nbsp; 05:43, ngày 24 tháng 12 năm 2025 (UTC) :@[[Thành viên:Kelly zhrm|Kelly zhrm]]<poem>Cảm ơn lời chúc chân thành</br>Như là gió ấm bạn dành cho tôi</br>Năm tàn với tháng phai phôi</br>Chào mơn mởn mới như chồi đâm non...</br>Mượn lời lục bát son son</br>Giáng Sinh chúc bạn vui giòn niềm vui!</poem> :--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:33, ngày 24 tháng 12 năm 2025 (UTC) == [[Võ Nguyên Giáp]] == Theo bạn, mục từ này có nên tồn tại trên Wiktionary tiếng Việt. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 06:15, ngày 25 tháng 12 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Theo [[:en:Wiktionary:NSE]], không nên đưa một cá nhân cụ thể nào đó vào làm một nghĩa trong một mục từ nếu tiêu đề của mục từ đó bao gồm cả họ và tên gọi. Một vài vd như [[:en:Adolf Hitler]], [[:en:Elizabeth II]] đều không có bài bên en; những người có bài như [[:en:George Washington]], [[:en:Donald Trump]] sẽ không thấy dòng định nghĩa nào mô tả mấy người này là ai, mà chỉ có nghĩa phát sinh thôi--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:06, ngày 25 tháng 12 năm 2025 (UTC) :: Nếu vậy thì đợi 7 ngày nữa rồi đem mục từ này ra biểu quyết xóa. Bài đã gắn biển <code><nowiki>{{rfv}}</nowiki></code>. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 23:45, ngày 25 tháng 12 năm 2025 (UTC) : "Eastern Aramaic" nên dịch thành "Đông Aram" hay "Aram Đông"? [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:44, ngày 2 tháng 1 năm 2026 (UTC) ::@[[Thành viên:Hiyuune|Hiyuune]] [https://vi.wikipedia.org/wiki/Wikipedia:Th%E1%BA%A3o_lu%E1%BA%ADn/L%C6%B0u_59#Nh%C3%B3m_ng%C3%B4n_ng%E1%BB%AF_Slav_%C4%90%C3%B4ng Thảo luận này] có lẽ sẽ trả lời cho câu hỏi của bạn--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 17:06, ngày 2 tháng 1 năm 2026 (UTC) == Thể loại giống của mục từ == Hôm qua tôi có cập nhật một số mô đun như [[Mô đun:languages]], [[Mô đun:languages/templates]], [[Mô đun:headword]] và [[Mô đun:headword/templates]] nhưng sau khi cập nhật thì không còn thấy xếp thể loại giống của mục từ (ví dụ: [[αστρολογία]]; không xếp vào [[:Thể loại:Danh từ giống cái tiếng Hy Lạp]]). Không rõ lỗi nó nằm ở đâu. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 09:17, ngày 4 tháng 3 năm 2026 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] {{xong}}: xem [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:headword/data&diff=prev&oldid=2334055]--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) – [[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:54, ngày 5 tháng 3 năm 2026 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:17, ngày 28 tháng 4 năm 2026 (UTC) </div> <!-- Tin nhắn của Thành viên:Keegan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472541 --> == PANG450a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r == [[Đặc_biệt:Đăng_nhập_trung_ương/PANG450v]][[Thành viên:PANG450r|PANG450r]] ([[Thảo luận Thành viên:PANG450r|thảo luận]]) 07:36, ngày 6 tháng 5 năm 2026 (UTC) o4c9qt27l79z2npoeuigb8c74ymb0xf 2350454 2350452 2026-05-06T12:43:38Z TheHighFighter2 42988 Đã khóa “[[Thảo luận Thành viên:TheHighFighter2]]” ([Sửa đổi=Chỉ cho phép thành viên tự xác nhận] (vô thời hạn) [Di chuyển=Chỉ cho phép thành viên tự xác nhận] (vô thời hạn)) 2350452 wikitext text/x-wiki == Chào == Bạn có phải HighFighter mà bị quên mật khẩu không? [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 04:11, ngày 14 tháng 11 năm 2020 (UTC) Đúng vậy, thưa bạn.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == BQV == Mời bạn vô [[Thảo luận Wiktionary:Bảo quản viên]] để chấp nhận lời đề cử. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 09:44, ngày 1 tháng 12 năm 2020 (UTC) == Thư mời == Mời bạn tham gia [[Thảo luận Wiktionary:Hành chính viên|BQ chọn hành chính viên]]. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 08:21, ngày 11 tháng 12 năm 2020 (UTC) == Bảo quản viên == Cám ơn sự kiên nhẫn của bạn, bạn hiện là một bảo quản viên tại đây! Mong bạn tiếp tục phát triển dự án này. Nếu có thể, xin bạn tự giới thiệu trong [[Thành viên:‎TheHighFighter2|trang cá nhân]]. &ndash;&nbsp;[[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 19:55, ngày 19 tháng 12 năm 2020 (UTC) :Chúc mừng bạn đã trở thành BQV mới của dự án. Mong bạn dành ra ít phút mỗi ngày để theo dõi trang "Thay đổi gần đây". Nếu có trang nào viết linh tinh thì bạn có thể xóa chúng. Nếu có sửa đổi nào linh tinh thì bạn có thể lùi sửa chúng. Xin cảm ơn bạn! [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:02, ngày 19 tháng 12 năm 2020 (UTC) == Xóa trang thành viên == Xin chào! Việc bạn xóa trang thành viên Hứa Ngọc Sơn, tuy xóa thì không có ảnh hưởng xấu đến Wikitionary nhưng việc tạo trang thành viên dường như không có gì sai. Đặc biệt là trang thành viên thì có thể ghi bất cứ thông tin cá nhân nào, miễn không vi phạm nguyên tắc là được. [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 12:04, ngày 31 tháng 12 năm 2020 (UTC) : [[Thành viên:Đức Anh|Đức Anh]] Tôi đã phục hồi lại trang đó.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == Chào bác == Bác đính kèm link đến trang dũng cảm giúp [[Thành viên:Nghia12072002|Nghia12072002]] ([[Thảo luận Thành viên:Nghia12072002|thảo luận]]) 05:52, ngày 5 tháng 1 năm 2021 (UTC) == IP phá hoại == [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/1.54.201.226 IP này] tạo nhiều trang sai nghĩa và sai ngôn ngữ. Bạn nên xóa chúng nếu bắt gặp. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:14, ngày 8 tháng 1 năm 2021 (UTC) == Bị cấm tôi trên Wikipedia tiếng Việt == Help me. Tôi bị cấm bị treo IP do thằng Alphama bị cấm trên Wikipedia tiếng Việt [https://vi.wikipedia.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Danh_s%C3%A1ch_c%E1%BA%A5m&wpTarget=%2397813 xem nè]. Bạn cần hỏi Alphama để giảm thời gian cấm đi. [[Thành viên:HaThanhPhuoc|HaThanhPhuoc]] ([[Thảo luận Thành viên:HaThanhPhuoc|thảo luận]]) 07:58, ngày 21 tháng 5 năm 2021 (UTC) :Xin lỗi tôi không giúp được bạn, bạn nên thảo luận trực tiếp với Alphama.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:53, ngày 21 tháng 5 năm 2021 (UTC) == Chào == Xin chào bạn. Hình như bạn hoạt động rất tích cực ở đây đúng không? Nhờ bạn xem thử trang [[:en:Module:Unicode data]], xem có nhập về bên mình được không. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 8 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Dự án này chỉ còn mình tôi hoạt động tích cực thôi. Mấy cái mô đun, bản mẫu thì tôi chịu thua, không phải là lĩnh vực sở trường của tôi. Nếu bạn muốn nhập nó từ bên en về thì xin mời.--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:50, ngày 8 tháng 7 năm 2021 (UTC) :☹, mình tưởng bạn phải biết chứ… Thôi, mình sẽ làm những thứ nhỏ hơn trước vậy. Dù sao cũng cảm ơn bạn đã ở lại đóng góp cho từ điển mở này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 08:34, ngày 8 tháng 7 năm 2021 (UTC) == ☹ == Không thể tin nổi… Ngay cả mục từ như [[3]], [[4]], [[!]] cũng không có! Bạn có thể hỗ trợ mình trong mảng Unicode được không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:29, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Xin lỗi, tôi không thể giúp được bạn. Việc này bạn nên nhờ các thành viên bên Wikipedia, bên ấy có nhiều chuyên gia hơn bên này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:34, ngày 10 tháng 7 năm 2021 (UTC) :Không, ý mình là dịch các mục từ bên en sang đây mà. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:06, ngày 10 tháng 7 năm 2021 (UTC) ::{{ping|Ccv2020}} Việc này thì ok--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:22, ngày 10 tháng 7 năm 2021 (UTC) == Khôi phục trang == Chào bạn. Không biết bạn có thể khôi phục trang [[B]] được không nhỉ? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:01, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã khôi phục trang, tuy nhiên bạn cần phải sửa lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:12, ngày 10 tháng 7 năm 2021 (UTC) :<font color=limegreen>✓</font>. Lần sau, bạn chú ý nếu nội dung được khôi phục là phá hoại thì bạn đừng khôi phục nha. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:35, ngày 10 tháng 7 năm 2021 (UTC) == Thể loại == Chào bạn. Không biết mình có nên đổi [[:Thể loại:Unicode CJK Unified Ideographs]] thành [[:Thể loại:Khối ký tự CJK Unified Ideographs]]? Cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:49, ngày 12 tháng 7 năm 2021 (UTC) :Tôi cũng nghĩ nên đổi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:00, ngày 12 tháng 7 năm 2021 (UTC) ::Nếu vậy thì phải dùng Cat-a-lot thì mới chuyển hết các trang trong thể loại nhanh nhất. Lát tôi chép mã nguồn vào, rồi làm luôn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:39, ngày 12 tháng 7 năm 2021 (UTC) == [[:en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. [[Thành viên:Thienhau2003|Thienhau2003]] cho biết nếu chép hết đống đó sang đây thì [[Bản mẫu:character info]] sẽ hết lỗi. Do mấy ngày nay không có máy tính vào lúc thích hợp, nên nhờ bạn làm giúp việc này. Cảm ơn bạn rất nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:50, ngày 14 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Sáng mai tôi sẽ chép đống đó cho bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:38, ngày 14 tháng 7 năm 2021 (UTC) Xong bạn khóa hết các mô đun do tôi và bạn tạo ra nhé. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 05:08, ngày 16 tháng 7 năm 2021 (UTC) :Alo bạn (<big>↑</big>) – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:56, ngày 20 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi nghĩ cũng chẳng cần khóa đâu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:27, ngày 20 tháng 7 năm 2021 (UTC) == Cần hỗ trợ == Chào bạn. Do ngày mai tôi chuẩn bị thi nên sẽ cực kỳ hạn chế tham gia dự án này. Mong bạn giúp mình vừa tạo các mục từ Unicode mới, vừa thêm mã <nowiki>“{{character info}}”</nowiki> vào những mục từ Unicode hiện có. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:36, ngày 21 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} {{OK}} Chúc bạn sẽ thi thật tốt nhé--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:44, ngày 21 tháng 7 năm 2021 (UTC) == Về [[H₂SO₄]] và TCVN == Chào bạn. Cảm ơn bạn đã mang TCVN đến Wiktionary. Nhờ vậy mà tôi dễ kiểm soát hành vi của mình hơn, tránh những sửa đổi "trút giận" (mà tôi đã thử làm tại mục từ [[B]], [[I]]). Tôi nghĩ chúng ta có thể viết thảo luận thống nhất về vấn đề này một cách ngắn gọn, để những người đi sau sẽ thấy được bằng chứng. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:43, ngày 24 tháng 7 năm 2021 (UTC) ==Nhờ giúp== Chào bạn. Phiền bạn qua xem đóng góp của tôi và xem 5 trang nháp bản mẫu, xem bản mẫu nào hữu ích thì chuyển ra không gian tên Bản mẫu giúp mình. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:55, ngày 25 tháng 7 năm 2021 (UTC) Tôi thấy cái 1, 3, 4, 5 là ok. Tuy nhiên, hiện không biết đặt tên bản mẫu là gì--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:10, ngày 25 tháng 7 năm 2021 (UTC) :Tôi thấy 1–4 nên được đưa ra không gian tên Bản mẫu trước. Cái thứ 5 dễ bị nhầm lẫn: có những ký tự Unicode đã được định rõ nhưng hiển thị dưới dạng “&#1000000;”. Những trường hợp như thế thì nên cân nhắc dùng cái số 1. Về tên thì bạn có thể xem mã nguồn (đằng sau trường “name”). Nếu bạn cần hiểu rõ hơn, mình sẽ giải thích. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:39, ngày 25 tháng 7 năm 2021 (UTC) <hr> Chào bạn. Phiền bạn kiểm tra trong [https://www.compart.com/en/unicode/block/U+2B00 khối ký tự này] xem có ký tự nào ở dạng “&#1000000;” thì báo cho mình để mình cân nhắc dùng {{LKBM|cảnh báo Unicode}}. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:41, ngày 26 tháng 7 năm 2021 (UTC) :À mà máy tính bạn dùng hệ điều hành Windows đời nào vậy? Phiền bạn trả lời câu hỏi này trước. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:42, ngày 26 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Máy tôi dùng win 7. Các ký tự ở dạng “&#1000000;”: * Từ U+2B00 đến U+2B2F * U+2B45, U+2B46 * U+2B4D đến U+2BFF * --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:05, ngày 26 tháng 7 năm 2021 (UTC) :☹… Cài font chữ Symbola đi là vừa. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:07, ngày 26 tháng 7 năm 2021 (UTC) == Thư mời == Mời bạn tham gia thảo luận Wikibooks tại [[b:vi:Wikibooks:Phòng thảo luận#Cải thiện phiên bản máy tính|trang này]]. Xin cảm ơn! [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:27, ngày 1 tháng 8 năm 2021 (UTC) :{{u|Đức Anh}}: Tôi nghĩ thư mời ở đâu thì nên mời ở đó. Như thế sẽ tránh "lạc đề". [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:31, ngày 4 tháng 8 năm 2021 (UTC) == [[Đặc biệt:Đổi hướng/revision/2019991]] == Nhờ bạn ẩn giúp phiên bản này của trang, đồng thời xóa luôn trang [[Thành viên:Sinh tử hữu mệnh]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:25, ngày 4 tháng 8 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã ẩn phiên bản đó của trang, còn trang [[Thành viên:Sinh tử hữu mệnh]] thì tôi ko xóa đc--..--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 03:00, ngày 4 tháng 8 năm 2021 (UTC) :Sao không xóa được nhỉ… Hay bạn thử lại xem. Nếu vẫn không được thì bạn thử ẩn phiên bản trang thành viên đó xem có được không. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:46, ngày 4 tháng 8 năm 2021 (UTC) ::Nội dung xuất hiện trên trang này được sao chép từ [[metawiki:User:Sinh_tử_hữu_mệnh|meta]] nên tôi ko xóa hay ẩn đi đc--..-- – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 05:07, ngày 4 tháng 8 năm 2021 (UTC) :::Tôi quên mất. Vậy thì phải nhờ bên Meta xóa hộ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:43, ngày 5 tháng 8 năm 2021 (UTC) == Nhờ giúp đỡ == Chào bạn. Các mục từ chữ Hán và một số ít mục từ khác hiện nay cần được cập nhật thêm {{LKBM|character info}}. Mong bạn giúp tôi thêm chúng vào các mục từ chữ Hán nói riêng và các mục từ Unicode nói chung. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:36, ngày 15 tháng 8 năm 2021 (UTC) == Hỏi về Wikitionary == Bạn là bảo quản viên nơi này, cho mình hỏi từ điển mở này mình viết những gì. Bạn có thể minh họa giúp mình không? [[Thành viên:Nhotuo|Nhotuo]] ([[Thảo luận Thành viên:Nhotuo|thảo luận]]) 09:01, ngày 27 tháng 8 năm 2021 (UTC) :{{ping|Nhotuo}} Bạn có thể tham khảo [[Wiktionary:Giới thiệu]]. Nếu còn gì thắc mắc, bạn cứ tự nhiên hỏi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:52, ngày 28 tháng 8 năm 2021 (UTC) == Wikiquote == Chào bạn, mời bạn cho ý kiến tại [[q:Wikiquote:Thảo luận#Đề bạt bảo quản viên|Biểu quyết bảo quản viên Wikiquote]]. – [[Thành viên:Băng Tỏa|Băng Tỏa]] ([[Thảo luận Thành viên:Băng Tỏa|thảo luận]]) 18:21, ngày 28 tháng 8 năm 2021 (UTC) == Xóa trang == Nhờ bạn xóa trang thử nghiệm trong [[:Thể loại:Chờ xóa]], cảm ơn bạn. (Chỉ có 1 trang nhưng tôi vẫn nhắc vì sợ không ai chú ý đến. Xin lỗi nếu đã làm phiền bạn) [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 14:10, ngày 5 tháng 9 năm 2021 (UTC) == Unicode 14.0 và [[en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. Unicode đã chính thức ra mắt phiên bản 14.0 vào ngày 14/09/2021. Vì thế, nhờ bạn theo dõi trong liên kết enwikt mà tôi đã cho ở trên xem có những thay đổi gì. Bạn có thể tìm thông tin về phiên bản này ở trang website chính thức của Unicode (do tôi đang dùng TV nên không gửi liên kết cho bạn được, mong bạn thông cảm). Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:28, ngày 15 tháng 9 năm 2021 (UTC) :Chào bạn, [https://www.unicode.org/charts/PDF/Unicode-14.0/ đây là liên kết]. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:15, ngày 15 tháng 9 năm 2021 (UTC) ::Nếu thích thì bạn có thể tự cập nhật luôn cũng được. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:10, ngày 16 tháng 9 năm 2021 (UTC) == [[Trợ giúp:Unicode]] == Chào bạn. Bạn thử đọc xem có hiểu không, nếu chưa thì chúng ta có thể sửa. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:36, ngày 16 tháng 9 năm 2021 (UTC) :{{ping|Ccv2020}} Về nội dung thì bạn viết tương đối dễ hiểu. Tuy nhiên, tôi vẫn có vài ý kiến sau: * Ở mục cấu trúc: 1. <syntaxhighlight lang="javascript"> a.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “mul”-}}'' và b.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “symbol”-}}'' </syntaxhighlight> Cái a có thể ghi thêm là: '''mã''' ngôn ngữ của mục từ '''theo ISO 639-3'''. Cái b nên thay "ngôn ngữ" bằng "từ loại". 2. Đối với nhiều người, họ sẽ ko biết bản mẫu ''-pron-'' là gì. Nên thêm vào phần trong ngoặc bên dưới: (Cách phát âm của mục từ...) * Phần Xem thêm: Có thể liên kết thêm 1 số bài viết về Unicode trên Wiki. --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:33, ngày 16 tháng 9 năm 2021 (UTC) <font color=#80ff00>'''&#10003; – đã tiếp nhận, sẽ chỉnh sửa.'''</font> [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:04, ngày 16 tháng 9 năm 2021 (UTC) :<font color=#80ff00>'''&#10004;'''</font> – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 16 tháng 9 năm 2021 (UTC) == Cảm ơn bạn rất nhiều == Cảm ơn bạn đã xóa hộ tôi rất nhiều trang tôi gắn biển gần đây. Nếu bạn có thời gian, rất mong bạn giúp tôi một tay để xử lý hết tất cả thể loại với tên gọi cũ của 'template'. Cảm ơn bạn rất nhiều – [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 15:44, ngày 23 tháng 9 năm 2021 (UTC) == Gợi ý đóng góp == Chào bạn. Tôi thấy có chương trình “Vua tiếng Việt” trên VTV3, hay lắm vì có những từ mà tôi và chúng ta còn chưa biết. Thế nên tôi nghĩ là lấy các từ trong chương trình đó ra để viết mục từ, như thế dự án chúng ta sẽ thêm phần phong phú và đa dạng hơn. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 12:51, ngày 22 tháng 10 năm 2021 (UTC) == Giúp mở khóa == Bạn có thể '''tắt khóa theo tầng dùm 2 trang''' này: * [[Bản mẫu:Thông báo sửa đổi]] * [[Bản mẫu:=nn]] Do anh Mxn khóa theo tầng khiến mình không sửa được bản mẫu tài liệu cùng hàng loạt bản mẫu khác. Mong bạn làm giúp, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 11:32, ngày 24 tháng 10 năm 2021 (UTC) : Xin nhờ bạn tắt khóa theo tầng dùm [[Mô đun:Noarticletext]] luôn nhe, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:04, ngày 24 tháng 10 năm 2021 (UTC) == [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t?usp=sharing Font chữ] == Chào bạn. Bạn đã thử tải font chưa? Bạn nhấn vào đó để lấy bản mới nhất nhé. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:32, ngày 25 tháng 10 năm 2021 (UTC) == Nhờ xóa trang == Nhờ bạn xóa dùm * [[Bản mẫu:Hộp thông báo thể loại/cmbox.css]] * [[Bản mẫu:Hộp thông báo/ambox.css]] * [[Bản mẫu:imbox/imbox.css]] do mấy trang đó tạo css cho thông báo nhưng mình đã chuyển hết về một trang rồi nên mấy cái này không cần nữa. Cảm ơn bạn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 09:37, ngày 31 tháng 10 năm 2021 (UTC) == Nhờ giúp == Nhờ bạn giúp cập nhật [[Bản mẫu:Trang Chính 2/Dự án khác]], bằng mã trong [[Thành viên:Thienhau2003/Test]], do cần thay đổi logo Wikipedia thành hình quả cầu đúng như Trang Chính cũ, cảm ơn nhé.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:42, ngày 5 tháng 11 năm 2021 (UTC) == Các mục từ tiếng Tangut == Chào bạn. Theo dữ liệu về khả năng hiển thị hệ chữ Tangut, hiện tại '''chưa có thiết bị nào hỗ trợ sẵn các ký tự này'''. Do đó, chúng cần có {{LKBM|cảnh báo Unicode}} (xem mẫu: [[𗸨]]). Ngoài ra, ba mục từ của bạn chưa có ảnh tham khảo (đã thêm {{LKBM|yêu cầu tập tin Unicode}}). Nếu bạn gặp khó khăn trong bất kỳ vấn đề gì, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:11, ngày 19 tháng 11 năm 2021 (UTC) :Bạn có thể xem [[Trợ giúp:Unicode/Ảnh]] để biết cách thêm ảnh tham khảo vào các mục từ Unicode. Nếu bạn không tìm được ảnh, hãy thông báo tôi; tôi sẽ giúp bạn. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:00, ngày 19 tháng 11 năm 2021 (UTC) ::Nhờ bạn giúp vậy tôi không tìm thấy được ảnh--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:45, ngày 20 tháng 11 năm 2021 (UTC) :::OK, chiều nay tôi rảnh, tôi sẽ giúp bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 20 tháng 11 năm 2021 (UTC) ::::'''<font color=#80ff00>✔ – Xong.</font>''' Lần sau, bạn có thê kiếm ảnh ở [http://en.glyphwiki.org/wiki/GlyphWiki:MainPage GlyphWiki]. Nhập các cú pháp như “u1b050” hay “u2c5be” là đến nơi có ảnh. Nhớ là ảnh .svg ở bên trái; muốn lưu ảnh thì nhấn chuột phải rồi lưu lại ảnh, sau đó đăng lên Wikimedia Commons dưới giấy phép như trong mẫu [[:commons:File:U+17000.svg|này]]. Nếu bạn gặp bất kỳ khó khăn nào, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:05, ngày 20 tháng 11 năm 2021 (UTC) == Không gian tên mới == Chào bạn. Vấn đề không gian tên “Phụ lục” là một trong những vấn đề tôi đang quan tâm nhất hiện nay trên Wiktionary. Hiện tại thì để tránh lỗi ở các trang có nội dung giống hệt Wiktionary, các trang có tên “Phụ lục:…” đã được tạm thời chuyển sang “Wiktionary:Phụ lục…”. Nếu như Wiktionary chúng ta không có không gian tên này, việc chúng ta bị tụt hậu sẽ là điều tất yếu có thể xảy ra. Chính vì thế, tôi đang sắp sửa đề xuất không gian tên mới, bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:34, ngày 22 tháng 11 năm 2021 (UTC) : ✅ --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:19, ngày 23 tháng 11 năm 2021 (UTC) ::Cảm ơn ý kiến của bạn. Do ý kiến của bạn chỉ là một phần nhỏ nên tôi chưa thực hiện ngay; có thể tôi sẽ mở biểu quyết về vấn đề này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:31, ngày 23 tháng 11 năm 2021 (UTC) <hr> Mời bạn cho ý kiến tại [[Wiktionary:Thảo luận#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 13:30, ngày 28 tháng 11 năm 2021 (UTC) == Mời xem == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Kateru Zakuro]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Kateru_Zakuro|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}--[[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]]) 15:56, ngày 28 tháng 11 năm 2021 (UTC) == [[:Thể loại:Mục từ tiếng Yiddish]] == Nhờ bạn di chuyển [[:Thể loại:Mục từ tiếng Yiddish]] đến [[:Thể loại:Mục từ tiếng Do Thái]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 29 tháng 11 năm 2021 (UTC) : Nó là 2 ngôn ngữ khác nhau mà {{w|Tiếng Yiddish}}, {{w|Tiếng Do Thái}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:19, ngày 29 tháng 11 năm 2021 (UTC) == [[Bản mẫu:Edittools]] == Tôi vừa mới thêm [[Bản mẫu:Edittools]] vào [[MediaWiki:Edittools]] để khi sửa đổi, mọi người có thể thêm vào nhanh bản mẫu đề mục vào mục từ mà không cần phải tra hay nhớ bản mẫu có tên gì. Nếu bạn có muốn thêm cái gì vào thì vào [[Bản mẫu:Edittools]] để thêm nhé.--[[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]]) 15:43, ngày 9 tháng 12 năm 2021 (UTC) == Hỏi == Sao gần đây có nhiều IP lạ vào để phá hoại bằng cách tạo mục từ xúc phạm và tấn công thế? Có cách nào hạn chế vấn đề này không?--[[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]]) 01:37, ngày 11 tháng 12 năm 2021 (UTC) == Thay logo Tết cho Wiktionary == Chào bạn. Năm 2012 là lần gần nhất Wiktionary thay logo Tết cho dự án. Từ đó đến nay, Wiktionary chưa thay logo Tết thêm lần nào cả. Vì thế, tôi có ý định đề xuất một cuộc thi làm logo Tết cho Wiktionary tiếng Việt, với thành phần tham gia là các thành viên Wikipedia có kinh nghiệm trong thiết kế logo các dự án mở. Trong ngày hôm nay, tôi sẽ thực hiện mở cuộc thi đó. Bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:44, ngày 20 tháng 12 năm 2021 (UTC) : 👌 --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:56, ngày 20 tháng 12 năm 2021 (UTC) == Font chữ == Chào bạn, cuối cùng tôi cũng làm xong font cho Unicode 14.0 rồi… Phiền bạn bấm vào [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t đây] để tải bản mới nhất. Cảm ơn bạn đã sử dụng font chữ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:11, ngày 4 tháng 1 năm 2022 (UTC) :Có vấn đề ở font thứ nhất, xin lỗi :( – [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 01:46, ngày 6 tháng 1 năm 2022 (UTC) == How we will see unregistered users == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin=content/> Hi! You get this message because you are an admin on a Wikimedia wiki. When someone edits a Wikimedia wiki without being logged in today, we show their IP address. As you may already know, we will not be able to do this in the future. This is a decision by the Wikimedia Foundation Legal department, because norms and regulations for privacy online have changed. Instead of the IP we will show a masked identity. You as an admin '''will still be able to access the IP'''. There will also be a new user right for those who need to see the full IPs of unregistered users to fight vandalism, harassment and spam without being admins. Patrollers will also see part of the IP even without this user right. We are also working on [[m:IP Editing: Privacy Enhancement and Abuse Mitigation/Improving tools|better tools]] to help. If you have not seen it before, you can [[m:IP Editing: Privacy Enhancement and Abuse Mitigation|read more on Meta]]. If you want to make sure you don’t miss technical changes on the Wikimedia wikis, you can [[m:Global message delivery/Targets/Tech ambassadors|subscribe]] to [[m:Tech/News|the weekly technical newsletter]]. We have [[m:IP Editing: Privacy Enhancement and Abuse Mitigation#IP Masking Implementation Approaches (FAQ)|two suggested ways]] this identity could work. '''We would appreciate your feedback''' on which way you think would work best for you and your wiki, now and in the future. You can [[m:Talk:IP Editing: Privacy Enhancement and Abuse Mitigation|let us know on the talk page]]. You can write in your language. The suggestions were posted in October and we will decide after 17 January. Thank you. /[[m:User:Johan (WMF)|Johan (WMF)]]<section end=content/> </div> 18:20, ngày 4 tháng 1 năm 2022 (UTC) <!-- Tin nhắn của Thành viên:Johan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Target_lists/Admins2022(8)&oldid=22532697 --> == New account == Xin chào. I’m Fête, but this is my new account. Seeing that I never did vandalism at the Vietnamese Wiktionary, so can I restart to contribute here? [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 13:58, ngày 18 tháng 1 năm 2022 (UTC) :{{u|VincentPH}}: No problem. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:45, ngày 18 tháng 1 năm 2022 (UTC) ::Cám ơn. Nếu tôi tiếp tục sửa đổi, có lẽ trước sau có người cấm mãi mãi, vì thế tôi quyết đình rời Wiktionary, goodbye. [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 15:56, ngày 18 tháng 1 năm 2022 (UTC) == Thư mời tham gia biểu quyết == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Ccv2020]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Ccv2020|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}[[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 00:53, ngày 23 tháng 2 năm 2022 (UTC) == Cảm ơn bạn == Đã giúp mình hoàn thành trang NSFW trong Wiktionary! [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 09:39, ngày 1 tháng 4 năm 2022 (UTC) == Template "nod" == Somebody made [[ᨾᩯ᩠ᩅ]]. What language for the code "nod" is it in Vietnamese? --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 13:18, ngày 4 tháng 4 năm 2022 (UTC) == Trang thành viên == Chào bạn. Chắc bạn thấy trang thành viên của tôi "chất" quá nên "chôm" luôn của tôi à? (😊) Để có trải nghiệm tốt nhất thì bạn tải font Roboto về máy tính để hiển thị đúng nhé, bạn thích kiểu thiết kế font [https://www.dafont.com/roboto.font cũ] hay [https://fonts.google.com/specimen/Roboto mới] tuỳ bạn (tôi thích dùng kiểu cũ). Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:10, ngày 18 tháng 5 năm 2022 (UTC) == Việc bên wikibooks == Mời bạn sang phòng thảo luận bên wikibooks cho ý kiến nhé. – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 08:08, ngày 17 tháng 7 năm 2022 (UTC) == Mã ngôn ngữ == Chào bạn, những ngôn ngữ không có mã ISO thì cho vào Wiktionary được không nhỉ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 10:23, ngày 27 tháng 7 năm 2022 (UTC) :{{ping|Thành viên:WhoAlone}} Cái này thì tùy trường hợp, nhưng nói chung là được--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:18, ngày 28 tháng 7 năm 2022 (UTC) ::Ví dụ, nếu tôi muốn đưa [https://en.wikipedia.org/wiki/Soyot-Tsaatan_language tiếng Soyot] vào Wiktionary thì có thể đặt tên bản mẫu đề mục kiểu như {{Liên kết bản mẫu|-Soyot-}} được không, thay vì mã ngôn ngữ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 04:18, ngày 28 tháng 7 năm 2022 (UTC) :::{{ping|WhoAlone}} Tôi nghĩ nên dùng bản mẫu đề mục theo cấu trúc: mã ISO của ngữ hệ bao hàm ngôn ngữ đó + chữ viết tắt tên ngôn ngữ. Các ngôn ngữ như [[:Thể loại:Mục từ tiếng Mông Cổ Khamnigan|Mông Cổ Khamnigan]], [[:Thể loại:Mục từ tiếng Kyakala|Kyakala]],... đều không có mã ISO và chúng đều dùng bản mẫu đề mục theo cấu trúc bên trên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:23, ngày 28 tháng 7 năm 2022 (UTC) == Về trang [[Thành viên:Tongdothamlang]] == Tôi thấy đầu tiên thì thành viên tạo trang với nội dung quảng cáo rõ ràng trong [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212 lịch sử sửa đổi] của trang, song không muốn trang bị xóa thành viên đã nhanh tay giấu kín mà xóa luôn nội dung quảng cáo nên tôi mới yêu cầu xóa trang đó. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:46, ngày 19 tháng 8 năm 2022 (UTC) : Và rất có thể thành viên đã lạm dụng lịch sử sửa đổi và dùng nó với mục đích quảng bá ([https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212]) [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:49, ngày 19 tháng 8 năm 2022 (UTC) :: nên tôi nghĩ xóa rồi tạo lại với nội dung "Chẩn" hoặc ẩn một phiên bản cũ sẽ là một ý kiến hay để giải quyết vụ quảng cáo này. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:51, ngày 19 tháng 8 năm 2022 (UTC) :::✔ Đã ẩn phiên bản đầu tiên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:02, ngày 19 tháng 8 năm 2022 (UTC) == IPA == Bạn có thể sửa những mục từ IPA tiếng Thổ thành chữ Latinh được không? Tôi không thạo việc này lắm. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 14:23, ngày 20 tháng 8 năm 2022 (UTC) :{{ping|WhoAlone}} Xin lỗi bạn, việc này tôi cũng không rành cho lắm--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:29, ngày 22 tháng 8 năm 2022 (UTC) == Font chữ == 🤣… Trang thành viên của bạn làm tôi muốn đảo mắt 180 độ… Tiện thể vụ font chữ Unicode 15.0 chắc là năm nay mình không làm được rồi, mong bạn thông cảm. Nhưng trên trang thành viên của mình có để link ở mục “Lưu trữ” mà một vài trong số đó có Unicode 15.0, tuy nhiên chúng chỉ dùng được trên một số phần mềm mà thôi. Nếu cần bạn có thể tải font từ các link đó để dùng khi cần. Cảm ơn bạn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:55, ngày 16 tháng 11 năm 2022 (UTC) :{{ping|Ccv2020}} 😅... Cái này bạn phải trồng cây chuối thì may ra mới đọc được nhé... Tiện thể vụ font chữ Unicode 15.0, thì không sao đâu bạn à. Tôi cũng không quan tâm cho lắm. Nếu cần tôi sẽ tải font từ các link đó để dùng khi cần. Cảm ơn bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:34, ngày 17 tháng 11 năm 2022 (UTC) == Bản mẫu:R:Tratu == Trước đây bản mẫu đều dùng 2 tham số như |vn|vn để định cho cái đường link dẫn đến đúng mục từ, nhưng mà đổi sang bản mới như thế nó rất tai hại ở chỗ là tất cả đều chuyển sai đường liên kết như [[cánh tay]] đang dẫn sai đường liên kết. Trừ khi có bot sửa thì được còn bây giờ nên để lại bản cũ. – [[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]]) 10:32, ngày 8 tháng 12 năm 2022 (UTC) :P/S: Bác nên nhìn kỹ lại cái [https://en.wiktionary.org/w/index.php?title=Template:R:Tra_T%E1%BB%AB&action=history source gốc], nó là Mxn tạo ra cách đây 2 tháng. Tại vì bên đó không có cho nên anh ấy mới tạo.--[[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]]) 10:34, ngày 8 tháng 12 năm 2022 (UTC) :{{ping|Kateru Zakuro}} Không cần phải đổi lại đâu bạn ạ. Tôi sẽ cố gắng sửa lại đường dẫn trong thời gian sớm nhất--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:41, ngày 8 tháng 12 năm 2022 (UTC) ::Em nghĩ không cần phải sửa lại đâu, vì có đến [https://linkcount.toolforge.org/index.php?project=vi.wiktionary.org&page=B%E1%BA%A3n_m%E1%BA%ABu:R:Tratu 1,420] trang lận, ai đâu mà sửa cho hết. Mà em thấy anh rất hay nhập bản mẫu tràn lan hoặc cập nhật vào Wiki thì không ổn đâu, ở đây có nhiều bản mẫu rất lỗi thời, chưa kể có sự khác biệt ở cách dùng (phải làm sao mà có thể dùng được mã 3 ngôn ngữ khi hầu hết Wiki đều dùng 2 ngôn ngữ) nên không thể nói muốn cập nhật là cập nhật– [[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]]) 13:17, ngày 8 tháng 12 năm 2022 (UTC) == Đề xuất == Cảm ơn BQV đã lùi lại sửa đổi nhầm lẫn của tôi. Tiện đây có điều này muốn đề xuất như sau: Theo tôi thấy thì hiện tại có một số trang quy định và trang thông tin đang đổi hướng đến các trang dự án cùng tên ở Wikipedia tiếng Việt (ví dụ: [[Wiktionary:Quyền truy cập của thành viên]], đặc biệt không thể làm đổi hướng như vậy vì số cờ ở Wikipedia tiếng Việt khác so với số cờ ở bên này). Do đó, tôi có đề xuất là chúng ta nên "sao chép quy định" từ bên Wikipedia tiếng Việt sang bên này, có sửa chữa lại sao cho phù hợp, vì dù sao các dự án đều hoạt động độc lập với nhau. Nếu BQV thấy ổn tôi sẽ thực hiện. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:34, ngày 15 tháng 12 năm 2022 (UTC) Mời {{ping|Ccv2020}} cùng cho ý kiến. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:36, ngày 15 tháng 12 năm 2022 (UTC) {{u|Tryvix1509}}: Về việc sao chép quy định thì đã có {{u|Kateru Zakuro}} để lo rồi. Cho nên bạn không cần phải sợ việc Wiktionary bị thiếu quy định đâu. Nếu bạn muốn thì có thể thực hiện chung tay xây dựng quy định cho dự án này, vì Wiktionary luôn luôn tạo điều kiện cho bạn và mọi người đóng góp. Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:38, ngày 15 tháng 12 năm 2022 (UTC) == აბანო == At the entry [[აბანო]], what would the language with ISO code "oge" be in Vietnamese called? -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:12, ngày 20 tháng 2 năm 2023 (UTC) : {{ping|Apisite}} The language with the ISO code "oge" in Vietnamese is called "tiếng Gruzia cổ". – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:28, ngày 20 tháng 2 năm 2023 (UTC) :: {{ping|Nguyên Hưng Trần}} I can't add the language name to [[Mô đun:Thống kê Wiktionary]]. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:38, ngày 20 tháng 2 năm 2023 (UTC) :::{{ping|Apisite}} Don't worry, I will create the language's header template, then ask an administrator to add it. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:42, ngày 20 tháng 2 năm 2023 (UTC) ✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:25, ngày 20 tháng 2 năm 2023 (UTC) {{ping|Nguyên Hưng Trần}} The etymology template at the entry [[აბანო]] doesn't appear to be displaying the language name "tiếng Gruzia cổ" properly. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:26, ngày 21 tháng 2 năm 2023 (UTC) :✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:32, ngày 21 tháng 2 năm 2023 (UTC) == ''Cross-wiki patrol'' == Bạn có thể xem xét việc cài [[:m:User:Xiplus/TwinkleGlobal|TwinkleGlobal]] vào [[:m:Special:Mypage/global.js|global.js]] của bạn, rồi dùng chức năng CSD, tick vào ô Report to GS/R để yêu cầu xóa nhanh một trang lên [[:m:GSR|GSR]] và một [[:m:Global sysop|bảo quản viên toàn cục]] có thể xem xét giải quyết. Lý do thường là các wiki đó có thể không có BQV/có BQV nhưng ít và không có ''dấu vết'' gần đây. – [[Thành viên:Tryvix1509|Tryvix]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 14:18, ngày 24 tháng 3 năm 2023 (UTC) == bung == See [https://vi.wiktionary.org/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Nguy%C3%AAn_H%C6%B0ng_Tr%E1%BA%A7n#bung here] if you want. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 09:54, ngày 8 tháng 4 năm 2023 (UTC) == Tiếng Lombard == Regarding the Lombard language, which is of the Gallo-Italic family, [[:lmo:Jut:Grafie acetade|this webpage]] is one of the things to consider. Best regards – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 06:59, ngày 4 tháng 5 năm 2023 (UTC) == Wikiquote == What about a template for Wikiquote in, for example, the entry [[diplomacy]]? – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 20:57, ngày 20 tháng 5 năm 2023 (UTC) == Hỏi == Chào bạn, có phải các quyền trên Wikipedia tiếng Việt của tôi không dùng được trên Wiktionary đúng không?. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:34, ngày 24 tháng 6 năm 2023 (UTC) :Đúng vậy bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:35, ngày 24 tháng 6 năm 2023 (UTC) ::Vậy tôi có thể hỏi là xin quyền lùi sửa ở đâu không, vì tôi là tuần tra viên và chủ yếu tuần tra bên wiki tiếng Việt nhưng hôm nay, có một tài khoản tôi đang tuần tra phá bên wiki Việt và sang hẳn bên đây phá luôn. Nếu có quyền lùi sửa thì sẽ tiện hơn. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:38, ngày 24 tháng 6 năm 2023 (UTC) :::Bạn có thể tham khảo [[Wiktionary:Lùi sửa]]. Theo như trang đó, thành viên cần có 250 sửa đổi và ba tháng đóng góp để được cấp quyền dùng công cụ lùi sửa hàng loạt--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:48, ngày 24 tháng 6 năm 2023 (UTC) ::::Được chứ, tiện thì wiki tiếng Việt hiện giờ tuần tra cũng tương đối không quá áp lực, để tôi sang tuần tra bên đây luôn. haha. Cảm ơn bạn. Buổi trưa vui vẻ!!. – [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:51, ngày 24 tháng 6 năm 2023 (UTC) == Về các cách ngữ pháp == Tại sao bạn lại viết tắt các cách trong bản mẫu bảng biến cách/biến tố vậy? – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 03:41, ngày 23 tháng 7 năm 2023 (UTC) :{{ping|Nguyên Hưng Trần}} Tại vì làm như vậy chúng ta sẽ không cần dịch tên các cách, tránh việc dịch sai hay tệ hơn là bịa thuật ngữ--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:14, ngày 23 tháng 7 năm 2023 (UTC) == Tạo lại trang bị xóa == Chào TheHighFighter2, tôi đang muốn tạo một mục từ mới tên "[[chiến công]]" trước đó là trang đã bị xóa do một IP tạo nhưng người xóa không để lại lý do. Tôi có thể tạo lại không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:20, ngày 2 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Trang đó bị xóa do có chứa từ xúc phạm. Bạn hoàn toàn có thể tạo lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:18, ngày 6 tháng 8 năm 2023 (UTC) ::Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:06, ngày 8 tháng 8 năm 2023 (UTC) :::Mà tôi có thấy bạn tạo trang mô đun, nó có tác dụng gì trên Wiktionary vậy? Bạn dịch từ bên en sao?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:08, ngày 8 tháng 8 năm 2023 (UTC) == Thư mời == Mời bạn cho đôi lời nhận xét tại [[Thảo luận Wiktionary:Bảo quản viên#P. %C4%90%C4%82NG|Biểu quyết chọn bảo quản viên]]. Xin hết lòng cảm ơn rất nhiều. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:46, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời tham gia biểu quyết == <div style="padding: 0.5em; background: #f8f8ff; margin-top: 1em; font-size: 1em"> {| class="table" style="width: 80%; background-color: #ACE1AF; border: 1px solid #fceb92; margin: auto; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[Tập tin:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | '''Mời bạn cho ý kiến về việc cấp quyền Bảo quản viên cho thành viên [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] tại trang [[Thảo luận Wiktionary:Bảo quản viên#DefenderTienMinh07|Thảo luận Wiktionary:Bảo quản viên]]. Xin cảm ơn. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái! |} </div> [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 10:25, ngày 24 tháng 8 năm 2023 (UTC) == Nhờ giúp == Tôi đang gặp chút khó khăn khi đang sử dụng bản mẫu <nowiki>{{quote-book}}</nowiki> trong mục từ [[ngàn trùng]]. Lỗi ở đây là ở đoạn thứ 2 của phần tham khảo (đoạn ''Nguồn ân trăm trượng dễ khơi vơi...'') tôi không thể xuống dòng như [[Đặc biệt:So sánh di động/2122630|bản sửa đổi cũ này]] của FF Boyahh. Mong anh có thể sửa giúp. – [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:16, ngày 2 tháng 9 năm 2023 (UTC) == Sửa trang đổi hướng js == Phiền anh có thể tẩy trống trang [[Thành viên:DefenderTienMinh07/minerva.js]] và [[Thành viên:DefenderTienMinh07/common.js]] do tôi không thể sửa được. Nhân tiện anh có thể xóa luôn trang [[Thành viên:Nguyên Hưng Trần/style.css]] vì là một trang đổi hướng đến trang mà thành viên đã từng yêu cầu xóa trước đây. ({{ping|Nguyên Hưng Trần}} vì không biết bạn có muốn xóa trang con style.css của trang thành viên mình hay không, tôi đã đề cập đến bạn để cho ý kiến.) – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 07:31, ngày 4 tháng 9 năm 2023 (UTC) :{{ping|DefenderTienMinh07}} Tôi cũng muốn xóa cái trang con như bạn đã đề cập ở trên, do cái trang đó không còn cần thiết nữa nên nhờ bạn THF2 xóa luôn đi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 09:00, ngày 4 tháng 9 năm 2023 (UTC) == Dọn trang clk == Nhờ BQV TheHighFighter xem cùng tôi đóng góp hàng loạt của dãy IP [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/85.195.123.24 85.195.123.24], rất nhiều bài tạo clk và thiếu ngữ cảnh = thuộc tiêu chí xóa nhanh. Đáng lẽ ra tôi có ý định kêu mọi người tham gia cải thiện các bài này để chúng được giữ, nhưng clk quá lâu và số lượng rất nhiều. Xóa là cần thiết, ai muốn tạo lại thì tạo. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:07, ngày 9 tháng 9 năm 2023 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi nghĩ những mục từ trên được IP [[Thành viên:85.195.123.24|85.195.123.24]] tạo cách đây hơn chục năm rồi (có mục từ được tạo trước cả năm tôi sinh), tôi nghĩ đối với mục từ được tạo cách đây nhiều năm thế này thay vì xóa đi sao lại không đặt biển chất lượng kém vô nhỉ do thời xưa có thể BTV vẫn chưa biết cách tạo đúng quy trình một mục từ. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 18:33, ngày 9 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi đã nói trên, các mục từ này thuộc diện tiêu chí xóa nhanh nên không thể đặt biển clk. Bản mẫu chất lượng kém là một bản mẫu mà công dụng dùng để bảo trì, nghĩa là khi một bài viết chứa thông tin đầy đủ nhưng biên tập không bách khoa và một số tiêu chí khác dùng để xác định một bài clk (bạn có thể qua Wikipedia Vi đọc cái này) thì chúng ta mới đặt bản mẫu này, mục đích của nó là hy vọng trong 7 ngày tính từ khi bản mẫu được đặt vào sẽ có thành viên nào đó cải thiện, và trong 7 ngày này BQV không có quyền được xóa. Lý do các thành viên thời đó không biết cách tạo mục từ có thể hợp lí, thời trước có thể mảng tuần tra đã không được chú trọng và hiện tại đâu đó trên Wiktionary đã lọt lưới rất nhiều các bài clk tồn tại. Nếu bạn muốn cải thiện những bài này thì cứ bắt tay vào sửa đổi không cần đặt biển clk vì nó thuộc diện tiêu chí xóa nhanh, một số bài IP này tạo thiếu ngữ cảnh, không được dịch, tiêu đề sai. Số lượng bài clk có thể tồn đọng lên đến 100 bài thì làm sao cải thiện nổi và được tạo hơn 10 năm trước thì xóa là cần thiết. Ưu tiên chất lượng hơn số lượng và đương nhiên không phải lúc nào xóa, bài nào có khả năng cải thiện được thì chúng ta sẽ ưu tiên cải thiện. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 03:36, ngày 10 tháng 9 năm 2023 (UTC) == Nhiều mã quá == Em dạo này đi học nên ít lên đây như để ý cái [[MediaWiki:Common.css]] hiện tại có đến 2700 dòng, và em cho là nó quá dài và nặng. Một số cái thật ra đã có trong Ganget rồi nhưng bác lại thêm vào gây nặng mã quá như mấy cái định kiểu cho .Arab... thật ra nằm trong [[MediaWiki:Gadget-script fonts.css]] rồi, để em nhập rồi sửa lại cho bác – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 10:06, ngày 13 tháng 9 năm 2023 (UTC) == Sửa Trang Chính == Ở chỗ "Wiktionary là dự án từ điển mở, '''đa ngôn ngữ'''" có đường dẫn đến trang Wiktionary:Ngôn ngữ nhưng trang này đã bị anh Kateru [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Nh%E1%BA%ADt_tr%C3%ACnh&logid=144969 đổi thành Phụ lục:Ngôn ngữ (có tắt đổi hướng)]. Vậy phiền anh có thể sửa đường dẫn chỗ "đa ngôn ngữ" từ [[Wiktionary:Ngôn ngữ]] thành [[Phụ lục:Ngôn ngữ]] hoặc tạo trang Wiktionary:Ngôn ngữ. Xin cảm ơn. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 13:50, ngày 14 tháng 9 năm 2023 (UTC) == Nhờ khóa trang thành viên == Chào bạn, nhờ bạn khóa trang thành viên của tôi để không bị rối phá hoại trong tương lai. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 05:49, ngày 25 tháng 9 năm 2023 (UTC) == Thư mời == Chào bạn! Mời bạn cho ý kiến tại [[Thảo_luận_Wiktionary:Bảo_quản_viên#Nguyên_Hưng_Trần|Biểu quyết chọn bảo quản viên]]. Thanks bạn! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:20, ngày 30 tháng 12 năm 2023 (UTC) == [[Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js]], [[Mô đun:accel]] == Bạn có cách nào để sửa lỗi hai kịch bản cho tiện ích tạo hình thái mục từ mà tôi chép bên en không? Khi tôi định tạo mục từ hình thái tiếng Latinh ([[dictionarii]]) thì gặp lỗi không thể tìm thấy đề mục ngôn ngữ. (bạn cài đặt tiện ích này vào trong trang common.js rồi bấm vô mục từ hình thái trong bảng biến cách hoặc chia động từ để thấy lỗi của nó: <code>mw.loader.load('/w/index.php?title=Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js&action=raw&ctype=text/javascript');</code>) – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:56, ngày 31 tháng 12 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] mà chức năng và công dụng của công cụ này j v bn? – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:18, ngày 9 tháng 2 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} (chép bên en) "This [[:en:Wiktionary:Gadgets|gadget]] allows you to automatically generate entries for inflected forms of words." (tạm dịch: [[WT:Tiện ích|Tiện ích]] này cho phép tự động tạo mục từ cho dạng biến tố của các từ.) – <span style="background:#011635;border-radius:6.342px;box-shadow:1px 1px 5px #173562;padding:5px;width:100%;"><span lang="vi" xml:lang="vi" class="Hani" style="font-size: 150%; line-height: 1em;">[[Thành viên:Nguyên Hưng Trần|<span style="color:beige;">𠊛𥋴</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|𫇳𣋀]]</span></span> 11:14, ngày 9 tháng 2 năm 2024 (UTC) == Năm mới vui vẻ == Chúc năm mới vui vẻ, bảo quản viên TheHighFighter2. Lời chúc này thay cho lời cảm ơn, từ sự nhiệt thành, tận tâm và chăm chỉ của bảo quản viên trong suốt thời gian qua bằng cách này hay cách khác dành cho dự án. Xin thay mặt cộng đồng, thân kính chúc một ngày lễ vui vẻ, [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:10, ngày 9 tháng 2 năm 2024 (UTC) == Công cụ chống spam == Mời bạn vào trang [[Đặc_biệt:Trang_đặc_biệt|này]], chỗ "Công cụ chống spam", bạn nên dùng công cụ này, BQV có quyền sửa trang, như tôi đã giới thiệu tính năng và tiện lợi của nó trên trang tv của mình. Buổi tối tốt lành. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:36, ngày 15 tháng 2 năm 2024 (UTC) == Trang chính == Tôi thấy trang chính trong bảng "Ngôn ngữ khác" bị lỗi mô đun. Nhờ bạn sửa lại giúp. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:55, ngày 3 tháng 5 năm 2024 (UTC) :{{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:05, ngày 3 tháng 5 năm 2024 (UTC) == Chào bạn == Chào bạn nhé, mình mới tới và có chút thắc mắc muốn hỏi, bây giờ mình muốn cập nhật mô đun/bản mẫu liên quan đến từ mượn thì mình nên sửa/cập nhật bản mẫu hay mô đun nào bạn nhỉ? [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:48, ngày 23 tháng 7 năm 2024 (UTC) :{{ping|Pminh141}} Chào bạn! Tôi đã giúp bạn sửa/cập nhật Mô đun:etymology cùng với các trang con của nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:00, ngày 25 tháng 7 năm 2024 (UTC) ::Cảm ơn bạn, mình chủ yếu hoạt động bên wikipedia nên sang đây có nhiều cái chưa biết. Mà mình đang muốn hỏi bạn xem là không biết viwiktionary có thể update module tài liệu (bản mẫu/mô đun) để nó tự động tạo tài liệu không bạn nhỉ. Mình thấy có nhiều phiên bản ngôn ngữ áp dụng rồi ý? – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 00:46, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Pminh141}} Do dự án còn thiếu nhân lực nên là nhiều bản mẫu/mô đun không được cập nhật thường xuyên. Nên là nếu muốn, bạn có thể giúp cập nhật mô đun này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:41, ngày 26 tháng 7 năm 2024 (UTC) == [[Bản mẫu:unadapted borrowing]] == Chào bạn, mình thấy bản mẫu này đang bị lỗi, phiền bạn sửa lại giúp. Cảm ơn bạn nhiều. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:31, ngày 9 tháng 8 năm 2024 (UTC) :{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:13, ngày 10 tháng 8 năm 2024 (UTC) :: Cảm ơn bạn, mà hôm nay mình cố sửa các bản mẫu/mô đun liên quan đến bản mẫu {{Liên kết bản mẫu|transclude}} này mà vẫn chưa lần được ra nguyên nhân, nếu được bạn có thể giúp mình sửa lỗi này không. Mình nghĩ chắc là nó bị thiếu dữ liệu ở đâu đó nên cứ dùng đến là báo lỗi à. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 21:42, ngày 10 tháng 8 năm 2024 (UTC) :::{{ping|Pminh141}} Để dùng {{LKBM|transclude}}, bạn phải dùng thêm {{LKBM|senseid}}. Ví dụ như bạn muốn dùng bản mẫu transclude ở mục [[ロシア]], bạn thêm bản mẫu senseid vào mục Nga như ở [https://vi.wiktionary.org/w/index.php?title=Nga&curid=249068&diff=2170249&oldid=2170248 đây]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:06, ngày 11 tháng 8 năm 2024 (UTC) ::::Cảm ơn bạn, quả nhiên là cần nhiều thời gian hơn để làm quen với mọi thứ ở đây. Chúc bạn 1 ngày tốt lành. – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 16:14, ngày 11 tháng 8 năm 2024 (UTC) : Chào bạn nhé, hôm nay mình muốn hỏi bạn chút về mục từ này: [[北朝鮮]], phần phát âm của mục tiếng Trung thì mình có nhập từ tiếng Anh về nhưng mình lại chưa biết cách xử lý bản mẫu/mô đun được dùng ở mục đó. Nên là phiền bạn giúp mình chút. :p [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 07:37, ngày 16 tháng 8 năm 2024 (UTC) ::{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:27, ngày 16 tháng 8 năm 2024 (UTC) == Mục từ tiếng Galicia == At the entry [[xirafa]], I added an alternative spelling, that is in the writing system of {{w|en:reintegrationism|reintegrationism}}. How could the term "reintegrationism" be translated? Thanks for reading. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 01:42, ngày 29 tháng 9 năm 2024 (UTC) :"Chủ nghĩa tái hòa nhập". – [[Thành viên:Nguyên Hưng Trần|<span style="color:#74a12e;font-family:Georgia, serif;">'''NHT'''</span>]] ([[Thảo luận Thành viên:Nguyên Hưng Trần|💬]]) 07:16, ngày 29 tháng 9 năm 2024 (UTC) :: {{ping|Nguyên Hưng Trần}} I would rather use the spelling "Chủ nghĩa tái hoà nhập" but thanks for helping. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:57, ngày 2 tháng 10 năm 2024 (UTC) == [[Bản mẫu:term]] == Bản mẫu này được dùng cho phân loại một nhóm từ (ví dụ: mục từ [[chân trời sự cố]] là "vật lý học"). Tôi muốn dùng bản mẫu này nhận dạng các mục từ pháp luật được không? Bạn nghĩ sao? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:29, ngày 24 tháng 10 năm 2024 (UTC) :Cú pháp sẽ là {{term|pháp luật}}. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:31, ngày 24 tháng 10 năm 2024 (UTC) ::{{ping|P. ĐĂNG}} Theo tôi, bạn nên dùng {{LKBM|nhãn}}. Với cú pháp vd như là {{<code>nhãn|vi|pháp luật</code>}} nó sẽ tự động xếp trang vào Thể loại:Luật pháp/Tiếng Việt. ::{{LKBM|term}} đã lỗi thời, nó hiện gây ra các liên kết sai kiểu như [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/t%E1%BB%AB_M%E1%BB%B9,_ngh%C4%A9a_M%E1%BB%B9], [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/T%E1%BB%AB_c%C5%A9,_ngh%C4%A9a_c%C5%A9] – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:04, ngày 25 tháng 10 năm 2024 (UTC) :::Ok, thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:22, ngày 25 tháng 10 năm 2024 (UTC) == Mục từ các thứ tiếng == Các mục từ cùng một chủ đề (ví dụ: Luật pháp) thường trong mỗi ngôn ngữ đặc thù quốc gia nước đó thì tính đa dạng riêng. Tôi có ý định tạo thêm Thể loại:Luật pháp Việt Nam/Tiếng Việt vào các mục từ pháp lý Việt Nam. Thể loại này sẽ là "thể loại con" bên trong thể loại Luật pháp về tiếng Việt. Bạn thấy sao? Cách này sẽ phân chia nếu Wiktionary chủ đề luật có ở các thứ tiếng khác như Thể loại:Luật pháp Hoa Kỳ/Tiếng Việt. Vì tôi có ý định đóng góp chuyên sâu hơn mảng này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:01, ngày 26 tháng 10 năm 2024 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Ok, bạn cứ triển khai. Bạn có thể dùng Bản mẫu:nhãn với tham số "luật pháp Việt Nam" để xếp thể loại--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:28, ngày 27 tháng 10 năm 2024 (UTC) ::Thanks! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:59, ngày 27 tháng 10 năm 2024 (UTC) == [[Mô đun:languages/data/3/c]] == Không rõ mô đun này được nhúng vào một trang bị khóa theo tầng chỗ nào nữa. Hiện tôi không thể sửa mô đun được. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">Ayane</b>]] <span style="color:Plum">aka.</span> [[:m:User talk:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#ADD8E6;letter-spacing:">eunn</b>]] 06:53, ngày 24 tháng 12 năm 2024 (UTC) :✔ [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:languages/data/3/c&curid=272284&diff=2197134&oldid=2196315 Đã sửa]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:59, ngày 24 tháng 12 năm 2024 (UTC) == Mục từ == Không rõ công cụ trợ giúp tạo mục từ tự động Wiktionary đã lỗi thời? Tôi thấy có nhiều thành viên thay thế các sửa đổi như thế này [https://vi.wiktionary.org/w/index.php?title=c%C3%B4ng_d%C3%A2n&diff=prev&oldid=2204284][https://vi.wiktionary.org/w/index.php?title=nguy%C3%AAn_b%E1%BA%A3n&diff=prev&oldid=2204282]. Phần lớn các mục từ tại đây tuân theo cách sắp xếp cũ (do tạo từ trước), tôi cũng thường dùng công cụ hiện sẵn trợ giúp khi tạo mục từ mới nên trang vẫn theo cách trình bày này. Vậy lần sau phải tạo thủ công? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:50, ngày 15 tháng 1 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Các sửa đổi mà bạn dẫn link ở trên sử dụng dấu = cho phần đề mục; thay các [[:Thể loại:Bản mẫu ngôn ngữ|bản mẫu ngôn ngữ]] bằng {{LKBM|langname}}, các [[:Thể loại:Bản mẫu đề mục loại từ|bản mẫu đề mục loại từ]], [[:Thể loại:Bản mẫu đề mục khác|bản mẫu đề mục khác]] bằng {{LKBM|ĐM}}. Việc thay thế này nhằm: :# Trước đây dự án có nút ấn sửa ở bên phải đề mục, nhưng sau đó bị ẩn đi vì nó liên kết đến sửa đổi bản mẫu thay vì sửa nội dung bên dưới. Cách giải quyết cho vấn đề này là dùng dấu = cho đề mục. :# Tận dụng sẵn dữ liệu từ [[Đặc_biệt:Tiền_tố/Mô_đun:languages/data/|Mô đun:languages]]. Tại sao phải tạo hàng trăm bản mẫu kiểu như {{LKBM|-vie-}}, {{LKBM|-eng-}},... trong khi chỉ cần dùng một bản mẫu? :Còn về trình tạo mục từ tự động, quả thật có phần lỗi thời. Nhưng vẫn có thể dùng nó điền nội dung sau đó thay thế. :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:54, ngày 15 tháng 1 năm 2025 (UTC) ::Bạn có định sửa giao diện các trình tạo mục từ tự động để bắt kịp tiến độ mới này? Tôi nghĩ, việc này sẽ hữu ích hơn khi cứ "điền lại" nội dung sau các lần tạo trang. Hơn thế, chúng ta còn phải giúp người mới sửa lỗi này khi họ tạo bài (vì hầu hết các tv dùng trình tạo mục từ tự động khi tạo bài). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:31, ngày 16 tháng 1 năm 2025 (UTC) == Chú thích == Tôi định tạo bản mẫu chú thích sách mới (lưu tại [[Thành viên:P. ĐĂNG/Nháp 3|đây]]), nhưng tham số pages của nó cố định, không rõ có cách nào tự thêm số trang theo ý muốn khi dùng bản mẫu này không? Trong mục từ [[permanent geodetic beacon]] (tôi thêm chú thích bằng cách sao chép mã nguồn). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:26, ngày 27 tháng 3 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG/Nh%C3%A1p_3&curid=336667&diff=2224051&oldid=2224044] Bạn xem đã được hay chưa?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:04, ngày 27 tháng 3 năm 2025 (UTC) ::OK, đã được. Thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:09, ngày 28 tháng 3 năm 2025 (UTC) == [[ngilo]] == <span style="color:#b01500;"><strong>Lỗi Lua trong Mô_đun:parameters tại dòng 667: Parameter 1 must be a valid language or etymology language code; the value "General Cebuano" is not valid. See WT:LOL and WT:LOL/E.</strong></span> Tôi vô tình lướt trúng trang này và thấy nó bị lỗi mô đun như trên (không chỉ riêng trang này mà còn nhiều trang khác cũng bị lỗi ở [[Mô đun:parameters]]), nhờ bạn xem sửa giúp. – [[Thành viên:Như Gây Mê|<span style="color:orange;"><strong>Halley</strong></span>]] [[Philippines|<span style="color:#00bbe6;"><strong><sup>luv Filipino ❤</sup></strong></span>]] 00:36, ngày 19 tháng 5 năm 2025 (UTC) : @[[Thành viên:Như Gây Mê|Như Gây Mê]] Tôi mới chỉnh lại trong trang [[ngilo]], bạn có thể xem qua. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 04:10, ngày 19 tháng 5 năm 2025 (UTC) == Lỗi trong trình tạo mục từ == Vì lý do nào đó, các thay đổi gần đây của bạn khiến cho nút Tiếp không tự hiện cho phép bấm ngay khi nhập mục từ, phải thay đổi ngôn ngữ rồi đổi lại rất bất tiện mới hiện nút ra. Lý do nào bạn thay đổi vậy? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 06:16, ngày 14 tháng 6 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Về lí do tôi thay đổi: :# Sử dụng dấu = để hiển thị phần đề mục, nhằm mở lại nút sửa ở bên phải đề mục :# Sử dụng {{LKBM|langname}} và {{LKBM|ĐM}} thay cho các bản mẫu [[:Thể loại:Bản mẫu ngôn ngữ|ngôn ngữ]], [[:Thể loại:Bản mẫu đề mục loại từ|đề mục loại từ]] và [[:Thể loại:Bản mẫu đề mục khác|đề mục khác]], thay vì phải tạo thêm nhiều bản mẫu đề mục mới (nhất là cho tên ngôn ngữ) thì ta gom vào chỉ cần dùng 2 bản mẫu. Cái này tôi học hỏi từ fr.wiktionary :Về phần lỗi, tôi đã giải quyết--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:57, ngày 14 tháng 6 năm 2025 (UTC) == Bộ lọc == Tôi nhận thấy các tk rối gần đây liên tục spam "Cô Nhung" và các biến thể liên quan của từ này. Tôi có ý định đề xuất thêm tiêu đề này vào bộ lọc. Bạn nghĩ thế nào? Nếu được, tôi có thể biên soạn danh sách các từ này và biến thể liên quan có khả năng được rối tạo để tham khảo. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:47, ngày 21 tháng 6 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] 👍 Ok, bạn cứ triển khai--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 23:50, ngày 21 tháng 6 năm 2025 (UTC) ::Ok. Đã tạo trang [[Thành viên:P. ĐĂNG/Nháp 2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:32, ngày 22 tháng 6 năm 2025 (UTC) :::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi đã đưa một số biến thể vào [[MediaWiki:Titleblacklist]], thay cho việc đưa vào bộ lọc--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:16, ngày 22 tháng 6 năm 2025 (UTC) == Gửi thư == Tôi có thử test [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_%C4%91%E1%BA%B7c_bi%E1%BB%87t công cụ] gửi thư thông báo diện rộng. Nhưng sao khi gửi thư phần tin nhắn không có chữ ký MediaWiki message delivery? Ví dụ giống [https://vi.wikipedia.org/w/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG&diff=prev&oldid=73638382 vậy]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:08, ngày 11 tháng 7 năm 2025 (UTC) :{{Tick}} Đã sửa được lỗi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:46, ngày 11 tháng 7 năm 2025 (UTC) == "clause" == Từ "clause" trong tiếng Anh nên được dịch là "mệnh đề" hay "cú" / "tiểu cú" vậy? Mình thấy các trang web dạy tiếng Anh ở Việt Nam ngày nay đều dịch là mệnh đề, nhưng khi mình tra từ điển ''Thuật ngữ ngôn ngữ học Anh – Việt Việt – Anh'', tr. 44 của Cao Xuân Hạo, Hoàng Dũng thì lại dịch là "tiểu cú". Bên ''Từ điển Khái niệm Ngôn ngữ học'', tr. 136 của Nguyễn Thiện Giáp cũng dịch tương tự. Phiền bạn trợ giúp. --[[Thành viên:I can see my baby swimming|I can see my baby swimming]] ([[Thảo luận Thành viên:I can see my baby swimming|thảo luận]]) 08:13, ngày 1 tháng 8 năm 2025 (UTC) == Nhờ == Phiền bạn ẩn lại tên người dùng [https://vi.m.wiktionary.org/w/index.php?title=Th%E1%BB%83_lo%E1%BA%A1i:Ti%E1%BA%BFng_Xhosa&oldid=2277181 này] do lúc nãy tôi gặp sự cố cookie đăng xuất tài khoản không mong muốn, nên sửa đổi này tự tạo ra tài khoản tạm thời. – [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 12:49, ngày 22 tháng 9 năm 2025 (UTC) ==Happy Holidays== <div style="border-style:solid; border-color:violet; background-color:#fff; border-width:2px; text-align:left; padding:8px;" class="plainlinks"> {| style="border: 5px dotted #H1790; background-color: #DDDDDD; padding:4px" | rowspan="2" valign="left" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Christmas Tree 2011-12-24.jpg|left|300px|link=]]<span style="display:block;padding-top:10px;clear:both"> | <span style="font-family: Georgia; font-size: 98%; color: #190a89;">Chúc bạn TheHighFighter2 có một mùa '''Giáng sinh''' an lành, ấm áp và tràn ngập yêu thương bên gia đình!<br/> Bước sang '''năm mới''' 2026, chúc bạn gặp nhiều may mắn,<br/> gặt hái được nhiều thành công trong công việc và học tập.<br/> Một lần nữa chúc bạn sẽ có một năm mới thật an khang, hạnh phúc và vạn sự như ý!!</span> <br /> <span style="font-family: Georgia; font-size: 92%;"> | rowspan="2" valign="right" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Atlantic Firework Festival 2016 (53368638571).jpg|left|360px|link=]]<span style="display:block;padding-top:10px;clear:both"> |}</div> Lời chúc chân thành từ: <span style="background:#978FF;border:solid 1px;border-radius:8px;box-shadow:darkblue 2px 2px 2px">&nbsp;[[User:Kelly zhrm|<span style="font-family:Old English Text MT;color:#C90">Yellow</span>]]&#124;[[User talk:Kelly zhrm|&#248;]]&nbsp;</span>&nbsp; 05:43, ngày 24 tháng 12 năm 2025 (UTC) :@[[Thành viên:Kelly zhrm|Kelly zhrm]]<poem>Cảm ơn lời chúc chân thành</br>Như là gió ấm bạn dành cho tôi</br>Năm tàn với tháng phai phôi</br>Chào mơn mởn mới như chồi đâm non...</br>Mượn lời lục bát son son</br>Giáng Sinh chúc bạn vui giòn niềm vui!</poem> :--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:33, ngày 24 tháng 12 năm 2025 (UTC) == [[Võ Nguyên Giáp]] == Theo bạn, mục từ này có nên tồn tại trên Wiktionary tiếng Việt. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 06:15, ngày 25 tháng 12 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Theo [[:en:Wiktionary:NSE]], không nên đưa một cá nhân cụ thể nào đó vào làm một nghĩa trong một mục từ nếu tiêu đề của mục từ đó bao gồm cả họ và tên gọi. Một vài vd như [[:en:Adolf Hitler]], [[:en:Elizabeth II]] đều không có bài bên en; những người có bài như [[:en:George Washington]], [[:en:Donald Trump]] sẽ không thấy dòng định nghĩa nào mô tả mấy người này là ai, mà chỉ có nghĩa phát sinh thôi--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:06, ngày 25 tháng 12 năm 2025 (UTC) :: Nếu vậy thì đợi 7 ngày nữa rồi đem mục từ này ra biểu quyết xóa. Bài đã gắn biển <code><nowiki>{{rfv}}</nowiki></code>. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 23:45, ngày 25 tháng 12 năm 2025 (UTC) : "Eastern Aramaic" nên dịch thành "Đông Aram" hay "Aram Đông"? [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:44, ngày 2 tháng 1 năm 2026 (UTC) ::@[[Thành viên:Hiyuune|Hiyuune]] [https://vi.wikipedia.org/wiki/Wikipedia:Th%E1%BA%A3o_lu%E1%BA%ADn/L%C6%B0u_59#Nh%C3%B3m_ng%C3%B4n_ng%E1%BB%AF_Slav_%C4%90%C3%B4ng Thảo luận này] có lẽ sẽ trả lời cho câu hỏi của bạn--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 17:06, ngày 2 tháng 1 năm 2026 (UTC) == Thể loại giống của mục từ == Hôm qua tôi có cập nhật một số mô đun như [[Mô đun:languages]], [[Mô đun:languages/templates]], [[Mô đun:headword]] và [[Mô đun:headword/templates]] nhưng sau khi cập nhật thì không còn thấy xếp thể loại giống của mục từ (ví dụ: [[αστρολογία]]; không xếp vào [[:Thể loại:Danh từ giống cái tiếng Hy Lạp]]). Không rõ lỗi nó nằm ở đâu. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 09:17, ngày 4 tháng 3 năm 2026 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] {{xong}}: xem [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:headword/data&diff=prev&oldid=2334055]--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) – [[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:54, ngày 5 tháng 3 năm 2026 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:17, ngày 28 tháng 4 năm 2026 (UTC) </div> <!-- Tin nhắn của Thành viên:Keegan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472541 --> == PANG450a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r == [[Đặc_biệt:Đăng_nhập_trung_ương/PANG450v]][[Thành viên:PANG450r|PANG450r]] ([[Thảo luận Thành viên:PANG450r|thảo luận]]) 07:36, ngày 6 tháng 5 năm 2026 (UTC) o4c9qt27l79z2npoeuigb8c74ymb0xf 2350457 2350454 2026-05-06T12:45:19Z TheHighFighter2 42988 Đã lùi lại sửa đổi [[Special:Diff/2350452|2350452]] của [[Special:Contributions/PANG450s|PANG450s]] ([[User talk:PANG450s|thảo luận]]) 2350457 wikitext text/x-wiki == Chào == Bạn có phải HighFighter mà bị quên mật khẩu không? [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 04:11, ngày 14 tháng 11 năm 2020 (UTC) Đúng vậy, thưa bạn.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == BQV == Mời bạn vô [[Thảo luận Wiktionary:Bảo quản viên]] để chấp nhận lời đề cử. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 09:44, ngày 1 tháng 12 năm 2020 (UTC) == Thư mời == Mời bạn tham gia [[Thảo luận Wiktionary:Hành chính viên|BQ chọn hành chính viên]]. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 08:21, ngày 11 tháng 12 năm 2020 (UTC) == Bảo quản viên == Cám ơn sự kiên nhẫn của bạn, bạn hiện là một bảo quản viên tại đây! Mong bạn tiếp tục phát triển dự án này. Nếu có thể, xin bạn tự giới thiệu trong [[Thành viên:‎TheHighFighter2|trang cá nhân]]. &ndash;&nbsp;[[Thành viên:Mxn|Nguyễn Xuân Minh]]&nbsp;<sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">&#x1f4ac;</span>]]</sup> 19:55, ngày 19 tháng 12 năm 2020 (UTC) :Chúc mừng bạn đã trở thành BQV mới của dự án. Mong bạn dành ra ít phút mỗi ngày để theo dõi trang "Thay đổi gần đây". Nếu có trang nào viết linh tinh thì bạn có thể xóa chúng. Nếu có sửa đổi nào linh tinh thì bạn có thể lùi sửa chúng. Xin cảm ơn bạn! [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:02, ngày 19 tháng 12 năm 2020 (UTC) == Xóa trang thành viên == Xin chào! Việc bạn xóa trang thành viên Hứa Ngọc Sơn, tuy xóa thì không có ảnh hưởng xấu đến Wikitionary nhưng việc tạo trang thành viên dường như không có gì sai. Đặc biệt là trang thành viên thì có thể ghi bất cứ thông tin cá nhân nào, miễn không vi phạm nguyên tắc là được. [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 12:04, ngày 31 tháng 12 năm 2020 (UTC) : [[Thành viên:Đức Anh|Đức Anh]] Tôi đã phục hồi lại trang đó.[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) == Chào bác == Bác đính kèm link đến trang dũng cảm giúp [[Thành viên:Nghia12072002|Nghia12072002]] ([[Thảo luận Thành viên:Nghia12072002|thảo luận]]) 05:52, ngày 5 tháng 1 năm 2021 (UTC) == IP phá hoại == [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/1.54.201.226 IP này] tạo nhiều trang sai nghĩa và sai ngôn ngữ. Bạn nên xóa chúng nếu bắt gặp. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:14, ngày 8 tháng 1 năm 2021 (UTC) == Bị cấm tôi trên Wikipedia tiếng Việt == Help me. Tôi bị cấm bị treo IP do thằng Alphama bị cấm trên Wikipedia tiếng Việt [https://vi.wikipedia.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Danh_s%C3%A1ch_c%E1%BA%A5m&wpTarget=%2397813 xem nè]. Bạn cần hỏi Alphama để giảm thời gian cấm đi. [[Thành viên:HaThanhPhuoc|HaThanhPhuoc]] ([[Thảo luận Thành viên:HaThanhPhuoc|thảo luận]]) 07:58, ngày 21 tháng 5 năm 2021 (UTC) :Xin lỗi tôi không giúp được bạn, bạn nên thảo luận trực tiếp với Alphama.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 09:53, ngày 21 tháng 5 năm 2021 (UTC) == Chào == Xin chào bạn. Hình như bạn hoạt động rất tích cực ở đây đúng không? Nhờ bạn xem thử trang [[:en:Module:Unicode data]], xem có nhập về bên mình được không. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 8 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Dự án này chỉ còn mình tôi hoạt động tích cực thôi. Mấy cái mô đun, bản mẫu thì tôi chịu thua, không phải là lĩnh vực sở trường của tôi. Nếu bạn muốn nhập nó từ bên en về thì xin mời.--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:50, ngày 8 tháng 7 năm 2021 (UTC) :☹, mình tưởng bạn phải biết chứ… Thôi, mình sẽ làm những thứ nhỏ hơn trước vậy. Dù sao cũng cảm ơn bạn đã ở lại đóng góp cho từ điển mở này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 08:34, ngày 8 tháng 7 năm 2021 (UTC) == ☹ == Không thể tin nổi… Ngay cả mục từ như [[3]], [[4]], [[!]] cũng không có! Bạn có thể hỗ trợ mình trong mảng Unicode được không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:29, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Xin lỗi, tôi không thể giúp được bạn. Việc này bạn nên nhờ các thành viên bên Wikipedia, bên ấy có nhiều chuyên gia hơn bên này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:34, ngày 10 tháng 7 năm 2021 (UTC) :Không, ý mình là dịch các mục từ bên en sang đây mà. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:06, ngày 10 tháng 7 năm 2021 (UTC) ::{{ping|Ccv2020}} Việc này thì ok--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:22, ngày 10 tháng 7 năm 2021 (UTC) == Khôi phục trang == Chào bạn. Không biết bạn có thể khôi phục trang [[B]] được không nhỉ? Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:01, ngày 10 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã khôi phục trang, tuy nhiên bạn cần phải sửa lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:12, ngày 10 tháng 7 năm 2021 (UTC) :<font color=limegreen>✓</font>. Lần sau, bạn chú ý nếu nội dung được khôi phục là phá hoại thì bạn đừng khôi phục nha. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:35, ngày 10 tháng 7 năm 2021 (UTC) == Thể loại == Chào bạn. Không biết mình có nên đổi [[:Thể loại:Unicode CJK Unified Ideographs]] thành [[:Thể loại:Khối ký tự CJK Unified Ideographs]]? Cảm ơn bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:49, ngày 12 tháng 7 năm 2021 (UTC) :Tôi cũng nghĩ nên đổi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:00, ngày 12 tháng 7 năm 2021 (UTC) ::Nếu vậy thì phải dùng Cat-a-lot thì mới chuyển hết các trang trong thể loại nhanh nhất. Lát tôi chép mã nguồn vào, rồi làm luôn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:39, ngày 12 tháng 7 năm 2021 (UTC) == [[:en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. [[Thành viên:Thienhau2003|Thienhau2003]] cho biết nếu chép hết đống đó sang đây thì [[Bản mẫu:character info]] sẽ hết lỗi. Do mấy ngày nay không có máy tính vào lúc thích hợp, nên nhờ bạn làm giúp việc này. Cảm ơn bạn rất nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:50, ngày 14 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Sáng mai tôi sẽ chép đống đó cho bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:38, ngày 14 tháng 7 năm 2021 (UTC) Xong bạn khóa hết các mô đun do tôi và bạn tạo ra nhé. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 05:08, ngày 16 tháng 7 năm 2021 (UTC) :Alo bạn (<big>↑</big>) – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:56, ngày 20 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Tôi nghĩ cũng chẳng cần khóa đâu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:27, ngày 20 tháng 7 năm 2021 (UTC) == Cần hỗ trợ == Chào bạn. Do ngày mai tôi chuẩn bị thi nên sẽ cực kỳ hạn chế tham gia dự án này. Mong bạn giúp mình vừa tạo các mục từ Unicode mới, vừa thêm mã <nowiki>“{{character info}}”</nowiki> vào những mục từ Unicode hiện có. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:36, ngày 21 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} {{OK}} Chúc bạn sẽ thi thật tốt nhé--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 14:44, ngày 21 tháng 7 năm 2021 (UTC) == Về [[H₂SO₄]] và TCVN == Chào bạn. Cảm ơn bạn đã mang TCVN đến Wiktionary. Nhờ vậy mà tôi dễ kiểm soát hành vi của mình hơn, tránh những sửa đổi "trút giận" (mà tôi đã thử làm tại mục từ [[B]], [[I]]). Tôi nghĩ chúng ta có thể viết thảo luận thống nhất về vấn đề này một cách ngắn gọn, để những người đi sau sẽ thấy được bằng chứng. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:43, ngày 24 tháng 7 năm 2021 (UTC) ==Nhờ giúp== Chào bạn. Phiền bạn qua xem đóng góp của tôi và xem 5 trang nháp bản mẫu, xem bản mẫu nào hữu ích thì chuyển ra không gian tên Bản mẫu giúp mình. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:55, ngày 25 tháng 7 năm 2021 (UTC) Tôi thấy cái 1, 3, 4, 5 là ok. Tuy nhiên, hiện không biết đặt tên bản mẫu là gì--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:10, ngày 25 tháng 7 năm 2021 (UTC) :Tôi thấy 1–4 nên được đưa ra không gian tên Bản mẫu trước. Cái thứ 5 dễ bị nhầm lẫn: có những ký tự Unicode đã được định rõ nhưng hiển thị dưới dạng “&#1000000;”. Những trường hợp như thế thì nên cân nhắc dùng cái số 1. Về tên thì bạn có thể xem mã nguồn (đằng sau trường “name”). Nếu bạn cần hiểu rõ hơn, mình sẽ giải thích. Thân mến! [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:39, ngày 25 tháng 7 năm 2021 (UTC) <hr> Chào bạn. Phiền bạn kiểm tra trong [https://www.compart.com/en/unicode/block/U+2B00 khối ký tự này] xem có ký tự nào ở dạng “&#1000000;” thì báo cho mình để mình cân nhắc dùng {{LKBM|cảnh báo Unicode}}. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:41, ngày 26 tháng 7 năm 2021 (UTC) :À mà máy tính bạn dùng hệ điều hành Windows đời nào vậy? Phiền bạn trả lời câu hỏi này trước. Cảm ơn bạn nhiều. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:42, ngày 26 tháng 7 năm 2021 (UTC) {{ping|Ccv2020}} Máy tôi dùng win 7. Các ký tự ở dạng “&#1000000;”: * Từ U+2B00 đến U+2B2F * U+2B45, U+2B46 * U+2B4D đến U+2BFF * --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:05, ngày 26 tháng 7 năm 2021 (UTC) :☹… Cài font chữ Symbola đi là vừa. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:07, ngày 26 tháng 7 năm 2021 (UTC) == Thư mời == Mời bạn tham gia thảo luận Wikibooks tại [[b:vi:Wikibooks:Phòng thảo luận#Cải thiện phiên bản máy tính|trang này]]. Xin cảm ơn! [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:27, ngày 1 tháng 8 năm 2021 (UTC) :{{u|Đức Anh}}: Tôi nghĩ thư mời ở đâu thì nên mời ở đó. Như thế sẽ tránh "lạc đề". [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:31, ngày 4 tháng 8 năm 2021 (UTC) == [[Đặc biệt:Đổi hướng/revision/2019991]] == Nhờ bạn ẩn giúp phiên bản này của trang, đồng thời xóa luôn trang [[Thành viên:Sinh tử hữu mệnh]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:25, ngày 4 tháng 8 năm 2021 (UTC) {{ping|Ccv2020}} Tôi đã ẩn phiên bản đó của trang, còn trang [[Thành viên:Sinh tử hữu mệnh]] thì tôi ko xóa đc--..--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 03:00, ngày 4 tháng 8 năm 2021 (UTC) :Sao không xóa được nhỉ… Hay bạn thử lại xem. Nếu vẫn không được thì bạn thử ẩn phiên bản trang thành viên đó xem có được không. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 03:46, ngày 4 tháng 8 năm 2021 (UTC) ::Nội dung xuất hiện trên trang này được sao chép từ [[metawiki:User:Sinh_tử_hữu_mệnh|meta]] nên tôi ko xóa hay ẩn đi đc--..-- – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 05:07, ngày 4 tháng 8 năm 2021 (UTC) :::Tôi quên mất. Vậy thì phải nhờ bên Meta xóa hộ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:43, ngày 5 tháng 8 năm 2021 (UTC) == Nhờ giúp đỡ == Chào bạn. Các mục từ chữ Hán và một số ít mục từ khác hiện nay cần được cập nhật thêm {{LKBM|character info}}. Mong bạn giúp tôi thêm chúng vào các mục từ chữ Hán nói riêng và các mục từ Unicode nói chung. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 00:36, ngày 15 tháng 8 năm 2021 (UTC) == Hỏi về Wikitionary == Bạn là bảo quản viên nơi này, cho mình hỏi từ điển mở này mình viết những gì. Bạn có thể minh họa giúp mình không? [[Thành viên:Nhotuo|Nhotuo]] ([[Thảo luận Thành viên:Nhotuo|thảo luận]]) 09:01, ngày 27 tháng 8 năm 2021 (UTC) :{{ping|Nhotuo}} Bạn có thể tham khảo [[Wiktionary:Giới thiệu]]. Nếu còn gì thắc mắc, bạn cứ tự nhiên hỏi--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:52, ngày 28 tháng 8 năm 2021 (UTC) == Wikiquote == Chào bạn, mời bạn cho ý kiến tại [[q:Wikiquote:Thảo luận#Đề bạt bảo quản viên|Biểu quyết bảo quản viên Wikiquote]]. – [[Thành viên:Băng Tỏa|Băng Tỏa]] ([[Thảo luận Thành viên:Băng Tỏa|thảo luận]]) 18:21, ngày 28 tháng 8 năm 2021 (UTC) == Xóa trang == Nhờ bạn xóa trang thử nghiệm trong [[:Thể loại:Chờ xóa]], cảm ơn bạn. (Chỉ có 1 trang nhưng tôi vẫn nhắc vì sợ không ai chú ý đến. Xin lỗi nếu đã làm phiền bạn) [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 14:10, ngày 5 tháng 9 năm 2021 (UTC) == Unicode 14.0 và [[en:Special:PrefixIndex/Module:Unicode_data/]] == Chào bạn. Unicode đã chính thức ra mắt phiên bản 14.0 vào ngày 14/09/2021. Vì thế, nhờ bạn theo dõi trong liên kết enwikt mà tôi đã cho ở trên xem có những thay đổi gì. Bạn có thể tìm thông tin về phiên bản này ở trang website chính thức của Unicode (do tôi đang dùng TV nên không gửi liên kết cho bạn được, mong bạn thông cảm). Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:28, ngày 15 tháng 9 năm 2021 (UTC) :Chào bạn, [https://www.unicode.org/charts/PDF/Unicode-14.0/ đây là liên kết]. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:15, ngày 15 tháng 9 năm 2021 (UTC) ::Nếu thích thì bạn có thể tự cập nhật luôn cũng được. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:10, ngày 16 tháng 9 năm 2021 (UTC) == [[Trợ giúp:Unicode]] == Chào bạn. Bạn thử đọc xem có hiểu không, nếu chưa thì chúng ta có thể sửa. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 07:36, ngày 16 tháng 9 năm 2021 (UTC) :{{ping|Ccv2020}} Về nội dung thì bạn viết tương đối dễ hiểu. Tuy nhiên, tôi vẫn có vài ý kiến sau: * Ở mục cấu trúc: 1. <syntaxhighlight lang="javascript"> a.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “mul”-}}'' và b.''{{-ngôn ngữ của mục từ, nếu là ký tự được dùng cho mục đích chung, dùng “symbol”-}}'' </syntaxhighlight> Cái a có thể ghi thêm là: '''mã''' ngôn ngữ của mục từ '''theo ISO 639-3'''. Cái b nên thay "ngôn ngữ" bằng "từ loại". 2. Đối với nhiều người, họ sẽ ko biết bản mẫu ''-pron-'' là gì. Nên thêm vào phần trong ngoặc bên dưới: (Cách phát âm của mục từ...) * Phần Xem thêm: Có thể liên kết thêm 1 số bài viết về Unicode trên Wiki. --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:33, ngày 16 tháng 9 năm 2021 (UTC) <font color=#80ff00>'''&#10003; – đã tiếp nhận, sẽ chỉnh sửa.'''</font> [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:04, ngày 16 tháng 9 năm 2021 (UTC) :<font color=#80ff00>'''&#10004;'''</font> – [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 16 tháng 9 năm 2021 (UTC) == Cảm ơn bạn rất nhiều == Cảm ơn bạn đã xóa hộ tôi rất nhiều trang tôi gắn biển gần đây. Nếu bạn có thời gian, rất mong bạn giúp tôi một tay để xử lý hết tất cả thể loại với tên gọi cũ của 'template'. Cảm ơn bạn rất nhiều – [[Thành viên:Mạnh An|Mạnh An]] ([[Thảo luận Thành viên:Mạnh An|thảo luận]]) 15:44, ngày 23 tháng 9 năm 2021 (UTC) == Gợi ý đóng góp == Chào bạn. Tôi thấy có chương trình “Vua tiếng Việt” trên VTV3, hay lắm vì có những từ mà tôi và chúng ta còn chưa biết. Thế nên tôi nghĩ là lấy các từ trong chương trình đó ra để viết mục từ, như thế dự án chúng ta sẽ thêm phần phong phú và đa dạng hơn. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 12:51, ngày 22 tháng 10 năm 2021 (UTC) == Giúp mở khóa == Bạn có thể '''tắt khóa theo tầng dùm 2 trang''' này: * [[Bản mẫu:Thông báo sửa đổi]] * [[Bản mẫu:=nn]] Do anh Mxn khóa theo tầng khiến mình không sửa được bản mẫu tài liệu cùng hàng loạt bản mẫu khác. Mong bạn làm giúp, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 11:32, ngày 24 tháng 10 năm 2021 (UTC) : Xin nhờ bạn tắt khóa theo tầng dùm [[Mô đun:Noarticletext]] luôn nhe, cảm ơn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:04, ngày 24 tháng 10 năm 2021 (UTC) == [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t?usp=sharing Font chữ] == Chào bạn. Bạn đã thử tải font chưa? Bạn nhấn vào đó để lấy bản mới nhất nhé. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 02:32, ngày 25 tháng 10 năm 2021 (UTC) == Nhờ xóa trang == Nhờ bạn xóa dùm * [[Bản mẫu:Hộp thông báo thể loại/cmbox.css]] * [[Bản mẫu:Hộp thông báo/ambox.css]] * [[Bản mẫu:imbox/imbox.css]] do mấy trang đó tạo css cho thông báo nhưng mình đã chuyển hết về một trang rồi nên mấy cái này không cần nữa. Cảm ơn bạn.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 09:37, ngày 31 tháng 10 năm 2021 (UTC) == Nhờ giúp == Nhờ bạn giúp cập nhật [[Bản mẫu:Trang Chính 2/Dự án khác]], bằng mã trong [[Thành viên:Thienhau2003/Test]], do cần thay đổi logo Wikipedia thành hình quả cầu đúng như Trang Chính cũ, cảm ơn nhé.--[[Thành viên:Thienhau2003|Thienhau2003]] ([[Thảo luận Thành viên:Thienhau2003|thảo luận]]) 13:42, ngày 5 tháng 11 năm 2021 (UTC) == Các mục từ tiếng Tangut == Chào bạn. Theo dữ liệu về khả năng hiển thị hệ chữ Tangut, hiện tại '''chưa có thiết bị nào hỗ trợ sẵn các ký tự này'''. Do đó, chúng cần có {{LKBM|cảnh báo Unicode}} (xem mẫu: [[𗸨]]). Ngoài ra, ba mục từ của bạn chưa có ảnh tham khảo (đã thêm {{LKBM|yêu cầu tập tin Unicode}}). Nếu bạn gặp khó khăn trong bất kỳ vấn đề gì, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 09:11, ngày 19 tháng 11 năm 2021 (UTC) :Bạn có thể xem [[Trợ giúp:Unicode/Ảnh]] để biết cách thêm ảnh tham khảo vào các mục từ Unicode. Nếu bạn không tìm được ảnh, hãy thông báo tôi; tôi sẽ giúp bạn. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:00, ngày 19 tháng 11 năm 2021 (UTC) ::Nhờ bạn giúp vậy tôi không tìm thấy được ảnh--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 01:45, ngày 20 tháng 11 năm 2021 (UTC) :::OK, chiều nay tôi rảnh, tôi sẽ giúp bạn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:16, ngày 20 tháng 11 năm 2021 (UTC) ::::'''<font color=#80ff00>✔ – Xong.</font>''' Lần sau, bạn có thê kiếm ảnh ở [http://en.glyphwiki.org/wiki/GlyphWiki:MainPage GlyphWiki]. Nhập các cú pháp như “u1b050” hay “u2c5be” là đến nơi có ảnh. Nhớ là ảnh .svg ở bên trái; muốn lưu ảnh thì nhấn chuột phải rồi lưu lại ảnh, sau đó đăng lên Wikimedia Commons dưới giấy phép như trong mẫu [[:commons:File:U+17000.svg|này]]. Nếu bạn gặp bất kỳ khó khăn nào, bạn có thể phản hồi; tôi sẽ hỗ trợ bạn mọi thắc mắc. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 11:05, ngày 20 tháng 11 năm 2021 (UTC) == Không gian tên mới == Chào bạn. Vấn đề không gian tên “Phụ lục” là một trong những vấn đề tôi đang quan tâm nhất hiện nay trên Wiktionary. Hiện tại thì để tránh lỗi ở các trang có nội dung giống hệt Wiktionary, các trang có tên “Phụ lục:…” đã được tạm thời chuyển sang “Wiktionary:Phụ lục…”. Nếu như Wiktionary chúng ta không có không gian tên này, việc chúng ta bị tụt hậu sẽ là điều tất yếu có thể xảy ra. Chính vì thế, tôi đang sắp sửa đề xuất không gian tên mới, bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:34, ngày 22 tháng 11 năm 2021 (UTC) : ✅ --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:19, ngày 23 tháng 11 năm 2021 (UTC) ::Cảm ơn ý kiến của bạn. Do ý kiến của bạn chỉ là một phần nhỏ nên tôi chưa thực hiện ngay; có thể tôi sẽ mở biểu quyết về vấn đề này. Thân mến. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 06:31, ngày 23 tháng 11 năm 2021 (UTC) <hr> Mời bạn cho ý kiến tại [[Wiktionary:Thảo luận#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 13:30, ngày 28 tháng 11 năm 2021 (UTC) == Mời xem == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Kateru Zakuro]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Kateru_Zakuro|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}--[[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]]) 15:56, ngày 28 tháng 11 năm 2021 (UTC) == [[:Thể loại:Mục từ tiếng Yiddish]] == Nhờ bạn di chuyển [[:Thể loại:Mục từ tiếng Yiddish]] đến [[:Thể loại:Mục từ tiếng Do Thái]]. Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 10:17, ngày 29 tháng 11 năm 2021 (UTC) : Nó là 2 ngôn ngữ khác nhau mà {{w|Tiếng Yiddish}}, {{w|Tiếng Do Thái}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 10:19, ngày 29 tháng 11 năm 2021 (UTC) == [[Bản mẫu:Edittools]] == Tôi vừa mới thêm [[Bản mẫu:Edittools]] vào [[MediaWiki:Edittools]] để khi sửa đổi, mọi người có thể thêm vào nhanh bản mẫu đề mục vào mục từ mà không cần phải tra hay nhớ bản mẫu có tên gì. Nếu bạn có muốn thêm cái gì vào thì vào [[Bản mẫu:Edittools]] để thêm nhé.--[[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]]) 15:43, ngày 9 tháng 12 năm 2021 (UTC) == Hỏi == Sao gần đây có nhiều IP lạ vào để phá hoại bằng cách tạo mục từ xúc phạm và tấn công thế? Có cách nào hạn chế vấn đề này không?--[[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]]) 01:37, ngày 11 tháng 12 năm 2021 (UTC) == Thay logo Tết cho Wiktionary == Chào bạn. Năm 2012 là lần gần nhất Wiktionary thay logo Tết cho dự án. Từ đó đến nay, Wiktionary chưa thay logo Tết thêm lần nào cả. Vì thế, tôi có ý định đề xuất một cuộc thi làm logo Tết cho Wiktionary tiếng Việt, với thành phần tham gia là các thành viên Wikipedia có kinh nghiệm trong thiết kế logo các dự án mở. Trong ngày hôm nay, tôi sẽ thực hiện mở cuộc thi đó. Bạn có đồng ý không? Xin cảm ơn. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 01:44, ngày 20 tháng 12 năm 2021 (UTC) : 👌 --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 02:56, ngày 20 tháng 12 năm 2021 (UTC) == Font chữ == Chào bạn, cuối cùng tôi cũng làm xong font cho Unicode 14.0 rồi… Phiền bạn bấm vào [https://drive.google.com/drive/folders/1gsi-KL2F6p50G8foeLJpkrrigOCdpV5t đây] để tải bản mới nhất. Cảm ơn bạn đã sử dụng font chữ. [[Thành viên:Ccv2020|Ccv2020]] ([[Thảo luận Thành viên:Ccv2020|thảo luận]]) 14:11, ngày 4 tháng 1 năm 2022 (UTC) :Có vấn đề ở font thứ nhất, xin lỗi :( – [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 01:46, ngày 6 tháng 1 năm 2022 (UTC) == How we will see unregistered users == <div lang="en" dir="ltr" class="mw-content-ltr"> <section begin=content/> Hi! You get this message because you are an admin on a Wikimedia wiki. When someone edits a Wikimedia wiki without being logged in today, we show their IP address. As you may already know, we will not be able to do this in the future. This is a decision by the Wikimedia Foundation Legal department, because norms and regulations for privacy online have changed. Instead of the IP we will show a masked identity. You as an admin '''will still be able to access the IP'''. There will also be a new user right for those who need to see the full IPs of unregistered users to fight vandalism, harassment and spam without being admins. Patrollers will also see part of the IP even without this user right. We are also working on [[m:IP Editing: Privacy Enhancement and Abuse Mitigation/Improving tools|better tools]] to help. If you have not seen it before, you can [[m:IP Editing: Privacy Enhancement and Abuse Mitigation|read more on Meta]]. If you want to make sure you don’t miss technical changes on the Wikimedia wikis, you can [[m:Global message delivery/Targets/Tech ambassadors|subscribe]] to [[m:Tech/News|the weekly technical newsletter]]. We have [[m:IP Editing: Privacy Enhancement and Abuse Mitigation#IP Masking Implementation Approaches (FAQ)|two suggested ways]] this identity could work. '''We would appreciate your feedback''' on which way you think would work best for you and your wiki, now and in the future. You can [[m:Talk:IP Editing: Privacy Enhancement and Abuse Mitigation|let us know on the talk page]]. You can write in your language. The suggestions were posted in October and we will decide after 17 January. Thank you. /[[m:User:Johan (WMF)|Johan (WMF)]]<section end=content/> </div> 18:20, ngày 4 tháng 1 năm 2022 (UTC) <!-- Tin nhắn của Thành viên:Johan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Johan_(WMF)/Target_lists/Admins2022(8)&oldid=22532697 --> == New account == Xin chào. I’m Fête, but this is my new account. Seeing that I never did vandalism at the Vietnamese Wiktionary, so can I restart to contribute here? [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 13:58, ngày 18 tháng 1 năm 2022 (UTC) :{{u|VincentPH}}: No problem. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:45, ngày 18 tháng 1 năm 2022 (UTC) ::Cám ơn. Nếu tôi tiếp tục sửa đổi, có lẽ trước sau có người cấm mãi mãi, vì thế tôi quyết đình rời Wiktionary, goodbye. [[Thành viên:VincentPH|VincentPH]] ([[Thảo luận Thành viên:VincentPH|thảo luận]]) 15:56, ngày 18 tháng 1 năm 2022 (UTC) == Thư mời tham gia biểu quyết == {| class="table" align="center" style="width: 80%; background-color: #FAFAD2; border: 1px solid #fceb92; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[File:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | Mời bạn cho nhận xét ở [[Thảo luận Wiktionary:Bảo quản viên|Biểu quyết bảo quản viên]] của '''[[Thành viên:Ccv2020]]''' tại '''[[Thảo_luận_Wiktionary:Bảo_quản_viên#Ccv2020|đây]]'''. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái!</small> |}[[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 00:53, ngày 23 tháng 2 năm 2022 (UTC) == Cảm ơn bạn == Đã giúp mình hoàn thành trang NSFW trong Wiktionary! [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 09:39, ngày 1 tháng 4 năm 2022 (UTC) == Template "nod" == Somebody made [[ᨾᩯ᩠ᩅ]]. What language for the code "nod" is it in Vietnamese? --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 13:18, ngày 4 tháng 4 năm 2022 (UTC) == Trang thành viên == Chào bạn. Chắc bạn thấy trang thành viên của tôi "chất" quá nên "chôm" luôn của tôi à? (😊) Để có trải nghiệm tốt nhất thì bạn tải font Roboto về máy tính để hiển thị đúng nhé, bạn thích kiểu thiết kế font [https://www.dafont.com/roboto.font cũ] hay [https://fonts.google.com/specimen/Roboto mới] tuỳ bạn (tôi thích dùng kiểu cũ). Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:10, ngày 18 tháng 5 năm 2022 (UTC) == Việc bên wikibooks == Mời bạn sang phòng thảo luận bên wikibooks cho ý kiến nhé. – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 08:08, ngày 17 tháng 7 năm 2022 (UTC) == Mã ngôn ngữ == Chào bạn, những ngôn ngữ không có mã ISO thì cho vào Wiktionary được không nhỉ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 10:23, ngày 27 tháng 7 năm 2022 (UTC) :{{ping|Thành viên:WhoAlone}} Cái này thì tùy trường hợp, nhưng nói chung là được--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:18, ngày 28 tháng 7 năm 2022 (UTC) ::Ví dụ, nếu tôi muốn đưa [https://en.wikipedia.org/wiki/Soyot-Tsaatan_language tiếng Soyot] vào Wiktionary thì có thể đặt tên bản mẫu đề mục kiểu như {{Liên kết bản mẫu|-Soyot-}} được không, thay vì mã ngôn ngữ? – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 04:18, ngày 28 tháng 7 năm 2022 (UTC) :::{{ping|WhoAlone}} Tôi nghĩ nên dùng bản mẫu đề mục theo cấu trúc: mã ISO của ngữ hệ bao hàm ngôn ngữ đó + chữ viết tắt tên ngôn ngữ. Các ngôn ngữ như [[:Thể loại:Mục từ tiếng Mông Cổ Khamnigan|Mông Cổ Khamnigan]], [[:Thể loại:Mục từ tiếng Kyakala|Kyakala]],... đều không có mã ISO và chúng đều dùng bản mẫu đề mục theo cấu trúc bên trên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:23, ngày 28 tháng 7 năm 2022 (UTC) == Về trang [[Thành viên:Tongdothamlang]] == Tôi thấy đầu tiên thì thành viên tạo trang với nội dung quảng cáo rõ ràng trong [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212 lịch sử sửa đổi] của trang, song không muốn trang bị xóa thành viên đã nhanh tay giấu kín mà xóa luôn nội dung quảng cáo nên tôi mới yêu cầu xóa trang đó. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:46, ngày 19 tháng 8 năm 2022 (UTC) : Và rất có thể thành viên đã lạm dụng lịch sử sửa đổi và dùng nó với mục đích quảng bá ([https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:Tongdothamlang&oldid=2066212]) [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:49, ngày 19 tháng 8 năm 2022 (UTC) :: nên tôi nghĩ xóa rồi tạo lại với nội dung "Chẩn" hoặc ẩn một phiên bản cũ sẽ là một ý kiến hay để giải quyết vụ quảng cáo này. [[Thành viên:KhanhCN Defender1st Minh|KhanhCN Defender1st Minh]] ([[Thảo luận Thành viên:KhanhCN Defender1st Minh|thảo luận]]) 06:51, ngày 19 tháng 8 năm 2022 (UTC) :::✔ Đã ẩn phiên bản đầu tiên--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:02, ngày 19 tháng 8 năm 2022 (UTC) == IPA == Bạn có thể sửa những mục từ IPA tiếng Thổ thành chữ Latinh được không? Tôi không thạo việc này lắm. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 14:23, ngày 20 tháng 8 năm 2022 (UTC) :{{ping|WhoAlone}} Xin lỗi bạn, việc này tôi cũng không rành cho lắm--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:29, ngày 22 tháng 8 năm 2022 (UTC) == Font chữ == 🤣… Trang thành viên của bạn làm tôi muốn đảo mắt 180 độ… Tiện thể vụ font chữ Unicode 15.0 chắc là năm nay mình không làm được rồi, mong bạn thông cảm. Nhưng trên trang thành viên của mình có để link ở mục “Lưu trữ” mà một vài trong số đó có Unicode 15.0, tuy nhiên chúng chỉ dùng được trên một số phần mềm mà thôi. Nếu cần bạn có thể tải font từ các link đó để dùng khi cần. Cảm ơn bạn. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 15:55, ngày 16 tháng 11 năm 2022 (UTC) :{{ping|Ccv2020}} 😅... Cái này bạn phải trồng cây chuối thì may ra mới đọc được nhé... Tiện thể vụ font chữ Unicode 15.0, thì không sao đâu bạn à. Tôi cũng không quan tâm cho lắm. Nếu cần tôi sẽ tải font từ các link đó để dùng khi cần. Cảm ơn bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:34, ngày 17 tháng 11 năm 2022 (UTC) == Bản mẫu:R:Tratu == Trước đây bản mẫu đều dùng 2 tham số như |vn|vn để định cho cái đường link dẫn đến đúng mục từ, nhưng mà đổi sang bản mới như thế nó rất tai hại ở chỗ là tất cả đều chuyển sai đường liên kết như [[cánh tay]] đang dẫn sai đường liên kết. Trừ khi có bot sửa thì được còn bây giờ nên để lại bản cũ. – [[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]]) 10:32, ngày 8 tháng 12 năm 2022 (UTC) :P/S: Bác nên nhìn kỹ lại cái [https://en.wiktionary.org/w/index.php?title=Template:R:Tra_T%E1%BB%AB&action=history source gốc], nó là Mxn tạo ra cách đây 2 tháng. Tại vì bên đó không có cho nên anh ấy mới tạo.--[[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]]) 10:34, ngày 8 tháng 12 năm 2022 (UTC) :{{ping|Kateru Zakuro}} Không cần phải đổi lại đâu bạn ạ. Tôi sẽ cố gắng sửa lại đường dẫn trong thời gian sớm nhất--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:41, ngày 8 tháng 12 năm 2022 (UTC) ::Em nghĩ không cần phải sửa lại đâu, vì có đến [https://linkcount.toolforge.org/index.php?project=vi.wiktionary.org&page=B%E1%BA%A3n_m%E1%BA%ABu:R:Tratu 1,420] trang lận, ai đâu mà sửa cho hết. Mà em thấy anh rất hay nhập bản mẫu tràn lan hoặc cập nhật vào Wiki thì không ổn đâu, ở đây có nhiều bản mẫu rất lỗi thời, chưa kể có sự khác biệt ở cách dùng (phải làm sao mà có thể dùng được mã 3 ngôn ngữ khi hầu hết Wiki đều dùng 2 ngôn ngữ) nên không thể nói muốn cập nhật là cập nhật– [[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]]) 13:17, ngày 8 tháng 12 năm 2022 (UTC) == Đề xuất == Cảm ơn BQV đã lùi lại sửa đổi nhầm lẫn của tôi. Tiện đây có điều này muốn đề xuất như sau: Theo tôi thấy thì hiện tại có một số trang quy định và trang thông tin đang đổi hướng đến các trang dự án cùng tên ở Wikipedia tiếng Việt (ví dụ: [[Wiktionary:Quyền truy cập của thành viên]], đặc biệt không thể làm đổi hướng như vậy vì số cờ ở Wikipedia tiếng Việt khác so với số cờ ở bên này). Do đó, tôi có đề xuất là chúng ta nên "sao chép quy định" từ bên Wikipedia tiếng Việt sang bên này, có sửa chữa lại sao cho phù hợp, vì dù sao các dự án đều hoạt động độc lập với nhau. Nếu BQV thấy ổn tôi sẽ thực hiện. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:34, ngày 15 tháng 12 năm 2022 (UTC) Mời {{ping|Ccv2020}} cùng cho ý kiến. [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 11:36, ngày 15 tháng 12 năm 2022 (UTC) {{u|Tryvix1509}}: Về việc sao chép quy định thì đã có {{u|Kateru Zakuro}} để lo rồi. Cho nên bạn không cần phải sợ việc Wiktionary bị thiếu quy định đâu. Nếu bạn muốn thì có thể thực hiện chung tay xây dựng quy định cho dự án này, vì Wiktionary luôn luôn tạo điều kiện cho bạn và mọi người đóng góp. Thân mến. [[Thành viên:Ccv2020|<span style=color:#80ff00>&#x2395;</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>&#x2370;</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>&#x303f;</span>]] 14:38, ngày 15 tháng 12 năm 2022 (UTC) == აბანო == At the entry [[აბანო]], what would the language with ISO code "oge" be in Vietnamese called? -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:12, ngày 20 tháng 2 năm 2023 (UTC) : {{ping|Apisite}} The language with the ISO code "oge" in Vietnamese is called "tiếng Gruzia cổ". – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:28, ngày 20 tháng 2 năm 2023 (UTC) :: {{ping|Nguyên Hưng Trần}} I can't add the language name to [[Mô đun:Thống kê Wiktionary]]. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 08:38, ngày 20 tháng 2 năm 2023 (UTC) :::{{ping|Apisite}} Don't worry, I will create the language's header template, then ask an administrator to add it. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:42, ngày 20 tháng 2 năm 2023 (UTC) ✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:25, ngày 20 tháng 2 năm 2023 (UTC) {{ping|Nguyên Hưng Trần}} The etymology template at the entry [[აბანო]] doesn't appear to be displaying the language name "tiếng Gruzia cổ" properly. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:26, ngày 21 tháng 2 năm 2023 (UTC) :✔--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 04:32, ngày 21 tháng 2 năm 2023 (UTC) == ''Cross-wiki patrol'' == Bạn có thể xem xét việc cài [[:m:User:Xiplus/TwinkleGlobal|TwinkleGlobal]] vào [[:m:Special:Mypage/global.js|global.js]] của bạn, rồi dùng chức năng CSD, tick vào ô Report to GS/R để yêu cầu xóa nhanh một trang lên [[:m:GSR|GSR]] và một [[:m:Global sysop|bảo quản viên toàn cục]] có thể xem xét giải quyết. Lý do thường là các wiki đó có thể không có BQV/có BQV nhưng ít và không có ''dấu vết'' gần đây. – [[Thành viên:Tryvix1509|Tryvix]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 14:18, ngày 24 tháng 3 năm 2023 (UTC) == bung == See [https://vi.wiktionary.org/wiki/Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:Nguy%C3%AAn_H%C6%B0ng_Tr%E1%BA%A7n#bung here] if you want. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 09:54, ngày 8 tháng 4 năm 2023 (UTC) == Tiếng Lombard == Regarding the Lombard language, which is of the Gallo-Italic family, [[:lmo:Jut:Grafie acetade|this webpage]] is one of the things to consider. Best regards – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 06:59, ngày 4 tháng 5 năm 2023 (UTC) == Wikiquote == What about a template for Wikiquote in, for example, the entry [[diplomacy]]? – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 20:57, ngày 20 tháng 5 năm 2023 (UTC) == Hỏi == Chào bạn, có phải các quyền trên Wikipedia tiếng Việt của tôi không dùng được trên Wiktionary đúng không?. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:34, ngày 24 tháng 6 năm 2023 (UTC) :Đúng vậy bạn--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:35, ngày 24 tháng 6 năm 2023 (UTC) ::Vậy tôi có thể hỏi là xin quyền lùi sửa ở đâu không, vì tôi là tuần tra viên và chủ yếu tuần tra bên wiki tiếng Việt nhưng hôm nay, có một tài khoản tôi đang tuần tra phá bên wiki Việt và sang hẳn bên đây phá luôn. Nếu có quyền lùi sửa thì sẽ tiện hơn. [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:38, ngày 24 tháng 6 năm 2023 (UTC) :::Bạn có thể tham khảo [[Wiktionary:Lùi sửa]]. Theo như trang đó, thành viên cần có 250 sửa đổi và ba tháng đóng góp để được cấp quyền dùng công cụ lùi sửa hàng loạt--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:48, ngày 24 tháng 6 năm 2023 (UTC) ::::Được chứ, tiện thì wiki tiếng Việt hiện giờ tuần tra cũng tương đối không quá áp lực, để tôi sang tuần tra bên đây luôn. haha. Cảm ơn bạn. Buổi trưa vui vẻ!!. – [[Thành viên:DANG GIAO|DANG GIAO]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 07:51, ngày 24 tháng 6 năm 2023 (UTC) == Về các cách ngữ pháp == Tại sao bạn lại viết tắt các cách trong bản mẫu bảng biến cách/biến tố vậy? – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 03:41, ngày 23 tháng 7 năm 2023 (UTC) :{{ping|Nguyên Hưng Trần}} Tại vì làm như vậy chúng ta sẽ không cần dịch tên các cách, tránh việc dịch sai hay tệ hơn là bịa thuật ngữ--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:14, ngày 23 tháng 7 năm 2023 (UTC) == Tạo lại trang bị xóa == Chào TheHighFighter2, tôi đang muốn tạo một mục từ mới tên "[[chiến công]]" trước đó là trang đã bị xóa do một IP tạo nhưng người xóa không để lại lý do. Tôi có thể tạo lại không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:20, ngày 2 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Trang đó bị xóa do có chứa từ xúc phạm. Bạn hoàn toàn có thể tạo lại nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:18, ngày 6 tháng 8 năm 2023 (UTC) ::Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:06, ngày 8 tháng 8 năm 2023 (UTC) :::Mà tôi có thấy bạn tạo trang mô đun, nó có tác dụng gì trên Wiktionary vậy? Bạn dịch từ bên en sao?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:08, ngày 8 tháng 8 năm 2023 (UTC) == Thư mời == Mời bạn cho đôi lời nhận xét tại [[Thảo luận Wiktionary:Bảo quản viên#P. %C4%90%C4%82NG|Biểu quyết chọn bảo quản viên]]. Xin hết lòng cảm ơn rất nhiều. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:46, ngày 24 tháng 8 năm 2023 (UTC) == Thư mời tham gia biểu quyết == <div style="padding: 0.5em; background: #f8f8ff; margin-top: 1em; font-size: 1em"> {| class="table" style="width: 80%; background-color: #ACE1AF; border: 1px solid #fceb92; margin: auto; margin-bottom: 10px" | style="vertical-align: middle; padding: 10px;" | [[Tập tin:Logo vote.svg|80px|link=]] | style="vertical-align: middle; padding: 15px 10px 10px 0;" | '''Mời bạn cho ý kiến về việc cấp quyền Bảo quản viên cho thành viên [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] tại trang [[Thảo luận Wiktionary:Bảo quản viên#DefenderTienMinh07|Thảo luận Wiktionary:Bảo quản viên]]. Xin cảm ơn. <small>Hãy cùng tích cực tham gia các biểu quyết và thảo luận về chúng. Mỗi hành động của bạn sẽ góp phần không nhỏ để xây dựng các mục từ trên Wiktionary - tài sản chung của cộng đồng chúng ta, giúp wiki ta ngày càng phát triển vững mạnh! Thân ái! |} </div> [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 10:25, ngày 24 tháng 8 năm 2023 (UTC) == Nhờ giúp == Tôi đang gặp chút khó khăn khi đang sử dụng bản mẫu <nowiki>{{quote-book}}</nowiki> trong mục từ [[ngàn trùng]]. Lỗi ở đây là ở đoạn thứ 2 của phần tham khảo (đoạn ''Nguồn ân trăm trượng dễ khơi vơi...'') tôi không thể xuống dòng như [[Đặc biệt:So sánh di động/2122630|bản sửa đổi cũ này]] của FF Boyahh. Mong anh có thể sửa giúp. – [[User:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[User talk:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:16, ngày 2 tháng 9 năm 2023 (UTC) == Sửa trang đổi hướng js == Phiền anh có thể tẩy trống trang [[Thành viên:DefenderTienMinh07/minerva.js]] và [[Thành viên:DefenderTienMinh07/common.js]] do tôi không thể sửa được. Nhân tiện anh có thể xóa luôn trang [[Thành viên:Nguyên Hưng Trần/style.css]] vì là một trang đổi hướng đến trang mà thành viên đã từng yêu cầu xóa trước đây. ({{ping|Nguyên Hưng Trần}} vì không biết bạn có muốn xóa trang con style.css của trang thành viên mình hay không, tôi đã đề cập đến bạn để cho ý kiến.) – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 07:31, ngày 4 tháng 9 năm 2023 (UTC) :{{ping|DefenderTienMinh07}} Tôi cũng muốn xóa cái trang con như bạn đã đề cập ở trên, do cái trang đó không còn cần thiết nữa nên nhờ bạn THF2 xóa luôn đi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 09:00, ngày 4 tháng 9 năm 2023 (UTC) == Dọn trang clk == Nhờ BQV TheHighFighter xem cùng tôi đóng góp hàng loạt của dãy IP [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:%C4%90%C3%B3ng_g%C3%B3p/85.195.123.24 85.195.123.24], rất nhiều bài tạo clk và thiếu ngữ cảnh = thuộc tiêu chí xóa nhanh. Đáng lẽ ra tôi có ý định kêu mọi người tham gia cải thiện các bài này để chúng được giữ, nhưng clk quá lâu và số lượng rất nhiều. Xóa là cần thiết, ai muốn tạo lại thì tạo. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:07, ngày 9 tháng 9 năm 2023 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi nghĩ những mục từ trên được IP [[Thành viên:85.195.123.24|85.195.123.24]] tạo cách đây hơn chục năm rồi (có mục từ được tạo trước cả năm tôi sinh), tôi nghĩ đối với mục từ được tạo cách đây nhiều năm thế này thay vì xóa đi sao lại không đặt biển chất lượng kém vô nhỉ do thời xưa có thể BTV vẫn chưa biết cách tạo đúng quy trình một mục từ. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 18:33, ngày 9 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi đã nói trên, các mục từ này thuộc diện tiêu chí xóa nhanh nên không thể đặt biển clk. Bản mẫu chất lượng kém là một bản mẫu mà công dụng dùng để bảo trì, nghĩa là khi một bài viết chứa thông tin đầy đủ nhưng biên tập không bách khoa và một số tiêu chí khác dùng để xác định một bài clk (bạn có thể qua Wikipedia Vi đọc cái này) thì chúng ta mới đặt bản mẫu này, mục đích của nó là hy vọng trong 7 ngày tính từ khi bản mẫu được đặt vào sẽ có thành viên nào đó cải thiện, và trong 7 ngày này BQV không có quyền được xóa. Lý do các thành viên thời đó không biết cách tạo mục từ có thể hợp lí, thời trước có thể mảng tuần tra đã không được chú trọng và hiện tại đâu đó trên Wiktionary đã lọt lưới rất nhiều các bài clk tồn tại. Nếu bạn muốn cải thiện những bài này thì cứ bắt tay vào sửa đổi không cần đặt biển clk vì nó thuộc diện tiêu chí xóa nhanh, một số bài IP này tạo thiếu ngữ cảnh, không được dịch, tiêu đề sai. Số lượng bài clk có thể tồn đọng lên đến 100 bài thì làm sao cải thiện nổi và được tạo hơn 10 năm trước thì xóa là cần thiết. Ưu tiên chất lượng hơn số lượng và đương nhiên không phải lúc nào xóa, bài nào có khả năng cải thiện được thì chúng ta sẽ ưu tiên cải thiện. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 03:36, ngày 10 tháng 9 năm 2023 (UTC) == Nhiều mã quá == Em dạo này đi học nên ít lên đây như để ý cái [[MediaWiki:Common.css]] hiện tại có đến 2700 dòng, và em cho là nó quá dài và nặng. Một số cái thật ra đã có trong Ganget rồi nhưng bác lại thêm vào gây nặng mã quá như mấy cái định kiểu cho .Arab... thật ra nằm trong [[MediaWiki:Gadget-script fonts.css]] rồi, để em nhập rồi sửa lại cho bác – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 10:06, ngày 13 tháng 9 năm 2023 (UTC) == Sửa Trang Chính == Ở chỗ "Wiktionary là dự án từ điển mở, '''đa ngôn ngữ'''" có đường dẫn đến trang Wiktionary:Ngôn ngữ nhưng trang này đã bị anh Kateru [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Nh%E1%BA%ADt_tr%C3%ACnh&logid=144969 đổi thành Phụ lục:Ngôn ngữ (có tắt đổi hướng)]. Vậy phiền anh có thể sửa đường dẫn chỗ "đa ngôn ngữ" từ [[Wiktionary:Ngôn ngữ]] thành [[Phụ lục:Ngôn ngữ]] hoặc tạo trang Wiktionary:Ngôn ngữ. Xin cảm ơn. – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 13:50, ngày 14 tháng 9 năm 2023 (UTC) == Nhờ khóa trang thành viên == Chào bạn, nhờ bạn khóa trang thành viên của tôi để không bị rối phá hoại trong tương lai. – [[Thành viên:WhoAlone|<span style="color:black ;font:16px Calibri;">'''''Who'''''</span>]]<sup>[[Thảo luận Thành viên:WhoAlone|<span style="color:gray ;font:12px Arial;">Alone</span>]]</sup> 05:49, ngày 25 tháng 9 năm 2023 (UTC) == Thư mời == Chào bạn! Mời bạn cho ý kiến tại [[Thảo_luận_Wiktionary:Bảo_quản_viên#Nguyên_Hưng_Trần|Biểu quyết chọn bảo quản viên]]. Thanks bạn! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:20, ngày 30 tháng 12 năm 2023 (UTC) == [[Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js]], [[Mô đun:accel]] == Bạn có cách nào để sửa lỗi hai kịch bản cho tiện ích tạo hình thái mục từ mà tôi chép bên en không? Khi tôi định tạo mục từ hình thái tiếng Latinh ([[dictionarii]]) thì gặp lỗi không thể tìm thấy đề mục ngôn ngữ. (bạn cài đặt tiện ích này vào trong trang common.js rồi bấm vô mục từ hình thái trong bảng biến cách hoặc chia động từ để thấy lỗi của nó: <code>mw.loader.load('/w/index.php?title=Thành viên:Nguyên Hưng Trần/Gadget-AcceleratedFormCreation.js&action=raw&ctype=text/javascript');</code>) – [[Thành viên:Nguyên Hưng Trần|<span style="color:black; font-family:Noto Sans">'''Trần Nguyên Hưng'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup><span style="color:#28efff">(◇)</span></sup>]] 08:56, ngày 31 tháng 12 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] mà chức năng và công dụng của công cụ này j v bn? – [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;"> '''☀DefenderTienMinh⛤☯☽'''</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|<span style="font-family:Simhei;color:#808080;">talk</span>]]) 06:18, ngày 9 tháng 2 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} (chép bên en) "This [[:en:Wiktionary:Gadgets|gadget]] allows you to automatically generate entries for inflected forms of words." (tạm dịch: [[WT:Tiện ích|Tiện ích]] này cho phép tự động tạo mục từ cho dạng biến tố của các từ.) – <span style="background:#011635;border-radius:6.342px;box-shadow:1px 1px 5px #173562;padding:5px;width:100%;"><span lang="vi" xml:lang="vi" class="Hani" style="font-size: 150%; line-height: 1em;">[[Thành viên:Nguyên Hưng Trần|<span style="color:beige;">𠊛𥋴</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|𫇳𣋀]]</span></span> 11:14, ngày 9 tháng 2 năm 2024 (UTC) == Năm mới vui vẻ == Chúc năm mới vui vẻ, bảo quản viên TheHighFighter2. Lời chúc này thay cho lời cảm ơn, từ sự nhiệt thành, tận tâm và chăm chỉ của bảo quản viên trong suốt thời gian qua bằng cách này hay cách khác dành cho dự án. Xin thay mặt cộng đồng, thân kính chúc một ngày lễ vui vẻ, [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:10, ngày 9 tháng 2 năm 2024 (UTC) == Công cụ chống spam == Mời bạn vào trang [[Đặc_biệt:Trang_đặc_biệt|này]], chỗ "Công cụ chống spam", bạn nên dùng công cụ này, BQV có quyền sửa trang, như tôi đã giới thiệu tính năng và tiện lợi của nó trên trang tv của mình. Buổi tối tốt lành. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:36, ngày 15 tháng 2 năm 2024 (UTC) == Trang chính == Tôi thấy trang chính trong bảng "Ngôn ngữ khác" bị lỗi mô đun. Nhờ bạn sửa lại giúp. Cảm ơn bạn. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:55, ngày 3 tháng 5 năm 2024 (UTC) :{{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:05, ngày 3 tháng 5 năm 2024 (UTC) == Chào bạn == Chào bạn nhé, mình mới tới và có chút thắc mắc muốn hỏi, bây giờ mình muốn cập nhật mô đun/bản mẫu liên quan đến từ mượn thì mình nên sửa/cập nhật bản mẫu hay mô đun nào bạn nhỉ? [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:48, ngày 23 tháng 7 năm 2024 (UTC) :{{ping|Pminh141}} Chào bạn! Tôi đã giúp bạn sửa/cập nhật Mô đun:etymology cùng với các trang con của nó--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:00, ngày 25 tháng 7 năm 2024 (UTC) ::Cảm ơn bạn, mình chủ yếu hoạt động bên wikipedia nên sang đây có nhiều cái chưa biết. Mà mình đang muốn hỏi bạn xem là không biết viwiktionary có thể update module tài liệu (bản mẫu/mô đun) để nó tự động tạo tài liệu không bạn nhỉ. Mình thấy có nhiều phiên bản ngôn ngữ áp dụng rồi ý? – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 00:46, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Pminh141}} Do dự án còn thiếu nhân lực nên là nhiều bản mẫu/mô đun không được cập nhật thường xuyên. Nên là nếu muốn, bạn có thể giúp cập nhật mô đun này--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:41, ngày 26 tháng 7 năm 2024 (UTC) == [[Bản mẫu:unadapted borrowing]] == Chào bạn, mình thấy bản mẫu này đang bị lỗi, phiền bạn sửa lại giúp. Cảm ơn bạn nhiều. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 19:31, ngày 9 tháng 8 năm 2024 (UTC) :{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:13, ngày 10 tháng 8 năm 2024 (UTC) :: Cảm ơn bạn, mà hôm nay mình cố sửa các bản mẫu/mô đun liên quan đến bản mẫu {{Liên kết bản mẫu|transclude}} này mà vẫn chưa lần được ra nguyên nhân, nếu được bạn có thể giúp mình sửa lỗi này không. Mình nghĩ chắc là nó bị thiếu dữ liệu ở đâu đó nên cứ dùng đến là báo lỗi à. [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 21:42, ngày 10 tháng 8 năm 2024 (UTC) :::{{ping|Pminh141}} Để dùng {{LKBM|transclude}}, bạn phải dùng thêm {{LKBM|senseid}}. Ví dụ như bạn muốn dùng bản mẫu transclude ở mục [[ロシア]], bạn thêm bản mẫu senseid vào mục Nga như ở [https://vi.wiktionary.org/w/index.php?title=Nga&curid=249068&diff=2170249&oldid=2170248 đây]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:06, ngày 11 tháng 8 năm 2024 (UTC) ::::Cảm ơn bạn, quả nhiên là cần nhiều thời gian hơn để làm quen với mọi thứ ở đây. Chúc bạn 1 ngày tốt lành. – [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 16:14, ngày 11 tháng 8 năm 2024 (UTC) : Chào bạn nhé, hôm nay mình muốn hỏi bạn chút về mục từ này: [[北朝鮮]], phần phát âm của mục tiếng Trung thì mình có nhập từ tiếng Anh về nhưng mình lại chưa biết cách xử lý bản mẫu/mô đun được dùng ở mục đó. Nên là phiền bạn giúp mình chút. :p [[Thành viên:Pminh141|Pminh141]] ([[Thảo luận Thành viên:Pminh141|thảo luận]]) 07:37, ngày 16 tháng 8 năm 2024 (UTC) ::{{ping|Pminh141}} {{xong}}--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:27, ngày 16 tháng 8 năm 2024 (UTC) == Mục từ tiếng Galicia == At the entry [[xirafa]], I added an alternative spelling, that is in the writing system of {{w|en:reintegrationism|reintegrationism}}. How could the term "reintegrationism" be translated? Thanks for reading. -- – [[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 01:42, ngày 29 tháng 9 năm 2024 (UTC) :"Chủ nghĩa tái hòa nhập". – [[Thành viên:Nguyên Hưng Trần|<span style="color:#74a12e;font-family:Georgia, serif;">'''NHT'''</span>]] ([[Thảo luận Thành viên:Nguyên Hưng Trần|💬]]) 07:16, ngày 29 tháng 9 năm 2024 (UTC) :: {{ping|Nguyên Hưng Trần}} I would rather use the spelling "Chủ nghĩa tái hoà nhập" but thanks for helping. --[[Thành viên:Apisite|Apisite]] ([[Thảo luận Thành viên:Apisite|thảo luận]]) 02:57, ngày 2 tháng 10 năm 2024 (UTC) == [[Bản mẫu:term]] == Bản mẫu này được dùng cho phân loại một nhóm từ (ví dụ: mục từ [[chân trời sự cố]] là "vật lý học"). Tôi muốn dùng bản mẫu này nhận dạng các mục từ pháp luật được không? Bạn nghĩ sao? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:29, ngày 24 tháng 10 năm 2024 (UTC) :Cú pháp sẽ là {{term|pháp luật}}. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:31, ngày 24 tháng 10 năm 2024 (UTC) ::{{ping|P. ĐĂNG}} Theo tôi, bạn nên dùng {{LKBM|nhãn}}. Với cú pháp vd như là {{<code>nhãn|vi|pháp luật</code>}} nó sẽ tự động xếp trang vào Thể loại:Luật pháp/Tiếng Việt. ::{{LKBM|term}} đã lỗi thời, nó hiện gây ra các liên kết sai kiểu như [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/t%E1%BB%AB_M%E1%BB%B9,_ngh%C4%A9a_M%E1%BB%B9], [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Li%C3%AAn_k%E1%BA%BFt_%C4%91%E1%BA%BFn_%C4%91%C3%A2y/T%E1%BB%AB_c%C5%A9,_ngh%C4%A9a_c%C5%A9] – [[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:04, ngày 25 tháng 10 năm 2024 (UTC) :::Ok, thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:22, ngày 25 tháng 10 năm 2024 (UTC) == Mục từ các thứ tiếng == Các mục từ cùng một chủ đề (ví dụ: Luật pháp) thường trong mỗi ngôn ngữ đặc thù quốc gia nước đó thì tính đa dạng riêng. Tôi có ý định tạo thêm Thể loại:Luật pháp Việt Nam/Tiếng Việt vào các mục từ pháp lý Việt Nam. Thể loại này sẽ là "thể loại con" bên trong thể loại Luật pháp về tiếng Việt. Bạn thấy sao? Cách này sẽ phân chia nếu Wiktionary chủ đề luật có ở các thứ tiếng khác như Thể loại:Luật pháp Hoa Kỳ/Tiếng Việt. Vì tôi có ý định đóng góp chuyên sâu hơn mảng này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:01, ngày 26 tháng 10 năm 2024 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Ok, bạn cứ triển khai. Bạn có thể dùng Bản mẫu:nhãn với tham số "luật pháp Việt Nam" để xếp thể loại--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:28, ngày 27 tháng 10 năm 2024 (UTC) ::Thanks! [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:59, ngày 27 tháng 10 năm 2024 (UTC) == [[Mô đun:languages/data/3/c]] == Không rõ mô đun này được nhúng vào một trang bị khóa theo tầng chỗ nào nữa. Hiện tôi không thể sửa mô đun được. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">Ayane</b>]] <span style="color:Plum">aka.</span> [[:m:User talk:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#ADD8E6;letter-spacing:">eunn</b>]] 06:53, ngày 24 tháng 12 năm 2024 (UTC) :✔ [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:languages/data/3/c&curid=272284&diff=2197134&oldid=2196315 Đã sửa]--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:59, ngày 24 tháng 12 năm 2024 (UTC) == Mục từ == Không rõ công cụ trợ giúp tạo mục từ tự động Wiktionary đã lỗi thời? Tôi thấy có nhiều thành viên thay thế các sửa đổi như thế này [https://vi.wiktionary.org/w/index.php?title=c%C3%B4ng_d%C3%A2n&diff=prev&oldid=2204284][https://vi.wiktionary.org/w/index.php?title=nguy%C3%AAn_b%E1%BA%A3n&diff=prev&oldid=2204282]. Phần lớn các mục từ tại đây tuân theo cách sắp xếp cũ (do tạo từ trước), tôi cũng thường dùng công cụ hiện sẵn trợ giúp khi tạo mục từ mới nên trang vẫn theo cách trình bày này. Vậy lần sau phải tạo thủ công? [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:50, ngày 15 tháng 1 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Các sửa đổi mà bạn dẫn link ở trên sử dụng dấu = cho phần đề mục; thay các [[:Thể loại:Bản mẫu ngôn ngữ|bản mẫu ngôn ngữ]] bằng {{LKBM|langname}}, các [[:Thể loại:Bản mẫu đề mục loại từ|bản mẫu đề mục loại từ]], [[:Thể loại:Bản mẫu đề mục khác|bản mẫu đề mục khác]] bằng {{LKBM|ĐM}}. Việc thay thế này nhằm: :# Trước đây dự án có nút ấn sửa ở bên phải đề mục, nhưng sau đó bị ẩn đi vì nó liên kết đến sửa đổi bản mẫu thay vì sửa nội dung bên dưới. Cách giải quyết cho vấn đề này là dùng dấu = cho đề mục. :# Tận dụng sẵn dữ liệu từ [[Đặc_biệt:Tiền_tố/Mô_đun:languages/data/|Mô đun:languages]]. Tại sao phải tạo hàng trăm bản mẫu kiểu như {{LKBM|-vie-}}, {{LKBM|-eng-}},... trong khi chỉ cần dùng một bản mẫu? :Còn về trình tạo mục từ tự động, quả thật có phần lỗi thời. Nhưng vẫn có thể dùng nó điền nội dung sau đó thay thế. :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:54, ngày 15 tháng 1 năm 2025 (UTC) ::Bạn có định sửa giao diện các trình tạo mục từ tự động để bắt kịp tiến độ mới này? Tôi nghĩ, việc này sẽ hữu ích hơn khi cứ "điền lại" nội dung sau các lần tạo trang. Hơn thế, chúng ta còn phải giúp người mới sửa lỗi này khi họ tạo bài (vì hầu hết các tv dùng trình tạo mục từ tự động khi tạo bài). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:31, ngày 16 tháng 1 năm 2025 (UTC) == Chú thích == Tôi định tạo bản mẫu chú thích sách mới (lưu tại [[Thành viên:P. ĐĂNG/Nháp 3|đây]]), nhưng tham số pages của nó cố định, không rõ có cách nào tự thêm số trang theo ý muốn khi dùng bản mẫu này không? Trong mục từ [[permanent geodetic beacon]] (tôi thêm chú thích bằng cách sao chép mã nguồn). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:26, ngày 27 tháng 3 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] [https://vi.wiktionary.org/w/index.php?title=Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG/Nh%C3%A1p_3&curid=336667&diff=2224051&oldid=2224044] Bạn xem đã được hay chưa?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:04, ngày 27 tháng 3 năm 2025 (UTC) ::OK, đã được. Thanks. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:09, ngày 28 tháng 3 năm 2025 (UTC) == [[ngilo]] == <span style="color:#b01500;"><strong>Lỗi Lua trong Mô_đun:parameters tại dòng 667: Parameter 1 must be a valid language or etymology language code; the value "General Cebuano" is not valid. See WT:LOL and WT:LOL/E.</strong></span> Tôi vô tình lướt trúng trang này và thấy nó bị lỗi mô đun như trên (không chỉ riêng trang này mà còn nhiều trang khác cũng bị lỗi ở [[Mô đun:parameters]]), nhờ bạn xem sửa giúp. – [[Thành viên:Như Gây Mê|<span style="color:orange;"><strong>Halley</strong></span>]] [[Philippines|<span style="color:#00bbe6;"><strong><sup>luv Filipino ❤</sup></strong></span>]] 00:36, ngày 19 tháng 5 năm 2025 (UTC) : @[[Thành viên:Như Gây Mê|Như Gây Mê]] Tôi mới chỉnh lại trong trang [[ngilo]], bạn có thể xem qua. [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 04:10, ngày 19 tháng 5 năm 2025 (UTC) == Lỗi trong trình tạo mục từ == Vì lý do nào đó, các thay đổi gần đây của bạn khiến cho nút Tiếp không tự hiện cho phép bấm ngay khi nhập mục từ, phải thay đổi ngôn ngữ rồi đổi lại rất bất tiện mới hiện nút ra. Lý do nào bạn thay đổi vậy? – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 06:16, ngày 14 tháng 6 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Về lí do tôi thay đổi: :# Sử dụng dấu = để hiển thị phần đề mục, nhằm mở lại nút sửa ở bên phải đề mục :# Sử dụng {{LKBM|langname}} và {{LKBM|ĐM}} thay cho các bản mẫu [[:Thể loại:Bản mẫu ngôn ngữ|ngôn ngữ]], [[:Thể loại:Bản mẫu đề mục loại từ|đề mục loại từ]] và [[:Thể loại:Bản mẫu đề mục khác|đề mục khác]], thay vì phải tạo thêm nhiều bản mẫu đề mục mới (nhất là cho tên ngôn ngữ) thì ta gom vào chỉ cần dùng 2 bản mẫu. Cái này tôi học hỏi từ fr.wiktionary :Về phần lỗi, tôi đã giải quyết--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 18:57, ngày 14 tháng 6 năm 2025 (UTC) == Bộ lọc == Tôi nhận thấy các tk rối gần đây liên tục spam "Cô Nhung" và các biến thể liên quan của từ này. Tôi có ý định đề xuất thêm tiêu đề này vào bộ lọc. Bạn nghĩ thế nào? Nếu được, tôi có thể biên soạn danh sách các từ này và biến thể liên quan có khả năng được rối tạo để tham khảo. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:47, ngày 21 tháng 6 năm 2025 (UTC) :@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] 👍 Ok, bạn cứ triển khai--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 23:50, ngày 21 tháng 6 năm 2025 (UTC) ::Ok. Đã tạo trang [[Thành viên:P. ĐĂNG/Nháp 2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:32, ngày 22 tháng 6 năm 2025 (UTC) :::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Tôi đã đưa một số biến thể vào [[MediaWiki:Titleblacklist]], thay cho việc đưa vào bộ lọc--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:16, ngày 22 tháng 6 năm 2025 (UTC) == Gửi thư == Tôi có thử test [https://vi.wiktionary.org/wiki/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_%C4%91%E1%BA%B7c_bi%E1%BB%87t công cụ] gửi thư thông báo diện rộng. Nhưng sao khi gửi thư phần tin nhắn không có chữ ký MediaWiki message delivery? Ví dụ giống [https://vi.wikipedia.org/w/index.php?title=Th%E1%BA%A3o_lu%E1%BA%ADn_Th%C3%A0nh_vi%C3%AAn:P._%C4%90%C4%82NG&diff=prev&oldid=73638382 vậy]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:08, ngày 11 tháng 7 năm 2025 (UTC) :{{Tick}} Đã sửa được lỗi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:46, ngày 11 tháng 7 năm 2025 (UTC) == "clause" == Từ "clause" trong tiếng Anh nên được dịch là "mệnh đề" hay "cú" / "tiểu cú" vậy? Mình thấy các trang web dạy tiếng Anh ở Việt Nam ngày nay đều dịch là mệnh đề, nhưng khi mình tra từ điển ''Thuật ngữ ngôn ngữ học Anh – Việt Việt – Anh'', tr. 44 của Cao Xuân Hạo, Hoàng Dũng thì lại dịch là "tiểu cú". Bên ''Từ điển Khái niệm Ngôn ngữ học'', tr. 136 của Nguyễn Thiện Giáp cũng dịch tương tự. Phiền bạn trợ giúp. --[[Thành viên:I can see my baby swimming|I can see my baby swimming]] ([[Thảo luận Thành viên:I can see my baby swimming|thảo luận]]) 08:13, ngày 1 tháng 8 năm 2025 (UTC) == Nhờ == Phiền bạn ẩn lại tên người dùng [https://vi.m.wiktionary.org/w/index.php?title=Th%E1%BB%83_lo%E1%BA%A1i:Ti%E1%BA%BFng_Xhosa&oldid=2277181 này] do lúc nãy tôi gặp sự cố cookie đăng xuất tài khoản không mong muốn, nên sửa đổi này tự tạo ra tài khoản tạm thời. – [[User:Ayane Fumihiro|<b style="font-family:Segoe UI Light;color:#FF69B4;letter-spacing:">femboy_clen</b>]] ([[User talk:Ayane Fumihiro|<span style="color:#008080;">But we got it yeah</span>]]) 12:49, ngày 22 tháng 9 năm 2025 (UTC) ==Happy Holidays== <div style="border-style:solid; border-color:violet; background-color:#fff; border-width:2px; text-align:left; padding:8px;" class="plainlinks"> {| style="border: 5px dotted #H1790; background-color: #DDDDDD; padding:4px" | rowspan="2" valign="left" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Christmas Tree 2011-12-24.jpg|left|300px|link=]]<span style="display:block;padding-top:10px;clear:both"> | <span style="font-family: Georgia; font-size: 98%; color: #190a89;">Chúc bạn TheHighFighter2 có một mùa '''Giáng sinh''' an lành, ấm áp và tràn ngập yêu thương bên gia đình!<br/> Bước sang '''năm mới''' 2026, chúc bạn gặp nhiều may mắn,<br/> gặt hái được nhiều thành công trong công việc và học tập.<br/> Một lần nữa chúc bạn sẽ có một năm mới thật an khang, hạnh phúc và vạn sự như ý!!</span> <br /> <span style="font-family: Georgia; font-size: 92%;"> | rowspan="2" valign="right" |<span style="margin:0px 10px 10px 0px;box-shadow:0px 3px 4px rgba(0, 0, 0, 0.45);display:inline-block;">[[File:Atlantic Firework Festival 2016 (53368638571).jpg|left|360px|link=]]<span style="display:block;padding-top:10px;clear:both"> |}</div> Lời chúc chân thành từ: <span style="background:#978FF;border:solid 1px;border-radius:8px;box-shadow:darkblue 2px 2px 2px">&nbsp;[[User:Kelly zhrm|<span style="font-family:Old English Text MT;color:#C90">Yellow</span>]]&#124;[[User talk:Kelly zhrm|&#248;]]&nbsp;</span>&nbsp; 05:43, ngày 24 tháng 12 năm 2025 (UTC) :@[[Thành viên:Kelly zhrm|Kelly zhrm]]<poem>Cảm ơn lời chúc chân thành</br>Như là gió ấm bạn dành cho tôi</br>Năm tàn với tháng phai phôi</br>Chào mơn mởn mới như chồi đâm non...</br>Mượn lời lục bát son son</br>Giáng Sinh chúc bạn vui giòn niềm vui!</poem> :--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:33, ngày 24 tháng 12 năm 2025 (UTC) == [[Võ Nguyên Giáp]] == Theo bạn, mục từ này có nên tồn tại trên Wiktionary tiếng Việt. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 06:15, ngày 25 tháng 12 năm 2025 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] Theo [[:en:Wiktionary:NSE]], không nên đưa một cá nhân cụ thể nào đó vào làm một nghĩa trong một mục từ nếu tiêu đề của mục từ đó bao gồm cả họ và tên gọi. Một vài vd như [[:en:Adolf Hitler]], [[:en:Elizabeth II]] đều không có bài bên en; những người có bài như [[:en:George Washington]], [[:en:Donald Trump]] sẽ không thấy dòng định nghĩa nào mô tả mấy người này là ai, mà chỉ có nghĩa phát sinh thôi--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:06, ngày 25 tháng 12 năm 2025 (UTC) :: Nếu vậy thì đợi 7 ngày nữa rồi đem mục từ này ra biểu quyết xóa. Bài đã gắn biển <code><nowiki>{{rfv}}</nowiki></code>. [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 23:45, ngày 25 tháng 12 năm 2025 (UTC) : "Eastern Aramaic" nên dịch thành "Đông Aram" hay "Aram Đông"? [[User:Hiyuune|<b style="font-family:Segoe UI Light;color:#FFB3AE;letter-spacing:">Hiyuune</b>]] [[User talk: Hiyuune|<b style="font-family:Segoe UI Light;color:#FFF7AD;letter-spacing:">(angustifolia)</b>]] 14:44, ngày 2 tháng 1 năm 2026 (UTC) ::@[[Thành viên:Hiyuune|Hiyuune]] [https://vi.wikipedia.org/wiki/Wikipedia:Th%E1%BA%A3o_lu%E1%BA%ADn/L%C6%B0u_59#Nh%C3%B3m_ng%C3%B4n_ng%E1%BB%AF_Slav_%C4%90%C3%B4ng Thảo luận này] có lẽ sẽ trả lời cho câu hỏi của bạn--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 17:06, ngày 2 tháng 1 năm 2026 (UTC) == Thể loại giống của mục từ == Hôm qua tôi có cập nhật một số mô đun như [[Mô đun:languages]], [[Mô đun:languages/templates]], [[Mô đun:headword]] và [[Mô đun:headword/templates]] nhưng sau khi cập nhật thì không còn thấy xếp thể loại giống của mục từ (ví dụ: [[αστρολογία]]; không xếp vào [[:Thể loại:Danh từ giống cái tiếng Hy Lạp]]). Không rõ lỗi nó nằm ở đâu. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 09:17, ngày 4 tháng 3 năm 2026 (UTC) :@[[Thành viên:Hiyuune|Hiyuune]] {{xong}}: xem [https://vi.wiktionary.org/w/index.php?title=M%C3%B4_%C4%91un:headword/data&diff=prev&oldid=2334055]--.--[[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) – [[Thành viên:TheHighFighter2|Ta như cây bách buồn sau núi...]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:54, ngày 5 tháng 3 năm 2026 (UTC) == You may be an eligible candidate for the U4C election == <div lang="en" dir="ltr" class="mw-content-ltr"> Greetings, The [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee (U4C)]] seeks candidates for the 2026 election. The U4C is the global committee responsible for overseeing enforcement of the [[foundation:Special:MyLanguage/Policy:Universal Code of Conduct|Universal Code of Conduct]]. Elections are held annually, if elected a committee member serves for two years. This year the U4C requires candidates to hold administrator rights on at least one wiki, which is why you are being contacted as you appear to hold this right. There are other requirements, such as candidates must be at least 18 years old and may not be employed by the Wikimedia Foundation or other related chapters and affiliates. You can find more information in the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026#Call_for_Candidates|call for candidates on Meta-wiki]]. Additionally, the committee's working language is English; some ability to communicate in English is required. The election opens on 18 May, if you are eligible and interested you have until 10 May to submit your candidacy. There will be a week in between for candidates to answer questions from the community. Voting takes place privately in [[m:Special:MyLanguage/SecurePoll|SecurePoll]], successful candidates must receive at least 60% support. More information is available on [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|the 2026 Elections page]], including timelines and other candidacy information. If you read over the material and consider yourself qualified, please consider submitting your name to run for the committee. If you think someone else in your community might be interested and qualified, please encourage them to run. In partnership with the U4C -- [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User_talk:Keegan (WMF)|talk]]) 20:17, ngày 28 tháng 4 năm 2026 (UTC) </div> <!-- Tin nhắn của Thành viên:Keegan (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Keegan_(WMF)/test&oldid=30472541 --> dg42ykj2cztexq38r31rv2ogd2f8s6z cún 0 257822 2350765 2269029 2026-05-07T08:00:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350765 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “cun”}} {{-vie-}} {{-info-}} [[Hình:Puppy on Halong Bay.jpg|nhỏ|'''Cún''' con nằm trên bãi cát.]] {{-pron-}} {{vie-pron}} {{-paro-}} * {{vi-l|cùn}} {{-noun-}} {{vie-noun|cls=con}} # [[chó|Chó]] [[con]]. #* {{quote-journal|vi|1/2/2006|Việt Hùng|Chùm ảnh hội thi chó đẹp xuân Bính Tuất|w:VnExpress|url=https://vnexpress.net/chum-anh-hoi-thi-cho-dep-xuan-binh-tuat-2063081.html|archiveurl=https://web.archive.org/web/20240112175252/https://vnexpress.net/chum-anh-hoi-thi-cho-dep-xuan-binh-tuat-2063081.html|archivedate=12/1/2024|passage='''Cún''' chơi khăn với cậu chủ nhỏ.}} {{-trans-}} {{trans-top|Chó con}} * {{ara}}: {{t+|ar|جَرْو|m}} * {{afr}}: {{t+|af|hondjie|n}} * {{eng}}: {{t+|en|puppy}} * {{ang}}: {{t|ang|hwelp|m}} * {{hy}}: {{t+|hy|լակոտ}}, {{t+|hy|թուլա}}, {{t+|hy|քոթոթ}} * {{rup}}: {{t|rup|cãtsãl|m}} * {{ast}}: {{t|ast|perrín|m}}, {{t+|ast|cachorru|m}} * {{av}}: {{t|av|таращ|sc=Cyrl}} * {{pl}}: {{t+|pl|szczeniak|m}}, {{t+|pl|szczenię|n}} * {{fa}}: {{t+|fa|توله سگ|tr=tule sag}} * {{ba}}: {{t|ba|көсөк|sc=Cyrl}} * {{eus}}: {{t+|eu|txakurkume}} * {{bel}}: {{t|be|шчаню́к|m}}, {{t|be|шчаня́|n}}, {{t|be|шчанё|n}}, {{t|be|цю́цька|f}} * {{ben}}: {{t+|bn|কুত্তার বাচ্চা}}, {{t+|bn|কুকুরছানা}} * {{por}}: {{t|pt|[[filhote]] [[de]] [[cão]]|m}}, {{t+|pt|cachorro|m}}, {{t+|pt|cachorrinho|m}} * {{bul}}: {{t+|bg|ку́ченце|n}}, {{t+|bg|па́ле|n}}, {{t+|bg|кутре́|n}} * {{cat-2}}: {{t+|ca|cadell|m}} * {{kw}}: {{t|kw|kolyn}} * {{rom}}: {{t|rom|rikono|m}}, {{t|rom|zhukeloro|m}} * {{he}}: {{t+|he|כלבלב|m}}, {{t+|he|גּוּר|m}} (gur) * {{dan}}: {{t+|da|hvalp|c}} * {{de}}: {{t+|de|Welpe|m}}, {{t+|de|Hündchen|n}}, {{t+|de|Hundewelpe|m}}, {{t|de|junger Hund|m}}, {{t|de|Hundebaby|n}} {{q|thông tục}} * {{est}}: {{t+|et|kutsikas}} * {{eve}}: {{t|eve|качикан}} * {{fur}}: {{t|fur|nassint|m}} * {{gd}}: {{t|gd|cuilean|m}} * {{gag}}: {{t|gag|pali}} * {{gl}}: {{t+|gl|cachorro|m}}, {{t+|gl|cadelo|m}} * {{sdn}}: {{t|sdn|catteddu}} * {{jra}}: {{t|jra|nĕng}} * {{kl}}: {{t|kl|qimmiaraq}} * {{ka}}: {{t|ka|ლეკვი}} * {{gu}}: {{t|gu|ગલૂડિયું}}, {{t|gu|કુરકુરિયું}} * {{nld}}: {{t+|nl|puppy|m|f}} * {{hin}}: {{t+|hi|पिल्ला|m}} * {{hun}}: {{t+|hu|kiskutya}}, {{t+|hu|kölyökkutya}} * {{ell}}: {{t+|el|κουτάβι|n}} *: {{grc}}: {{t|grc|κῠνίδιον|n}}, {{t|grc|σκύλαξ|m}} * {{iba}}: {{t|iba|anak chauk}} * {{isl}}: {{t|is|hvolpur|m}} * {{ido}}: {{t+|io|hundyuno}}, {{t|io|hundyunulo}} {{q|male}}, {{t|io|hundyunino}} {{q|female}} * {{ilo}}: {{t|ilo|uken}} * {{ind}}: {{t|id|anak anjing}} * {{ga}}: {{t|ga|coileáinín|m}} * {{jav}}: {{t+|jv|kirik}} * {{kk}}: {{t|kk|күшік}} * {{khm}}: {{t|km|កូនឆ្កែ}} * {{lao}}: {{t|lo|ລູກໝາ}}, {{t|lo|ລູກຫມາ}} * {{ltg}}: {{t|ltg|kucāns|m}}, {{t|ltg|sunāns|m}} * {{la}}: {{t|la|catulus|m}}, {{t|la|catellus|m}} * {{lv}}: {{t|lv|kucēns|m}} * {{ms}}: *: {{Arab}}: {{t|ms|انق انجيڠ|sc=Arab}}, {{t|ms|انق اسو|sc=Arab}}, {{t|ms|کيريق|sc=Arab}} *: {{Latn}}: {{t|ms|anak anjing}}, {{t|ms|anak asu}}, {{t+|ms|kirik}} * {{mkd}}: {{t|mk|кученце|n}}, {{t|mk|кутре|n}} * {{mt}}: {{t|mt|ġeru|m}}, {{t|mt|ġerwa|f}} * {{mnc}}: {{t|mnc|ᠨᡳᠶᠠᡥᠠᠨ}} * {{mrw}}: {{t|mrw|tito}} * {{mzn}}: {{t|mzn|کتکا|tr=kətkâ|sc=ps-Arab}} * {{mic}}: {{t|mic|lmu'ji'j}}, {{t|mic|nmu'ji'j}} * {{mya}}: {{t+|my|ခွေးကလေး}} * {{mon}}: {{t+|mn|гөлөг|sc=Cyrl}}, {{t|mn|нохойн гөлөг|sc=Cyrl}} * {{moe}}: {{t|moe|atimuss}} * {{nor}}: *: {{nb}}: {{t+|nb|valp|m}} *: {{nn}}: {{t|nn|kvalp|m}}, {{t|nn|kvelp|m}} * {{langname|alt}}: {{t|alt|кӱчӱк}} * {{nv}}: {{t|nv|łééchąąyázhí}} * {{rus}}: {{t+|ru|щено́к|m}}, {{qualifier|thông tục}} {{t+|ru|цу́цик|m}}, {{t+|ru|кутёнок|m}} * {{ja}}: {{t+|ja|子犬|tr=こいぬ, koinu|sc=Jpan}} * {{oc}}: {{t+|oc|cadèl|m}}, {{t+|oc|cadèu|m}}, {{t|oc|gosset|m}}, {{t+|oc|canhòt|m}}, {{t|oc|canhon|m}} * {{fra}}: {{t+|fr|chiot|m}} * {{fin}}: {{t+|fi|pentu}}, {{t+|fi|penikka}}, {{t+|fi|koiranpentu}} * {{pa}}: {{t+|pa|ਕਤੂਰਾ|m}} * {{qu}}: {{t|qu|allqucha}} * {{eo}}: {{t+|eo|hundido}}, {{t|eo|hundidino}} {{q|con cái}} * {{ron}}: {{t+|ro|cățel|m}}, {{t+|ro|cățeluș|m}} * {{sc}}: *: {{sro}}: {{t|sc|catteddu}}, {{t|sc|calleddu}}, {{t|sc|cacciurru}} *: {{src}}: {{t|sc|cacciùcciu}}, {{t|sc|catteddu}} * {{sdc}}: {{t|sdc|catteddu}}, {{t|sdc|cucciucciu}} * {{cs}}: {{t+|cs|štěně|n}} * {{sh}}: *: {{Cyrl}}: {{t|sh|штѐне|n}}, {{t|sh|ште́нац|m}} *: {{Latn}}: {{t+|sh|štène|n}}, {{t+|sh|šténac|m}} * {{orv}}: {{t|orv|щенѧ|n}} * {{scn}}: {{t+|scn|cagnolu|m}} * {{sk}}: {{t+|sk|šteňa|n}} * {{sl}}: {{t|sl|kužek|m}}, {{t|sl|ščene|n}} * {{wen}}: *: {{dsb}}: {{t|dsb|šćenje|n}} * {{mvv}}: {{t|mvv|kuku}} * {{tgl}}: {{t+|tl|tuta}} * {{tam}}: {{t+|ta|நாய்க்குட்டி}} * {{rif}}: {{t|rif|aqzin|m}} * {{crh}}: {{t|crh|küçelek}}, {{t|crh|boşıq}} * {{spa}}: {{t+|es|cachorro|m}}, {{t+|es|perrito|m}} * {{bo}}: {{t|bo|ཁྱི་ཕྲུག}}, {{t|bo|ཨ་ཡོ་འོ}} * {{tel}}: {{t+|te|కుక్కపిల్ల}} * {{tha}}: {{t+|th|ลูกหมา}} * {{tur}}: {{t+|tr|enik}}, {{t|tr|[[yavru]] [[köpek]]}}, {{t|tr|[[köpek]] [[yavru]]su}} * {{sv}}: {{t+|sv|hundvalp|c}}, {{t+|sv|valp|c}} * {{kor}}: {{t+|ko|강아지}} * {{dtp}}: {{t|dtp|duku}} * {{zho}}: *: {{cmn}}: {{t+|cmn|小狗|tr=xiǎogǒu}} *: {{yue}}: {{t|yue|狗仔|tr=gau2 zai2}} * {{tk}}: {{t|tk|güjük}} * {{ude}}: {{t|ude|касанʒига}} * {{ukr}}: {{t+|uk|цуценя́|n}}, {{t|uk|щеня́|n}}, {{t|uk|собача́|n}} * {{vec}}: {{t|vec|cagnol}} * {{vol}}: {{t+|vo|dogül}} * {{wa}}: {{t+|wa|tchinot|m}}, {{t|wa|djonne di tchén|m}} * {{cym}}: {{t+|cy|ci bach|m}} * {{wo}}: {{t+|wo|kuti|alt=kuti bi}} * {{ita}}: {{t+|it|cucciolo|m}}, {{t+|it|cagnolino|m}}, {{t+|it|cagnetto|m}} * {{yid}}: {{t|yi|הינטעלע|n}} {{trans-bottom}} {{-anagram-}} * {{anagrams|vi|núc}} {{C|vi|Chó|Động vật khi nhỏ}} {{-cmn-2-}} {{-alternative form-}} * {{alter|cmn|cun||không tiêu chuẩn}} {{-romanization-}} {{cmn-pinyin}} # {{cmn-pinyin of|墫}}. # {{cmn-pinyin of|存}}. # {{cmn-pinyin of|拵}}. # {{cmn-pinyin of|浒}}. # {{cmn-pinyin of|袸}}. # {{cmn-pinyin of|踆}}. # {{cmn-pinyin of|蹰}}. ea1qnwtw1vd55uiqowgj1xeqn61o9wk 2351028 2350765 2026-05-07T10:45:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351028 wikitext text/x-wiki {{also|Phụ lục:Biến thể của “cun”}} {{-vie-}} {{-info-}} [[Hình:Puppy on Halong Bay.jpg|nhỏ|'''Cún''' con nằm trên bãi cát.]] {{-pron-}} {{vie-pron}} {{-paro-}} * {{vi-l|cùn}} {{-noun-}} {{vie-noun|cls=con}} # [[chó|Chó]] [[con]]. #* {{quote-journal|vi|1/2/2006|Việt Hùng|Chùm ảnh hội thi chó đẹp xuân Bính Tuất|w:VnExpress|url=https://vnexpress.net/chum-anh-hoi-thi-cho-dep-xuan-binh-tuat-2063081.html|archiveurl=https://web.archive.org/web/20240112175252/https://vnexpress.net/chum-anh-hoi-thi-cho-dep-xuan-binh-tuat-2063081.html|archivedate=12/1/2024|passage='''Cún''' chơi khăn với cậu chủ nhỏ.}} {{-trans-}} {{trans-top|Chó con}} * {{ara}}: {{t+|ar|جَرْو|m}} * {{afr}}: {{t+|af|hondjie|n}} * {{eng}}: {{t+|en|puppy}} * {{ang}}: {{t|ang|hwelp|m}} * {{hy}}: {{t+|hy|լակոտ}}, {{t+|hy|թուլա}}, {{t+|hy|քոթոթ}} * {{rup}}: {{t|rup|cãtsãl|m}} * {{ast}}: {{t|ast|perrín|m}}, {{t+|ast|cachorru|m}} * {{av}}: {{t|av|таращ|sc=Cyrl}} * {{pl}}: {{t+|pl|szczeniak|m}}, {{t+|pl|szczenię|n}} * {{fa}}: {{t+|fa|توله سگ|tr=tule sag}} * {{ba}}: {{t|ba|көсөк|sc=Cyrl}} * {{eus}}: {{t+|eu|txakurkume}} * {{bel}}: {{t|be|шчаню́к|m}}, {{t|be|шчаня́|n}}, {{t|be|шчанё|n}}, {{t|be|цю́цька|f}} * {{ben}}: {{t+|bn|কুত্তার বাচ্চা}}, {{t+|bn|কুকুরছানা}} * {{por}}: {{t|pt|[[filhote]] [[de]] [[cão]]|m}}, {{t+|pt|cachorro|m}}, {{t+|pt|cachorrinho|m}} * {{bul}}: {{t+|bg|ку́ченце|n}}, {{t+|bg|па́ле|n}}, {{t+|bg|кутре́|n}} * {{cat-old}}: {{t+|ca|cadell|m}} * {{kw}}: {{t|kw|kolyn}} * {{rom}}: {{t|rom|rikono|m}}, {{t|rom|zhukeloro|m}} * {{he}}: {{t+|he|כלבלב|m}}, {{t+|he|גּוּר|m}} (gur) * {{dan}}: {{t+|da|hvalp|c}} * {{de}}: {{t+|de|Welpe|m}}, {{t+|de|Hündchen|n}}, {{t+|de|Hundewelpe|m}}, {{t|de|junger Hund|m}}, {{t|de|Hundebaby|n}} {{q|thông tục}} * {{est}}: {{t+|et|kutsikas}} * {{eve}}: {{t|eve|качикан}} * {{fur}}: {{t|fur|nassint|m}} * {{gd}}: {{t|gd|cuilean|m}} * {{gag}}: {{t|gag|pali}} * {{gl}}: {{t+|gl|cachorro|m}}, {{t+|gl|cadelo|m}} * {{sdn}}: {{t|sdn|catteddu}} * {{jra}}: {{t|jra|nĕng}} * {{kl}}: {{t|kl|qimmiaraq}} * {{ka}}: {{t|ka|ლეკვი}} * {{gu}}: {{t|gu|ગલૂડિયું}}, {{t|gu|કુરકુરિયું}} * {{nld}}: {{t+|nl|puppy|m|f}} * {{hin}}: {{t+|hi|पिल्ला|m}} * {{hun}}: {{t+|hu|kiskutya}}, {{t+|hu|kölyökkutya}} * {{ell}}: {{t+|el|κουτάβι|n}} *: {{grc}}: {{t|grc|κῠνίδιον|n}}, {{t|grc|σκύλαξ|m}} * {{iba}}: {{t|iba|anak chauk}} * {{isl}}: {{t|is|hvolpur|m}} * {{ido}}: {{t+|io|hundyuno}}, {{t|io|hundyunulo}} {{q|male}}, {{t|io|hundyunino}} {{q|female}} * {{ilo}}: {{t|ilo|uken}} * {{ind}}: {{t|id|anak anjing}} * {{ga}}: {{t|ga|coileáinín|m}} * {{jav}}: {{t+|jv|kirik}} * {{kk}}: {{t|kk|күшік}} * {{khm}}: {{t|km|កូនឆ្កែ}} * {{lao}}: {{t|lo|ລູກໝາ}}, {{t|lo|ລູກຫມາ}} * {{ltg}}: {{t|ltg|kucāns|m}}, {{t|ltg|sunāns|m}} * {{la}}: {{t|la|catulus|m}}, {{t|la|catellus|m}} * {{lv}}: {{t|lv|kucēns|m}} * {{ms}}: *: {{Arab}}: {{t|ms|انق انجيڠ|sc=Arab}}, {{t|ms|انق اسو|sc=Arab}}, {{t|ms|کيريق|sc=Arab}} *: {{Latn}}: {{t|ms|anak anjing}}, {{t|ms|anak asu}}, {{t+|ms|kirik}} * {{mkd}}: {{t|mk|кученце|n}}, {{t|mk|кутре|n}} * {{mt}}: {{t|mt|ġeru|m}}, {{t|mt|ġerwa|f}} * {{mnc}}: {{t|mnc|ᠨᡳᠶᠠᡥᠠᠨ}} * {{mrw}}: {{t|mrw|tito}} * {{mzn}}: {{t|mzn|کتکا|tr=kətkâ|sc=ps-Arab}} * {{mic}}: {{t|mic|lmu'ji'j}}, {{t|mic|nmu'ji'j}} * {{mya}}: {{t+|my|ခွေးကလေး}} * {{mon}}: {{t+|mn|гөлөг|sc=Cyrl}}, {{t|mn|нохойн гөлөг|sc=Cyrl}} * {{moe}}: {{t|moe|atimuss}} * {{nor}}: *: {{nb}}: {{t+|nb|valp|m}} *: {{nn}}: {{t|nn|kvalp|m}}, {{t|nn|kvelp|m}} * {{langname|alt}}: {{t|alt|кӱчӱк}} * {{nv}}: {{t|nv|łééchąąyázhí}} * {{rus}}: {{t+|ru|щено́к|m}}, {{qualifier|thông tục}} {{t+|ru|цу́цик|m}}, {{t+|ru|кутёнок|m}} * {{ja}}: {{t+|ja|子犬|tr=こいぬ, koinu|sc=Jpan}} * {{oc}}: {{t+|oc|cadèl|m}}, {{t+|oc|cadèu|m}}, {{t|oc|gosset|m}}, {{t+|oc|canhòt|m}}, {{t|oc|canhon|m}} * {{fra}}: {{t+|fr|chiot|m}} * {{fin}}: {{t+|fi|pentu}}, {{t+|fi|penikka}}, {{t+|fi|koiranpentu}} * {{pa}}: {{t+|pa|ਕਤੂਰਾ|m}} * {{qu}}: {{t|qu|allqucha}} * {{eo}}: {{t+|eo|hundido}}, {{t|eo|hundidino}} {{q|con cái}} * {{ron}}: {{t+|ro|cățel|m}}, {{t+|ro|cățeluș|m}} * {{sc}}: *: {{sro}}: {{t|sc|catteddu}}, {{t|sc|calleddu}}, {{t|sc|cacciurru}} *: {{src}}: {{t|sc|cacciùcciu}}, {{t|sc|catteddu}} * {{sdc}}: {{t|sdc|catteddu}}, {{t|sdc|cucciucciu}} * {{cs}}: {{t+|cs|štěně|n}} * {{sh}}: *: {{Cyrl}}: {{t|sh|штѐне|n}}, {{t|sh|ште́нац|m}} *: {{Latn}}: {{t+|sh|štène|n}}, {{t+|sh|šténac|m}} * {{orv}}: {{t|orv|щенѧ|n}} * {{scn}}: {{t+|scn|cagnolu|m}} * {{sk}}: {{t+|sk|šteňa|n}} * {{sl}}: {{t|sl|kužek|m}}, {{t|sl|ščene|n}} * {{wen}}: *: {{dsb}}: {{t|dsb|šćenje|n}} * {{mvv}}: {{t|mvv|kuku}} * {{tgl}}: {{t+|tl|tuta}} * {{tam}}: {{t+|ta|நாய்க்குட்டி}} * {{rif}}: {{t|rif|aqzin|m}} * {{crh}}: {{t|crh|küçelek}}, {{t|crh|boşıq}} * {{spa}}: {{t+|es|cachorro|m}}, {{t+|es|perrito|m}} * {{bo}}: {{t|bo|ཁྱི་ཕྲུག}}, {{t|bo|ཨ་ཡོ་འོ}} * {{tel}}: {{t+|te|కుక్కపిల్ల}} * {{tha}}: {{t+|th|ลูกหมา}} * {{tur}}: {{t+|tr|enik}}, {{t|tr|[[yavru]] [[köpek]]}}, {{t|tr|[[köpek]] [[yavru]]su}} * {{sv}}: {{t+|sv|hundvalp|c}}, {{t+|sv|valp|c}} * {{kor}}: {{t+|ko|강아지}} * {{dtp}}: {{t|dtp|duku}} * {{zho}}: *: {{cmn}}: {{t+|cmn|小狗|tr=xiǎogǒu}} *: {{yue}}: {{t|yue|狗仔|tr=gau2 zai2}} * {{tk}}: {{t|tk|güjük}} * {{ude}}: {{t|ude|касанʒига}} * {{ukr}}: {{t+|uk|цуценя́|n}}, {{t|uk|щеня́|n}}, {{t|uk|собача́|n}} * {{vec}}: {{t|vec|cagnol}} * {{vol}}: {{t+|vo|dogül}} * {{wa}}: {{t+|wa|tchinot|m}}, {{t|wa|djonne di tchén|m}} * {{cym}}: {{t+|cy|ci bach|m}} * {{wo}}: {{t+|wo|kuti|alt=kuti bi}} * {{ita}}: {{t+|it|cucciolo|m}}, {{t+|it|cagnolino|m}}, {{t+|it|cagnetto|m}} * {{yid}}: {{t|yi|הינטעלע|n}} {{trans-bottom}} {{-anagram-}} * {{anagrams|vi|núc}} {{C|vi|Chó|Động vật khi nhỏ}} {{-cmn-2-}} {{-alternative form-}} * {{alter|cmn|cun||không tiêu chuẩn}} {{-romanization-}} {{cmn-pinyin}} # {{cmn-pinyin of|墫}}. # {{cmn-pinyin of|存}}. # {{cmn-pinyin of|拵}}. # {{cmn-pinyin of|浒}}. # {{cmn-pinyin of|袸}}. # {{cmn-pinyin of|踆}}. # {{cmn-pinyin of|蹰}}. jwq3xz2xqh8v97ys1dmj3tjt2l8a0ju báo hoa mai 0 258162 2350766 2013648 2026-05-07T08:00:23Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350766 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''báo hoa mai''' # [[loài|Loài]] [[thú]] [[ăn]] [[thịt]] thuộc [[họ]] [[mèo]]. {{-trans-}} {{trans-top|Loài thú ăn thịt}} * {{eng}}: [[leopard]] * {{cat-2}}: [[lleopard]] {{m}} * {{fra}}: [[léopard]] {{m}} [[Thể loại:Danh từ tiếng Việt]] t1qrwwur0nr3u6re6lknnm4elwyry4p 2351029 2350766 2026-05-07T10:46:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351029 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''báo hoa mai''' # [[loài|Loài]] [[thú]] [[ăn]] [[thịt]] thuộc [[họ]] [[mèo]]. {{-trans-}} {{trans-top|Loài thú ăn thịt}} * {{eng}}: [[leopard]] * {{cat-old}}: [[lleopard]] {{m}} * {{fra}}: [[léopard]] {{m}} [[Thể loại:Danh từ tiếng Việt]] 2bfcnrtdsnplhycne7tuw6uwv2iz1n2 đại dịch 0 258322 2350767 2281382 2026-05-07T08:00:26Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350767 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Phiên âm [[Hán-Việt]] của [[大疫]]. Trong đó [[大]] phiên âm thành “đại” (nghĩa là “to, lớn”); [[疫]] phiên âm thành “dịch” (nghĩa là “dịch bệnh”). {{-pron-}} {{vie-pron}} {{-noun-}} '''đại dịch''' # Một [[dịch bệnh]] [[lớn]]; một dịch bệnh [[ảnh hưởng]] đến một [[khu vực]] [[địa lý]] [[rộng lớn]] và một [[tỷ lệ]] lớn [[dân số]]. {{-trans-}} {{đầu}} * {{ara}}: [[جَائِحَة]] {{f}} (jāʾiḥa) * {{afr}}: [[pandemie]] * {{sqi}}: [[pandemi]] {{f}} * {{eng}}: [[pandemic]] * {{hye}}: [[պանդեմիա]] (pandemia), [[համավարակ]] (hamavarak) * {{aze}}: [[pandemiya]] * {{pol}}: [[pandemia]] {{f}} * {{fas}}: [[همه‌گیری جهانی‎]] (hame-gir-e jahâni), [[همه‌گیر‎]] (hame-gir) * {{isl}}: [[heimsfaraldur]] {{g|m}} * {{eus}}: [[pandemia]] * {{bel}}: [[пандэмі́я]] {{f}} (pandemíja) * {{por}}: [[pandemia]] {{f}} * {{bul}}: [[панде́мия]] {{f}} (pandémija) * {{cat-2}}: [[pandèmia]] {{f}} * {{heb}}: [[פַּנְדֶּמְיָה]] * {{dan}}: [[pandemi]] {{g|c}} * {{deu}}: [[Pandemie]] {{f}} * {{est}}: [[pandeemia]] * {{fao}}: [[heimsfarsótt]] {{f}} * {{glg}}: [[pandemia]] {{f}} * {{kat}}: [[პანდემია]] (ṗandemia) * {{nld}}: [[pandemie]] {{f}} * {{hin}}: [[महामारी]] {{f}} (mahāmārī) * {{hun}}: [[pandémia]], [[világjárvány]] * {{ell}}: [[πανδημία]] {{f}} (pandimía) * {{ind}}: [[pandemi]] * {{lat}}: [[pandemia]] {{f}} * {{lav}}: [[pandēmija]] {{f}} * {{lit}}: [[pandemija]] {{f}} * {{msa}}: [[pandemik]] * {{mkd}}: [[пандемија]] {{f}} (pandemija) * {{mlt}}: [[pandemija]] {{f}} * {{nor}}: ** {{nob}}: [[pandemi]] {{g|m}} ** {{nno}}: [[pandemi]] {{g|m}} * {{rus}}: [[пандеми́я]] {{f}} (pandɛmíja) * {{jpn}}: [[パンデミック]] (pandemikku) * {{oci}}: [[pandemia]] {{f}} * {{fra}}: [[pandémie]] {{f}} * {{fin}}: [[pandemia]] * {{epo}}: [[pandemio]] * {{ron}}: [[pandemie]] {{f}} * {{ces}}: [[pandemie]] {{f}} * {{scr}}: ** {{Cyrl}}: [[пандѐмија]] {{f}} ** {{Latn}}: [[pandèmija]] {{f}} * {{slk}}: [[pandémia]] * {{slv}}: [[pandemija]] {{f}} * {{swa}}: [[pandemia]] * {{tgl}}: [[pandemya]] * {{spa}}: [[pandemia]] {{f}} {{giữa}} * {{tha}}: [[โรคระบาดทั่ว]] (rôok-rá-bàat-tûua) * {{tur}}: [[pandemi]] * {{swe}}: [[pandemi]] {{g|c}} * {{kor}}: [[범유행]] (beomyuhaeng), [[팬데믹]] (paendemik) * {{zho}}: ** {{cmn}}: [[大流行病]] (dà liúxíngbìng), [[瘟疫]] (wēnyì) ** {{yue}}: [[瘟疫]] (wan<sup>1</sup> jik<sup>6</sup>) * {{ukr}}: [[пандемі́я]] {{f}} (pandemíja), [[панде́мія]] {{f}} (pandémija) * {{uzb}}: [[pandemiya]] * {{ita}}: [[pandemia]] {{f}} * {{yid}}: [[פּאַנדעמיע‎]] {{f}} (pandemye) {{cuối}} [[Thể loại:Danh từ tiếng Việt]] q9jjs7ph1fq2cyeyt4lillh9phx7490 2351030 2350767 2026-05-07T10:46:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351030 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Phiên âm [[Hán-Việt]] của [[大疫]]. Trong đó [[大]] phiên âm thành “đại” (nghĩa là “to, lớn”); [[疫]] phiên âm thành “dịch” (nghĩa là “dịch bệnh”). {{-pron-}} {{vie-pron}} {{-noun-}} '''đại dịch''' # Một [[dịch bệnh]] [[lớn]]; một dịch bệnh [[ảnh hưởng]] đến một [[khu vực]] [[địa lý]] [[rộng lớn]] và một [[tỷ lệ]] lớn [[dân số]]. {{-trans-}} {{đầu}} * {{ara}}: [[جَائِحَة]] {{f}} (jāʾiḥa) * {{afr}}: [[pandemie]] * {{sqi}}: [[pandemi]] {{f}} * {{eng}}: [[pandemic]] * {{hye}}: [[պանդեմիա]] (pandemia), [[համավարակ]] (hamavarak) * {{aze}}: [[pandemiya]] * {{pol}}: [[pandemia]] {{f}} * {{fas}}: [[همه‌گیری جهانی‎]] (hame-gir-e jahâni), [[همه‌گیر‎]] (hame-gir) * {{isl}}: [[heimsfaraldur]] {{g|m}} * {{eus}}: [[pandemia]] * {{bel}}: [[пандэмі́я]] {{f}} (pandemíja) * {{por}}: [[pandemia]] {{f}} * {{bul}}: [[панде́мия]] {{f}} (pandémija) * {{cat-old}}: [[pandèmia]] {{f}} * {{heb}}: [[פַּנְדֶּמְיָה]] * {{dan}}: [[pandemi]] {{g|c}} * {{deu}}: [[Pandemie]] {{f}} * {{est}}: [[pandeemia]] * {{fao}}: [[heimsfarsótt]] {{f}} * {{glg}}: [[pandemia]] {{f}} * {{kat}}: [[პანდემია]] (ṗandemia) * {{nld}}: [[pandemie]] {{f}} * {{hin}}: [[महामारी]] {{f}} (mahāmārī) * {{hun}}: [[pandémia]], [[világjárvány]] * {{ell}}: [[πανδημία]] {{f}} (pandimía) * {{ind}}: [[pandemi]] * {{lat}}: [[pandemia]] {{f}} * {{lav}}: [[pandēmija]] {{f}} * {{lit}}: [[pandemija]] {{f}} * {{msa}}: [[pandemik]] * {{mkd}}: [[пандемија]] {{f}} (pandemija) * {{mlt}}: [[pandemija]] {{f}} * {{nor}}: ** {{nob}}: [[pandemi]] {{g|m}} ** {{nno}}: [[pandemi]] {{g|m}} * {{rus}}: [[пандеми́я]] {{f}} (pandɛmíja) * {{jpn}}: [[パンデミック]] (pandemikku) * {{oci}}: [[pandemia]] {{f}} * {{fra}}: [[pandémie]] {{f}} * {{fin}}: [[pandemia]] * {{epo}}: [[pandemio]] * {{ron}}: [[pandemie]] {{f}} * {{ces}}: [[pandemie]] {{f}} * {{scr}}: ** {{Cyrl}}: [[пандѐмија]] {{f}} ** {{Latn}}: [[pandèmija]] {{f}} * {{slk}}: [[pandémia]] * {{slv}}: [[pandemija]] {{f}} * {{swa}}: [[pandemia]] * {{tgl}}: [[pandemya]] * {{spa}}: [[pandemia]] {{f}} {{giữa}} * {{tha}}: [[โรคระบาดทั่ว]] (rôok-rá-bàat-tûua) * {{tur}}: [[pandemi]] * {{swe}}: [[pandemi]] {{g|c}} * {{kor}}: [[범유행]] (beomyuhaeng), [[팬데믹]] (paendemik) * {{zho}}: ** {{cmn}}: [[大流行病]] (dà liúxíngbìng), [[瘟疫]] (wēnyì) ** {{yue}}: [[瘟疫]] (wan<sup>1</sup> jik<sup>6</sup>) * {{ukr}}: [[пандемі́я]] {{f}} (pandemíja), [[панде́мія]] {{f}} (pandémija) * {{uzb}}: [[pandemiya]] * {{ita}}: [[pandemia]] {{f}} * {{yid}}: [[פּאַנדעמיע‎]] {{f}} (pandemye) {{cuối}} [[Thể loại:Danh từ tiếng Việt]] 3tjvd4yvelrwqlgv6hsqq9kgn9h20gr tốc độ bàn thờ 0 258746 2351081 2104626 2026-05-07T10:50:27Z TheHighFighter2 42988 /* */ 2351081 wikitext text/x-wiki =={{langname|vi}}== ==={{ĐM|etym}}=== Từ {{com|vi|tốc độ|bàn thờ}}. Hàm ý tốc độ ở mức có thể dễ dàng đưa người lái gặp tai nạn tử vong, "lên bàn thờ ngồi". ==={{ĐM|pron}}=== {{vi-pron}} ==={{ĐM|noun}}=== {{vi-noun|head=[[tốc độ]] [[bàn thờ]]}} # {{lb|vi|lóng|hài hước}} [[tốc độ|Tốc độ]] [[lái xe]] ở mức độ [[cao]], dễ gây [[nguy hiểm]] đến [[tính mạng]]. #: {{ux|vi|Quái xế phóng xe mô tô với '''tốc độ bàn thờ'''.}} l0x0181de12lnwsyeg00sh96css8e09 asen 0 258843 2350768 2153812 2026-05-07T08:00:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350768 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Arsen 1a.jpg|nhỏ|'''Asen''']] {{-pron-}} {{vie-pron|a sen}} {{-etym-}} Từ [[w:Tiếng Pháp|tiếng Pháp]] ''[[arsenic]]''. {{-noun-}} '''asen''' # {{term|Hoá học}} [[nguyên tố hoá học|Nguyên tố hoá học]] có [[kí hiệu]] là [[As]], [[số hiệu nguyên tử]] là 33. {{-trans-}} {{đầu}} * {{eng}}: [[arsenic]] * {{pol}}: [[arsen]] {{m}} * {{cat-2}}: [[arsènic]] {{m}} * {{fra}}: [[arsenic]] {{m}} {{giữa}} * {{fin}}: [[arseeni]] * {{tur}}: [[arsenik]] * {{ita}}: [[arsenico]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] {{-siz-}} {{-noun-}} {{head|siz|Danh từ}} {{m}} # [[răng]]. nfn3btfvh1bn8bwrplk68qls08wz3nt 2351031 2350768 2026-05-07T10:46:08Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351031 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Arsen 1a.jpg|nhỏ|'''Asen''']] {{-pron-}} {{vie-pron|a sen}} {{-etym-}} Từ [[w:Tiếng Pháp|tiếng Pháp]] ''[[arsenic]]''. {{-noun-}} '''asen''' # {{term|Hoá học}} [[nguyên tố hoá học|Nguyên tố hoá học]] có [[kí hiệu]] là [[As]], [[số hiệu nguyên tử]] là 33. {{-trans-}} {{đầu}} * {{eng}}: [[arsenic]] * {{pol}}: [[arsen]] {{m}} * {{cat-old}}: [[arsènic]] {{m}} * {{fra}}: [[arsenic]] {{m}} {{giữa}} * {{fin}}: [[arseeni]] * {{tur}}: [[arsenik]] * {{ita}}: [[arsenico]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] {{-siz-}} {{-noun-}} {{head|siz|Danh từ}} {{m}} # [[răng]]. 5zxg0dy0sp1yzyle7knenu23sp42rin arsen 0 258881 2350473 2281241 2026-05-06T14:12:57Z Hiyuune 50834 2350473 wikitext text/x-wiki =={{langname|pl}}== {{wp|pl:}} ==={{section|etym}}=== {{lbor|pl|la|arsenicum}}, từ {{der|pl|grc|ἀρσενικόν}}. {{doublet|pl|arszenik}}. ==={{section|pron}}=== {{pl-pr|a=Pl-arsen.ogg}} ==={{section|n}}=== {{chemical element box|pl}} {{pl-noun|m-in}} # [[arsenic|Asen]]. ===={{section|decl}}==== {{pl-decl-noun-m-in|tantum=s}} ===={{section|drv}}==== {{col|pl|title=tính từ|arsenawy|arsenoorganiczny|arsenowy}} {{col|pl|title=danh từ|arsenek|arseniak|arsenian|arsenin|arsenit|arsenopiryt|arsenowodór}} ==={{section|further}}=== * {{R:pl:WSJP}} * {{R:pl:PWN}} 1ih1msru9h7b86sk6uper5y1k8vzda2 trà đen 0 259020 2350769 2277823 2026-05-07T08:00:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350769 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Black tea.jpg|nhỏ|'''Trà đen'''.]] {{-etym-}} {{etym-from|term=trà|2 term=đen}} Tên gọi này dựa vào màu sắc của lá trà sau khi được sấy khô có màu đen. {{-pron-}} {{vie-pron}} {{-noun-}} '''trà đen''' # Loại [[trà]] có tính [[oxy hóa]] [[cao]] hơn các loại [[trà ô long]], [[trà vàng]], [[trà trắng]] và [[trà xanh]]. #* {{quote-book|1=vi|year=1983|year_published=|volume=|publisher=Nhà xuất bản Tác Phẩm Mới|author=Ngô Văn Phú|title=Rừng thông non: tập truyện và ký|chapter=|isbn=|page=117|text='''Trà đen''' là thứ giải khát ưa dùng ở nhiều nước châu Âu, châu Á. Uống '''trà đen''' tức là uống thêm chất bồi dưỡng cho cơ thể. Ở Nhật, trong giờ giải lao của cuộc họp, người ta uống '''trà đen'''. '''Trà đen''' đặc hòa với sữa. Công nhân nghỉ giữa ca, hoặc bước vào đầu ca làm việc cũng dùng '''trà đen'''.}} {{-syn-}} * [[chè đen]] * [[hồng trà]] {{-trans-}} {{trans-top|Một loại trà}} * {{ara}}: [[شاي أسود]] {{m}} (shay 'aswad) * {{eng}}: [[black tea]] * {{ast}}: [[té negro]] * {{aze}}: [[qara çay]] * {{pol}}: [[czarna herbata]] {{f}} * {{fas}}: [[چای سیاه]] (čây-e siyâh) * {{eus}}: [[te beltz]] * {{bel}}: [[чорная гарбата]] {{f}} (čornaja harbata) * {{por}}: [[chá preto]] {{m}} * {{bul}}: [[черен чай]] {{m}} (cheren chaĭ) * {{cat-2}}: [[te negre]] {{m}} * {{deu}}: [[schwarzer Tee]] {{m}} * {{est}}: [[must tee]] * {{gle}}: [[tae dubh]] {{m}} * {{kaz}}: [[қара шай]] (qara şay) * {{lit}}: [[juodoji arbata]] * {{langname|alt}}: [[кара чай]] (kara čay) * {{rus}}: [[чёрный чай]] {{m}} (chornyy chay) * {{jpn}}: [[紅茶]] (こうちゃ, hồng trà) * {{fra}}: [[thé noir]] {{m}} * {{fin}}: [[musta tee]] * {{pan}}: [[ਬਲੈਕ ਟੀ]] (Balaika ṭī) * {{spa}}: [[té negro]] {{m}} * {{tha}}: [[ชาแดง]] (chā dæng), [[ชาดำ]] (chādả) * {{tur}}: [[siyah çay]] * {{kor}}: [[홍차]] (hồng trà) * {{zho}}: ** {{nan}}: [[紅茶]], [[红茶]] (âng-tê) ** {{cmn}}: [[紅茶]], [[红茶]] (hồng trà) ** {{yue}}: [[紅茶]], [[红茶]] (hồng trà) * {{ukr}}: [[чорний чай]] (chornyy chay) * {{vol}}: [[blägatied]] * {{ita}}: [[tè nero]] {{m}} {{cuối}} {{C|vi|Trà}} ht83oclren7pajns1s19cajyanjmmwd 2351032 2350769 2026-05-07T10:46:11Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351032 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Black tea.jpg|nhỏ|'''Trà đen'''.]] {{-etym-}} {{etym-from|term=trà|2 term=đen}} Tên gọi này dựa vào màu sắc của lá trà sau khi được sấy khô có màu đen. {{-pron-}} {{vie-pron}} {{-noun-}} '''trà đen''' # Loại [[trà]] có tính [[oxy hóa]] [[cao]] hơn các loại [[trà ô long]], [[trà vàng]], [[trà trắng]] và [[trà xanh]]. #* {{quote-book|1=vi|year=1983|year_published=|volume=|publisher=Nhà xuất bản Tác Phẩm Mới|author=Ngô Văn Phú|title=Rừng thông non: tập truyện và ký|chapter=|isbn=|page=117|text='''Trà đen''' là thứ giải khát ưa dùng ở nhiều nước châu Âu, châu Á. Uống '''trà đen''' tức là uống thêm chất bồi dưỡng cho cơ thể. Ở Nhật, trong giờ giải lao của cuộc họp, người ta uống '''trà đen'''. '''Trà đen''' đặc hòa với sữa. Công nhân nghỉ giữa ca, hoặc bước vào đầu ca làm việc cũng dùng '''trà đen'''.}} {{-syn-}} * [[chè đen]] * [[hồng trà]] {{-trans-}} {{trans-top|Một loại trà}} * {{ara}}: [[شاي أسود]] {{m}} (shay 'aswad) * {{eng}}: [[black tea]] * {{ast}}: [[té negro]] * {{aze}}: [[qara çay]] * {{pol}}: [[czarna herbata]] {{f}} * {{fas}}: [[چای سیاه]] (čây-e siyâh) * {{eus}}: [[te beltz]] * {{bel}}: [[чорная гарбата]] {{f}} (čornaja harbata) * {{por}}: [[chá preto]] {{m}} * {{bul}}: [[черен чай]] {{m}} (cheren chaĭ) * {{cat-old}}: [[te negre]] {{m}} * {{deu}}: [[schwarzer Tee]] {{m}} * {{est}}: [[must tee]] * {{gle}}: [[tae dubh]] {{m}} * {{kaz}}: [[қара шай]] (qara şay) * {{lit}}: [[juodoji arbata]] * {{langname|alt}}: [[кара чай]] (kara čay) * {{rus}}: [[чёрный чай]] {{m}} (chornyy chay) * {{jpn}}: [[紅茶]] (こうちゃ, hồng trà) * {{fra}}: [[thé noir]] {{m}} * {{fin}}: [[musta tee]] * {{pan}}: [[ਬਲੈਕ ਟੀ]] (Balaika ṭī) * {{spa}}: [[té negro]] {{m}} * {{tha}}: [[ชาแดง]] (chā dæng), [[ชาดำ]] (chādả) * {{tur}}: [[siyah çay]] * {{kor}}: [[홍차]] (hồng trà) * {{zho}}: ** {{nan}}: [[紅茶]], [[红茶]] (âng-tê) ** {{cmn}}: [[紅茶]], [[红茶]] (hồng trà) ** {{yue}}: [[紅茶]], [[红茶]] (hồng trà) * {{ukr}}: [[чорний чай]] (chornyy chay) * {{vol}}: [[blägatied]] * {{ita}}: [[tè nero]] {{m}} {{cuối}} {{C|vi|Trà}} 9eixmkmtvcyugaqhmpg5k1u0h4w9fjr Bắc Băng Dương 0 259051 2350770 2127988 2026-05-07T08:00:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350770 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Arctic Ocean.png|nhỏ|'''Bắc Băng Dương''' trên bản đồ thế giới.]] {{-etym-}} {{vie-etym-sino|北|phía [[bắc]]|冰|[[băng]]|洋|[[đại dương]], [[biển]] lớn}}. {{-pron-}} {{vie-pron}} {{-place-}} {{pn}} # [[đại dương|Đại dương]] nhỏ nhất trong năm đại dương của [[Trái Đất]], bao quanh [[Bắc Cực]], giáp với [[châu Á]], [[châu Âu]] và [[Bắc Mỹ]]. #* {{RQ:Doan Gioi Dat rung phuong Nam|chapter=Chương 6|passage=“Em có biết con panh-goanh không? Biết à? ừ, loài chim cánh cụt ở '''Bắc Băng Dương''' ấy, người ta bảo rằng nó có một bản năng huyền bí để tìm về tổ cũ.”}} #* '''2018''', D. Kim Thoa, ''[https://tuoitre.vn/bao-dong-vun-nhua-trong-bang-bac-cuc-20180425103027969.htm Báo động vụn nhựa trong băng Bắc Cực]'', {{w|Tuổi Trẻ (báo)|báo Tuổi Trẻ Online}}: #*: {{quote|vi|Giới khoa học cảnh báo nguy cơ tiềm ẩn từ mật độ kỷ lục của các mẩu nhựa nhỏ bị kẹt lại giữa các khối băng nổi trên '''Bắc Băng Dương'''.}} {{-trans-}} {{trans-top|Đại dương nhỏ nhất trong năm đại dương của Trái Đất}} * {{ara}}: {{t|ar|المحيط المتجمد الشمالي|m|tr=al-muḥīṭ al-mutajammid aš-šamāliyy}}, {{t|ar|المحيط الشمالي|m|tr=al-muḥīṭ aš-šamāliyy}} * {{afr}}: {{t|af|Arktiese Oseaan}} * {{sqi}}: {{t|sq|Oqeani Arktik|m}} * {{eng}}: {{t|en|Arctic Ocean}}, {{t|en|Arctic Sea}} * {{arg}}: {{t|an|Ocián Glacial Arctico}} * {{hye}}: {{t|hy|Հյուսիսային սառուցյալ օվկիանոս|tr=Hyusisayin saṙucʿyal ōvkianos}}, {{t|hy|Սառուցյալ օվկիանոս|tr=Saṙucʿyal ōvkianos}} * {{aze}}: {{t|az|Şimal Buzlu okean}} * {{pol}}: {{t|pl|Ocean Arktyczny|m}} * {{fas}}: {{t|fa|اقیانوس منجمد شمالی‎|tr=oqyânus-e monjamed-e šomâli}} * {{isl}}: {{t|is|Norður-Íshaf|n}} * {{bak}}: {{t|ba|Төньяҡ Боҙло океан|tr=Tön’yaq Boðlo okean}} * {{eus}}: {{t|eu|Ozeano Artikoa}} * {{bel}}: {{t|be|Паўночны Ледавіты акіян|m|tr=Paŭnóčny Ljedavíty akiján}} * {{ben}}: {{t|bn|উত্তর মহাসাগর|tr=uttôr môhaśagôr}} * {{por}}: {{t|pt|oceano Ártico|m}} * {{bre}}: {{t|br|Meurvor Arktika|m}} * {{bul}}: {{t|bg|Северен ледовит океан|m|tr=Séveren ledovít okeán}} * {{cat-2}}: {{t|ca|Oceà Àrtic|m}} * {{chr}}: {{t|chr|ᏧᏴᏢ ᎠᎺᏉᎯ|tr=tsuyvtlv amequohi}} * {{heb}}: {{t|he|אוקיינוס הקרח הצפוני|m|tr=okyanós hakérakh hatsfoní}} * {{dan}}: {{t|da|Ishavet|n}}, {{t|da|Arktiske Hav|n}} * {{deu}}: {{t|de|Arktischer Ozean|m}} * {{est}}: {{t|et|Põhja-Jäämeri}} * {{gla}}: {{t|gd|Cuan Argtach|m}} * {{glg}}: {{t|gl|océano Ártico|m}} * {{kat}}: {{t|ka|ჩრდილოეთის ყინულოვანი ოკეანე|tr=črdiloetis q̇inulovani oḳeane}} * {{nld}}: {{t|nl|Arctische Oceaan|m}}, {{t|nl|Noordelijke IJszee|f}} * {{hin}}: {{t|hi|उत्तरध्रुवीय महासागर|m|tr=uttaradhruvīya mahāsāgar}} * {{hun}}: {{t|hu|Jeges-tenger}}, {{t|hu|Északi-sarki-óceán}} * {{ell}}: {{t|el|Αρκτικός Ωκεανός|m|tr=Arktikós Okeanós}} * {{ido}}: {{t|io|Arktika oceano}} * {{ind}}: {{t|id|Samudra Arktik}} * {{gle}}: {{t|ga|Aigéan Artach|m}} * {{kan}}: {{t|kn|ಆರ್ಕ್ಟಿಕ್ ಮಹಾಸಾಗರ|tr=ārkṭik mahāsāgara}} * {{kaz}}: {{t|kk|Солтүстік Мұзды мұхит|tr=Soltüstik Muzdı muxït}} * {{khm}}: {{t|km|មហាសមុទ្រអាកទិក|tr=mĕəʼhaasaʼmot ʼaaktɨk}} * {{kir}}: {{t|ky|Түндүк Муз океаны|tr=Tündük Muz okeanı}} * {{lao}}: {{t|lo|ມະຫາສະໝຸດອາກຕິກ|tr=ma hā sa mut ʼāk tik}} {{trans-mid}} * {{lat}}: {{t|la|Oceanus Arcticus|m}} * {{lav}}: {{t|lv|Ziemeļu Ledus okeāns|m}} * {{lit}}: {{t|lt|Arkties vandenynas}} * {{msa}}: {{t|ms|Lautan Artik}} * {{mkd}}: {{t|mk|Северен Леден Океан|m|tr=Severen Leden Okean}} * {{mal}}: {{t|ml|ആർട്ടിക് സമുദ്രം|tr=ārṭṭikŭ samudraṃ}} * {{mar}}: {{t|mr|आर्क्टिक महासागर|tr=ārkṭik mahāsāgar}} * {{mya}}: {{t|my|အာတိတ်သမုဒ္ဒရာ|tr=atitsa.mudda.ra}} * {{nor}}: ** {{nob}}: {{t|nb|Nordishavet}}, {{t|nb|Polhavet}} ** {{nno}}: {{t|nn|Nordishavet}}, {{t|nn|Polhavet}} * {{rus}}: {{t|ru|Северный Ледовитый океан|m|tr=Sévernyj Ledovítyj okeán}} * {{jpn}}: {{t|ja|北極海|tr=ほっきょくかい, Hokkyokukai}}, {{t|ja|北氷洋|tr=ほっぴょうよう, Hoppyōyō}}, {{t|ja|北極洋|tr=ほっきょくよう, Hokkyokuyō}} * {{fra}}: {{t|fr|océan Arctique|m}} * {{fin}}: {{t|fi|Pohjoinen jäämeri}} * {{epo}}: {{t|eo|Arkta Oceano}} * {{ron}}: {{t|ro|Oceanul Arctic|m}} * {{ces}}: {{t|cs|Severní ledový oceán|m}} * {{slk}}: {{t|sk|Severný ľadový oceán|m}} * {{slv}}: {{t|sl|Arktični ocean|m}} * {{tgl}}: {{t|tl|Karagatang Artiko}} * {{tgk}}: {{t|tg|Уқёнуси Яхбастаи шимолӣ|tr=Uqyonusi Yaxbastayi šimolī}} * {{tam}}: {{t|ta|ஆர்க்டிக் பெருங்கடல்|tr=ārkṭik peruṅkaṭal}} * {{tat}}: {{t|tt|Төньяк Боз океаны|tr=Tön’yak Boz oqeanı}} * {{spa}}: {{t|es|océano Ártico|m}} * {{tha}}: {{t|th|มหาสมุทรอาร์กติก|tr=má-hǎa-sà-mùt-áak-dtìk}} * {{tur}}: {{t|tr|Arktik Okyanusu}}, {{t|tr|Kuzey Buz Denizi}}, {{t|tr|Kuzey Buz Okyanusu}} * {{swe}}: {{t|sv|Norra ishavet|n}}, {{t|sv|Arktiska havet|n}}, {{t|sv|Arktiska oceanen|c}} * {{kor}}: {{t|ko|북극해|tr=Bukgeukhae}} * {{zho}}: ** {{cmn}}: {{t|cmn|北冰洋|tr=Běibīngyáng|sc=Hani}} * {{tuk}}: {{t|tk|Demirgazyk Buzly okean}} * {{urd}}: {{t|ur|بحر منجمد شمالی|m|tr=behr munjamid śimālī}} * {{uig}}: {{t|ug|شىمالىي مۇز ئوكيان|tr=shimaliy muz okyan}} * {{uzb}}: {{t|uz|Shimoliy Muz okeani}} * {{cym}}: {{t|cy|Cefnfor yr Arctig|m}} * {{ita}}: {{t|it|oceano Artico|m}} {{trans-bottom}} {{-see also-}} {{Đại dương/vie}} {{catname|Địa danh|tiếng Việt}} mpdd2ms5lankbq8yjkbn3dvnbiwfcar 2351033 2350770 2026-05-07T10:46:14Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351033 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Arctic Ocean.png|nhỏ|'''Bắc Băng Dương''' trên bản đồ thế giới.]] {{-etym-}} {{vie-etym-sino|北|phía [[bắc]]|冰|[[băng]]|洋|[[đại dương]], [[biển]] lớn}}. {{-pron-}} {{vie-pron}} {{-place-}} {{pn}} # [[đại dương|Đại dương]] nhỏ nhất trong năm đại dương của [[Trái Đất]], bao quanh [[Bắc Cực]], giáp với [[châu Á]], [[châu Âu]] và [[Bắc Mỹ]]. #* {{RQ:Doan Gioi Dat rung phuong Nam|chapter=Chương 6|passage=“Em có biết con panh-goanh không? Biết à? ừ, loài chim cánh cụt ở '''Bắc Băng Dương''' ấy, người ta bảo rằng nó có một bản năng huyền bí để tìm về tổ cũ.”}} #* '''2018''', D. Kim Thoa, ''[https://tuoitre.vn/bao-dong-vun-nhua-trong-bang-bac-cuc-20180425103027969.htm Báo động vụn nhựa trong băng Bắc Cực]'', {{w|Tuổi Trẻ (báo)|báo Tuổi Trẻ Online}}: #*: {{quote|vi|Giới khoa học cảnh báo nguy cơ tiềm ẩn từ mật độ kỷ lục của các mẩu nhựa nhỏ bị kẹt lại giữa các khối băng nổi trên '''Bắc Băng Dương'''.}} {{-trans-}} {{trans-top|Đại dương nhỏ nhất trong năm đại dương của Trái Đất}} * {{ara}}: {{t|ar|المحيط المتجمد الشمالي|m|tr=al-muḥīṭ al-mutajammid aš-šamāliyy}}, {{t|ar|المحيط الشمالي|m|tr=al-muḥīṭ aš-šamāliyy}} * {{afr}}: {{t|af|Arktiese Oseaan}} * {{sqi}}: {{t|sq|Oqeani Arktik|m}} * {{eng}}: {{t|en|Arctic Ocean}}, {{t|en|Arctic Sea}} * {{arg}}: {{t|an|Ocián Glacial Arctico}} * {{hye}}: {{t|hy|Հյուսիսային սառուցյալ օվկիանոս|tr=Hyusisayin saṙucʿyal ōvkianos}}, {{t|hy|Սառուցյալ օվկիանոս|tr=Saṙucʿyal ōvkianos}} * {{aze}}: {{t|az|Şimal Buzlu okean}} * {{pol}}: {{t|pl|Ocean Arktyczny|m}} * {{fas}}: {{t|fa|اقیانوس منجمد شمالی‎|tr=oqyânus-e monjamed-e šomâli}} * {{isl}}: {{t|is|Norður-Íshaf|n}} * {{bak}}: {{t|ba|Төньяҡ Боҙло океан|tr=Tön’yaq Boðlo okean}} * {{eus}}: {{t|eu|Ozeano Artikoa}} * {{bel}}: {{t|be|Паўночны Ледавіты акіян|m|tr=Paŭnóčny Ljedavíty akiján}} * {{ben}}: {{t|bn|উত্তর মহাসাগর|tr=uttôr môhaśagôr}} * {{por}}: {{t|pt|oceano Ártico|m}} * {{bre}}: {{t|br|Meurvor Arktika|m}} * {{bul}}: {{t|bg|Северен ледовит океан|m|tr=Séveren ledovít okeán}} * {{cat-old}}: {{t|ca|Oceà Àrtic|m}} * {{chr}}: {{t|chr|ᏧᏴᏢ ᎠᎺᏉᎯ|tr=tsuyvtlv amequohi}} * {{heb}}: {{t|he|אוקיינוס הקרח הצפוני|m|tr=okyanós hakérakh hatsfoní}} * {{dan}}: {{t|da|Ishavet|n}}, {{t|da|Arktiske Hav|n}} * {{deu}}: {{t|de|Arktischer Ozean|m}} * {{est}}: {{t|et|Põhja-Jäämeri}} * {{gla}}: {{t|gd|Cuan Argtach|m}} * {{glg}}: {{t|gl|océano Ártico|m}} * {{kat}}: {{t|ka|ჩრდილოეთის ყინულოვანი ოკეანე|tr=črdiloetis q̇inulovani oḳeane}} * {{nld}}: {{t|nl|Arctische Oceaan|m}}, {{t|nl|Noordelijke IJszee|f}} * {{hin}}: {{t|hi|उत्तरध्रुवीय महासागर|m|tr=uttaradhruvīya mahāsāgar}} * {{hun}}: {{t|hu|Jeges-tenger}}, {{t|hu|Északi-sarki-óceán}} * {{ell}}: {{t|el|Αρκτικός Ωκεανός|m|tr=Arktikós Okeanós}} * {{ido}}: {{t|io|Arktika oceano}} * {{ind}}: {{t|id|Samudra Arktik}} * {{gle}}: {{t|ga|Aigéan Artach|m}} * {{kan}}: {{t|kn|ಆರ್ಕ್ಟಿಕ್ ಮಹಾಸಾಗರ|tr=ārkṭik mahāsāgara}} * {{kaz}}: {{t|kk|Солтүстік Мұзды мұхит|tr=Soltüstik Muzdı muxït}} * {{khm}}: {{t|km|មហាសមុទ្រអាកទិក|tr=mĕəʼhaasaʼmot ʼaaktɨk}} * {{kir}}: {{t|ky|Түндүк Муз океаны|tr=Tündük Muz okeanı}} * {{lao}}: {{t|lo|ມະຫາສະໝຸດອາກຕິກ|tr=ma hā sa mut ʼāk tik}} {{trans-mid}} * {{lat}}: {{t|la|Oceanus Arcticus|m}} * {{lav}}: {{t|lv|Ziemeļu Ledus okeāns|m}} * {{lit}}: {{t|lt|Arkties vandenynas}} * {{msa}}: {{t|ms|Lautan Artik}} * {{mkd}}: {{t|mk|Северен Леден Океан|m|tr=Severen Leden Okean}} * {{mal}}: {{t|ml|ആർട്ടിക് സമുദ്രം|tr=ārṭṭikŭ samudraṃ}} * {{mar}}: {{t|mr|आर्क्टिक महासागर|tr=ārkṭik mahāsāgar}} * {{mya}}: {{t|my|အာတိတ်သမုဒ္ဒရာ|tr=atitsa.mudda.ra}} * {{nor}}: ** {{nob}}: {{t|nb|Nordishavet}}, {{t|nb|Polhavet}} ** {{nno}}: {{t|nn|Nordishavet}}, {{t|nn|Polhavet}} * {{rus}}: {{t|ru|Северный Ледовитый океан|m|tr=Sévernyj Ledovítyj okeán}} * {{jpn}}: {{t|ja|北極海|tr=ほっきょくかい, Hokkyokukai}}, {{t|ja|北氷洋|tr=ほっぴょうよう, Hoppyōyō}}, {{t|ja|北極洋|tr=ほっきょくよう, Hokkyokuyō}} * {{fra}}: {{t|fr|océan Arctique|m}} * {{fin}}: {{t|fi|Pohjoinen jäämeri}} * {{epo}}: {{t|eo|Arkta Oceano}} * {{ron}}: {{t|ro|Oceanul Arctic|m}} * {{ces}}: {{t|cs|Severní ledový oceán|m}} * {{slk}}: {{t|sk|Severný ľadový oceán|m}} * {{slv}}: {{t|sl|Arktični ocean|m}} * {{tgl}}: {{t|tl|Karagatang Artiko}} * {{tgk}}: {{t|tg|Уқёнуси Яхбастаи шимолӣ|tr=Uqyonusi Yaxbastayi šimolī}} * {{tam}}: {{t|ta|ஆர்க்டிக் பெருங்கடல்|tr=ārkṭik peruṅkaṭal}} * {{tat}}: {{t|tt|Төньяк Боз океаны|tr=Tön’yak Boz oqeanı}} * {{spa}}: {{t|es|océano Ártico|m}} * {{tha}}: {{t|th|มหาสมุทรอาร์กติก|tr=má-hǎa-sà-mùt-áak-dtìk}} * {{tur}}: {{t|tr|Arktik Okyanusu}}, {{t|tr|Kuzey Buz Denizi}}, {{t|tr|Kuzey Buz Okyanusu}} * {{swe}}: {{t|sv|Norra ishavet|n}}, {{t|sv|Arktiska havet|n}}, {{t|sv|Arktiska oceanen|c}} * {{kor}}: {{t|ko|북극해|tr=Bukgeukhae}} * {{zho}}: ** {{cmn}}: {{t|cmn|北冰洋|tr=Běibīngyáng|sc=Hani}} * {{tuk}}: {{t|tk|Demirgazyk Buzly okean}} * {{urd}}: {{t|ur|بحر منجمد شمالی|m|tr=behr munjamid śimālī}} * {{uig}}: {{t|ug|شىمالىي مۇز ئوكيان|tr=shimaliy muz okyan}} * {{uzb}}: {{t|uz|Shimoliy Muz okeani}} * {{cym}}: {{t|cy|Cefnfor yr Arctig|m}} * {{ita}}: {{t|it|oceano Artico|m}} {{trans-bottom}} {{-see also-}} {{Đại dương/vie}} {{catname|Địa danh|tiếng Việt}} 3t7vv9aouwphmshaeiahhdgy4yoa72c Đại Tây Dương 0 259064 2350771 2128044 2026-05-07T08:00:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350771 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etym-}} Phiên âm từ chữ Hán [[大西洋]]. Trong đó [[大]] (“đại, lớn”), [[西洋]] (“đại dương phía tây”). {{-place-}} '''Đại Tây Dương''' # [[đại dương|Đại dương]] [[nằm]] giữa [[châu Mỹ]] về phía [[tây]], [[châu Âu]] và [[châu]] [[Phi]] về phía [[đông]]. {{-trans-}} {{đầu}} * {{afr}}: [[Atlantiese Oseaan]] * {{sqi}}: [[Oqeani Atlantik]] {{m}} * {{eng}}: [[Atlantic Ocean]] * {{ang}}: [[Westsǣ]] {{m}} * {{pol}}: [[Ocean Atlantycki]] {{m}}, [[Atlantyk]] {{m}} * {{eus}}: [[Ozeano Atlantikoa]] * {{isl}}: [[Atlantshaf]] {{n}} * {{por}}: [[Atlântico]] {{m}} * {{cat-2}}: [[Oceà Atlàntic]] {{m}} * {{dan}}: [[Atlanterhavet]] {{cuối}} {{-see also-}} {{Đại dương/vie}} [[Thể loại:Địa danh tiếng Việt]] 3cu4v8801tb12n1n7pa52y50wfklvwg 2351034 2350771 2026-05-07T10:46:17Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351034 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-etym-}} Phiên âm từ chữ Hán [[大西洋]]. Trong đó [[大]] (“đại, lớn”), [[西洋]] (“đại dương phía tây”). {{-place-}} '''Đại Tây Dương''' # [[đại dương|Đại dương]] [[nằm]] giữa [[châu Mỹ]] về phía [[tây]], [[châu Âu]] và [[châu]] [[Phi]] về phía [[đông]]. {{-trans-}} {{đầu}} * {{afr}}: [[Atlantiese Oseaan]] * {{sqi}}: [[Oqeani Atlantik]] {{m}} * {{eng}}: [[Atlantic Ocean]] * {{ang}}: [[Westsǣ]] {{m}} * {{pol}}: [[Ocean Atlantycki]] {{m}}, [[Atlantyk]] {{m}} * {{eus}}: [[Ozeano Atlantikoa]] * {{isl}}: [[Atlantshaf]] {{n}} * {{por}}: [[Atlântico]] {{m}} * {{cat-old}}: [[Oceà Atlàntic]] {{m}} * {{dan}}: [[Atlanterhavet]] {{cuối}} {{-see also-}} {{Đại dương/vie}} [[Thể loại:Địa danh tiếng Việt]] hjmdyc9mfvwz9j8iftkgrovoaque9nb tiếng Séc 0 259173 2350772 2028779 2026-05-07T08:00:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350772 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tiếng Séc''' # Một [[ngôn ngữ]] thuộc [[w:Ngữ tộc Slav|ngữ tộc Slav]], được [[nói]] [[chủ yếu]] tại [[Cộng hòa Séc]]. {{-trans-}} {{đầu}} * {{afr}}: [[Tsjeggies]] * {{eng}}: [[Czech]] * {{arg}}: [[Idioma checo]] * {{ast}}: [[checu]] {{m}} * {{pol}}: [[czeski]] {{m}} * {{eus}}: [[txekiera]] * {{cat-2}}: [[txec]] {{m}} * {{fra}}: [[tchèque]] * {{ces}}: [[čeština]] {{f}}, [[český jazyk]] {{m}} * {{slk}}: [[čeština]] {{f}}, [[český jazyk]] {{m}} * {{spa}}: [[checo]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] h898n731nmy98smz1h7hbdnpdzdvtut 2351035 2350772 2026-05-07T10:46:20Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351035 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''tiếng Séc''' # Một [[ngôn ngữ]] thuộc [[w:Ngữ tộc Slav|ngữ tộc Slav]], được [[nói]] [[chủ yếu]] tại [[Cộng hòa Séc]]. {{-trans-}} {{đầu}} * {{afr}}: [[Tsjeggies]] * {{eng}}: [[Czech]] * {{arg}}: [[Idioma checo]] * {{ast}}: [[checu]] {{m}} * {{pol}}: [[czeski]] {{m}} * {{eus}}: [[txekiera]] * {{cat-old}}: [[txec]] {{m}} * {{fra}}: [[tchèque]] * {{ces}}: [[čeština]] {{f}}, [[český jazyk]] {{m}} * {{slk}}: [[čeština]] {{f}}, [[český jazyk]] {{m}} * {{spa}}: [[checo]] {{m}} {{cuối}} [[Thể loại:Danh từ tiếng Việt]] d108jf2ae2kvtbwaczg5hq4eu1ifjvi tê giác đen 0 259328 2350773 2018026 2026-05-07T08:00:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350773 wikitext text/x-wiki {{-vie-}} {{-info-}} [[File:Black_rhino.jpg|nhỏ|'''Tê giác đen'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''tê giác đen''' # Một loài [[động vật có vú]] thuộc [[bộ guốc lẻ]], sinh sống tại các khu vực miền đông và trung [[châu Phi]], có [[tên khoa học]] là ''[[species:Diceros bicornis|Diceros bicornis]]''. #: '''''Tê giác đen''' Đông Phi từng sinh sống trên các thảo nguyên ở Rwanda nhưng biến mất hoàn toàn vào năm 2007 do nạn săn bắn.'' (Đoàn Dương, “[https://vnexpress.net/no-luc-hoi-sinh-loai-te-giac-den-quy-hiem-o-rwanda-3943082.html Nỗ lực hồi sinh loài tê giác đen quý hiếm ở Rwanda]”, {{w|báo VnExpress}}) {{-trans-}} {{trans-top|Loài động vật có vú thuộc bộ guốc lẻ}} * {{afr}}: [[swartrenoster]] * {{eng}}: [[black rhinoceros]] * {{bre}}: [[frikorneg du]] * {{bul}}: [[черен носорог]] (čeren nosorog) * {{cat-2}}: [[rinoceront negre]] * {{glg}}: [[rinoceronte negro]] {{m}} * {{deu}}: [[Spitzmaulnashorn]] * {{nld}}: [[zwarte neushoorn]] * {{fra}}: [[rhinocéros noir]] {{m}} * {{ces}}: [[nosorožec dvourohý]] {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vie:Tê giác]] 01x5ou4q7q3kalkcsg5lah62enpkt34 2351036 2350773 2026-05-07T10:46:23Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351036 wikitext text/x-wiki {{-vie-}} {{-info-}} [[File:Black_rhino.jpg|nhỏ|'''Tê giác đen'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''tê giác đen''' # Một loài [[động vật có vú]] thuộc [[bộ guốc lẻ]], sinh sống tại các khu vực miền đông và trung [[châu Phi]], có [[tên khoa học]] là ''[[species:Diceros bicornis|Diceros bicornis]]''. #: '''''Tê giác đen''' Đông Phi từng sinh sống trên các thảo nguyên ở Rwanda nhưng biến mất hoàn toàn vào năm 2007 do nạn săn bắn.'' (Đoàn Dương, “[https://vnexpress.net/no-luc-hoi-sinh-loai-te-giac-den-quy-hiem-o-rwanda-3943082.html Nỗ lực hồi sinh loài tê giác đen quý hiếm ở Rwanda]”, {{w|báo VnExpress}}) {{-trans-}} {{trans-top|Loài động vật có vú thuộc bộ guốc lẻ}} * {{afr}}: [[swartrenoster]] * {{eng}}: [[black rhinoceros]] * {{bre}}: [[frikorneg du]] * {{bul}}: [[черен носорог]] (čeren nosorog) * {{cat-old}}: [[rinoceront negre]] * {{glg}}: [[rinoceronte negro]] {{m}} * {{deu}}: [[Spitzmaulnashorn]] * {{nld}}: [[zwarte neushoorn]] * {{fra}}: [[rhinocéros noir]] {{m}} * {{ces}}: [[nosorožec dvourohý]] {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:vie:Tê giác]] 8vksc0igk6ksnqfcaoiu41qkna2h73d cối xay gió 0 259347 2350774 2281320 2026-05-07T08:00:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350774 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập_tin:Krefeld,_Egelsbergmühle,_2011-08_CN-01.jpg|nhỏ|'''Cối xay gió'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''cối xay gió''' # Một loại [[máy]] chạy bằng [[sức]] [[gió]], được thiết kế để biến [[năng lượng]] gió thành các dạng năng lượng khác [[hữu dụng]] hơn. #: ''Chợt hai thầy trò phát hiện có ba bốn chục chiếc '''cối xay gió''' giữa đồng, và Đôn Ki-hô-tê vừa nhìn thấy liền nói với giám mã'' ({{w|Miguel de Cervantes}}, “{{w|Don Quijote}} [Đôn Ki-hô-tê]”, Phùng Văn Tửu dịch theo bản tiếng Pháp) {{-syn-}} * [[máy xay gió]] {{-trans-}} {{trans-top|Một loại máy chạy bằng sức gió}} * {{ara}}: [[طاحونة هوائية]] {{f}} * {{afr}}: [[windmeul]] * {{eng}}: [[windmill]] * {{hye}}: [[հողմաղաց]] (hołmałacʿ) * {{pol}}: [[wiatrak]] {{g|m}} * {{isl}}: [[vindmylla]] {{f}} * {{bel}}: [[вятрак]] (vjatrak) * {{bre}}: [[milin-avel]] {{f}} * {{cat-2}}: [[molí de vent]] {{g|m}} * {{heb}}: [[טחנת רוח]] {{f}} * {{dan}}: [[vindmølle#Tiếng Đan Mạch|vindmølle]] {{g|c}} * {{deu}}: [[Windmühle]] {{f}} * {{kat}}: [[ქარის წისქვილი]] (karis c̣iskvili) * {{nld}}: [[windmolen]] {{g|m}} * {{hin}}: [[पवनचक्की]] (pavancakkī) * {{ell}}: [[ανεμόμυλος]] {{g|m}} (anemómylos) * {{ido}}: [[ventomuelilo]] * {{ind}}: [[kincir angin#Tiếng Mã Lai|kincir angin]] * {{gle}}: [[muileann gaoithe]] {{g|m}} * {{kaz}}: [[жел диірмені]] (jel dïirmeni) * {{msa}}: [[kincir angin#Tiếng Mã Lai|kincir angin]] * {{mkd}}: [[ветерница]] {{f}} (veternica) * {{nor}}: ** {{nob}}: [[vindmølle#Tiếng Na Uy (Bokmål)|vindmølle]] {{g|m}} hoặc {{f}} ** {{nno}}: [[vindmølle#Tiếng Na Uy (Nynorsk)|vindmølle]] {{f}} * {{jpn}}: [[風車#Tiếng Nhật|風車]] (ふうしゃ, fūsha) * {{fra}}: [[moulin à vent]] {{g|m}} * {{fin}}: [[tuulimylly]] * {{epo}}: [[ventmuelejo]] * {{ces}}: [[větrný mlýn]] {{g|m}} * {{tgl}}: [[mulino]] * {{kor}}: [[풍차]] (pungcha) * {{zho}}: ** {{cmn}}: [[風車#Tiếng Quang Thoại|風車]], [[风车]] (fēngchē, phong xa) * {{cym}}: [[melin wynt]] {{f}} * {{ita}}: [[mulino a vento]] {{g|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 46up207gh66rn29mwqm4tvnorih819r 2351037 2350774 2026-05-07T10:46:26Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351037 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập_tin:Krefeld,_Egelsbergmühle,_2011-08_CN-01.jpg|nhỏ|'''Cối xay gió'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''cối xay gió''' # Một loại [[máy]] chạy bằng [[sức]] [[gió]], được thiết kế để biến [[năng lượng]] gió thành các dạng năng lượng khác [[hữu dụng]] hơn. #: ''Chợt hai thầy trò phát hiện có ba bốn chục chiếc '''cối xay gió''' giữa đồng, và Đôn Ki-hô-tê vừa nhìn thấy liền nói với giám mã'' ({{w|Miguel de Cervantes}}, “{{w|Don Quijote}} [Đôn Ki-hô-tê]”, Phùng Văn Tửu dịch theo bản tiếng Pháp) {{-syn-}} * [[máy xay gió]] {{-trans-}} {{trans-top|Một loại máy chạy bằng sức gió}} * {{ara}}: [[طاحونة هوائية]] {{f}} * {{afr}}: [[windmeul]] * {{eng}}: [[windmill]] * {{hye}}: [[հողմաղաց]] (hołmałacʿ) * {{pol}}: [[wiatrak]] {{g|m}} * {{isl}}: [[vindmylla]] {{f}} * {{bel}}: [[вятрак]] (vjatrak) * {{bre}}: [[milin-avel]] {{f}} * {{cat-old}}: [[molí de vent]] {{g|m}} * {{heb}}: [[טחנת רוח]] {{f}} * {{dan}}: [[vindmølle#Tiếng Đan Mạch|vindmølle]] {{g|c}} * {{deu}}: [[Windmühle]] {{f}} * {{kat}}: [[ქარის წისქვილი]] (karis c̣iskvili) * {{nld}}: [[windmolen]] {{g|m}} * {{hin}}: [[पवनचक्की]] (pavancakkī) * {{ell}}: [[ανεμόμυλος]] {{g|m}} (anemómylos) * {{ido}}: [[ventomuelilo]] * {{ind}}: [[kincir angin#Tiếng Mã Lai|kincir angin]] * {{gle}}: [[muileann gaoithe]] {{g|m}} * {{kaz}}: [[жел диірмені]] (jel dïirmeni) * {{msa}}: [[kincir angin#Tiếng Mã Lai|kincir angin]] * {{mkd}}: [[ветерница]] {{f}} (veternica) * {{nor}}: ** {{nob}}: [[vindmølle#Tiếng Na Uy (Bokmål)|vindmølle]] {{g|m}} hoặc {{f}} ** {{nno}}: [[vindmølle#Tiếng Na Uy (Nynorsk)|vindmølle]] {{f}} * {{jpn}}: [[風車#Tiếng Nhật|風車]] (ふうしゃ, fūsha) * {{fra}}: [[moulin à vent]] {{g|m}} * {{fin}}: [[tuulimylly]] * {{epo}}: [[ventmuelejo]] * {{ces}}: [[větrný mlýn]] {{g|m}} * {{tgl}}: [[mulino]] * {{kor}}: [[풍차]] (pungcha) * {{zho}}: ** {{cmn}}: [[風車#Tiếng Quang Thoại|風車]], [[风车]] (fēngchē, phong xa) * {{cym}}: [[melin wynt]] {{f}} * {{ita}}: [[mulino a vento]] {{g|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] npma6xvyf811ekrp2swbnw7cdbx2ghp thú mỏ vịt 0 259748 2350775 2019960 2026-05-07T08:00:51Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350775 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Platypus.jpg|nhỏ|'''Thú mỏ vịt'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''thú mỏ vịt''' # Một loài [[động vật có vú]] [[đẻ trứng]] [[bán thuỷ sinh]], có [[tên khoa học]] là ''[[Ornithorhynchus anatinus]]''. {{-trans-}} {{trans-top|Một loài động vật có vú}} * {{afr}}: [[eendbekdier]] * {{sqi}}: [[sqepori]] * {{eng}}: [[platypus]] * {{aze}}: [[ördəkburun]] * {{eus}}: [[ornitorrinko]] * {{cat-2}}: [[ornitorinc]] {{m}} * {{dan}}: [[næbdyr]] {{n}} * {{nld}}: [[vogelbekdier]] {{n}} * {{ces}}: [[ptakopysk]] {{m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] ek4n31tkokoqo31j4q4rswoijybnh1v 2351038 2350775 2026-05-07T10:46:29Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351038 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Platypus.jpg|nhỏ|'''Thú mỏ vịt'''.]] {{-pron-}} {{vie-pron}} {{-noun-}} '''thú mỏ vịt''' # Một loài [[động vật có vú]] [[đẻ trứng]] [[bán thuỷ sinh]], có [[tên khoa học]] là ''[[Ornithorhynchus anatinus]]''. {{-trans-}} {{trans-top|Một loài động vật có vú}} * {{afr}}: [[eendbekdier]] * {{sqi}}: [[sqepori]] * {{eng}}: [[platypus]] * {{aze}}: [[ördəkburun]] * {{eus}}: [[ornitorrinko]] * {{cat-old}}: [[ornitorinc]] {{m}} * {{dan}}: [[næbdyr]] {{n}} * {{nld}}: [[vogelbekdier]] {{n}} * {{ces}}: [[ptakopysk]] {{m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 1cc9i3gvwyvdpfzu9oue01wn27a5cg4 bọ cạp 0 260050 2350776 2021997 2026-05-07T08:00:54Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350776 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Scorpion Photograph By Shantanu Kuveskar.jpg|nhỏ|'''Bọ cạp''' đỏ Ấn Độ, ''{{w|Hottentotta tamulus}}''.]] {{-alternative form-}} * [[bò cạp]] {{-pron-}} {{vie-pron}} {{-paro-}} * [[bò cạp]] * [[Bọ Cạp]] {{-noun-}} '''bọ cạp''' # {{term|Động vật học}} Loài [[động vật không xương sống]], có tám [[chân]], được đặc trưng bởi một chiếc [[đuôi]] có [[nọc độc]]. #: ''Bị '''bọ cạp''' cắn có thể gây ảnh hưởng nghiêm trọng đến sức khỏe.'' {{-usage-}} * Từ này thường bị phát âm sai và viết sai thành “[[bò cạp]]”. {{-trans-}} {{trans-top|Loài động vật không xương sống}} * {{eng}}: [[scorpion#Tiếng Anh|scorpion]] * {{pol}}: [[skorpion#Tiếng Ba Lan|skorpion]] {{m}} * {{cat-2}}: [[escorpí]] {{m}} * {{deu}}: [[Skorpion#Tiếng Đức|Skorpion]] {{m}} * {{nld}}: [[schorpioen]] {{m}} * {{ind}}: [[kalajengking]] * {{fra}}: [[scorpion#Tiếng Pháp|scorpion]] {{m}} * {{ita}}: [[scorpione#Tiếng Ý|scorpione]] {{m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Động vật học]] a8f9s468omv49tcijkbfcelkmny07zm 2351039 2350776 2026-05-07T10:46:32Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351039 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Scorpion Photograph By Shantanu Kuveskar.jpg|nhỏ|'''Bọ cạp''' đỏ Ấn Độ, ''{{w|Hottentotta tamulus}}''.]] {{-alternative form-}} * [[bò cạp]] {{-pron-}} {{vie-pron}} {{-paro-}} * [[bò cạp]] * [[Bọ Cạp]] {{-noun-}} '''bọ cạp''' # {{term|Động vật học}} Loài [[động vật không xương sống]], có tám [[chân]], được đặc trưng bởi một chiếc [[đuôi]] có [[nọc độc]]. #: ''Bị '''bọ cạp''' cắn có thể gây ảnh hưởng nghiêm trọng đến sức khỏe.'' {{-usage-}} * Từ này thường bị phát âm sai và viết sai thành “[[bò cạp]]”. {{-trans-}} {{trans-top|Loài động vật không xương sống}} * {{eng}}: [[scorpion#Tiếng Anh|scorpion]] * {{pol}}: [[skorpion#Tiếng Ba Lan|skorpion]] {{m}} * {{cat-old}}: [[escorpí]] {{m}} * {{deu}}: [[Skorpion#Tiếng Đức|Skorpion]] {{m}} * {{nld}}: [[schorpioen]] {{m}} * {{ind}}: [[kalajengking]] * {{fra}}: [[scorpion#Tiếng Pháp|scorpion]] {{m}} * {{ita}}: [[scorpione#Tiếng Ý|scorpione]] {{m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Động vật học]] 7zl3wz3mos99w2etazuafkj91xax72a Anh giáo 0 260556 2350777 2097659 2026-05-07T08:00:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350777 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''Anh giáo''' # Một [[giáo hội]] của [[đạo]] [[Tin Lành]] nhưng [[tổ chức]] [[độc lập]], là [[quốc giáo]] của nước [[Anh]] trong [[thời kì]] [[cải cách]] [[tôn giáo]] nửa đầu [[thế kỉ]] [[XVI]]. {{-syn-}} * [[đạo Anh quốc]] {{-trans-}} {{trans-top|Hệ phái Tin Lành}} * {{eng}}: {{t|en|Anglicanism}} * {{hye}}: {{t|hy|անգլիկանութիւն}} * {{pol}}: {{t|pl|anglikanizm|m}} * {{eus}}: {{t|eu|anglikanismo}} * {{bel}}: {{t|be|англіка́нства|n}} * {{por}}: {{t|pt|anglicanismo|m}} * {{bul}}: {{t|bg|англиканство|n}} * {{cat-2}}: {{t|ca|anglicanisme|m}} * {{dan}}: {{t|da|anglikanisme|c}} * {{deu}}: {{t|de|Anglikanismus|m}} * {{kat}}: {{t|ka|ანგლიკანიზმი}} * {{nld}}: {{t|nl|anglicanisme|n}} * {{hun}}: {{t|hu|anglikanizmus}} * {{ell}}: {{t|el|αγγλικανισμός|m}} * {{ind}}: {{t|id|Anglikanisme}} * {{gle}}: {{t|ga|Anglacánachas|m}} {{trans-mid}} * {{lav}}: {{t|lv|anglikānisms|m}} * {{lit}}: {{t|lt|anglikonizmas|m}} * {{nor}}: {{t|no|anglikanisme|m}} * {{rus}}: {{t|ru|англика́нство|n}} * {{jpn}}: {{t|ja|聖公会|tr=せいこうかい, seikōkai}} * {{fra}}: {{t|fr|anglicanisme|m}} * {{fin}}: {{t|fi|anglikaanisuus}} * {{epo}}: {{t|eo|anglikanismo}} * {{ron}}: {{t|ro|anglicanism|n}} * {{ces}}: {{t|cs|anglikánství|n}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|англика́нство|n}} *: {{Latn}}: {{t|sh|anglikánstvo|n}} * {{slk}}: {{t|sk|anglikanizmus|m}} * {{slv}}: {{t|sl|anglikanizem|m}} * {{spa}}: {{t|es|anglicanismo|m}} * {{tur}}: {{t|tr|Anglikanizm}} * {{swe}}: {{t|sv|anglikanism|c}} * {{kor}}: {{t|ko|성공회|tr=seonggonghoe}} * {{zho}}: *: {{cmn}}: {{t|cmn|聖公宗}}, {{t|cmn|圣公宗|tr=shènggōngzōng}}, {{t|cmn|聖公會}}, {{t|cmn|圣公会|tr=shènggōnghuì}} * {{ukr}}: {{t|uk|англіка́нство|n}} * {{ita}}: {{t|it|anglicanesimo|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] omuqabwyslsgj87v6xprh3zxdhkkqdi 2351040 2350777 2026-05-07T10:46:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351040 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''Anh giáo''' # Một [[giáo hội]] của [[đạo]] [[Tin Lành]] nhưng [[tổ chức]] [[độc lập]], là [[quốc giáo]] của nước [[Anh]] trong [[thời kì]] [[cải cách]] [[tôn giáo]] nửa đầu [[thế kỉ]] [[XVI]]. {{-syn-}} * [[đạo Anh quốc]] {{-trans-}} {{trans-top|Hệ phái Tin Lành}} * {{eng}}: {{t|en|Anglicanism}} * {{hye}}: {{t|hy|անգլիկանութիւն}} * {{pol}}: {{t|pl|anglikanizm|m}} * {{eus}}: {{t|eu|anglikanismo}} * {{bel}}: {{t|be|англіка́нства|n}} * {{por}}: {{t|pt|anglicanismo|m}} * {{bul}}: {{t|bg|англиканство|n}} * {{cat-old}}: {{t|ca|anglicanisme|m}} * {{dan}}: {{t|da|anglikanisme|c}} * {{deu}}: {{t|de|Anglikanismus|m}} * {{kat}}: {{t|ka|ანგლიკანიზმი}} * {{nld}}: {{t|nl|anglicanisme|n}} * {{hun}}: {{t|hu|anglikanizmus}} * {{ell}}: {{t|el|αγγλικανισμός|m}} * {{ind}}: {{t|id|Anglikanisme}} * {{gle}}: {{t|ga|Anglacánachas|m}} {{trans-mid}} * {{lav}}: {{t|lv|anglikānisms|m}} * {{lit}}: {{t|lt|anglikonizmas|m}} * {{nor}}: {{t|no|anglikanisme|m}} * {{rus}}: {{t|ru|англика́нство|n}} * {{jpn}}: {{t|ja|聖公会|tr=せいこうかい, seikōkai}} * {{fra}}: {{t|fr|anglicanisme|m}} * {{fin}}: {{t|fi|anglikaanisuus}} * {{epo}}: {{t|eo|anglikanismo}} * {{ron}}: {{t|ro|anglicanism|n}} * {{ces}}: {{t|cs|anglikánství|n}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|англика́нство|n}} *: {{Latn}}: {{t|sh|anglikánstvo|n}} * {{slk}}: {{t|sk|anglikanizmus|m}} * {{slv}}: {{t|sl|anglikanizem|m}} * {{spa}}: {{t|es|anglicanismo|m}} * {{tur}}: {{t|tr|Anglikanizm}} * {{swe}}: {{t|sv|anglikanism|c}} * {{kor}}: {{t|ko|성공회|tr=seonggonghoe}} * {{zho}}: *: {{cmn}}: {{t|cmn|聖公宗}}, {{t|cmn|圣公宗|tr=shènggōngzōng}}, {{t|cmn|聖公會}}, {{t|cmn|圣公会|tr=shènggōnghuì}} * {{ukr}}: {{t|uk|англіка́нство|n}} * {{ita}}: {{t|it|anglicanesimo|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] c6kcgf0d14ufp9b7ow67zbup0d077xg Mô đun:debug 828 260848 2350462 2170827 2026-05-06T13:44:58Z Hiyuune 50834 2350462 Scribunto text/plain local export = {} local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local byte = string.byte local concat = table.concat local escape -- defined below local format = string.format local gsub = string.gsub local insert = table.insert local match = string.match local sub = string.sub local toNFC = mw.ustring.toNFC local function is_array(...) is_array = require(table_module).isArray return is_array(...) end local function isutf8(...) isutf8 = require(string_utilities_module).isutf8 return isutf8(...) end local function sorted_pairs(...) sorted_pairs = require(table_module).sortedPairs return sorted_pairs(...) end local function table_size(...) table_size = require(table_module).size return table_size(...) end do local escapes local function get_escapes() escapes, get_escapes = { ["\a"] = [[\a]], ["\b"] = [[\b]], ["\t"] = [[\t]], ["\n"] = [[\n]], ["\v"] = [[\v]], ["\f"] = [[\f]], ["\r"] = [[\r]], ["\""] = [[\"]], ["'"] = [[\']], ["\\"] = [[\\]], }, nil return escapes end local function escape_byte(ch) return (escapes or get_escapes())[ch] or format("\\%03d", byte(ch)) end local function escape_bytes(ch) return (gsub(ch, ".", escape_byte)) end local function escape_char(ch) local ch_len = #ch if ch_len == 1 then return escape_byte(ch) end local b = byte(ch) -- Matching bytes below \128 are all to be escaped, \128 to \191 can't -- be leading bytes in UTF-8, \192 and \193 could only occur in overlong -- encodings, so can't occur in UTF-8, U+0080 (\194\128) to U+009F -- (\194\159) are control characters, U+00A0 (\194\160) is the no-break -- space, and \245 to \255 could only occur in encodings for codepoints -- above U+10FFFF, so can't occur in UTF-8. if b < 194 or b > 244 or (b == 194 and byte(ch, 2) < 161) then return escape_bytes(ch) -- 2-byte encodings starting \194 to \223 are all valid, so no need to -- check them with isutf8(). If there are additional trailing -- bytes, escape them. elseif b < 224 then return ch_len == 2 and ch or (sub(ch, 1, 2) .. escape_bytes(sub(ch, 3))) end -- Check 3- and 4-byte encodings with isutf8(), as they might be -- invalid due to overlong encodings or being above U+10FFFF. As above, -- escape any additional trailing bytes. local n = b < 240 and 3 or 4 if ch_len == n then return isutf8(ch) and ch or escape_bytes(ch) elseif ch_len > n then local init_ch = sub(ch, 1, n) if isutf8(init_ch) then return init_ch .. escape_bytes(sub(ch, n + 1)) end end return escape_bytes(ch) end local function escape_non_NFC(str) local normalized = toNFC(str) if normalized == str then return str end local str_len, i, start, offset, output = #str, 1, 1, 0 while i <= str_len do local b = byte(str, i) if b == byte(normalized, i + offset) then i = i + 1 else if output == nil then output = {} end -- Backtrack to the start of the character. while b >= 128 and b < 192 do i = i - 1 b = byte(str, i) end -- Insert any intermediate characters up to this point. if start ~= i then insert(output, sub(str, start, i - 1)) end -- Get the first character, then find the sequence of characters -- which differs from the normalized string. local seq = match(str, "^.[\128-\191]*", i) -- Find the raw sequence and the normalized sequence by adding -- a character at a time to the raw sequence, and checking if -- it matches the current point in the normalized string. -- This is necessary to ensure that the offset between the two -- strings is correct, when comparing equivalent sections. local seq_len, poss_seq, norm_seq = #seq, seq while true do if not norm_seq then norm_seq = match(normalized, "^" .. toNFC(poss_seq), i + offset) -- Once a matching sequence has been found, check if it's -- still possible to match the same normalized sequence with -- a longer raw sequence, as form NFC will have taken the -- longest sequence when normalizing the input. elseif toNFC(poss_seq) ~= norm_seq then break end seq, seq_len = poss_seq, #poss_seq local nxt_ch = match(str, "^.[\128-\191]*", i + seq_len) if nxt_ch == nil then break end poss_seq = poss_seq .. nxt_ch end -- Modify the offset to account for the difference in length -- between the two sequences. Usually, the NFC form will be -- shorter, but in rare cases it is longer (e.g. U+0F73 -- normalizes to U+0F71 + U+0F72). offset = offset + #norm_seq - seq_len i = i + seq_len start = i -- Escape the non-ASCII portion of the sequence. This ensures -- that escapes added by escape_char don't end up double-escaped -- if they would otherwise be modified by form NFC; e.g. "\n" + -- U+0303 ("\ñ") needs to avoid escaping the "n". if seq ~= "" then insert(output, (gsub(seq, "[\128-\255]", escape_byte))) end end end if output == nil then return str end insert(output, sub(str, start)) return concat(output) end -- Escapes control characters, backslash, double quote, the no-break space, -- bytes that aren't used in UTF-8, invalid UTF-8 character sequences, and -- any bytes necessary to ensure that the output is Unicode form NFC, -- because MediaWiki automatically converts page content to form NFC; e.g. -- "e" + U+0301 ("é") results in "e\204\129", because otherwise the sequence -- would be converted to "é" (U+00E9)); this ensures that results can be -- relied upon to be stable if saved as part of page content. function export.escape(str) return escape_non_NFC(gsub(str, "[%c\"'\\\128-\255][\128-\191]*", escape_char)) end escape = export.escape end -- Convert a value to a string function export.dump(value, prefix, tsort) local t = type(value) prefix = prefix or "" if t == "string" then return '"' .. escape(value) .. '"' elseif t == "table" then local str_table = {} insert(str_table, " {") for key, val in sorted_pairs(value, tsort) do insert(str_table, " " .. prefix .. "\t[" .. export.dump(key, prefix .. "\t") .. "] = " .. gsub(export.dump(val, prefix .. "\t"), "^ ", "") .. ",") end insert(str_table, " " .. prefix .. "}") return concat(str_table, "\n") else return tostring(value) end end function export.highlight_dump(value, prefix, tsort, options) options = options or {} local func = options.modified and "modified_dump" or "dump" local dump = export[func](value, prefix, tsort) -- Remove spaces at beginnings of lines (which are simply to force a <pre></pre> tag). dump = gsub(dump, "%f[^%z\n] ", "") return export.highlight(dump) end -- Returns true if table contains a table as one of its values local function containsTable(t) for _, value in pairs(t) do if type(value) == "table" then return true end end return false end local function containsTablesWithSize(t, size) for _, value in pairs(t) do if type(value) == "table" and table_size(value) ~= size then return false end end return true end --[=[ Convert a value to a string. Like dump below, but if a table has consecutive numbered keys and does not have a table as one of its values, it will be placed on a single line. Used by [[Module:User:Erutuon/script recognition]]. ]=] function export.modified_dump(value, prefix, tsort) local t = type(value) prefix = prefix or "" if t == "string" then return '"' .. value .. '"' elseif t == "table" then local str_table = {} local containsTable = containsTable(value) local consecutive = is_array(value) if consecutive and not containsTable or containsTable and containsTablesWithSize(value, 3) then insert(str_table, "{") for key, val in sorted_pairs(value, tsort) do if containsTable then insert(str_table, "\n\t" .. prefix) else insert(str_table, " ") end if type(key) == "string" then insert(str_table, "[" .. export.modified_dump(key) .. "] = ") end insert(str_table, type(key) == "number" and type(val) == "number" and format("0x%05X", val) or export.modified_dump(val)) if not (consecutive and #value == 3) or type(key) == "number" and value[key + 1] then insert(str_table, ",") end end if containsTable then insert(str_table, "\n" .. prefix) else insert(str_table, " ") end insert(str_table, "}") return concat(str_table) end insert(str_table, " {") for key, val in sorted_pairs(value, tsort) do insert(str_table, " " .. prefix .. "\t[" .. export.modified_dump(key, prefix .. "\t") .. "] = " .. gsub(export.modified_dump(val, prefix .. "\t"), "^ ", "") .. ",") end insert(str_table, " " .. prefix .. "}") return concat(str_table, "\n") elseif t == "number" and value > 46 then return format("0x%05X", value) else return tostring(value) end end export.track = require("Module:debug/track") -- Trigger a script error from a template function export.error(frame) error(frame.args[1] or "(no message specified)") end --[[ Convenience function for generating syntaxhighlight tags. Display defaults to block. Options is a table. To display inline text with HTML highlighting: { inline = true, lang = "html" } ]] function export.highlight(content, options) if type(content) == "table" then options = content options = { lang = options.lang or "lua", inline = options.inline and true } return function(content) return mw.getCurrentFrame():extensionTag("syntaxhighlight", content, options) end else return mw.getCurrentFrame():extensionTag("syntaxhighlight", content, { lang = options and options.lang or "lua", inline = options and options.inline and true or nil }) end end function export.track_unrecognized_args(args, template_name) local function track(code) export.track(template_name .. "/" .. code) end track("unrecognized arg") local arg_list = {} for arg, value in pairs(args) do track("unrecognized arg/" .. arg) insert(arg_list, format("|%s=%s", arg, value)) end mw.log(format("Unrecognized parameter%s in {{%s}}: %s.", arg_list[2] and "s" or "", template_name, concat(arg_list, ", ") )) end do local placeholder = "_message_" function export._placeholder_error(frame) -- A dummy function that throws an error with a placeholder message. error(placeholder, (frame.args.level or 1) + 6) end -- Throw an error via callParserFunction, which generates a real error with traceback, automatic categorization in [[CAT:E]] etc., but the error message is returned as a string. Then, replace the placeholder error message with `message`, which is preprocessed. This is necessary when preprocessing needs to be applied (e.g. when using <pre> tags), since otherwise strip markers and other half-processed text gets displayed instead. function export.formatted_error(message, level) local frame = mw.getCurrentFrame() return (frame:callParserFunction("#invoke", {"debug", "_placeholder_error", level = level}) :gsub(placeholder, frame:preprocess(message))) end end return export flmvh7jakbzodr3hhecvopt1m6pdzph chuột đồng 0 261241 2350778 2035457 2026-05-07T08:01:00Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350778 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Bank vole.jpg|nhỏ]] {{-pron-}} {{vie-pron}} {{-noun-}} '''chuột đồng''' # {{term|Động vật học}} Tên gọi một số [[loài]] [[gặm nhấm]] nhỏ trong [[phân họ]] Chuột đồng ([[Arvicolinae]]), thuộc họ [[Cricetidae]]. {{-trans-}} {{trans-top|Tên gọi một số loài gặm nhấm nhỏ thuộc phân họ Arvicolinae}} * {{eng}}: {{t+|en|vole}} * {{cat-2}}: {{t+|ca|talpó|m}} {{trans-mid}} * {{fra}}: {{t+|fr|campagnol|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 2asc45db48v9s6f97oygb0zm7jjgpcy 2351041 2350778 2026-05-07T10:46:38Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351041 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Bank vole.jpg|nhỏ]] {{-pron-}} {{vie-pron}} {{-noun-}} '''chuột đồng''' # {{term|Động vật học}} Tên gọi một số [[loài]] [[gặm nhấm]] nhỏ trong [[phân họ]] Chuột đồng ([[Arvicolinae]]), thuộc họ [[Cricetidae]]. {{-trans-}} {{trans-top|Tên gọi một số loài gặm nhấm nhỏ thuộc phân họ Arvicolinae}} * {{eng}}: {{t+|en|vole}} * {{cat-old}}: {{t+|ca|talpó|m}} {{trans-mid}} * {{fra}}: {{t+|fr|campagnol|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 0lauadcvaekpck6ofasl7a8li5p25rr Mát-xcơ-va 0 261324 2350779 2035588 2026-05-07T08:01:03Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350779 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym|term=Mát-xcơ-va|lang=vie|from= * [[rus:Москва|Москва́]] (Moskvá) }} {{-pron-}} {{vie-pron}} {{-place-}} '''Mát-xcơ-va''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Nga]]. {{-syn-}} * [[Mạc Tư Khoa]] {{-trans-}} {{trans-top|Thủ đô của Nga}} * {{abk}}: {{t+|ab|Москва|tr=Mosḳva}} * {{afr}}: {{t+|af|Moskou}} * {{sqi}}: (''hạn định'') {{t+|sq|Moska}}, (''bất định'') {{t+|sq|Moskë}} * {{amh}}: {{t+|am|ሞስኩ|tr=mosku}}, {{t+|am|ሞስኮ|tr=mosko}} * {{eng}}: {{t+|en|Moscow}} {{trans-mid}} * {{hye}}: {{t+|hy|Մոսկվա|tr=Moskva}} * {{eus}}: {{t+|eu|Mosku}} * {{cat-2}}: {{t+|ca|Moscou|f}} * {{rus}}: {{t+|ru|Москва|tr=Moskvá|f}} * {{fra}}: {{t+|fr|Moscou|f}} {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] 844y5w1na7hlu6hvygtyqlw0bbmx4zk 2351042 2350779 2026-05-07T10:46:41Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351042 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} {{etym|term=Mát-xcơ-va|lang=vie|from= * [[rus:Москва|Москва́]] (Moskvá) }} {{-pron-}} {{vie-pron}} {{-place-}} '''Mát-xcơ-va''' # [[thủ đô|Thủ đô]] và thành phố lớn nhất của [[Nga]]. {{-syn-}} * [[Mạc Tư Khoa]] {{-trans-}} {{trans-top|Thủ đô của Nga}} * {{abk}}: {{t+|ab|Москва|tr=Mosḳva}} * {{afr}}: {{t+|af|Moskou}} * {{sqi}}: (''hạn định'') {{t+|sq|Moska}}, (''bất định'') {{t+|sq|Moskë}} * {{amh}}: {{t+|am|ሞስኩ|tr=mosku}}, {{t+|am|ሞስኮ|tr=mosko}} * {{eng}}: {{t+|en|Moscow}} {{trans-mid}} * {{hye}}: {{t+|hy|Մոսկվա|tr=Moskva}} * {{eus}}: {{t+|eu|Mosku}} * {{cat-old}}: {{t+|ca|Moscou|f}} * {{rus}}: {{t+|ru|Москва|tr=Moskvá|f}} * {{fra}}: {{t+|fr|Moscou|f}} {{trans-bottom}} [[Thể loại:Địa danh tiếng Việt]] 620m8mg7c3nw753ivumpcqa10jtv6sj Mô đun:headword 828 261391 2350435 2350430 2026-05-06T12:00:02Z Kateru Zakuro 34522 Cập nhật 2025, cập nhật đến phiên bản 85058813 (7 June 2025) của Wiktionary tiếng Anh, các phiên bản sau đều có lỗi mục từ tiếng Trung 2350435 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 671z5dm9v06as6sqjbl5k8v0rrwvgdy 2350439 2350435 2026-05-06T12:14:55Z Kateru Zakuro 34522 Thử 2350439 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export dm1kh1ofscmkbzs6ikoipuebmnilywv 2350440 2350439 2026-05-06T12:15:42Z Kateru Zakuro 34522 Thử 2350440 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export rgah4ukdujcun7bsewguz57yg3fprv9 2350443 2350440 2026-05-06T12:24:03Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350435 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]): Lùi lại, sẽ thử nghiệm 2350443 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 671z5dm9v06as6sqjbl5k8v0rrwvgdy 2350451 2350443 2026-05-06T12:38:45Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350440 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350451 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export rgah4ukdujcun7bsewguz57yg3fprv9 2350459 2350451 2026-05-06T12:46:54Z Kateru Zakuro 34522 Thử 2350459 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export eqpllaiimz4nrolmqjwd5dl5ttmd18j 2350486 2350459 2026-05-06T14:41:28Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350443 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350486 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 671z5dm9v06as6sqjbl5k8v0rrwvgdy 2350489 2350486 2026-05-06T14:42:27Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2330170 của [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|talk]]) 2350489 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Internal error: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>hoặc</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/has-manual-translit]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/has-manual-translit/LANGCODE]] track("has-manual-translit", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("Chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("Chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) for _, cat in ipairs(cats) do insert(data.categories, cat) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) for _, cat in ipairs(page.cats) do insert(page_cats, cat) end lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then --insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Translingual Han characters" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, full_langname .. " alternative forms") end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr for _, category in ipairs(tr_categories) do insert(data.categories, category) end end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 7c8vfs75g0jls26509h6w9o4p751hfj 2350490 2350489 2026-05-06T14:43:18Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2335269 của [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|talk]]): Lỗi nặng, khả năng phải đồng bộ tất cả module 2350490 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then -- insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] -- track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 77k253bmo80m0lbjdyxewf1i0tiaj9q 2350538 2350490 2026-05-07T01:31:23Z Kateru Zakuro 34522 thử debug 2350538 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then -- insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] -- track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end -- Debug: kiểm tra kiểu của pos_category if data.pos_category and type(data.pos_category) ~= "string" then mw.log("WARNING: pos_category is", type(data.pos_category), "value:", data.pos_category) -- Chuyển đổi an toàn data.pos_category = tostring(data.pos_category) end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export id1jzae6yqifukl3hmb9a18fgt2o7em 2350539 2350538 2026-05-07T01:34:06Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2350538|2350538]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2350539 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then -- insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] -- track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 77k253bmo80m0lbjdyxewf1i0tiaj9q 2350544 2350539 2026-05-07T02:25:41Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350435 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]): Thử quay về phiên bản này 2350544 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 671z5dm9v06as6sqjbl5k8v0rrwvgdy 2350548 2350544 2026-05-07T02:27:57Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350539 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350548 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then -- insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] -- track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 77k253bmo80m0lbjdyxewf1i0tiaj9q 2350571 2350548 2026-05-07T05:29:30Z Kateru Zakuro 34522 Cập nhật 2026, có lỗi xin hãy báo lại 2350571 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export rwwxv7jgv66ft2vvv0kra5cqx1yoa35 2350580 2350571 2026-05-07T06:01:25Z TheHighFighter2 42988 Dùng ucfirst thay cho lang:getCanonicalName2 2350580 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local ucfirst = require("Module:string utilities").ucfirst local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = ucfirst(lang:getCanonicalName()) local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export s46ahgt8xj6ca1ns2ow6ug4ov52iz5t 2350595 2350580 2026-05-07T06:14:25Z TheHighFighter2 42988 2350595 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local ucfirst = require("Module:string utilities").ucfirst local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = ucfirst(lang:getCanonicalName()) local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ có đề mục ngôn ngữ không đúng " .. lang:getCanonicalName()) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export g75yruksz87v1p354kmtzwsyk2x3o01 2350623 2350595 2026-05-07T07:20:10Z TheHighFighter2 42988 2350623 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ có đề mục ngôn ngữ không đúng " .. lang:getCanonicalName()) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 0j9uw8nmpxmif2zl3yiev3u88xexrku 2350630 2350623 2026-05-07T07:52:16Z TheHighFighter2 42988 2350630 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ có đề mục ngôn ngữ không đúng " .. canonical) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 4mtvwfxyrpxkrh9nqm877if2r85v4se 2350867 2350630 2026-05-07T09:45:57Z TheHighFighter2 42988 2350867 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local ucfirst = require("Module:string utilities").ucfirst local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= ucfirst(canonical) then insert(lang_cats, "Mục từ có đề mục ngôn ngữ không đúng " .. canonical) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export j6viik37pxvfpr21nsyjm3xfs8cyzdx 2350868 2350867 2026-05-07T10:05:09Z TheHighFighter2 42988 2350868 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local ucfirst = require("Module:string utilities").ucfirst local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end local current_L2 = get_current_L2() if current_L2 then local trimmed_L2 = trim(current_L2) local expected_L2 = ucfirst(canonical) if trimmed_L2 ~= expected_L2 then insert(lang_cats, "Mục từ có đề mục ngôn ngữ không đúng " .. canonical) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export tspy0uani8e7j6k10m29ke5v0yau0zf Mô đun:headword/data 828 261392 2350442 2349743 2026-05-06T12:23:50Z TheHighFighter2 42988 2350442 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 grm3enpupyh8nmoe71gyxf1xtkm6qhw 2350512 2350442 2026-05-06T15:32:40Z Kateru Zakuro 34522 2350512 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 33wtikpc8egyp9wz942o630lrz2rdgi 2350514 2350512 2026-05-06T15:33:31Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2350512|2350512]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2350514 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 grm3enpupyh8nmoe71gyxf1xtkm6qhw 2350515 2350514 2026-05-06T15:36:43Z Kateru Zakuro 34522 Bỏ 2350515 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 7l9iob95wdhtnnx5fzxcna1hwuu0vv2 2350518 2350515 2026-05-06T15:38:35Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2350515|2350515]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2350518 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 grm3enpupyh8nmoe71gyxf1xtkm6qhw 2350534 2350518 2026-05-07T01:15:01Z Kateru Zakuro 34522 Xóa mục này vì nó gây lỗi 2350534 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 omsvhc1ttyduxn6eqtzw7skz31ukv2m 2350535 2350534 2026-05-07T01:16:30Z Kateru Zakuro 34522 2350535 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ự", "hanzi", "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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 h1lpbfsjzaw0ct03zhnwodo6pb93r7p 2350536 2350535 2026-05-07T01:16:53Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2350535|2350535]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2350536 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 omsvhc1ttyduxn6eqtzw7skz31ukv2m 2350537 2350536 2026-05-07T01:21:11Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350442 của [[Special:Contributions/TheHighFighter2|TheHighFighter2]] ([[User talk:TheHighFighter2|talk]]) 2350537 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 grm3enpupyh8nmoe71gyxf1xtkm6qhw 2350541 2350537 2026-05-07T02:18:41Z Kateru Zakuro 34522 thử 2350541 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", "hanzi", "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", "hanzi", "Hanja", "ideophones", "Thành ngữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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", "hanzi", "Hanja", "iteration marks", "Kana", "Kanji", "Chữ cái", "ligatures", "Văn tự ngữ tố", "Mora", "Ký tự số", "Số", "punctuation marks", "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", 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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 3kuu7j5pgs1apsfd0yp9nv8j9tpeu2l 2350542 2350541 2026-05-07T02:22:18Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350442 của [[Special:Contributions/TheHighFighter2|TheHighFighter2]] ([[User talk:TheHighFighter2|talk]]) 2350542 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ữ", "infixes", "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ữ", "punctuation marks", "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ừ", "agent participles", "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ừ", "infinitive forms", "infinitives", "interjection forms", "Việt bính", "Từ sai chính tả", "negative participles", "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ừ", "particle forms", "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ứ", "perfect active participles", "Phân từ hoàn thành", "perfect passive participles", "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", "present active participles", "present adverbial participles", "Phân từ hiện tại", "present passive participles", "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ố", "punctuation marks", "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", 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ừ", ["proper nouns"] = "nouns", ["suffixes"] = "suffixes", -- We include verbs because impf and pf are valid "genders". ["verbs"] = "verbs", } --[==[ 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 grm3enpupyh8nmoe71gyxf1xtkm6qhw khí nhà kính 0 261450 2350780 2036346 2026-05-07T08:01:06Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350780 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''khí nhà kính''' # Bất kỳ loại [[khí]] nào, chẳng hạn như [[carbon dioxide]] hay [[CFC]], gây nên [[hiệu ứng nhà kính]]. {{-trans-}} {{trans-top|Bất kỳ loại khí gây hiệu ứng nhà kính}} * {{afr}}: {{t+|af|kweekhuisgas}} * {{eng}}: {{t+|en|greenhouse gas}} * {{hye}}: {{t+|hy|ջերմոցային գազ|tr=ǰermocʿayin gaz}} * {{pol}}: {{t+|pl|gaz cieplarniany|m}} * {{isl}}: {{t|is|gróðurhúsalofttegund|f}} * {{cat-2}}: {{t+|ca|gas hivernacle|m}} * {{dan}}: {{t+|da|drivhusgas|c}} * {{deu}}: {{t+|de|Treibhausgas|n}} * {{kat}}: {{t+|ka|სათბური გაზი|tr=satburi gazi}}, {{t+|ka|სათბურის აირები|tr=satburis airebi}}, {{t+|ka|სათბურის აირი|tr=satburis airi}} * {{nld}}: {{t+|nl|broeikasgas|n}} * {{hun}}: {{t+|hu|üvegházhatású gáz}} * {{ell}}: {{t+|el|αέριο του θερμοκηπίου|n|tr=aério tou thermokipíou}} * {{ltz}}: {{t+|lb|Zäregas|m}} * {{mkd}}: {{t+|mk|стакленички гас|m|tr=staklenički gas}} * {{nor}}: *: {{nob}}: {{t+|nb|drivhusgass|m}}, {{t|nb|klimagass|m}} *: {{nno}}: {{t+|nn|drivhusgass|m}}, {{t|nn|klimagass|m}} * {{rus}}: {{t+|ru|парниковый газ|m|tr=parnikóvyj gaz}} {{trans-mid}} * {{jpn}}: {{t+|ja|温室効果ガス|tr=onshitsukouka-gasu}} * {{fra}}: {{t+|fr|gaz à effet de serre|m}} * {{fin}}: {{t+|fi|kasvihuonekaasu}} * {{ron}}: {{t+|ro|gaz cu efect de seră|n}} * {{slk}}: {{t+|sk|skleníkový plyn}} * {{spa}}: {{t+|es|gas de invernadero}} * {{tha}}: {{t+|th|แก๊สเรือนกระจก}} * {{swe}}: {{t+|sv|växthusgas|c}} * {{zho}}: *: {{cmn}}: {{t+|cmn|溫室氣體}}, {{t+|cmn|温室气体|tr=wēnshì qìtǐ}} * {{ukr}}: {{t+|uk|парниковий газ|m|tr=parnykóvyj haz}} * {{ita}}: {{t+|it|gas serra|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 22ekfjhuh1fl4dbfcdzlnx2cyxlvspp 2351043 2350780 2026-05-07T10:46:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351043 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''khí nhà kính''' # Bất kỳ loại [[khí]] nào, chẳng hạn như [[carbon dioxide]] hay [[CFC]], gây nên [[hiệu ứng nhà kính]]. {{-trans-}} {{trans-top|Bất kỳ loại khí gây hiệu ứng nhà kính}} * {{afr}}: {{t+|af|kweekhuisgas}} * {{eng}}: {{t+|en|greenhouse gas}} * {{hye}}: {{t+|hy|ջերմոցային գազ|tr=ǰermocʿayin gaz}} * {{pol}}: {{t+|pl|gaz cieplarniany|m}} * {{isl}}: {{t|is|gróðurhúsalofttegund|f}} * {{cat-old}}: {{t+|ca|gas hivernacle|m}} * {{dan}}: {{t+|da|drivhusgas|c}} * {{deu}}: {{t+|de|Treibhausgas|n}} * {{kat}}: {{t+|ka|სათბური გაზი|tr=satburi gazi}}, {{t+|ka|სათბურის აირები|tr=satburis airebi}}, {{t+|ka|სათბურის აირი|tr=satburis airi}} * {{nld}}: {{t+|nl|broeikasgas|n}} * {{hun}}: {{t+|hu|üvegházhatású gáz}} * {{ell}}: {{t+|el|αέριο του θερμοκηπίου|n|tr=aério tou thermokipíou}} * {{ltz}}: {{t+|lb|Zäregas|m}} * {{mkd}}: {{t+|mk|стакленички гас|m|tr=staklenički gas}} * {{nor}}: *: {{nob}}: {{t+|nb|drivhusgass|m}}, {{t|nb|klimagass|m}} *: {{nno}}: {{t+|nn|drivhusgass|m}}, {{t|nn|klimagass|m}} * {{rus}}: {{t+|ru|парниковый газ|m|tr=parnikóvyj gaz}} {{trans-mid}} * {{jpn}}: {{t+|ja|温室効果ガス|tr=onshitsukouka-gasu}} * {{fra}}: {{t+|fr|gaz à effet de serre|m}} * {{fin}}: {{t+|fi|kasvihuonekaasu}} * {{ron}}: {{t+|ro|gaz cu efect de seră|n}} * {{slk}}: {{t+|sk|skleníkový plyn}} * {{spa}}: {{t+|es|gas de invernadero}} * {{tha}}: {{t+|th|แก๊สเรือนกระจก}} * {{swe}}: {{t+|sv|växthusgas|c}} * {{zho}}: *: {{cmn}}: {{t+|cmn|溫室氣體}}, {{t+|cmn|温室气体|tr=wēnshì qìtǐ}} * {{ukr}}: {{t+|uk|парниковий газ|m|tr=parnykóvyj haz}} * {{ita}}: {{t+|it|gas serra|m}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] 0ey5fxapfafj207o2ogpnytwvhi08xo Nhà Trắng 0 261534 2350781 2280509 2026-05-07T08:01:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350781 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:WH from north.JPG|nhỏ|Phía bắc của '''Nhà Trắng'''.]] {{-etym-}} {{calque|vi|en|White House}}; {{compound|vi|nhà|alt1=Nhà|trắng|alt2=Trắng}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Penn Zero MSSJ-Nhà Trắng.wav|Âm thanh (Hà Nội)}} {{-paro-}} * {{l|vi|Nha Trang}} {{-pr-noun-}} {{vi-pr-noun|head=[[nhà|Nhà]] [[trắng|Trắng]]}} # [[nơi ở|Nơi ở]] và [[làm việc]] [[chính thức]] của [[tổng thống|Tổng thống]] [[Hoa Kỳ]]. #* '''2013''', Trường Sơn, ''[https://tuoitre.vn/nha-trang-bat-dau-song-xanh-564076.htm Nhà Trắng bắt đầu "sống xanh"]'', {{w|Báo Tuổi Trẻ}}: #*: {{quote|vi|Ngoài pin mặt trời, '''Nhà Trắng''' còn được trang bị thêm hệ thống thông gió và điều chỉnh nhiệt tự động.}} # {{label|vi|hoán dụ}} [[chính quyền|Chính quyền]] tổng thống Hoa Kỳ [[đương nhiệm]]. #* '''2017''', Tuấn Sơn, ''[https://tuoitre.vn/nha-trang-tuyen-bo-rut-khoi-tpp-1255900.htm ​Nhà Trắng tuyên bố rút khỏi TPP]'', {{w|Báo Tuổi Trẻ}}: #*: {{quote|vi|Tuy vậy, '''Nhà Trắng''' cũng cho biết Tổng thống {{w|Donald Trump}} sẵn sàng tái đàm phán một hiệp định thương mại khác đó là {{w|Hiệp định Thương mại Tự do Bắc Mỹ}} ([[NAFTA]]) được ký kết năm 1994 giữa Mỹ, Canada và Mexico.}} {{-synonym-}} * {{l|vi|Tòa Bạch Ốc}}/{{l|vi|Bạch Ốc}} * {{l|vi|Tòa Bạch Cung}}/{{l|vi|Bạch Cung}} {{-related-}} * {{l|vi|Nhà Xanh}} {{-trans-}} {{trans-top|Nơi ở và làm việc chính thức của Tổng thống Hoa Kỳ}} * {{ara}}: {{t+|ar|البيت الأبيض|m|tr=al-bayt al-ʾabyaḍ}} * {{afr}}: {{t+|af|Withuis}} * {{sqi}}: {{t+|sq|Shtëpia e Bardhë}} * {{amh}}: {{t+|am|ዋይት ሃውስ|tr=wayt haws}} * {{eng}}: {{t+|en|White House}} * {{hye}}: {{t+|hy|Սպիտակ տուն|tr=Spitak tun}} * {{aze}}: {{t+|az|Ağ Ev}} * {{pol}}: {{t+|pl|Biały Dom|m}} * {{fas}}: {{t+|fa|کاخ سفید|tr=kâx-e sefid}} * {{bak}}: {{t+|ba|Аҡ Йорт|tr=Aq Yort}} * {{eus}}: {{t+|eu|Etxe Zuria}} * {{isl}}: {{t+|is|Hvíta húsið|n}} * {{bel}}: {{t+|be|Белы дом|m|tr=Bjély dom}} * {{ben}}: {{t+|bn|হোয়াইট হাউস|tr=hoẏaiṭ hauś}} * {{por}}: {{t+|pt|Casa Branca|f}} * {{bre}}: {{t+|br|Ti Gwenn|m}} * {{bul}}: {{t+|bg|Белият дом|m|tr=Bélijat dom}} * {{cat-2}}: {{t+|ca|Casa Blanca|f}} * {{heb}}: {{t+|he|הבית הלבן|m|tr=ha-báyit ha-laván}} * {{dan}}: {{t+|da|Det hvide hus|n}} * {{deu}}: {{t+|de|Weißes Haus|n}} * {{est}}: {{t+|et|Valge Maja}} * {{fao}}: {{t+|fo|Tað hvíta húsið|n}} * {{fry}}: {{t+|fy|Wite Hûs|n}} * {{glg}}: {{t+|gl|Casa Branca|f}} * {{kat}}: {{t+|ka|თეთრი სახლი|tr=tetri saxli}} * {{nld}}: {{t+|nl|Witte Huis|n}} * {{hin}}: {{t+|hi|व्हाइट हाउस|tr=vhāiṭ hāus}}, {{t+|hi|सफ़ेद घर|m|tr=safed ghar}} * {{hun}}: {{t+|hu|Fehér Ház}} * {{ell}}: {{t+|el|Λευκός Οίκος|m|tr=Lefkós Oíkos}} * {{ido}}: {{t+|io|Blanka Domo}} * {{ind}}: {{t+|id|Gedung Putih}} * {{gle}}: {{t+|ga|Teach Bán|m}} * {{kan}}: {{t+|kn|ಶ್ವೇತ ಭವನ|tr=śvēta bhavana}} * {{kaz}}: {{t+|kk|Ақ үй|tr=Aq üy}} * {{khm}}: {{t+|km|សេតវិមាន|tr=seetaʼ vimiən}} * {{kur}}: ** {{kmr}}: {{t+|kmr|Qesra Spî}} * {{kir}}: {{t+|ky|Ак үй|tr=Aq üy}} * {{lat}}: {{t+|la|Domus Alba|m}} * {{lav}}: {{t+|lv|Baltais nams|m}} * {{lit}}: {{t+|lt|Baltieji rūmai|m}} * {{msa}}: {{t+|ms|Rumah Putih}} * {{mkd}}: {{t+|mk|Белата куќа|f|tr=Belata kuḱa}} * {{mal}}: {{t+|ml|വൈറ്റ്‌ഹൗസ്‌|tr=vaiṟṟ‌haus‌}} * {{mlt}}: {{t+|mt|id-Dar il-Bajda|f}} {{trans-mid}} * {{mar}}: {{t+|mr|व्हाइट हाउस|tr=vhāiṭ hāus}} * {{mya}}: {{t+|my|အိမ်ဖြူတော်|tr=imhprutau}} * {{mon}}: ** {{Cyrl}}: {{t+|mn|Цагаан ордон|tr=Tsagaan ordon}} * {{nor}}: ** {{nob}}: {{t+|no|Det hvite hus|n}} ** {{nno}}: {{t+|nn|Det kvite hus|n}} * {{nav}}: {{t+|nv|kináhálgaaí}} * {{nep}}: {{t+|ne|ह्वाइट हाउस|tr=hwāiṭ hāus}} * {{rus}}: {{t+|ru|Белый дом|m|tr=Bélyj dom}} * {{jpn}}: {{t+|ja|ホワイトハウス|tr=Howaito Hausu}}, {{t+|ja|白堊館|tr=Hakuakan}} * {{oci}}: {{t+|oc|Ostal Blanc}} * {{fra}}: {{t+|fr|Maison Blanche|f}} * {{fin}}: {{t+|fi|Valkoinen talo}} * {{pan}}: {{t+|pa|ਵਾਈਟ ਹਾਊਸ|tr=vāīṭa hāūsa}} * {{epo}}: {{t+|eo|Blanka Domo}} * {{ron}}: {{t+|ro|Casa Albă|f}} * {{ces}}: {{t+|cs|Bílý dům|m}} * {{hbs}}: ** {{Cyrl}}: {{t+|sh|Бела кућа|f}}, {{t+|sh|Бијела кућа|f}} ** {{Latn}}: {{t+|sh|Bela kuća|f}}, {{t+|sh|Bijela kuća|f}} * {{sin}}: {{t+|si|ධවල මන්දිරය|tr=dhawala mandiraya}} * {{slk}}: {{t+|sk|Biely dom|m}} * {{slv}}: {{t+|sl|Bela hiša|f}} * {{swa}}: {{t+|sw|Nyumba Nyeupe}} * {{tgk}}: {{t+|tg|Кохи Сафед|tr=Koxi Safed}} * {{tam}}: {{t+|ta|வெள்ளை மாளிகை|tr=veḷḷai māḷikai}} * {{tat}}: {{t+|tt|Ак йорт|tr=Aq yort}} * {{spa}}: {{t+|es|Casa Blanca|f}} * {{tel}}: {{t+|te|శ్వేత సౌధం|tr=śvēta saudhaṃ}} * {{tha}}: {{t+|th|ทำเนียบขาว|tr=tam-nîiap-kǎao}} * {{tur}}: {{t+|tr|Beyaz Saray}} * {{swe}}: {{t+|sv|Vita huset|n}} * {{kor}}: {{t+|ko|백악관|tr=Baegakgwan}}, {{t+|ko|화이트 하우스|tr=Hwaiteu hauseu}} * {{zho}}: ** {{nan}}: {{t+|nan|白厝|tr=Pe̍h-chhù}}, {{t+|nan|白宮}}, {{t+|nan|白宫|tr=Pe̍h-kiong}} ** {{cmn}}: {{t+|cmn|白宮}}, {{t+|cmn|白宫|tr=Báigōng}} ** {{yue}}: {{t+|yue|白宮}}, {{t+|yue|白宫|tr=baak6 gung1}} * {{tuk}}: {{t+|tk|Ak Saraý}} * {{urd}}: {{t+|ur|وائٹ ہاؤس|tr=vā'iṭ hā'us}} * {{uig}}: {{t+|ug|ئاقساراي|tr=aqsaray}} * {{uzb}}: {{t+|uz|Oq Uy}} * {{cym}}: {{t+|cy|Y Tŷ Gwyn|m}} * {{ita}}: {{t+|it|Casa Bianca|f}} * {{yid}}: {{t+|yi|ווייסע הויז|n|tr=veyse hoyz}} {{trans-bottom}} {{trans-top|Chính quyền tổng thống Hoa Kỳ đương nhiệm}} * {{eng}}: {{t+|en|White House}} * {{bak}}: {{t+|ba|Аҡ Йорт}} * {{est}}: {{t+|et|Valge Maja}} * {{fra}}: {{t+|fr|Maison Blanche|f}} {{trans-mid}} * {{fin}}: {{t+|fi|Valkoinen talo}} * {{zho}}: ** {{cmn}}: {{t+|cmn|白宮}}, {{t+|cmn|白宫|tr=Báigōng}} * {{ita}}: {{t+|it|Casa Bianca|f}} {{trans-bottom}} {{C|vi|Tòa nhà|Washington, D.C.}} j74uwsl4dtyzreklgd3z6nno3rqag7i 2351044 2350781 2026-05-07T10:46:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351044 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:WH from north.JPG|nhỏ|Phía bắc của '''Nhà Trắng'''.]] {{-etym-}} {{calque|vi|en|White House}}; {{compound|vi|nhà|alt1=Nhà|trắng|alt2=Trắng}}. {{-pron-}} {{vie-pron}} * {{âm thanh-old|LL-Q9199 (vie)-Penn Zero MSSJ-Nhà Trắng.wav|Âm thanh (Hà Nội)}} {{-paro-}} * {{l|vi|Nha Trang}} {{-pr-noun-}} {{vi-pr-noun|head=[[nhà|Nhà]] [[trắng|Trắng]]}} # [[nơi ở|Nơi ở]] và [[làm việc]] [[chính thức]] của [[tổng thống|Tổng thống]] [[Hoa Kỳ]]. #* '''2013''', Trường Sơn, ''[https://tuoitre.vn/nha-trang-bat-dau-song-xanh-564076.htm Nhà Trắng bắt đầu "sống xanh"]'', {{w|Báo Tuổi Trẻ}}: #*: {{quote|vi|Ngoài pin mặt trời, '''Nhà Trắng''' còn được trang bị thêm hệ thống thông gió và điều chỉnh nhiệt tự động.}} # {{label|vi|hoán dụ}} [[chính quyền|Chính quyền]] tổng thống Hoa Kỳ [[đương nhiệm]]. #* '''2017''', Tuấn Sơn, ''[https://tuoitre.vn/nha-trang-tuyen-bo-rut-khoi-tpp-1255900.htm ​Nhà Trắng tuyên bố rút khỏi TPP]'', {{w|Báo Tuổi Trẻ}}: #*: {{quote|vi|Tuy vậy, '''Nhà Trắng''' cũng cho biết Tổng thống {{w|Donald Trump}} sẵn sàng tái đàm phán một hiệp định thương mại khác đó là {{w|Hiệp định Thương mại Tự do Bắc Mỹ}} ([[NAFTA]]) được ký kết năm 1994 giữa Mỹ, Canada và Mexico.}} {{-synonym-}} * {{l|vi|Tòa Bạch Ốc}}/{{l|vi|Bạch Ốc}} * {{l|vi|Tòa Bạch Cung}}/{{l|vi|Bạch Cung}} {{-related-}} * {{l|vi|Nhà Xanh}} {{-trans-}} {{trans-top|Nơi ở và làm việc chính thức của Tổng thống Hoa Kỳ}} * {{ara}}: {{t+|ar|البيت الأبيض|m|tr=al-bayt al-ʾabyaḍ}} * {{afr}}: {{t+|af|Withuis}} * {{sqi}}: {{t+|sq|Shtëpia e Bardhë}} * {{amh}}: {{t+|am|ዋይት ሃውስ|tr=wayt haws}} * {{eng}}: {{t+|en|White House}} * {{hye}}: {{t+|hy|Սպիտակ տուն|tr=Spitak tun}} * {{aze}}: {{t+|az|Ağ Ev}} * {{pol}}: {{t+|pl|Biały Dom|m}} * {{fas}}: {{t+|fa|کاخ سفید|tr=kâx-e sefid}} * {{bak}}: {{t+|ba|Аҡ Йорт|tr=Aq Yort}} * {{eus}}: {{t+|eu|Etxe Zuria}} * {{isl}}: {{t+|is|Hvíta húsið|n}} * {{bel}}: {{t+|be|Белы дом|m|tr=Bjély dom}} * {{ben}}: {{t+|bn|হোয়াইট হাউস|tr=hoẏaiṭ hauś}} * {{por}}: {{t+|pt|Casa Branca|f}} * {{bre}}: {{t+|br|Ti Gwenn|m}} * {{bul}}: {{t+|bg|Белият дом|m|tr=Bélijat dom}} * {{cat-old}}: {{t+|ca|Casa Blanca|f}} * {{heb}}: {{t+|he|הבית הלבן|m|tr=ha-báyit ha-laván}} * {{dan}}: {{t+|da|Det hvide hus|n}} * {{deu}}: {{t+|de|Weißes Haus|n}} * {{est}}: {{t+|et|Valge Maja}} * {{fao}}: {{t+|fo|Tað hvíta húsið|n}} * {{fry}}: {{t+|fy|Wite Hûs|n}} * {{glg}}: {{t+|gl|Casa Branca|f}} * {{kat}}: {{t+|ka|თეთრი სახლი|tr=tetri saxli}} * {{nld}}: {{t+|nl|Witte Huis|n}} * {{hin}}: {{t+|hi|व्हाइट हाउस|tr=vhāiṭ hāus}}, {{t+|hi|सफ़ेद घर|m|tr=safed ghar}} * {{hun}}: {{t+|hu|Fehér Ház}} * {{ell}}: {{t+|el|Λευκός Οίκος|m|tr=Lefkós Oíkos}} * {{ido}}: {{t+|io|Blanka Domo}} * {{ind}}: {{t+|id|Gedung Putih}} * {{gle}}: {{t+|ga|Teach Bán|m}} * {{kan}}: {{t+|kn|ಶ್ವೇತ ಭವನ|tr=śvēta bhavana}} * {{kaz}}: {{t+|kk|Ақ үй|tr=Aq üy}} * {{khm}}: {{t+|km|សេតវិមាន|tr=seetaʼ vimiən}} * {{kur}}: ** {{kmr}}: {{t+|kmr|Qesra Spî}} * {{kir}}: {{t+|ky|Ак үй|tr=Aq üy}} * {{lat}}: {{t+|la|Domus Alba|m}} * {{lav}}: {{t+|lv|Baltais nams|m}} * {{lit}}: {{t+|lt|Baltieji rūmai|m}} * {{msa}}: {{t+|ms|Rumah Putih}} * {{mkd}}: {{t+|mk|Белата куќа|f|tr=Belata kuḱa}} * {{mal}}: {{t+|ml|വൈറ്റ്‌ഹൗസ്‌|tr=vaiṟṟ‌haus‌}} * {{mlt}}: {{t+|mt|id-Dar il-Bajda|f}} {{trans-mid}} * {{mar}}: {{t+|mr|व्हाइट हाउस|tr=vhāiṭ hāus}} * {{mya}}: {{t+|my|အိမ်ဖြူတော်|tr=imhprutau}} * {{mon}}: ** {{Cyrl}}: {{t+|mn|Цагаан ордон|tr=Tsagaan ordon}} * {{nor}}: ** {{nob}}: {{t+|no|Det hvite hus|n}} ** {{nno}}: {{t+|nn|Det kvite hus|n}} * {{nav}}: {{t+|nv|kináhálgaaí}} * {{nep}}: {{t+|ne|ह्वाइट हाउस|tr=hwāiṭ hāus}} * {{rus}}: {{t+|ru|Белый дом|m|tr=Bélyj dom}} * {{jpn}}: {{t+|ja|ホワイトハウス|tr=Howaito Hausu}}, {{t+|ja|白堊館|tr=Hakuakan}} * {{oci}}: {{t+|oc|Ostal Blanc}} * {{fra}}: {{t+|fr|Maison Blanche|f}} * {{fin}}: {{t+|fi|Valkoinen talo}} * {{pan}}: {{t+|pa|ਵਾਈਟ ਹਾਊਸ|tr=vāīṭa hāūsa}} * {{epo}}: {{t+|eo|Blanka Domo}} * {{ron}}: {{t+|ro|Casa Albă|f}} * {{ces}}: {{t+|cs|Bílý dům|m}} * {{hbs}}: ** {{Cyrl}}: {{t+|sh|Бела кућа|f}}, {{t+|sh|Бијела кућа|f}} ** {{Latn}}: {{t+|sh|Bela kuća|f}}, {{t+|sh|Bijela kuća|f}} * {{sin}}: {{t+|si|ධවල මන්දිරය|tr=dhawala mandiraya}} * {{slk}}: {{t+|sk|Biely dom|m}} * {{slv}}: {{t+|sl|Bela hiša|f}} * {{swa}}: {{t+|sw|Nyumba Nyeupe}} * {{tgk}}: {{t+|tg|Кохи Сафед|tr=Koxi Safed}} * {{tam}}: {{t+|ta|வெள்ளை மாளிகை|tr=veḷḷai māḷikai}} * {{tat}}: {{t+|tt|Ак йорт|tr=Aq yort}} * {{spa}}: {{t+|es|Casa Blanca|f}} * {{tel}}: {{t+|te|శ్వేత సౌధం|tr=śvēta saudhaṃ}} * {{tha}}: {{t+|th|ทำเนียบขาว|tr=tam-nîiap-kǎao}} * {{tur}}: {{t+|tr|Beyaz Saray}} * {{swe}}: {{t+|sv|Vita huset|n}} * {{kor}}: {{t+|ko|백악관|tr=Baegakgwan}}, {{t+|ko|화이트 하우스|tr=Hwaiteu hauseu}} * {{zho}}: ** {{nan}}: {{t+|nan|白厝|tr=Pe̍h-chhù}}, {{t+|nan|白宮}}, {{t+|nan|白宫|tr=Pe̍h-kiong}} ** {{cmn}}: {{t+|cmn|白宮}}, {{t+|cmn|白宫|tr=Báigōng}} ** {{yue}}: {{t+|yue|白宮}}, {{t+|yue|白宫|tr=baak6 gung1}} * {{tuk}}: {{t+|tk|Ak Saraý}} * {{urd}}: {{t+|ur|وائٹ ہاؤس|tr=vā'iṭ hā'us}} * {{uig}}: {{t+|ug|ئاقساراي|tr=aqsaray}} * {{uzb}}: {{t+|uz|Oq Uy}} * {{cym}}: {{t+|cy|Y Tŷ Gwyn|m}} * {{ita}}: {{t+|it|Casa Bianca|f}} * {{yid}}: {{t+|yi|ווייסע הויז|n|tr=veyse hoyz}} {{trans-bottom}} {{trans-top|Chính quyền tổng thống Hoa Kỳ đương nhiệm}} * {{eng}}: {{t+|en|White House}} * {{bak}}: {{t+|ba|Аҡ Йорт}} * {{est}}: {{t+|et|Valge Maja}} * {{fra}}: {{t+|fr|Maison Blanche|f}} {{trans-mid}} * {{fin}}: {{t+|fi|Valkoinen talo}} * {{zho}}: ** {{cmn}}: {{t+|cmn|白宮}}, {{t+|cmn|白宫|tr=Báigōng}} * {{ita}}: {{t+|it|Casa Bianca|f}} {{trans-bottom}} {{C|vi|Tòa nhà|Washington, D.C.}} 1mhboyzzqrfd719efufznbiumt9jyin vi ba 0 261854 2350782 2039910 2026-05-07T08:01:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350782 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-etym-}} {{etym|term=vi ba|lang=vie|from= * [[zho:微波]] (vi ba) ** [[zho:微]] (vi)=nhỏ ** [[zho:波]] (ba)=sóng }} {{-noun-}} '''vi ba''' # [[sóng điện từ|Sóng điện từ]] có [[bước]] [[sóng]] [[dài]] hơn [[tia]] [[hồng ngoại]], nhưng [[ngắn]] hơn sóng [[radio]]. #: tuyến truyền dẫn '''vi ba'''<ref>{{Chú thích web|url=http://www.cuctanso.vn/dang-ky-cap-phep/pages/default.aspx?ItemID=2157|title=Tuyến truyền dẫn vi ba|website=Cục tần số|archiveurl=https://web.archive.org/web/20200117030057/http://www.cuctanso.vn/dang-ky-cap-phep/pages/default.aspx?ItemID=2157|url-status=live|archivedate=17 tháng 1 năm 2020}}</ref> {{-syn-}} * [[vi sóng]] {{-trans-}} {{đầu}} * {{ara}}: [[موجة صغرية]] * {{afr}}: [[mikrogolf]] * {{sqi}}: [[mikrovalët]] * {{eng}}: [[microwave]] * {{ast}}: [[microondes]] * {{aze}}: [[mikrodalğalar]] * {{pol}}: [[mikrofale]] * {{fas}}: [[ریزموج]] * {{eus}}: [[mikrouhin]] * {{isl}}: [[örbylgjur]] * {{ben}}: [[অণুতরঙ্গ]] * {{bos}}: [[mikrotalas]] * {{por}}: [[micro-ondas]] * {{cat-2}}: [[microones]] * {{hrv}}: [[mikrovalovi]] * {{heb}}: [[מיקרוגל]] * {{dan}}: [[mikrobølge]] * {{deu}}: [[Mikrowellen]] * {{est}}: [[mikrolained]] * {{fry}}: [[mikrowaagen]] * {{glg}}: [[microondas]] * {{nld}}: [[microgolf]] * {{hin}}: [[सूक्ष्मतरंग]] * {{hun}}: [[mikrohullám]] * {{ell}}: [[μικροκύματα]] * {{ind}}: [[gelombang mikro]] * {{gle}}: [[micreathonnta]] * {{lat}}: [[unda micrometrica]] * {{lav}}: [[mikroviļņi]] * {{lit}}: [[mikrobangos]] * {{msa}}: [[mikrogelombang]] * {{mar}}: [[सूक्ष्मतरंग]] * {{nob}}: [[mikrobølge]] * {{nno}}: [[mikrobølgjer]] * {{nep}}: [[सूक्ष्मतरङ्ग]] * {{rus}}: [[микроволны]] * {{jpn}}: [[マイクロ波]] * {{fra}}: [[micro-onde]] * {{fin}}: [[mikroaallot]] * {{epo}}: [[mikroondoj]] * {{ron}}: [[microundă]] * {{ces}}: [[mikrovlny]] * {{slk}}: [[mikrovlny]] * {{swa}}: [[mikrowevu]] * {{tat}}: [[микродулкын]] * {{spa}}: [[microondas]] * {{tha}}: [[ไมโครเวฟ]] * {{tur}}: [[mikrodalga]] * {{swe}}: [[mikrovågor]] * {{kor}}: [[마이크로파]] * {{zho}}: [[微波]] * {{ukr}}: [[мікрохвильове]] * {{ita}}: [[microonde]] {{cuối}} {{-ref-}} [[Thể loại:Danh từ tiếng Việt]] dtm1k9llwdadli70f5rqanohyrymr4s 2351045 2350782 2026-05-07T10:46:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351045 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-etym-}} {{etym|term=vi ba|lang=vie|from= * [[zho:微波]] (vi ba) ** [[zho:微]] (vi)=nhỏ ** [[zho:波]] (ba)=sóng }} {{-noun-}} '''vi ba''' # [[sóng điện từ|Sóng điện từ]] có [[bước]] [[sóng]] [[dài]] hơn [[tia]] [[hồng ngoại]], nhưng [[ngắn]] hơn sóng [[radio]]. #: tuyến truyền dẫn '''vi ba'''<ref>{{Chú thích web|url=http://www.cuctanso.vn/dang-ky-cap-phep/pages/default.aspx?ItemID=2157|title=Tuyến truyền dẫn vi ba|website=Cục tần số|archiveurl=https://web.archive.org/web/20200117030057/http://www.cuctanso.vn/dang-ky-cap-phep/pages/default.aspx?ItemID=2157|url-status=live|archivedate=17 tháng 1 năm 2020}}</ref> {{-syn-}} * [[vi sóng]] {{-trans-}} {{đầu}} * {{ara}}: [[موجة صغرية]] * {{afr}}: [[mikrogolf]] * {{sqi}}: [[mikrovalët]] * {{eng}}: [[microwave]] * {{ast}}: [[microondes]] * {{aze}}: [[mikrodalğalar]] * {{pol}}: [[mikrofale]] * {{fas}}: [[ریزموج]] * {{eus}}: [[mikrouhin]] * {{isl}}: [[örbylgjur]] * {{ben}}: [[অণুতরঙ্গ]] * {{bos}}: [[mikrotalas]] * {{por}}: [[micro-ondas]] * {{cat-old}}: [[microones]] * {{hrv}}: [[mikrovalovi]] * {{heb}}: [[מיקרוגל]] * {{dan}}: [[mikrobølge]] * {{deu}}: [[Mikrowellen]] * {{est}}: [[mikrolained]] * {{fry}}: [[mikrowaagen]] * {{glg}}: [[microondas]] * {{nld}}: [[microgolf]] * {{hin}}: [[सूक्ष्मतरंग]] * {{hun}}: [[mikrohullám]] * {{ell}}: [[μικροκύματα]] * {{ind}}: [[gelombang mikro]] * {{gle}}: [[micreathonnta]] * {{lat}}: [[unda micrometrica]] * {{lav}}: [[mikroviļņi]] * {{lit}}: [[mikrobangos]] * {{msa}}: [[mikrogelombang]] * {{mar}}: [[सूक्ष्मतरंग]] * {{nob}}: [[mikrobølge]] * {{nno}}: [[mikrobølgjer]] * {{nep}}: [[सूक्ष्मतरङ्ग]] * {{rus}}: [[микроволны]] * {{jpn}}: [[マイクロ波]] * {{fra}}: [[micro-onde]] * {{fin}}: [[mikroaallot]] * {{epo}}: [[mikroondoj]] * {{ron}}: [[microundă]] * {{ces}}: [[mikrovlny]] * {{slk}}: [[mikrovlny]] * {{swa}}: [[mikrowevu]] * {{tat}}: [[микродулкын]] * {{spa}}: [[microondas]] * {{tha}}: [[ไมโครเวฟ]] * {{tur}}: [[mikrodalga]] * {{swe}}: [[mikrovågor]] * {{kor}}: [[마이크로파]] * {{zho}}: [[微波]] * {{ukr}}: [[мікрохвильове]] * {{ita}}: [[microonde]] {{cuối}} {{-ref-}} [[Thể loại:Danh từ tiếng Việt]] li51lsy2y353dkfj6y5l2zo7fipc8dz chiêm tinh học 0 261885 2350783 2040131 2026-05-07T08:01:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350783 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''chiêm tinh học''' # Hệ thống [[bói toán]] [[tiên đoán]] về [[vấn đề]] [[nhân loại]] và [[sự kiện]] [[trần thế]] bằng cách [[nghiên cứu]] [[chuyển động]] và [[vị trí]] [[tương đối]] của [[thiên thể]]. {{-syn-}} * [[chiêm tinh thuật]] {{-trans-}} {{trans-top|Hệ thống bói toán tiên đoán bằng cách nghiên cứu chuyển động và vị trí tương đối của thiên thể}} * {{ara}}: {{t+|ar|تنجيم|m|tr=tanjīm}} * {{sqi}}: {{t+|sq|astrologji}} * {{eng}}: {{t+|en|astrology}} * {{hye}}: {{t+|hy|աստղագուշակություն}} * {{pol}}: {{t+|pl|astrologia|f}} * {{fas}}: {{t+|fa|ستاره‌شناسی}}, {{t+|fa|نجوم}}, {{t+|fa|اخترگویی|tr=axtarguyi}} * {{eus}}: {{t+|eu|astrologia}} * {{isl}}: {{t+|is|stjörnuspeki|f}}, {{t+|is|stjörnuspáfræði|f}} * {{por}}: {{t+|pt|astrologia|f}} * {{bre}}: {{t+|br|steredouriezh|f}} * {{bul}}: {{t+|bg|астрология|f|tr=astrologija}} * {{cat-2}}: {{t+|ca|astrologia|f}} * {{dan}}: {{t+|da|astrologi|c}} * {{deu}}: {{t+|de|Astrologie|f}} * {{fao}}: {{t+|fo|stjørnuspeki|f}} * {{glg}}: {{t+|gl|astroloxía|f}} * {{kat}}: {{t+|ka|ასტროლოგია|tr=asṭrologia}} * {{nld}}: {{t+|nl|astrologie|f}}, {{t+|nl|sterrenwichelarij|f}} * {{hin}}: {{t+|hi|ज्योतिष|f|tr=jyotiṣ}} * {{hun}}: {{t+|hu|asztrológia}}, {{t+|hu|csillagjóslás}} * {{ell}}: {{t+|el|αστρολογία|f|tr=astrología}} *: {{grc}}: {{t+|grc|ἀστρολογία|f|tr=astrología}} * {{ind}}: {{t+|id|astrologi}} * {{gle}}: {{t+|ga|astralaíocht|f}} * {{khm}}: {{t+|km|ហោរាសាស្ត្រ|tr=haoraa saah}} * {{lao}}: {{t+|lo| ໂຫຣາສາດ}}, {{t+|lo| ໂຫລາສາດ}}, {{t+|lo|ນັກສັດຕະລະວິທະຍາ}} * {{lit}}: {{t+|lt|astrologija}} * {{msa}}: {{t+|ms|astrologi}}, {{t+|ms|ilmu nujum}}, {{t+|ms|kaji bintang}} * {{mkd}}: {{t+|mk|астрологија|f|tr=astrologija}} * {{mal}}: {{t+|ml|ജ്യോതിഃശാസ്ത്രം|tr=jyōtiḥśāstraṃ}} {{trans-mid}} * {{mlt}}: {{t+|mt|astroloġija|f}} * {{nor}}: *: {{nob}}: {{t+|nb|astrologi|m}} *: {{nno}}: {{t|nn|astrologi|m}} * {{rus}}: {{t+|ru|астрология|f|tr=astrológija}} * {{nep}}: {{t+|ne|ज्योतिष|tr=jyotiṣ}} * {{jpn}}: {{t+|ja|占星学|tr=senseigaku}} * {{san}}: {{t+|sa|ज्योतिष|n|tr=jyotiṣa}} * {{fra}}: {{t+|fr|astrologie|f}} * {{fin}}: {{t+|fi|astrologia}} * {{epo}}: {{t+|eo|astrologio}} * {{ron}}: {{t+|ro|astrologie|f}} * {{ces}}: {{t+|cs|astrologie|f}}, {{t+|cs|hvězdopravectví|n}} * {{hbs}}: *: {{Cyrl}}: {{t+|sh|астрологија|f}} *: {{Latn}}: {{t+|sh|astrologija|f}} * {{sin}}: {{t+|si|ජෝතිෂ්‍යය|tr=jōtiṣyaya}} * {{slk}}: {{t+|sk|astrológia|f}} * {{slv}}: {{t+|sl|astrologija}} * {{swa}}: {{t+|sw|unajimu}}, {{t+|sw|falaki}} * {{tgl}}: {{t+|tl|astrolohiya}} * {{spa}}: {{t+|es|astrología|f}} * {{tha}}: {{t+|th|โหราศาสตร์|tr=hǒo-raa-sàat}}, {{t+|th|นักษัตรวิทยา|tr=nák-sàt-dtrà-wít-tá-yaa}} * {{tur}}: {{t+|tr|astroloji}} * {{swe}}: {{t+|sv|astrologi|c}} * {{zho}}: *: {{cmn}}: {{t+|cmn|占星學}}, {{t+|cmn|占星学|tr=zhānxīngxué}}, {{t+|cmn|星相|tr=xīngxiàng}} * {{ukr}}: {{t+|uk|астрологія|f|tr=astrolohija}} * {{vol}}: {{t+|vo|strolog}}, {{qualifier|lỗi thời}} {{t+|vo|lustelav}} * {{cym}}: {{t+|cy|sêr-ddewiniaeth|f}}, {{t+|cy|astroleg|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] f6ipnfmqc0217v690r3mltdwb99tddg 2351046 2350783 2026-05-07T10:46:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351046 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} '''chiêm tinh học''' # Hệ thống [[bói toán]] [[tiên đoán]] về [[vấn đề]] [[nhân loại]] và [[sự kiện]] [[trần thế]] bằng cách [[nghiên cứu]] [[chuyển động]] và [[vị trí]] [[tương đối]] của [[thiên thể]]. {{-syn-}} * [[chiêm tinh thuật]] {{-trans-}} {{trans-top|Hệ thống bói toán tiên đoán bằng cách nghiên cứu chuyển động và vị trí tương đối của thiên thể}} * {{ara}}: {{t+|ar|تنجيم|m|tr=tanjīm}} * {{sqi}}: {{t+|sq|astrologji}} * {{eng}}: {{t+|en|astrology}} * {{hye}}: {{t+|hy|աստղագուշակություն}} * {{pol}}: {{t+|pl|astrologia|f}} * {{fas}}: {{t+|fa|ستاره‌شناسی}}, {{t+|fa|نجوم}}, {{t+|fa|اخترگویی|tr=axtarguyi}} * {{eus}}: {{t+|eu|astrologia}} * {{isl}}: {{t+|is|stjörnuspeki|f}}, {{t+|is|stjörnuspáfræði|f}} * {{por}}: {{t+|pt|astrologia|f}} * {{bre}}: {{t+|br|steredouriezh|f}} * {{bul}}: {{t+|bg|астрология|f|tr=astrologija}} * {{cat-old}}: {{t+|ca|astrologia|f}} * {{dan}}: {{t+|da|astrologi|c}} * {{deu}}: {{t+|de|Astrologie|f}} * {{fao}}: {{t+|fo|stjørnuspeki|f}} * {{glg}}: {{t+|gl|astroloxía|f}} * {{kat}}: {{t+|ka|ასტროლოგია|tr=asṭrologia}} * {{nld}}: {{t+|nl|astrologie|f}}, {{t+|nl|sterrenwichelarij|f}} * {{hin}}: {{t+|hi|ज्योतिष|f|tr=jyotiṣ}} * {{hun}}: {{t+|hu|asztrológia}}, {{t+|hu|csillagjóslás}} * {{ell}}: {{t+|el|αστρολογία|f|tr=astrología}} *: {{grc}}: {{t+|grc|ἀστρολογία|f|tr=astrología}} * {{ind}}: {{t+|id|astrologi}} * {{gle}}: {{t+|ga|astralaíocht|f}} * {{khm}}: {{t+|km|ហោរាសាស្ត្រ|tr=haoraa saah}} * {{lao}}: {{t+|lo| ໂຫຣາສາດ}}, {{t+|lo| ໂຫລາສາດ}}, {{t+|lo|ນັກສັດຕະລະວິທະຍາ}} * {{lit}}: {{t+|lt|astrologija}} * {{msa}}: {{t+|ms|astrologi}}, {{t+|ms|ilmu nujum}}, {{t+|ms|kaji bintang}} * {{mkd}}: {{t+|mk|астрологија|f|tr=astrologija}} * {{mal}}: {{t+|ml|ജ്യോതിഃശാസ്ത്രം|tr=jyōtiḥśāstraṃ}} {{trans-mid}} * {{mlt}}: {{t+|mt|astroloġija|f}} * {{nor}}: *: {{nob}}: {{t+|nb|astrologi|m}} *: {{nno}}: {{t|nn|astrologi|m}} * {{rus}}: {{t+|ru|астрология|f|tr=astrológija}} * {{nep}}: {{t+|ne|ज्योतिष|tr=jyotiṣ}} * {{jpn}}: {{t+|ja|占星学|tr=senseigaku}} * {{san}}: {{t+|sa|ज्योतिष|n|tr=jyotiṣa}} * {{fra}}: {{t+|fr|astrologie|f}} * {{fin}}: {{t+|fi|astrologia}} * {{epo}}: {{t+|eo|astrologio}} * {{ron}}: {{t+|ro|astrologie|f}} * {{ces}}: {{t+|cs|astrologie|f}}, {{t+|cs|hvězdopravectví|n}} * {{hbs}}: *: {{Cyrl}}: {{t+|sh|астрологија|f}} *: {{Latn}}: {{t+|sh|astrologija|f}} * {{sin}}: {{t+|si|ජෝතිෂ්‍යය|tr=jōtiṣyaya}} * {{slk}}: {{t+|sk|astrológia|f}} * {{slv}}: {{t+|sl|astrologija}} * {{swa}}: {{t+|sw|unajimu}}, {{t+|sw|falaki}} * {{tgl}}: {{t+|tl|astrolohiya}} * {{spa}}: {{t+|es|astrología|f}} * {{tha}}: {{t+|th|โหราศาสตร์|tr=hǒo-raa-sàat}}, {{t+|th|นักษัตรวิทยา|tr=nák-sàt-dtrà-wít-tá-yaa}} * {{tur}}: {{t+|tr|astroloji}} * {{swe}}: {{t+|sv|astrologi|c}} * {{zho}}: *: {{cmn}}: {{t+|cmn|占星學}}, {{t+|cmn|占星学|tr=zhānxīngxué}}, {{t+|cmn|星相|tr=xīngxiàng}} * {{ukr}}: {{t+|uk|астрологія|f|tr=astrolohija}} * {{vol}}: {{t+|vo|strolog}}, {{qualifier|lỗi thời}} {{t+|vo|lustelav}} * {{cym}}: {{t+|cy|sêr-ddewiniaeth|f}}, {{t+|cy|astroleg|f}} {{trans-bottom}} [[Thể loại:Danh từ tiếng Việt]] lzgmpxxy6yo8rdwl15wnsf6p59898jf nữ thần 0 264074 2350784 2163135 2026-05-07T08:01:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350784 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Індійська богиня.jpg|nhỏ|Tượng '''nữ thần''' [[Parvati]] (một '''nữ thần''' trong [[Ấn Độ giáo]]).]] {{-etym-}} Phiên âm từ [[chữ Hán]] <big>[[女神]]</big>. Trong đó: <big>[[女]]</big> (“nữ”: đàn bà, con gái); <big>[[神]]</big> (“thần”: thần linh, thánh). {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # Vị [[thần]] [[nữ]]. #: {{ux|vi|'''Nữ thần''' Mặt Trời.}} #: {{ux|vi|Tượng '''Nữ thần''' Tự do.}} {{-syn-}} * [[thiên nữ]] #* '''1929''', {{w|Phan Khôi}}, ''[[s:Cái tánh ghen cùng dật sự thi văn bởi nó mà ra|Cái tánh ghen cùng dật sự thi văn bởi nó mà ra]]'', {{w|Phụ nữ tân văn}}: #*: {{quote|vi|Một hôm, trước mặt vợ mình, Bá Ngọc đọc bài phú ''Lạc thần'' (bài của Tào Thực tả sự đẹp của '''nữ thần''' sông Lạc), rồi nói với vợ rằng : “Tôi mà cưới vợ được như vầy, thôi không còn ân hận gì nữa”.}} #* '''2021''', Trương Định, ''[https://tienphong.vn/chiem-nguong-ve-dep-phu-dieu-nu-than-sarasvati-vua-duoc-cong-nhan-bao-vat-quoc-gia-post1304166.tpo Chiêm ngưỡng vẻ đẹp phù điêu nữ thần Sarasvati vừa được công nhận Bảo vật Quốc gia]'', {{w|báo Tiền Phong}}: #*: {{quote|vi|Theo đó, phù điêu '''nữ thần''' [[Sarasvati]] (niên đại thế kỷ XII) đang trưng bày tại Bảo tàng tỉnh Bình Định được công nhận là Bảo vật Quốc gia.}} {{-trans-}} {{trans-top|Vị thần nữ}} * {{ara}}: {{t|ar|إلاهة|f|tr=ʾilāha}}, {{t|ar|إلهة|tr=ʾilāha}} * {{afr}}: {{t|af|godin}} * {{sqi}}: {{t|sq|perëndeshë|f}} * {{eng}}: {{t|en|goddess}} ** {{ang}}: {{t|ang|gyden|f}} * {{hye}}: {{t|hy|աստվածուհի|tr=astvacuhi}} * {{ast}}: {{t|ast|diosa|f}} * {{pol}}: {{t|pl|bogini|f}} * {{fas}}: {{t|fa|الهه|tr=elâhe}}, {{t|fa|ایزدبانو|tr=izadbânu}} * {{isl}}: {{t|is|gyðja|f}}, {{t|is|dís|f}} * {{bel}}: {{t|be|багіня|f|tr=bahínja}} * {{ben}}: {{t|bn|দেবী|tr=debi}} * {{por}}: {{t|pt|deusa|f}} * {{ina}}: {{t|ia|dea}} * {{bul}}: {{t|bg|богиня|f|tr=bogínja}} * {{cat-2}}: {{t|ca|deessa|f}} * {{cop}}: {{t|cop|ⲛⲧⲱⲣⲉ|tr=ntōre}} * {{heb}}: {{t|he|אלה|f|tr=elá}} * {{dan}}: {{t|da|gudinde|c}} * {{deu}}: {{t|de|Göttin|f}} * {{est}}: {{t|et|jumalanna}} * {{gla}}: {{t|gd|ban-dia|f}} * {{glg}}: {{t|gl|deusa|f}} * {{kat}}: {{t|ka|ქალღმერთი|tr=kalɣmerti}} * {{nld}}: {{t|nl|godin}} * {{hin}}: {{t|hi|देवी|f|tr=devī}} * {{hun}}: {{t|hu|istennő}} * {{ell}}: {{t|el|θεά|f|tr=theá}} * {{ido}}: {{t|io|deino}} * {{ind}}: {{t|id|dewi}} * {{gle}}: {{t|ga|bandia|m}} * {{khm}}: {{t|km|ព្រះម៉ែ|tr=prĕəh mae}}, {{t|km|ទេវី|tr=teevii}}, {{t|km|ទេពី|tr=teepii}} * {{lat}}: {{t|la|dea|f}} * {{lav}}: {{t|lv|dieviete|f}}, {{t|lv|dieve|f}} * {{lit}}: {{t|lt|deivė|f}} * {{msa}}: {{t|ms|dewi}} * {{mkd}}: {{t|mk|божица|f|tr=božica}}, {{t|mk|богиња|f|tr=boginja}} * {{mlg}}: {{t|mg|andriamanibavy}} * {{mya}}: {{t|my|ဒေဝီ|tr=dewi}} * {{nor}}: ** {{nob}}: {{t|nb|gudinne|mf}} ** {{nno}}: {{t|nn|gudinne|f}} * {{rus}}: {{t|ru|богиня|f|tr=bogínja}} * {{jpn}}: {{t|ja|女神|tr=[[めがみ]], megami}} * {{nrf}}: {{t|nrf|déêsse|f}} {{q|Jersey}} * {{pli}}: {{t|pi|devī|f}} * {{san}}: {{t|sa|देवी|f|tr=devī}}, {{t|sa|ग्ना|f|tr=gnā́}} * {{fra}}: {{t|fr|déesse|f}} * {{fin}}: {{t|fi|jumalatar}} * {{epo}}: {{t|eo|diino}} * {{ron}}: {{t|ro|zeiță|f}} * {{ces}}: {{t|cs|bohyně|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|богиња|f}}, {{t|sh|божица|f}} ** {{Latn}}: {{t|sh|boginja|f}}, {{t|sh|božica|f}} * {{slk}}: {{t|sk|bohyňa|f}} * {{slv}}: {{t|sl|boginja|f}} * {{sux}}: {{t|sux|𒀭|tr=diĝir, dingir; dimer, dimir}} * {{tgl}}: {{t|tl|diyosa}} * {{spa}}: {{t|es|diosa|f}} * {{tha}}: {{t|th|เทวี|tr=tee-wii}} * {{tur}}: {{t|tr|tanrıça}}, {{t|tr|ilahe}} * {{swe}}: {{t|sv|gudinna|c}} * {{txb}}: {{t|txb|ñäkteñña}} * {{kor}}: {{t|ko|여신|tr=yeosin}}, {{t|ko|녀신|tr=nyeosin}} {{q|Bắc Triều Tiên}} * {{zho}}: ** {{nan}}: {{t|nan|女神|tr=lú-sîn / lí-sîn|sc=Hani}} ** {{cmn}}: {{t|cmn|女神|tr=nǚshén|sc=Hani}} ** {{yue}}: {{t|yue|女神|tr=neoi5 san4|sc=Hani}} * {{uga}}: {{t|uga|𐎛𐎍𐎚|tr=ỉlt}} * {{ukr}}: {{t|uk|богиня|f|tr=bohýnja}} * {{urd}}: {{t|ur|دیوی|f|tr=devī}} * {{cym}}: {{t|cy|duwes|f}} * {{ita}}: {{t|it|dea|f}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} [[Thể loại:Mục từ Hán-Việt]] {{catname|Danh từ|tiếng Việt}} [[Thể loại:Thần/Tiếng Việt]] [[Thể loại:Giống cái/Tiếng Việt]] mf7mw94skaqmr8yqzr6el9h64xb5ccq 2351047 2350784 2026-05-07T10:46:57Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351047 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Індійська богиня.jpg|nhỏ|Tượng '''nữ thần''' [[Parvati]] (một '''nữ thần''' trong [[Ấn Độ giáo]]).]] {{-etym-}} Phiên âm từ [[chữ Hán]] <big>[[女神]]</big>. Trong đó: <big>[[女]]</big> (“nữ”: đàn bà, con gái); <big>[[神]]</big> (“thần”: thần linh, thánh). {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # Vị [[thần]] [[nữ]]. #: {{ux|vi|'''Nữ thần''' Mặt Trời.}} #: {{ux|vi|Tượng '''Nữ thần''' Tự do.}} {{-syn-}} * [[thiên nữ]] #* '''1929''', {{w|Phan Khôi}}, ''[[s:Cái tánh ghen cùng dật sự thi văn bởi nó mà ra|Cái tánh ghen cùng dật sự thi văn bởi nó mà ra]]'', {{w|Phụ nữ tân văn}}: #*: {{quote|vi|Một hôm, trước mặt vợ mình, Bá Ngọc đọc bài phú ''Lạc thần'' (bài của Tào Thực tả sự đẹp của '''nữ thần''' sông Lạc), rồi nói với vợ rằng : “Tôi mà cưới vợ được như vầy, thôi không còn ân hận gì nữa”.}} #* '''2021''', Trương Định, ''[https://tienphong.vn/chiem-nguong-ve-dep-phu-dieu-nu-than-sarasvati-vua-duoc-cong-nhan-bao-vat-quoc-gia-post1304166.tpo Chiêm ngưỡng vẻ đẹp phù điêu nữ thần Sarasvati vừa được công nhận Bảo vật Quốc gia]'', {{w|báo Tiền Phong}}: #*: {{quote|vi|Theo đó, phù điêu '''nữ thần''' [[Sarasvati]] (niên đại thế kỷ XII) đang trưng bày tại Bảo tàng tỉnh Bình Định được công nhận là Bảo vật Quốc gia.}} {{-trans-}} {{trans-top|Vị thần nữ}} * {{ara}}: {{t|ar|إلاهة|f|tr=ʾilāha}}, {{t|ar|إلهة|tr=ʾilāha}} * {{afr}}: {{t|af|godin}} * {{sqi}}: {{t|sq|perëndeshë|f}} * {{eng}}: {{t|en|goddess}} ** {{ang}}: {{t|ang|gyden|f}} * {{hye}}: {{t|hy|աստվածուհի|tr=astvacuhi}} * {{ast}}: {{t|ast|diosa|f}} * {{pol}}: {{t|pl|bogini|f}} * {{fas}}: {{t|fa|الهه|tr=elâhe}}, {{t|fa|ایزدبانو|tr=izadbânu}} * {{isl}}: {{t|is|gyðja|f}}, {{t|is|dís|f}} * {{bel}}: {{t|be|багіня|f|tr=bahínja}} * {{ben}}: {{t|bn|দেবী|tr=debi}} * {{por}}: {{t|pt|deusa|f}} * {{ina}}: {{t|ia|dea}} * {{bul}}: {{t|bg|богиня|f|tr=bogínja}} * {{cat-old}}: {{t|ca|deessa|f}} * {{cop}}: {{t|cop|ⲛⲧⲱⲣⲉ|tr=ntōre}} * {{heb}}: {{t|he|אלה|f|tr=elá}} * {{dan}}: {{t|da|gudinde|c}} * {{deu}}: {{t|de|Göttin|f}} * {{est}}: {{t|et|jumalanna}} * {{gla}}: {{t|gd|ban-dia|f}} * {{glg}}: {{t|gl|deusa|f}} * {{kat}}: {{t|ka|ქალღმერთი|tr=kalɣmerti}} * {{nld}}: {{t|nl|godin}} * {{hin}}: {{t|hi|देवी|f|tr=devī}} * {{hun}}: {{t|hu|istennő}} * {{ell}}: {{t|el|θεά|f|tr=theá}} * {{ido}}: {{t|io|deino}} * {{ind}}: {{t|id|dewi}} * {{gle}}: {{t|ga|bandia|m}} * {{khm}}: {{t|km|ព្រះម៉ែ|tr=prĕəh mae}}, {{t|km|ទេវី|tr=teevii}}, {{t|km|ទេពី|tr=teepii}} * {{lat}}: {{t|la|dea|f}} * {{lav}}: {{t|lv|dieviete|f}}, {{t|lv|dieve|f}} * {{lit}}: {{t|lt|deivė|f}} * {{msa}}: {{t|ms|dewi}} * {{mkd}}: {{t|mk|божица|f|tr=božica}}, {{t|mk|богиња|f|tr=boginja}} * {{mlg}}: {{t|mg|andriamanibavy}} * {{mya}}: {{t|my|ဒေဝီ|tr=dewi}} * {{nor}}: ** {{nob}}: {{t|nb|gudinne|mf}} ** {{nno}}: {{t|nn|gudinne|f}} * {{rus}}: {{t|ru|богиня|f|tr=bogínja}} * {{jpn}}: {{t|ja|女神|tr=[[めがみ]], megami}} * {{nrf}}: {{t|nrf|déêsse|f}} {{q|Jersey}} * {{pli}}: {{t|pi|devī|f}} * {{san}}: {{t|sa|देवी|f|tr=devī}}, {{t|sa|ग्ना|f|tr=gnā́}} * {{fra}}: {{t|fr|déesse|f}} * {{fin}}: {{t|fi|jumalatar}} * {{epo}}: {{t|eo|diino}} * {{ron}}: {{t|ro|zeiță|f}} * {{ces}}: {{t|cs|bohyně|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|богиња|f}}, {{t|sh|божица|f}} ** {{Latn}}: {{t|sh|boginja|f}}, {{t|sh|božica|f}} * {{slk}}: {{t|sk|bohyňa|f}} * {{slv}}: {{t|sl|boginja|f}} * {{sux}}: {{t|sux|𒀭|tr=diĝir, dingir; dimer, dimir}} * {{tgl}}: {{t|tl|diyosa}} * {{spa}}: {{t|es|diosa|f}} * {{tha}}: {{t|th|เทวี|tr=tee-wii}} * {{tur}}: {{t|tr|tanrıça}}, {{t|tr|ilahe}} * {{swe}}: {{t|sv|gudinna|c}} * {{txb}}: {{t|txb|ñäkteñña}} * {{kor}}: {{t|ko|여신|tr=yeosin}}, {{t|ko|녀신|tr=nyeosin}} {{q|Bắc Triều Tiên}} * {{zho}}: ** {{nan}}: {{t|nan|女神|tr=lú-sîn / lí-sîn|sc=Hani}} ** {{cmn}}: {{t|cmn|女神|tr=nǚshén|sc=Hani}} ** {{yue}}: {{t|yue|女神|tr=neoi5 san4|sc=Hani}} * {{uga}}: {{t|uga|𐎛𐎍𐎚|tr=ỉlt}} * {{ukr}}: {{t|uk|богиня|f|tr=bohýnja}} * {{urd}}: {{t|ur|دیوی|f|tr=devī}} * {{cym}}: {{t|cy|duwes|f}} * {{ita}}: {{t|it|dea|f}} {{trans-bottom}} {{-ref-}} {{R:Tratu}} [[Thể loại:Mục từ Hán-Việt]] {{catname|Danh từ|tiếng Việt}} [[Thể loại:Thần/Tiếng Việt]] [[Thể loại:Giống cái/Tiếng Việt]] sst2x21e6vfkvis0zqlby9fpgjlz09c Mô đun:zh-pron 828 264652 2350460 2347057 2026-05-06T13:01:55Z TheHighFighter2 42988 2350460 Scribunto text/plain local m_str_utils = require("Module:string utilities") local codepoint = m_str_utils.codepoint local concat = table.concat local explode_chars = require("Module:Hani").explode_chars local find = m_str_utils.find local format = string.format local gmatch = m_str_utils.gmatch local gsub = m_str_utils.gsub local insert = table.insert local ipairs = ipairs local match = m_str_utils.match local pairs = pairs local split = m_str_utils.split local gsplit = m_str_utils.gsplit local export = {} local hanzi = require("Module:scripts").getByCode("Hani"):getCharacters() local bopomofo = require("Module:scripts").getByCode("Bopo"):getCharacters() local langname = { ["cdo"] = "tiếng Mân Đông", ["cjy"] = "tiếng Tấn", ["cpx"] = "tiếng Phủ Tiên", ["cmn"] = "tiếng Quan Thoại", ["csp"] = "Southern Pinghua", ["dng"] = "tiếng Đông Can", ["gan"] = "tiếng Cám", ["hak"] = "tiếng Khách Gia", ["hsn"] = "tiếng Tương", ["hsn-lou"] = "tiếng Tương", ["hsn-hya"] = "tiếng Tương", ["nan-luh"] = "Leizhou Min", ["mnp"] = "tiếng Mân Bắc", ["nan-hbl"] = "tiếng Mân Tuyền Chương", ["nan-tws"] = "tiếng Triều Châu", ["wuu"] = "tiếng Ngô", ["wuu-jih"] = "tiếng Ngô", ["yue"] = "tiếng Quảng Đông", ["zhx-sic"] = "tiếng Tứ Xuyên", ["zhx-tai"] = "tiếng Đài Sơn", } local langname_abbr = { ["m"] = "tiếng Quan Thoại", ["m-s"] = "tiếng Tứ Xuyên", ["m-x"] = "tiếng Quan Thoại", ["m-nj"] = "tiếng Quan Thoại", ["dg"] = "tiếng Đông Can", ["c"] = "tiếng Quảng Đông", ["c-dg"] = "tiếng Quảng Đông", ["c-t"] = "tiếng Đài Sơn", ["c-yj"] = "tiếng Quảng Đông", ["g"] = "tiếng Cám", ["h"] = "tiếng Khách Gia", ["j"] = "tiếng Tấn", ["mb"] = "tiếng Mân Bắc", ["mc"] = "tiếng Hán trung cổ", ["md"] = "tiếng Mân Đông", ["mn"] = "tiếng Mân Tuyền Chương", ["mn-t"] = "tiếng Triều Châu", ["mn-l"] = "Leizhou Min", ["oc"] = "tiếng Hán thượng cổ", ["px"] = "Puxian Min", ["sp"] = "Southern Pinghua", ["w"] = "tiếng Ngô", ["w-j"] = "tiếng Ngô", ["x"] = "tiếng Tương", ["x-l"] = "Loudi Xiang", ["x-h"] = "Hengyang Xiang", } local pos_aliases_cat = { ["n"] = "Danh từ", ["noun"] = "Danh từ", ["pn"] = "Danh từ riêng", ["propn"] = "Danh từ riêng", ["proper"] = "Danh từ riêng", ["proper noun"] = "Danh từ riêng", ["place"] = "Địa danh", ["pron"] = "Đại từ", ["pronoun"] = "Đại từ", ["v"] = "Động từ", ["verb"] = "Động từ", ["a"] = "Tính từ", ["adj"] = "Tính từ", ["adjective"] = "Tính từ", ["adv"] = "Phó từ", ["adverb"] = "Phó từ", ["prep"] = "Giới từ", ["pre"] = "Giới từ", ["postp"] = "Hậu giới từ", ["post"] = "Hậu giới từ", ["con"] = "Liên từ", ["conj"] = "Liên từ", ["conjunction"] = "Liên từ", ["part"] = "Trợ từ", ["particle"] = "Trợ từ", ["pref"] = "Tiền tố", ["prefix"] = "Tiền tố", ["suf"] = "Hậu tố", ["suffix"] = "Hậu tố", ["infix"] = "Trung tố", ["prov"] = "Tục ngữ", ["proverb"] = "Tục ngữ", ["id"] = "Thành ngữ", ["idiom"] = "Thành ngữ", ["ch"] = "Thành ngữ truyền thống", ["cy"] = "Thành ngữ truyền thống", ["4ci"] = "Thành ngữ truyền thống", ["ph"] = "Cụm từ", ["phrase"] = "Cụm từ", ["int"] = "Thán từ", ["intj"] = "Thán từ", ["interj"] = "Thán từ", ["interjection"] = "Thán từ", ["cl"] = "Loại từ", ["cls"] = "Loại từ", ["classifier"] = "Loại từ", ["num"] = "Số", ["numeral"] = "Số", ["abb"] = "Từ viết tắt", ["abbreviation"] = "Từ viết tắt", ["det"] = "Từ hạn định", ["deter"] = "Từ hạn định", ["determiner"] = "Từ hạn định", ["syl"] = "Âm tiết", ["syllable"] = "Âm tiết", } local function make_note(text) if find(text, ": ") then text = "\n*" .. gsub(gsub(text, "\n", ".\n*"), "([:;]) ", "%1\n**") elseif find(text, "; ") then text = "\n*" .. gsub(text, "; ", ";\n*") end text = gsub(text, "“([^”]+)”", function (a) return "“" .. gsub(a, ";\n%*+", "; ") .. "”" end) -- fix bug about indentation levels (see https://en.wiktionary.org/w/index.php?oldid=78848651) local last_level = ("\n"..text):match("\n(%**)[^*\n][^\n]*$") local append = last_level:gsub("%*","<ul>") return "\n<div style=\"border: 1px solid var(--wikt-palette-forestgreen, #235923); padding: 4px; margin: 8px; background: var(--wikt-palette-lightyellow, #ffffe0);color:inherit; font-size: 85%\">'''Ghi chú''': " .. text .. ".</div>" .. append end local function ipa_format(text) local numbers = { ["1"]="¹",["2"]="²",["3"]="³",["4"]="⁴",["5"]="⁵",["0"]="⁰",["-"]="⁻",["/"]="/, /" } return gsub(text,"[0-5%-/]",numbers) end local function Consolas(text) return '<span style="font-family: Consolas, monospace;">' .. text .. "</span>" end local function format_IPA(text) return '<span class="IPA">' .. text .. "</span>" end function export.make(frame) local parent_args = frame:getParent().args local params = { pagename = {}, namespace = {}, dial = {}, mc = {}, oc = {}, cat = {}, only_cat = {type = "boolean"}, poj_form_zh_see = {type = "boolean"}, } for abbr, _ in pairs(langname_abbr) do params[abbr] = {} params[abbr .. "a"] = {list = true} params[abbr .. "_note"] = {} end local args = require("Module:parameters").process(parent_args, params, nil, "zh-pron", "make") local title = mw.title.getCurrentTitle() local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local sortkey = (require("Module:Hani-sortkey").makeSortKey(pagename)) local is_single_hanzi = find(pagename, "^[" .. hanzi .. "]$") ~= nil local namespace = args.namespace or title.nsText local m_rom = args["m"] local m_s_rom = args["m-s"] local m_x_rom = args["m-x"] local m_nj_rom = args["m-nj"] local dg_rom = args["dg"] local c_rom = args["c"] local c_dg_rom = args["c-dg"] local c_t_rom = args["c-t"] local c_yj_rom = args["c-yj"] local g_rom = args["g"] local h_rom = args["h"] local j_rom = args["j"] local mb_rom = args["mb"] local md_rom = args["md"] local mn_rom = args["mn"] local mn_l_rom = args["mn-l"] local mn_t_rom = args["mn-t"] local px_rom = args["px"] local sp_rom = args["sp"] local w_rom = args["w"] local w_j_rom = args["w-j"] local x_rom = args["x"] local x_l_rom = args["x-l"] local x_h_rom = args["x-h"] local m_audio = args["ma"] local m_s_audio = args["m-sa"] local m_x_audio = args["m-xa"] local m_nj_audio = args["m-nja"] local dg_audio = args["dga"] local c_audio = args["ca"] local c_dg_audio = args["c-dga"] local c_t_audio = args["c-ta"] local c_yj_audio = args["c-yja"] local g_audio = args["ga"] local h_audio = args["ha"] local j_audio = args["ja"] local mb_audio = args["mba"] local md_audio = args["mda"] local mn_audio = args["mna"] local mn_l_audio = args["mn-la"] local mn_t_audio = args["mn-ta"] local px_audio = args["pxa"] local sp_audio = args["spa"] local w_audio = args["wa"] local w_j_audio = args["w-ja"] local x_audio = args["xa"] local x_l_audio = args["x-la"] local x_h_audio = args["x-ha"] local dial = args["dial"] local mc = args["mc"] local oc = args["oc"] local only_cat = args["only_cat"] -- True if arguments exist for the specified variety, using a language param abbreviation. local function has_var(var) return args[var] or #args[var .. "a"] > 0 end local function add_audio(text, audios, lang, show) -- This function has side effects for _, audio in ipairs(audios) do if audio == "y" then audio = format("%s-%s.ogg", lang, title.baseText) end insert(text, "\n*" .. (show and "::" or "**") .. " [[Tập tin:") insert(text, audio) insert(text, "]]") end if #audios > 0 then insert(text, "[[Thể loại:Mục từ có liên kết âm thanh ") insert(text, langname[lang]) insert(text, "|" .. sortkey .. "]]") end end local function add_audio_show(text, audios, lang) add_audio(text, audios, lang, "show") end local text = {} --the pronunciation table if not only_cat then --The whole table consists of 4 parts --"textShow" contains Part 1, 3 and 4 local textShow = {'<div class="standard-box zhpron" style="overflow:auto; max-width:500px; font-size:100%">'} --"textHide" is Part 2 local textHide = {} local function show(txt) insert(textShow, txt) end local function hide(txt) insert(textHide, txt) end local function hide_note(var) local note = args[var .. "_note"] if note then hide(make_note(note)) end end show('<div class="vsSwitcher" data-toggle-category="cách phát âm">') --Part 1 and 2, "Pronunciation" and "Pronunciation expressed in different romanizations" if m_rom or m_s_rom or m_x_rom or m_nj_rom or dg_rom then show("\n* [[w:Quan thoại|Quan thoại]]") end if has_var("m") then local m_args = {} local m_pron = require("Module:cmn-pron") if m_rom then local str_analysis = m_pron.str_analysis local other_m_vars = has_var("m-s") or has_var("m-x") or has_var("m-nj") or has_var("dg") show("\n" .. str_analysis(m_rom, "head", other_m_vars)) m_args[1] = str_analysis(m_rom, "") for i = 2, 5 do m_args[i] = str_analysis(m_rom, tostring(i)) end local m_args_params_prefixed_with_1 = {"n", "na", "nb", "nc", "nd"} for _, base in ipairs(m_args_params_prefixed_with_1) do for i = 1, 5 do local param = tostring(i) .. base m_args[param] = str_analysis(m_rom, param) end end local m_args_params = {"py", "cap", "tl", "tl2", "tl3", "a", "audio", "er", "ertl", "ertl2", "ertl3", "era", "eraudio"} for _, base in ipairs(m_args_params) do m_args[base] = str_analysis(m_rom, base) for i = 2, 5 do local param = tostring(i) .. base m_args[param] = str_analysis(m_rom, param) end end end for i, audio in ipairs(m_audio) do local ind = i == 1 and "" or tostring(i) m_args[ind .. "a"] = audio end show(m_pron.make_audio(m_args)) hide(m_pron.make_args(m_args)) hide_note("m") end if (not m_rom) and (m_s_rom or m_x_rom or m_nj_rom or dg_rom) then hide("\n* [[w:Quan thoại|Quan thoại]]") end if has_var("m-s") then local m_s_pron = require("Module:zhx-sic-pron") local m_s_processed = gsub(m_s_rom:gsub("/", " / "), "([%d-])([%a])", "%1 %2") :gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") if m_s_rom then show("\n*: <small>(<i>[[w:Phương ngữ Tứ Xuyên|Thành Đô]], [[w:Bính âm tiếng Tứ Xuyên|SP]]</i>)</small>: ") show(Consolas(m_s_processed)) end add_audio_show(textShow, m_s_audio, "zhx-sic") hide("\n** <small>(<i>[[w:Thành Đô|Thành Đô]]</i>)</small>") hide("\n*** <small><i>[[w:Bính âm tiếng Tứ Xuyên|Bính âm tiếng Tứ Xuyên]]</i></small>: ") hide(Consolas(m_s_processed)) local xinwenz = m_s_pron.convert(m_s_rom, "SWZ") if xinwenz then hide("\n*** <small><i>[[w:zh:四川话拉丁化新文字|Scuanxua Ladinxua Xin Wenz]]</i></small>: ") hide(Consolas(m_s_pron.convert(m_s_rom, "SWZ"))) end hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học<sup>([[w:zh:成都话|ghi chú]])</sup></small>: ") hide(format_IPA(m_s_pron.convert(m_s_rom, "IPA"))) hide_note("m-s") end if has_var("m-x") then local m_x_pron = require("Module:cmn-pron-Xian") local m_x_display, m_x_hidden, m_x_ipa = m_x_pron.py_process(m_x_rom) show("\n*: <small>(<i>[[w:en:Guanzhong dialect|Tây An]], [[Wiktionary:Tiếng Trung Quốc/Tây An|Bính âm Quan Trung]]</i>)</small>: ") show(Consolas(m_x_display)) add_audio_show(textShow, m_x_audio, "cmn") hide("\n** <small>(<i>[[w:Tây An|Tây An]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tây An|Bính âm Quan Trung]]</i></small>: ") hide(Consolas(m_x_hidden)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:en:Guanzhong dialect|ghi chú]])</sup></small>: ") hide(format_IPA(m_x_ipa)) hide_note("m-x") end if has_var("m-nj") then local m_nj_pron = require("Module:cmn-pron-Nanjing") local m_nj_display, m_nj_hidden, m_nj_num, m_nj_ipa = m_nj_pron.py_process(m_nj_rom) show("\n*: <small>(<i>[[w:Nanjing dialect|Nanjing]], [[Wiktionary:Tiếng Trung Quốc/Nanjing|Nanjing Pinyin]]</i>)</small>: ") show(Consolas(m_nj_display)) add_audio_show(textShow, m_nj_audio, "cmn") hide("\n** <small>(<i>[[w:Nanjing|Nanjing]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Nanjing|Nanjing Pinyin]]</i></small>: ") hide(Consolas(m_nj_hidden)) hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Nanjing|Nanjing Pinyin]] (numbered)</i></small>: ") hide(Consolas(m_nj_num)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Nanjing dialect|ghi chú]])</sup></small>: ") hide(format_IPA(m_nj_ipa)) hide_note("m-nj") end if has_var("dg") then local dg_pron = require("Module:dng-pron") local dg_processed = dg_pron.process(dg_rom) if dg_rom then show("\n*: <small>(<i>[[w:Tiếng Đông Can|Đông Can]], [[w:Bảng chữ cái tiếng Đông Can|Chữ Kirin]] và [[Wiktionary:Bảng chuyển tự tiếng Đông Can|Wiktionary]]</i>)</small>: ") show(Consolas(dg_processed)) end add_audio_show(textShow, dg_audio, "dng") hide("\n** <small>(<i>[[w:Tiếng Đông Can|Đông Can]]</i>)</small>") hide("\n*** <small><i>[[w:Bảng chữ cái tiếng Đông Can|Chữ Kirin]] và [[Wiktionary:Bảng chuyển tự tiếng Đông Can|Wiktionary]]</i></small>: ") hide(Consolas(dg_processed)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Âm vị học tiếng Đông Can|ghi chú]])</sup></small>: ") hide(format_IPA(dg_pron.convert(dg_rom, "IPA")) .. "\n**: <small>(Lưu ý: Cách phát âm trong tiếng Đông Can hiện đang được thử nghiệm và có thể không chính xác.)</small>") hide_note("dg") end if has_var("c") or has_var("c-dg") or has_var("c-t") or has_var("c-yj") then if c_rom or c_dg_rom or c_t_rom or c_yj_rom then local c_count = (c_rom and 1 or 0) + (c_dg_rom and 1 or 0) + (c_t_rom and 1 or 0) + (c_yj_rom and 1 or 0) local c_sep = (c_count == 1) and " " or "\n*: " show("\n* [[w:Tiếng Quảng Đông|Quảng Đông]]") hide("\n* [[w:Tiếng Quảng Đông|Quảng Đông]]") if c_rom then local c_pron = require("Module:yue-pron") show(c_sep) show("<small>(<i>") if c_count > 1 then show("[[w:Tiếng Quảng Châu|Quảng Châu]]–[[w:Tiếng Quảng Châu Hồng Kông|Hồng Kông]], ") end show("[[w:Việt bính|Việt bính]]</i>)</small>: ") show(Consolas(c_pron.show_standard(c_rom, is_single_hanzi))) add_audio_show(textShow, c_audio, "yue") hide(c_pron.hide_standard(c_rom, is_single_hanzi)) if not args["c_note"] and is_single_hanzi and (c_rom:find("^[ao]") or c_rom:find(",[ao]")) then args["c_note"] = "The zero initial " .. format_IPA("/∅-/") .. " is commonly pronounced with a ''ng''-initial " .. format_IPA("/ŋ-/") .. " in some varieties of Cantonese, including Hong Kong Cantonese" end hide_note("c") end if c_dg_rom then local c_dg_pron = require("Module:yue-pron/Dongguan") local c_dg_display = c_dg_rom:gsub(","," / ") :gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") show(c_sep .. "<small>(<i>[[w:zh:東莞話|Dongguan]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Dongguan|Jyutping++]]</i>)</small>: ") show(Consolas(c_dg_display)) add_audio_show(textShow, c_dg_audio, "yue") hide("\n** <small>(<i>[[w:zh:東莞話|Dongguan]], [[w:Guancheng Subdistrict|Guancheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Dongguan|Jyutping++]]</i></small>: ") hide(Consolas(c_dg_display)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:zh:東莞話|ghi chú]])</sup></small>: ") hide(format_IPA(c_dg_pron.jpp_to_ipa(c_dg_rom))) hide_note("c-dg") end if c_t_rom then local c_t_pron = require("Module:yue-pron/Taishanese") local c_t_display = c_t_rom:gsub(","," / ") :gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") show(c_sep .. "<small>(<i>[[w:Tiếng Đài Sơn|Đài Sơn]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Tiếng Đài Sơn|Wiktionary]]</i>)</small>: ") show(Consolas(c_t_display)) add_audio_show(textShow, c_t_audio, "zhx-tai") hide("\n** <small>(<i>[[w:Tiếng Đài Sơn|Tiếng Đài Sơn]], [[w:Taicheng Subdistrict|Taicheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Tiếng Đài Sơn|Wiktionary]]</i></small>: ") hide(Consolas(c_t_display)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Tiếng Đài Sơn|ghi chú]])</sup></small>: ") hide(format_IPA(c_t_pron.hoisanva_to_ipa(c_t_rom))) hide_note("c-t") end if c_yj_rom then local c_yj_pron = require("Module:yue-pron/Yangjiang") local c_yj_display = c_yj_rom:gsub(","," / ") :gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") show(c_sep .. "<small>(<i>[[w:zh:陽江話|Yangjiang]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Yangjiang|Jyutping++]]</i>)</small>: ") show(Consolas(c_yj_display)) add_audio_show(textShow, c_yj_audio, "yue") hide("\n** <small>(<i>[[w:zh:陽江話|Yangjiang Yue]], [[w:Jiangcheng, Yangjiang|Jiangcheng]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Quảng Đông/Yangjiang|Jyutping++]]</i></small>: ") hide(Consolas(c_yj_display)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Gao–Yang Yue|ghi chú]])</sup></small>: ") hide(format_IPA(c_yj_pron.jpp_to_ipa(c_yj_rom))) hide_note("c-yj") end end end if has_var("g") then local g_pron = require("Module:gan-pron") if g_rom then show("\n* [[w:w:Tiếng Cám|Cám]] <small>(<i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Cám|Wiktionary]]</i>)</small>: ") show(Consolas(g_pron.rom(g_rom))) end add_audio_show(textShow, g_audio, "gan") hide("\n* [[w:Tiếng Cám|Cám]]") hide("\n** <small>(<i>[[w:Phương ngữ Nam Xương|Nam Xương]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Cám|Wiktionary]]</i></small>: ") hide(Consolas(g_pron.rom(g_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Nam Xương|Nam Xương|ghi chú]])</sup></small>: ") hide(format_IPA("/" .. g_pron.ipa(g_rom) .. "/")) hide_note("g") end if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then local h_pron = require("Module:hak-pron") if find(h_rom, "pfs=.") or find(h_rom, "gd=.") then show("\n* [[w:Tiếng Khách Gia|Khách Gia]]") show(h_pron.rom_display(h_rom,"yes")) end add_audio_show(textShow, h_audio, "hak") hide("\n* [[Wiktionary:Tiếng Trung Quốc/Tiếng Khách Gia|Khách Gia]]") if h_rom then hide(h_pron.rom_display(h_rom,"")) end hide_note("h") end if has_var("j") then local j_pron = require("Module:cjy-pron") if j_rom then show("\n* [[w:Tiếng Tấn|Tấn]] <small>(<i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Tấn|Wiktionary]]</i>)</small>: ") show(Consolas(j_pron.rom(j_rom))) end add_audio_show(textShow, j_audio, "cjy") hide("\n* [[w:Tiếng Tấn|Tấn]]") hide("\n** <small>(<i>[[w:Thái Nguyên, Sơn Tây|Thái Nguyên]]</i>)<sup>[[:w:zh:太原話|+]]</sup></small>") if j_rom then hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Tấn|Wiktionary]]</i></small>: ") hide(Consolas(j_pron.rom(j_rom))) end local no_sandhi = false local roms = split(j_rom, "/") for i = 1, #roms do if find(roms[i], " [^ ]+ ") then no_sandhi = true break end end hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học (<i>old-style" .. (no_sandhi and ", no sandhi" or "") .. "</i>)</small>: ") hide(format_IPA("/" .. j_pron.ipa(j_rom, no_sandhi and "no_sandhi" or "") .. "/")) hide_note("j") end if has_var("mb") then local mb_pron = require("Module:mnp-pron") if mb_rom then show("\n* [[w:Tiếng Mân Bắc|Mân Bắc]] <small>(<i>[[w:La Mã hóa phương ngữ Kiến Ninh|KCR]]</i>)</small>: ") show(Consolas(mb_pron.rom(mb_rom))) end add_audio_show(textShow, mb_audio, "mnp") hide("\n* [[w:Tiếng Mân Bắc|Mân Bắc]]") hide("\n** <small>(<i>[[w:Phương ngữ Kiến Âu|Kiến Âu]]</i>)</small>") if mb_rom then hide("\n*** <small><i>[[w:La Mã hóa phương ngữ Kiến Ninh|La Mã hóa phương ngữ Kiến Ninh]]</i></small>: ") hide(Consolas(mb_pron.rom(mb_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Kiến Âu|ghi chú]])</sup></small>: ") hide(format_IPA(mb_pron.ipa(mb_rom))) end hide_note("mb") end if has_var("md") then local md_pron = require("Module:cdo-pron") if md_rom then show("\n* [[w:Mân Đông|Mân Đông]] <small>(<i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Mân Đông|BUC]]</i>)</small>: ") show(Consolas(md_pron.rom(md_rom))) end add_audio_show(textShow, md_audio, "cdo") hide("\n* [[w:w:Mân Đông|Mân Đông]]") hide("\n** <small>(<i>[[w:Phương ngữ Phúc Châu|Phúc Châu]]</i>)</small>") if md_rom then hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Mân Đông|Bàng-uâ-cê]]</i></small>: ") hide(Consolas(md_pron.rom(md_rom))) if not (md_rom and find(md_rom, "([^/]*)-([^/]*)-([^/]*)-([^/]*)-([^/]*)")) then hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Phúc Châu|ghi chú]])</sup></small>: ") hide(format_IPA("/" .. md_pron.ipa(md_rom) .. "/")) else hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Phúc Châu|ghi chú]])</sup> (<i>no sandhi</i>)</small>: ") hide(format_IPA("/" .. md_pron.ipa(md_rom, "no_sandhi") .. "/")) end end hide_note("md") end if has_var("px") then local px_pron = require("Module:cpx-pron") show("\n* [[w:Puxian Min|Puxian Min]]") show(px_pron.rom_display(px_rom,"brief")) add_audio_show(textShow, px_audio, "cpx") hide("\n* [[Wiktionary:About Chinese/Puxian Min|Puxian Min]]") if px_rom then hide(px_pron.rom_display(px_rom,"complete")) end hide_note("px") end if has_var("mn") or has_var("mn-l") or has_var("mn-t") then local mn_pron, mn_l_pron if has_var("mn") or has_var("mn-t") then mn_pron = require("Module:nan-pron") end if has_var("mn-l") then mn_l_pron = require("Module:nan-pron-Leizhou") end if mn_rom or mn_t_rom or mn_l_rom then show("\n* [[w:Tiếng Mân Nam|Mân Nam]]") if mn_rom then show(((mn_l_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Tiếng Mân Tuyền Chương|Mân Tuyền Chương]], [[w:Phiên âm Bạch thoại|POJ]]</i>)</small>: ") show(Consolas(mn_pron.poj_display(mn_pron.poj_check_invalid(mn_rom)))) add_audio_show(textShow, mn_audio, "nan-hbl") end if mn_t_rom then show(((mn_rom or mn_l_rom) and "\n*:" or "") .. " <small>(<i>[[w:Tiếng Triều Châu|Triều Châu]], [[w:Peng'im|Peng'im]]</i>)</small>: ") show(Consolas(mn_pron.pengim_display(mn_t_rom))) add_audio_show(textShow, mn_t_audio, "nan-tws") end if mn_l_rom then show(((mn_rom or mn_t_rom) and "\n*:" or "") .. " <small>(<i>[[w:Leizhou Min|Leizhou]], Leizhou Pinyin</i>)</small>: ") show(Consolas(mn_l_pron.rom(mn_l_rom))) add_audio_show(textShow, mn_l_audio, "nan-luh") end end hide("\n* [[w:Tiếng Mân Nam|Mân Nam]]") if has_var("mn") then hide(mn_pron.generate_all(mn_rom)) hide_note("mn") end if has_var("mn-t") then hide("\n** <small>(<i>[[w:Tiếng Triều Châu|Triều Châu]]</i>)</small>") hide("\n*** <small><i>[[w:Peng'im|Peng'im]]</i></small>: ") hide(Consolas(mn_pron.pengim_display(mn_t_rom))) hide("\n*** <small><i>[[w:Phiên âm Bạch thoại|Phiên âm Bạch thoại]]-like</i></small>: ") hide(Consolas(mn_pron.pengim_to_pojlike_conv(mn_t_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:zh:潮州話#語音|ghi chú]])</sup></small>: ") hide(format_IPA(mn_pron.pengim_to_ipa_conv(mn_t_rom))) hide_note("mn-t") end if has_var("mn-l") then hide("\n** <small>(<i>[[w:Leizhou Min|Leizhou]]</i>)</small>") hide("\n*** <small><i>Leizhou Pinyin</i></small>: ") hide(Consolas(mn_l_pron.rom(mn_l_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học</small>: ") hide(format_IPA(mn_l_pron.ipa(mn_l_rom))) hide_note("mn-l") end end if has_var("sp") then local sp_pron = require("Module:csp-pron") local sp_processed = sp_rom:gsub(",([^ ])",", %1") :gsub("%d[%d%*%-]*%f[^%d%*]", "<sup>%0</sup>") show("\n* [[w:Pinghua|Southern Pinghua]] <small>(<i>[[w:Pinghua|Nanning]], [[Wiktionary:Tiếng Trung Quốc/Southern Pinghua|Jyutping++]]</i>)</small>: ") show(Consolas(sp_processed)) add_audio_show(textShow, sp_audio, "csp") hide("\n* [[w:Pinghua|Southern Pinghua]]") hide("\n** <small>(<i>[[w:Pinghua|Nanning Pinghua]], [[w:Nanning|Tingzi]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Southern Pinghua|Jyutping++]]</i></small>: ") hide(Consolas(sp_processed)) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Pinghua#Phonology|ghi chú]])</sup></small>: ") hide(format_IPA(sp_pron.jpp_to_ipa(sp_rom))) hide_note("sp") end if has_var("w") or has_var("w-j") then local w_count = (w_rom and 1 or 0) + (w_j_rom and 1 or 0) local w_show, w_hide, w_j_show, w_j_hide if w_rom then w_show, w_hide = require("Module:wuu-pron").make(w_rom, w_count) end if w_j_rom then w_j_show, w_j_hide = require("Module:wuu-pron/Jinhua").make(w_j_rom, w_count) end if w_count > 1 then show("\n* [[w:Tiếng Ngô|Ngô]] <small>(<i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Ngô|Wugniu]]</i>)</small>") else show("\n* [[w:Tiếng Ngô|Ngô]]") end show(w_show) show(w_j_show) add_audio_show(textShow, w_audio, "wuu") hide("\n* [[w:Tiếng Ngô|Ngô]]") hide(w_hide) hide(w_j_hide) -- add_audio(textHide, w_audio, "wuu") hide_note("w") hide_note("w-j") end if has_var("x") or has_var("x-l") or has_var("x-h") then local x_pron = has_var("x") and require("Module:hsn-pron") or nil local x_l_pron = has_var("x-l") and require("Module:hsn-pron-Loudi") or nil local x_h_pron = has_var("x-h") and require("Module:hsn-pron-Hengyang") or nil if x_rom or x_l_rom or x_h_rom then show("\n* [[w:Tiếng Tương|Tương]]") if x_rom then show(((x_l_rom or x_h_rom) and "\n*:" or "") .. " <small>(<i>[[w:Phương ngữ Trường Sa|Trường Sa]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Tương|Wiktionary]]</i>)</small>: ") show(Consolas(x_pron.rom(x_rom))) add_audio_show(textShow, x_audio, "hsn") end if x_l_rom then show(((x_rom or x_h_rom) and "\n*:" or "") .. " <small>(<i>[[w:zh:娄底话|Loudi]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Tương/Loudi|Wiktionary]]</i>)</small>: ") show(Consolas(x_l_pron.rom(x_l_rom))) add_audio_show(textShow, x_l_audio, "hsn-lou") end if x_h_rom then show(((x_rom or x_l_rom) and "\n*:" or "") .. " <small>(<i>[[w:Hengyang dialect|Hengyang]], [[Wiktionary:Tiếng Trung Quốc/Tiếng Tương/Hengyang|Wiktionary]]</i>)</small>: ") show(Consolas(x_h_pron.rom(x_h_rom))) add_audio_show(textShow, x_h_audio, "hsn-hya") end end hide("\n* [[w:Tiếng Tương|Tương]]") if x_rom then local x_diff = x_pron.stylediff(x_rom) hide("\n** <small>(<i>[[w:Phương ngữ Trường Sa|Trường Sa]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Tương|Wiktionary]]</i></small>: ") hide(Consolas(x_pron.rom(x_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Trường Sa|ghi chú]])</sup>") hide(x_diff and " (<i>old-style</i>)" or "") hide("</small>: ") hide(format_IPA("/" .. x_pron.ipa(x_rom) .. "/")) if x_diff then hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Phương ngữ Trường Sa|ghi chú]])</sup> (<i>new-style</i>)</small>: ") hide(format_IPA("/" .. x_pron.ipa(x_rom, "new") .. "/")) end hide_note("x") end if x_l_rom then hide("\n** <small>(<i>[[w:zh:娄底话|Loudi]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Tương/Loudi|Wiktionary]]</i></small>: ") hide(Consolas(x_l_pron.rom(x_l_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:zh:娄底话|ghi chú]])</sup>") hide("</small>: ") hide(format_IPA("/" .. x_l_pron.ipa(x_l_rom) .. "/")) hide_note("x-l") end if x_h_rom then hide("\n** <small>(<i>[[w:Hengyang dialect|Hengyang]]</i>)</small>") hide("\n*** <small><i>[[Wiktionary:Tiếng Trung Quốc/Tiếng Tương/Hengyang|Wiktionary]]</i></small>: ") hide(Consolas(x_h_pron.rom(x_h_rom))) hide("\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[w:Hengyang dialect|ghi chú]])</sup>") hide("</small>: ") hide(format_IPA("/" .. x_h_pron.ipa(x_h_rom) .. "/")) hide_note("x-h") end end -- combine textShow and textHide into text text = { concat(textShow), '<span class="vsToggleElement" style="float: right;"></span>\n<div class="vsHide" style="clear:right;">\n<hr>\n', concat(textHide), "</div></div>" } --Part 3 "Dialectal data" if dial ~= "n" and is_single_hanzi then local success, m_dial = pcall(mw.loadData, "Module:zh/data/dial-pron/" .. pagename) if success then local dialPron = {} local temporary = {} if dial and find(dial, "^[0-9\\,]+$") then for element in gsplit(dial, ",") do insert(dialPron, m_dial[tonumber(element)]) end else for _, element in ipairs(m_dial) do insert(dialPron, element) end end for _, set in ipairs(dialPron) do for _, object in ipairs(set[2]) do insert(temporary, object) end end local rand = gsub("-" .. concat(temporary), "[^A-Za-z0-9]", codepoint("%1")) insert(text, '\n<hr style="clear:right;">\n<div class="vsSwitcher" data-toggle-category="pronunciations" style="background-color:#FAFFFA">\n* ' .. '<span style="color:#3366bb">Dialectal data</span>' .. '<span class="vsToggleElement" style="float:right; padding:0 0"></span>\n' .. '<div class="vsHide">' ) insert(text, '\n{| class="wikitable" ' .. 'id="' .. rand .. '" style="width:100%; margin:0; ' .. 'text-align:center; border-collapse: collapse; border-style: hidden; display: table;"') local locStart = "\n|-\n!" local readingStart = concat({'\n!style="background:#E8ECFA;color:inherit; width:9em"|', '<div style="float: right; clear: right; font-size:60%"><span class="plainlinks">[', tostring(mw.uri.fullUrl("Module:zh/data/dial-pron/" .. pagename, {["action"]="edit"})), ' edit]</span></div><span lang="zh" class="Hani">'}) local locEnd = '<span class="IPA">' local headclr = 'style="background:#E8ECFA;color:inherit"|' local mclr = 'style="background:#FAF5F0;color:inherit"|' local jclr = 'style="background:#FAF5F0;color:inherit"|' local wclr = 'style="background:#F4F0FA;color:inherit"|' local huclr = 'style="background:#FAF9F0;color:inherit"|' local xclr = 'style="background:#F0F2FA;color:inherit"|' local gclr = 'style="background:#F0FAF3;color:inherit"|' local haclr = 'style="background:#FAF0F6;color:inherit"|' local cclr = 'style="background:#F0F5FA;color:inherit"|' local minclr = 'style="background:#F7FAF0;color:inherit"|' local clrList = { mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, mclr, jclr, jclr, jclr, wclr, wclr, wclr, wclr, huclr, huclr, xclr, xclr, gclr, haclr, haclr, cclr, cclr, cclr, minclr, minclr, minclr, minclr, minclr } local locList = { concat({headclr, "Biến thể ngôn ngữ\n!", headclr, "Tiếng địa phương"}), concat({"rowspan=17 ", mclr, "Quan thoại\n!", mclr, "[[w:Tiếng Bắc Kinh|Bắc Kinh]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Cáp Nhĩ Tân|Cáp Nhĩ Tân]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Thiên Tân|Thiên Tân]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Tế Nam|Tế Nam]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Thanh Đảo|Thanh Đảo]]\n|", mclr}), concat({mclr, "[[w:zh:鄭州話|Trịnh Châu]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Tây An|Tây An]]\n|", mclr}), concat({mclr, "[[w:Tây Ninh, Thanh Hải|Tây Ninh]]\n|", mclr}), concat({mclr, "[[w:Ngân Xuyên|Ngân Xuyên]]\n|", mclr}), concat({mclr, "[[w:zh:蘭州話|Lan Châu]]\n|", mclr}), concat({mclr, "[[w:zh:烏魯木齊話|Ürümqi]]\n|", mclr}), concat({mclr, "[[w:zh:武漢話|Vũ Hán]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Thành Đô|Thành Đô]]\n|", mclr}), concat({mclr, "[[w:zh:貴陽話|Quý Dương]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Côn Minh|Côn Minh]]\n|", mclr}), concat({mclr, "[[w:Phương ngữ Nam Kinh|Nam Kinh]]\n|", mclr}), concat({mclr, "[[w:zh:合肥話|Hợp Phì]]\n|", mclr}), concat({"rowspan=3 ", jclr, "Tiếng Tấn\n!", jclr, "[[w:zh:太原話|Thái Nguyên]]\n|", jclr}), concat({jclr, "[[w:Bình Dao|Bình Dao]]\n|", jclr}), concat({jclr, "[[w:Phương ngữ Hohhot|Hohhot]]\n|", jclr}), concat({"rowspan=4 ", wclr, "Tiếng Ngô\n!", wclr, "[[w:Tiếng Thượng Hải|Thượng Hải]]\n|", wclr}), concat({wclr, "[[w:Phương ngữ Tô Châu|Tô Châu]]\n|", wclr}), concat({wclr, "[[w:Phương ngữ Hàng Châu|Hàng Châu]]\n|" , wclr}), concat({wclr, "[[w:Tiếng Ôn Châu|Ôn Châu]]\n|", wclr}), concat({"rowspan=2 ", huclr, "Tiếng Hồi\n!", huclr, "[[w:Shexian|Shexian]]\n|", huclr}), concat({huclr, "[[w:zh:屯溪話|Đồn Khê]]\n|", huclr}), concat({"rowspan=2 ", xclr, "Tiếng Tương\n!", xclr, "[[w:Phương ngữ Trường Sa|Trường Sa]]\n|", xclr}), concat({xclr, "[[w:zh:湘潭話|Tương Đàm]]\n|", xclr}), concat({gclr, "Tiếng Cám\n!", gclr, "[[w:Phương ngữ Nam Xương|Nam Xương]]\n|", gclr}), concat({"rowspan=2 ", haclr, "Tiếng Khách Gia\n!", haclr, "[[w::Phương ngữ Mai Huyện|Mai Huyện]]\n|", haclr}), concat({haclr, "[[w:Đào Viên|Đào Viên]]\n|", haclr}), concat({"rowspan=3 ", cclr, "Tiếng Quảng Đông\n!", cclr, "[[w:Tiếng Quảng Châu|Quảng Châu]]\n|", cclr}), concat({cclr, "[[w:Nam Ninh|Nam Ninh]]\n|", cclr}), concat({cclr, "[[w:Tiếng Quảng Châu Hồng Kông|Hồng Kông]]\n|", cclr}), concat({"rowspan=5 ", minclr, "Tiếng Mân\n!", minclr, "[[w:Phương ngữ Hạ Môn|Hạ Môn]] (Mân Tuyền Chương)\n|", minclr}), concat({minclr, "[[w:Phương ngữ Phúc Châu|Phúc Châu]] (Mân Đông)\n|", minclr}), concat({minclr, "[[w:Phương ngữ Kiến Âu|Kiến Âu]] (Mân Bắc)\n|", minclr}), concat({minclr, "[[w:Phương ngữ Sán Đầu|Sán Đầu]] (Triều Châu)\n|", minclr}), concat({minclr, "[[w:Phương ngữ Hải Khẩu|Hải Khẩu]] (Hải Nam)\n|", minclr})} local function ipa_correct(ipa, location) if location == 22 then return (gsub(ipa, "13", "23")) else return ipa end end local function fmtDial(text, location) local fmttedPron = {} if text == "" then return "" end for pronunciation in gsplit(text, "|") do local ipa = match(pronunciation, "^[^%(%)" .. hanzi .. "~,]+") ipa = gsub(ipa, "([ptk])([0-5])", "%1̚%2") local environ = match(pronunciation, "[%(%)" .. hanzi .. "~,]*$") or false insert(fmttedPron, "<span class=\"IPA\"><small>/" .. tostring(ipa_format(ipa_correct(ipa, location))) .. "/</small></span>" .. (environ and " <span class=\"Hani\" lang=\"zh\"><small>"..environ.."</small></span>" or nil)) end return concat(fmttedPron, "<br>") end for locationNo = 1, 40 do for readingNo = 1, #dialPron do if readingNo == 1 then insert(text, locStart) insert(text, locList[locationNo]) end if locationNo == 1 then local situation = dialPron[readingNo][1] insert(text, readingStart) insert(text, pagename) insert(text, (pagename ~= situation and " (" .. gsub(situation, pagename, "<b>" .. pagename .. "</b>") .. ")" or "")) insert(text, "</span>") else insert(text, (readingNo == 1 and "" or "\n|" .. clrList[locationNo-1])) insert(text, locEnd) insert(text, fmtDial(dialPron[readingNo][2][locationNo-1], locationNo)) insert(text, "</span>") end end end insert(text, "\n|}</div></div>") end end --Part 4 "Middle Chinese & Old Chinese" local mc_preview, oc_preview local m_ltc_pron, m_och_pron -- !!! -- The following function modifies the tables generated by mod:ltc-pron and mod:och-pron, shifting them -- from using "mw-collapsible" to using "vsSwitcher", because the former -- can not collapse on the mobile site and makes Chinese entries a mess. -- It is supposed to be a temporary solution. -- !!! local function shiftCustomtoggle2Vsswitcher(s) local result result = (s:gsub( '\n%* <div title="expand" class="mw%-customtoggle[^>]+">', '\n<div class="vsSwitcher" data-toggle-category="pronunciations">\n* ' ):gsub( '<span style="float:right; border:1px solid #ccc; border%-radius:1px; padding:0 0; font%-size:90%%">▼</span>(.-)</div>\n{| class="wikitable', '<span class="vsToggleElement" style="float:right; padding:0 0"></span>%1\n<div class="vsHide">\n{| class="wikitable' ):gsub( '{| class="wikitable mw%-collapsible mw%-collapsed" id="[^"]+"', '{| class="wikitable"' ):gsub( "\n|}$", "\n|}</div></div>" )) return result end if mc then m_ltc_pron = require("Module:ltc-pron") mc_preview = m_ltc_pron.retrieve_pron(pagename, false, mc, true) if not mc_preview then require("Module:debug/track")("zh-pron/Middle Chinese data not found") mc = nil end end if oc then m_och_pron = require("Module:och-pron") oc_preview = m_och_pron.generate_show(pagename, oc) if not oc_preview then require("Module:debug/track")("zh-pron/Old Chinese data not found") oc = nil end end if mc or oc then insert(text, '\n<hr style="clear:right;">\n<div style="background-color:var(--wikt-palette-lighterblue, #ebf4ff);color:inherit">') if mc then insert(text, shiftCustomtoggle2Vsswitcher(m_ltc_pron.ipa(mc, mc_preview))) end if oc then insert(text, shiftCustomtoggle2Vsswitcher(m_och_pron.ipa(oc, oc_preview))) end insert(text, "</div>") end insert(text, "</div>") if namespace == "" or namespace == "-" then if mc then if is_single_hanzi then if mc_preview:find("k̚$") then insert(text, "[[Thể loại:Middle Chinese -k characters|" .. sortkey .. "]]") elseif mc_preview:find("t̚$") then insert(text, "[[Thể loại:Middle Chinese -t characters|" .. sortkey .. "]]") elseif mc_preview:find("p̚$") then insert(text, "[[Thể loại:Middle Chinese -p characters|" .. sortkey .. "]]") end end end if not args["cat"] then insert(text, "[[Thể loại:Cách sử dụng zh-pron thiếu POS]]") end end end local conv_text = {} --categories if namespace == "" or namespace == "-" then local catText = args["cat"] or "" local cat_start = "[[Thể loại:" local cat_end = "]]" if w_rom then w_rom = gsub(w_rom, "%d", "") end local function add_cat(cat_table, name, cat) insert(cat_table, cat_start .. name .. cat .. "|" .. sortkey .. cat_end) end local cats = split(catText, ",", true) for i = 1, #cats do if pos_aliases_cat[cats[i]] == "Thành ngữ truyền thống" then insert(cats, i, "Thành ngữ") break end end insert(cats, 1, "Mục từ") if is_single_hanzi then insert(cats, 2, "Hán tự") end for i = 1, #cats do local cat = cats[i] if cat == "" then break end cat = gsub(cat, "^ +", "") if find(cat, ":") then local cat_split = split(cat, ":", true) local lang_name = langname_abbr[cat_split[1]] local category = pos_aliases_cat[cat_split[2]] or cat add_cat(conv_text, category, " tiếng Trung Quốc") insert(conv_text, cat_start .. category .. " " .. lang_name .. "|" .. sortkey .. cat_end) else cat = pos_aliases_cat[cat] or cat add_cat(conv_text, cat, " tiếng Trung Quốc") if m_rom or m_x_rom or m_nj_rom then add_cat(conv_text, cat, " tiếng Quan Thoại") end if has_var("m-s") then add_cat(conv_text, cat, " tiếng Tứ Xuyên") end if has_var("dg") then add_cat(conv_text, cat, " tiếng Đông Can") end if c_rom or c_dg_rom or c_yj_rom then add_cat(conv_text, cat, " tiếng Quảng Đông") end if c_t_rom then add_cat(conv_text, cat, " tiếng Đài Sơn") end if has_var("g") then add_cat(conv_text, cat, " tiếng Cám") end if h_rom and (find(h_rom, "pfs=.") or find(h_rom, "gd=.")) or #h_audio > 0 then add_cat(conv_text, cat, " tiếng Khách Gia") end if has_var("j") then add_cat(conv_text, cat, " tiếng Tấn") end if has_var("mb") then add_cat(conv_text, cat, " tiếng Mân Bắc") end if has_var("md") then add_cat(conv_text, cat, " tiếng Mân Đông") end if has_var("mn") then add_cat(conv_text, cat, " tiếng Mân Tuyền Chương") end if has_var("mn-t") then add_cat(conv_text, cat, " tiếng Triều Châu") end if has_var("mn-l") then add_cat(conv_text, "Leizhou Min ", cat) end if has_var("sp") then add_cat(conv_text, "tiếng Nam Bình ", cat) end if has_var("w") then add_cat(conv_text, cat, " tiếng Ngô") end if has_var("w-j") then add_cat(conv_text, cat, " tiếng Ngô") end if has_var("x") then add_cat(conv_text, cat, " tiếng Tương") end if has_var("x-l") then add_cat(conv_text, cat, " tiếng Tương") end if has_var("x-h") then add_cat(conv_text, cat, " tiếng Tương") end if mc and has_var("mc") then add_cat(conv_text, cat, " tiếng Hán trung cổ") end if oc and has_var("oc") then add_cat(conv_text, cat, " tiếng Hán thượng cổ") end end end if not args.only_cat then insert(conv_text, cat_start .. "Mục từ có cách phát âm IPA tiếng Trung Quốc|" .. sortkey .. cat_end) end if not args.poj_form_zh_see then if not find(pagename, "[" .. hanzi .. bopomofo .. "]") then insert(conv_text, cat_start .. "Chinese terms written in foreign scripts|" .. sortkey .. cat_end) end -- TODO: handle Zhuyin. -- Note: this parses any IDS to pick out the full character. for _, character in ipairs(explode_chars(pagename)) do if match(character, "[" .. hanzi .. "%%%+%-·×々〻𖿣⿰-⿿㇯]") then insert(conv_text, cat_start .. "Từ đánh vần với " .. character .. " tiếng Trung Quốc|" .. sortkey .. cat_end) end end end end local output = concat(text) .. concat(conv_text) if namespace ~= "" and namespace ~= "-" then output = gsub(output, "%[%[Thể loại:[^%]]+%]%]", "") end return output end return export a22wiqpu2v0qoq5bygjoqyzc47gsbmj Mô đun:cmn-pron 828 264654 2350587 2294542 2026-05-07T06:10:10Z Hiyuune 50834 2350587 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local cmn = require("Module:languages").getByCode("cmn") local find = m_str_utils.find local gsub = m_str_utils.gsub local len = m_str_utils.len local match = m_str_utils.match local gmatch = m_str_utils.gmatch local sub = m_str_utils.sub local split = m_str_utils.split local gsplit = m_str_utils.gsplit local lower = m_str_utils.lower local upper = m_str_utils.upper local format = string.format local u = m_str_utils.char local toNFD = mw.ustring.toNFD local toNFC = mw.ustring.toNFC local trim = mw.text.trim local pua = {} for i = 1, 7 do pua[i] = u(0xF000+i-1) end local m_data = mw.loadData("Module:cmn-pron/data") local m_zh = require("Module:zh") local _m_zh_data = nil local hom_data = nil local function track(page) local tracking_page = "cmn-pron/" .. page require("Module:debug/track")(tracking_page) return true end local function hom_data_part(pinyin) local x = toNFD(pinyin):sub(1,1) if "a" <= x and x <= "g" then return 1 elseif "h" <= x and x <= "m" then return 2 elseif "n" <= x and x <= "w" then return 3 end return 4 end local function get_hom_data(py) if hom_data == nil then hom_data = require("Module:zh/data/cmn-hom/" .. hom_data_part(py)) end return hom_data end -- if not empty local function ine(var) if var == "" then return nil else return var end end local breve, hacek, circumflex = u(0x306), u(0x30C), u(0x302) local function input_error(text) if type(text) ~= "string" then return end local subs, err = {[breve] = hacek, [circumflex] = "h", ["ŋ"] = "ng", ["Ŋ"] = "Ng"} text = toNFD(text) if find(text, breve) and (find(text, "[zcsZCS]" .. circumflex) or find(text, "[ŋŊ]")) then err = "a breve and an uncommon shorthand" elseif find(text, breve) then err = "a breve" elseif find(text, "[zcsZCS]" .. circumflex) or find(text, "[ŋŊ]") then err = "an uncommon shorthand" end if err then error('The pinyin text "' .. text .. '" contains ' .. err .. '. Replace it with "' .. gsub(text, ".", subs) .. '".', 2) end end local function m_zh_data() if _m_zh_data == nil then _m_zh_data = require("Module:zh/data/cmn-tag") end; return _m_zh_data; end function export.py_detone(text) return toNFC(gsub(toNFD(text), "[̄́̌̀]", "")) end function export.tone_determ(text) text = toNFD(text) return m_data.py_tone_mark_to_num[match(text, m_data.tones)] or '5' end local function sup(text) local ret = mw.html.create("sup"):wikitext(text) return tostring(ret) end function export.py_transf(text) return export.py_detone(text) .. export.tone_determ(text) end local function decompose_tones(text) return (toNFD(text):gsub("[EeUu]\204[\130\136]", toNFC)) end function export.py_transform(text, detone, not_spaced) if find(text, "​") then error("Pinyin contains the hidden character: ​ (U+200B). Please remove that character from the text.") elseif find(text, "%d") then -- e.g. ma1 instead of mā error("Numbered tones should be given with tone marks instead.") end local tones = m_data.tones detone = ine(detone) not_spaced = ine(not_spaced) text = decompose_tones(text) text = text :gsub("\204[\128\129\132\140]", {["̄"] = "\1", ["́"] = "\2", ["̌"] = "\3", ["̀"] = "\4"}) :gsub("\195[\138\156\170\188]", {["ê"] = "\5", ["ü"] = "\6", ["Ê"] = "\14", ["Ü"] = "\15"}) :gsub("\228\184[\128\141]", {["一"] = "\7", ["不"] = "\8"}) local function plaintext(text) return (text:gsub("\16([\1-\4])", "n%1g") :gsub("[\1-\8\14-\18]", function(m) return ({"\204\132", "\204\129", "\204\140", "\204\128", "ê", "ü", "一", "不", [14] = "Ê", [15] = "Ü", [16] = "ng", [17] = "gn", [18] = "'"})[m:byte()] end)) end if not not_spaced then local i = 1 local function check_apostrophes(check_text) i = i + 1 local new_text = check_text :gsub("([^mnMN][\1-\4][iouIOU]?)([aeiou\5\6AEIOU\14\15]%f[\1-\4])", "%1'%2") :gsub("([\1-\4])([aeiou\5\6AEIOU\14\15]%f[\1-\4])", "%1'%2") :gsub("([a-gi-zA-GI-Z\5\6\14\15])([mnMN]%f[\1-\4])", "%1'%2") :gsub("([b-dfgj-np-tv-zB-DFGJ-NP-TV-Z])([mnMN]%f[%z%s%p])", "%1'%2") :gsub("([mnMN][\1-\4])([mnMN]%f[%z%s%p])", "%1'%2") :gsub("([\7\8])([aeiou\5\6mnAEIOU\14\15MN]%f[\1-\4%z%s%p])", "%1'%2") if new_text ~= check_text then check_apostrophes(new_text) elseif new_text ~= text then error(("Missing apostrophe before null-initial syllable - should be \"%s\" instead."):format(plaintext(new_text)), i) end end check_apostrophes(text) end local check_text = gsub(text,"([AOEaoe])([iou])(" .. tones .. ")", "%1%3%2") check_text = gsub(check_text,"([iuü])(" .. tones .. ")([aeiou])", "%1%3%2") if text ~= check_text then error("Incorrect diacritic placement in Pinyin - should be \"".. check_text .. "\" instead.") end text = lower(text) :gsub(" *([,.?]) *", " %1 ") :gsub("[#0]", {["#"] = " #", ["0"] = "5"}) :gsub("%. +%. +%.", "...") :gsub("(%d)([%a\5-\8])", "%1 %2") :gsub("n([\1-\4]?)g", "\16%1") :gsub("%f[^aeiou\1-\6]\16%f[aeiou\1-\6]", "ng") :gsub("gn%f[aeiou\5\6]", "\17") :gsub("'r", "\18r") :gsub("\18r([aeiou\5\6])", "'r%1") :gsub("([aeiou\5\6][\1-\4]?[mn\16]?\18?r?)([bpmfvdtnlgkhjqxzcsywr\16\17\7\8])", "%1 %2") :gsub("([mn\16\7\8][\1-\4]?\18?r?)([bpmfvdtnlgkhjqxzcsywr\16\17\7\8])", "%1 %2") :gsub(" r%f[%z%d%s'%-]", "r") :gsub("([aeiou\5\6][\1-\4]?) ([mn\16])%f[%z%d%s'%-]", "%1%2") :gsub("['%-]", " ") if detone or text:find("%d") then text = text :gsub("([\1-\4])([^ ]*)", function(m1, m2) return m2 .. m1:byte() end) :gsub("[^%d\7\8]%f[%z%s,.?]", "%05") :gsub("([\7\8]\18?r)5", "%1") end text = plaintext(text) if not_spaced then text = text:gsub(" ", "") end return (toNFC(trim(text)):gsub(" +", " ")) end local function iterate_words(text) local pos, word, non_word local function get_word() word, non_word, pos = text:match("([^%s]+)([%s]*)()", pos) if pos then return word, non_word end end return get_word end local function iterate_syllables(text) local cap = find(text, "^%u") text = export.py_transform(text, true) text = text :gsub("\195[\170\188]", {["ê"] = "\1", ["ü"] = "\2"}) :gsub("[zcs]h", {["zh"] = "\3", ["ch"] = "\4", ["sh"] = "\5"}) local raw_syllables = split(text, " ") local function plaintext(text) return (text and text:gsub("[\1-\8]", function(m) return ({"ê", "ü", "ẑ", "ĉ", "ŝ", "ŋ", "ɲ", "ɨ"})[m:byte()] end)) end local i = 0 local function explode_syllable() i = i + 1 if raw_syllables[i] then local syllable, tone, sandhi, block_sandhi = raw_syllables[i] if syllable == "" then return explode_syllable() end syllable = syllable :gsub("(\228\184[\128-\141])('?r?)$", function(m, erhua) sandhi = m return (m:gsub(".*", {["一"] = "yi1", ["不"] = "bu4"}) :gsub("(%a+)(%d)", "%1" .. erhua .. "%2")) end) :gsub("^#", function(m) block_sandhi = true return "" end) :gsub("%d$", function(m) tone = m return "" end) :gsub("ng", "\6") :gsub("gn", "\7") :gsub("([bpmfv])(o'?r?)$", "%1u%2") :gsub("([jq\7x])u", "%1\2") :gsub("[iy]u", {["iu"] = "iou", ["yu"] = "\2"}) :gsub("[eu]i", {["ei"] = "\1i", ["ui"] = "u\1i"}) :gsub("ao", "au") :gsub("[wy]", {["w"] = "u", ["y"] = "i"}) :gsub("([iu\2])e('?r?)$", "%1\1%2") :gsub("(.)o([mn\6]'?r?)$", "%1u%2") :gsub("iu", "\2") :gsub("^([^aoe\1]?[iu\2])([mn\6]'?r?)$", "%1e%2") :gsub("([iu])%1", "%1") :gsub("([\3-\5rzcs])i('?r?)$", "%1\8%2") local initial, glide1, nucleus, glide2, nasal, erhua = syllable:match("^([bpmfvdtnlgk\6hjq\7x\3-\5rzcs]?)([iu\2\8]?)([aoe\1]?)([iu]?)([mn\6]?)('?r?)$") return (syllable:gsub("[#%d]", "")), plaintext(initial), plaintext(glide1), plaintext(nucleus), glide2, plaintext(nasal), erhua, tone, sandhi, (not not block_sandhi) end end return explode_syllable end -- Generate a normalized pinyin version as a baseline, which everything else can work from. local function normalize_py(text, no_words) local raw_words, words = split(text, " "), {} for i, word in ipairs(raw_words) do local cap = find(word, "^%u") word = export.py_transform(word, true) word = word:gsub("\195[\170\188]", {["ê"] = "\1", ["ü"] = "\2"}) local raw_syllables, syllables = split(word, " "), {} for j, s in ipairs(raw_syllables) do s = s :gsub("[zcs]h", {["zh"] = "\3", ["ch"] = "\4", ["sh"] = "\5"}) :gsub("ng", "\6") :gsub("gn", "\7") :gsub("([bpmfv])(or?%d)", "%1u%2") :gsub("([jq\7x])u", "%1\2") :gsub("iu", "iou") :gsub("yu", "\2") :gsub("ui", "uei") :gsub("ao", "au") :gsub("[wy]", {["w"] = "u", ["y"] = "i"}) :gsub("([iu\2])e(r?%d)", "%1\1%2") :gsub("ue([n\6]r?)", "u%1") :gsub("io(\6r?)", "\2%1") :gsub("([iu])%1", "%1") :gsub("([\3-\5rzcs])i(r?%d)", "%1ɨ%2") :gsub("[\1-\7]", function(m) return ({"ê", "ü", "ẑ", "ĉ", "ŝ", "ŋ", "ɲ"})[m:byte()] end) table.insert(syllables, toNFC(s)) end word = syllables if #word > 0 then word[1] = cap and gsub(word[1], "^.", upper) or word[1] table.insert(words, word) end end if no_words then local syllables = {} for _, word in ipairs(words) do for _, s in ipairs(word) do table.insert(syllables, s) end end words = syllables end return words end function export.py_ipa(text) local ipa_initials = m_data.py_ipa_initials local ipa_initials_tl = m_data.py_ipa_initials_tl local ipa_finals = m_data.py_ipa_finals local ipa_erhua = m_data.py_ipa_erhua local ipa_tl_ts = m_data.py_ipa_tl_ts local ipa_t_values = m_data.py_ipa_t_values local tones = {} local tone_cats = {} text = lower(text) local syllables = normalize_py(text, true) for i, s in ipairs(syllables) do if s:find("^[,.?]+$") then table.remove(syllables, i) end end for i = 1, #syllables do syllables[i] = syllables[i]:gsub("%d", function(m) tone_cats[i] = m return "" end) if syllables[i] == "一" then tone_cats[i] = syllables[i+1] and (syllables[i+1]:match("%d") == "4" or syllables[i+1] == "ge") and "1-2" or "1-4" syllables[i] = "i" elseif syllables[i] == "不" then tone_cats[i] = syllables[i+1] and syllables[i+1]:match("%d") == "4" and "4-2" or "4" syllables[i] = "bu" end tone_cats[i] = tone_cats[i] or "5" syllables[i] = syllables[i]:gsub("#", function(m) tone_cats[i] = "#" .. tone_cats[i] return "" end) end for i, s in ipairs(syllables) do s = gsub(s, "^([bpmfvdtnlgkŋhjqɲxẑĉŝrzcs]?)([^r']+)('?r?)$", function(initial, final, erhua) if initial == "" and find(final, "^[aeêo]") then initial = "ˀ" end final = ipa_finals[final] or final if erhua == "r" then for i, from in ipairs(ipa_erhua[1]) do final = gsub(toNFD(final), toNFD(from) .. "$", ipa_erhua[2][i]) end final = toNFC(final) end if initial:find("[zcs]") then final = final:gsub("ʐ", "z") elseif initial == "" then final = final:gsub("[iuy]̯", {["i̯"] = "j", ["u̯"] = "w", ["y̯"] = "ɥ"}) end initial = ipa_initials[initial] or initial if tone_cats[i] == "5" then initial = initial:gsub(".*", ipa_initials_tl) final = final:gsub("ɤ$", "ə") end return gsub(initial .. final, "ʐʐ̩", "ʐ̩") end) local curr_tone_cat, prev_tone_cat, next_tone_cat = tone_cats[i], tone_cats[i-1], tone_cats[i+1] if curr_tone_cat == "5" then tones[i] = prev_tone_cat and ipa_tl_ts[prev_tone_cat:gsub("#", "")] or "" else tones[i] = ipa_t_values[curr_tone_cat:gsub("#", "")] end if curr_tone_cat:find("3") then if i == #tone_cats then if i > 1 then tones[i] = "²¹⁴⁻²¹⁽⁴⁾" end elseif next_tone_cat == "3" then tones[i] = "²¹⁴⁻³⁵" elseif next_tone_cat ~= "5" then tones[i] = "²¹⁴⁻²¹" end elseif curr_tone_cat == "4" and (next_tone_cat == "4" or next_tone_cat == "1-4") then tones[i] = "⁵¹⁻⁵³" elseif curr_tone_cat == "1-4" and next_tone_cat == "4" then tones[i] = "⁵⁵⁻⁵³" end syllables[i] = s .. tones[i] syllables[i] = gsub(syllables[i], "#", "") end return table.concat(syllables, " ") end function export.py_number_to_mark(text) local priority = m_data.py_mark_priority local tones = m_data.py_tone_num_to_mark text = text:gsub("([^%s0-5]+)([0-5])", function(syl, tone) for _, pattern in ipairs(priority) do local syl, n = gsub(syl, pattern, "%0" .. (tones[tone] or "")) if n > 0 then return syl end end return syl .. tone end) return toNFC(text) end function export.py_zhuyin(text) input_error(text) local py_zhuyin_consonant = m_data.py_zhuyin_consonant local py_zhuyin_glide = m_data.py_zhuyin_glide local py_zhuyin_nucleus = m_data.py_zhuyin_nucleus local py_zhuyin_final = m_data.py_zhuyin_final local py_zhuyin_syllabic_nasal = m_data.py_zhuyin_syllabic_nasal local py_zhuyin_tone = m_data.py_zhuyin_tone local output = {} text = export.py_transform(text) for syllable, initial, glide1, nucleus, glide2, nasal, erhua, tone in iterate_syllables(text) do if not (initial or glide1 or nucleus or glide2 or nasal) then table.insert(output, syllable) else local final = (py_zhuyin_nucleus[nucleus] or nucleus) .. (py_zhuyin_glide[glide2] or glide2) final = (py_zhuyin_final[final] or final) .. (py_zhuyin_consonant[nasal] or nasal) final = ((py_zhuyin_glide[glide1] or glide1) .. (py_zhuyin_final[final] or final)) :gsub("(\227\132[\167-\169])ㄜ", "%1") syllable = (py_zhuyin_consonant[initial] or initial) .. final if initial:find("[bpmfv]") and syllable:find("ㄨㄛ$") then syllable = syllable:gsub("ㄨ", "") end syllable = syllable:gsub("^\227\132[\135\139\171]$", py_zhuyin_syllabic_nasal) :gsub("\227\132[\135\139\171]$", "<small>%0</small>") if syllable == "ㄜ" and erhua == "r" then syllable = "ㄦ" erhua = "" elseif #erhua > 0 then erhua = "ㄦ" end if tone == "5" then syllable = py_zhuyin_tone[tone] .. syllable .. erhua else syllable = syllable .. py_zhuyin_tone[tone] .. erhua end table.insert(output, syllable) end end return table.concat(output, " ") end function export.zhuyin_py(text) local zhuyin_py_initial = m_data.zhuyin_py_initial local zhuyin_py_final = m_data.zhuyin_py_final local zhuyin_py_tone = m_data.zhuyin_py_tone local word = split(text, " ", true) local function process_syllable(syllable) syllable = gsub(syllable, "^([ㄓㄔㄕㄖㄗㄘㄙ])([ˊˇˋ˙]?)$", "%1ㄧ%2") return gsub(syllable, "([ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄪ]?)([ㄧㄨㄩ]?[ㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄪㄫㄬㄧㄨㄩㄇ])([ˊˇˋ˙]?)(ㄦ?)", function(initial, final, tone, erhua) initial = zhuyin_py_initial[initial] final = zhuyin_py_final[final] if erhua ~= "" then final = final .. "r" end if initial == "" then final = final :gsub("^([iu])(n?g?)$", function(a, b) return gsub(a, "[iu]", {["i"] = "yi", ["u"] = "wu"}) .. b end) :gsub("^(w?u)([in])$", "ue%2") :gsub("^iu$", "iou") :gsub("^([iu])", {["i"] = "y", ["u"] = "w"}) :gsub("^ong", "weng") :gsub("^ü", "yu") end if initial:find("[jqx]") then final = final:gsub("^ü", "u") end local tone = zhuyin_py_tone[tone] if final:find("[ae]") then final = final:gsub("([ae])", "%1" .. tone) elseif final:find("i[ou]") then final = final:gsub("(i[ou])", "%1" .. tone) elseif final:find("[io]") then final = final:gsub("([io])", "%1" .. tone) else final = gsub(final, "^([wy]?)(.)", "%1" .. "%2" .. tone) end return initial .. final end) end for i, syllable in ipairs(word) do word[i] = process_syllable(syllable) end return toNFC(table.concat(word, " ")) end function export.py_wg(text) local py_wg_consonant = m_data.py_wg_consonant local py_wg_consonant_dental = m_data.py_wg_consonant_dental local py_wg_glide = m_data.py_wg_glide local py_wg_nucleus = m_data.py_wg_nucleus local py_wg_o = m_data.py_wg_o local output = {} for word, non_word in iterate_words(text) do local cap = find(word, "^%u") word = cap and lower(word) or word local syllables = {} for syllable, initial, glide1, nucleus, glide2, nasal, erhua, tone in iterate_syllables(word) do if not (initial or glide1 or nucleus or glide2 or nasal) then table.insert(syllables, syllable) else if glide1 == "ɨ" and py_wg_consonant_dental[initial] then syllable = py_wg_consonant_dental[initial] .. "ŭ" else syllable = ((py_wg_consonant[initial] or initial) .. (py_wg_glide[glide1] or glide1) .. (py_wg_nucleus[nucleus] or nucleus) .. glide2 .. (py_wg_consonant[nasal] or nasal)) :gsub("ehi", "ei") :gsub("au", "ao") :gsub("iou", "iu") :gsub("ian$", "ien") if py_wg_o[initial] then syllable = syllable:gsub("ê$", "o") elseif initial ~= "ŝ" then syllable = syllable:gsub("uo$", "o") end syllable = (#glide1 > 0 and syllable:gsub("ê([mn]g?)", "%1") or syllable) :gsub("üng", "iung") if initial == "" then syllable = syllable :gsub("^.[\128-\191]*", {["i"] = "y", ["u"] = "w", ["ü"] = "yü"}) :gsub("^[yw]$", {["y"] = "i", ["w"] = "wu"}) :gsub("^([wyo])([mn])", function(m1, m2) return ({["w"] = "wê", ["y"] = "yi", ["o"] = "u"})[m1] .. m2 end) elseif glide1 == "u" and not initial:find("[gk]") then syllable = syllable:gsub("uei", "ui") end end if syllable == "o" and nucleus == "e" and erhua == "r" then syllable = "êrh" erhua = "" elseif #erhua > 0 then erhua = "-ʼrh" end table.insert(syllables, syllable .. tone:gsub("%d", sup) .. erhua) end end syllables[1] = cap and gsub(syllables[1], "^.", upper) or syllables[1] word = table.concat(syllables, "-") :gsub("%-([,.?])", "%1") table.insert(output, word .. non_word) end return table.concat(output) end local function temp_bg(text, bg) if bg == 'y' then return '<' .. text .. '>' end return text end local function make_bg(text, bg) if bg == 'y' then return '<span style="background-color:#F5DEB3">' .. text .. '</span>' else return text end end function export.py_gwoyeu(text, original_text) local initials = m_data.py_gwoyeu_initial local finals = m_data.py_gwoyeu_final if text:find('^%s') or text:find('%s$') then error('invalid spacing') end local words = split(text, " ") local count = 0 for i, word in ipairs(words) do local cap = find(toNFD(word), "^%u") word = export.py_transform(word, true, true) word = gsub(word, "([1-5])", "%1 ") word = gsub(word, " $", "") word = gsub(word, '([!-/:-@%[-`{|}~!-/:-@[-`{-・])', ' %1 ') word = gsub(word, ' +', ' ') word = gsub(word, ' $', '') word = gsub(word, '^ ', '') local syllables = split(word, " ") for j, syllable in ipairs(syllables) do count = count + 1 if not find(syllable, '^[!-/:-@%[-`{|}~!-/:-@[-`{-・]+$') then local current = sub(mw.title.getCurrentTitle().text, count, count) if find(current, '^[一七八不]$') then local exceptions = {['一'] = 'i', ['七'] = 'chi', ['八'] = 'ba', ['不'] = 'bu'} syllables[j] = exceptions[current] else local initial, final, tone = '', '', '' syllable = gsub(syllable, '([jqxy])u', '%1ü') syllable = gsub(syllable, '^([zcsr]h?)i(r?[1-5])$', '%1ɨ%2') if find(syllable, '([bpmfvdtnlgkhjqxzcsryw]?h?)([iuü]?[aoeiɨuüê][ioun]?g?r?)([1-5])') then syllable = gsub(syllable, '([bpmfvdtnlgkhjqxzcsryw]?h?)([iuü]?[aoeiɨuüê][ioun]?g?r?)([1-5])', function(a, b, c) initial = initials[a] or error('Unrecognised initial:' .. a); final = finals[b] or error('Unrecognised final:' .. b); tone = c return (initial .. final .. tone) end) elseif not (find(mw.title.getCurrentTitle().text, "[们們呒呣哏唔哼哦嗯嘸噷姆欸誒诶麼ㄇㄝM]") or find(mw.title.getCurrentTitle().text, "cmn-pron/testcases", 1, true)) then error('Unrecognised syllable:' .. syllable) end local original = initial..final..tone if initial:find('^[iu]$') then final = initial .. final initial = '' end if initial .. final == "e'l" then final = "el" end final = gsub(final, '([iu])%1', '%1') local len = len(initial) + len(final) local detone = initial..final local replace = detone local fullstop = false if tone == 5 or tone == '5' then fullstop = true if original_text then tone = split(export.py_transform(original_text, true), ' ')[count]:match('[1-5]') elseif initial:find('^[lmnr]$') then tone = 2 else tone = 1 end if tone == 5 or tone == '5' then tone = export.tone_determ(m_zh.py(current)) end end if tone == 1 or tone == '1' then if initial:find('^[lmnr]$') then replace = initial .. 'h' .. sub(detone, 2, len) else replace = detone end elseif tone == 2 or tone == '2' then if not initial:find('^[lmnr]$') then if final:find('^[iu]') then replace = gsub(detone, '[iu]', {['i'] = 'y', ['u'] = 'w'}, 1) replace = gsub(replace, '[yw]l?$', {['y'] = 'yi', ['w'] = 'wu', ['wl'] = 'wul',}) else replace = gsub(detone, '([aiueoyè]+)', '%1r') end else replace = detone end elseif tone == 3 or tone == '3' then if final:find("^iu?e'l$") then detone = gsub(detone, "'", '') end detone = gsub(detone, '^[iu]', {['i'] = 'yi', ['u'] = 'wu'}) if final:find('[aeiou][aeiou]') and (not final:find('^[ie][ie]') or initial..final=="ie") and (not final:find('^[uo][uo]') or initial..final=="uo") then replace = gsub(detone, '[iu]', {['i'] = 'e', ['u'] = 'o'}, 1) elseif final:find('[aoeiuyè]') then replace = gsub(detone, '([iuyw]?)([aoeiuyè])', '%1%2%2', 1) else error('Unrecognised final:'..final) end elseif tone == 4 or tone == '4' then if final:find("^iu?e'l$") then detone = gsub(detone, "'", '') end detone = gsub(detone, '^[iu]', {['i'] = 'yi', ['u'] = 'wu'}) if detone:find('[aeo][iu]l?$') then replace = gsub(detone, "[iu]l?$", {['i'] = 'y', ['u'] = 'w', ['ul'] = 'wl'}) elseif detone:find('[ngl]$') then replace = gsub(detone, "[ng'l]l?$", {['n'] = 'nn', ['g'] = 'q', ['l'] = 'll', ['gl'] = 'ql', ["'l"] = 'hl'}) else replace = detone .. 'h' end replace = gsub(replace, 'yi([aeiou])', 'y%1') replace = gsub(replace, 'wu([aeiou])', 'w%1') end if fullstop then replace = '.' .. replace end syllables[j] = gsub(syllable, original, replace) end end end words[i] = table.concat(syllables, "") words[i] = cap and gsub(words[i], "^.", upper) or words[i] end return table.concat(words, " ") end -- Converts Hanyu Pinyin into Tongyong Pinyin. function export.py_tongyong(text) local ty_tone = { ["1"] = "", ["2"] = "\204\129", ["3"] = "\204\140", ["4"] = "\204\128", ["5"] = "\204\138" } local function num_to_mark(syllable, tone) tone = ty_tone[tone] if tone ~= "" then if find(syllable, "[aeê]") then syllable = gsub(syllable, "([aeê])", "%1" .. tone) elseif find(syllable, "o") then syllable = gsub(syllable, "(o)", "%1" .. tone) elseif find(syllable, "[iu]") then syllable = gsub(syllable, "([iu])", "%1" .. tone) elseif find(syllable, "[mn]") then syllable = gsub(syllable, "([mn])", "%1" .. tone) end end return syllable end local words = {} for word in gsplit(text, " ") do local cap = find(toNFD(word), "^%u") word = export.py_transform(word, true) local syllables = {} for syllable in gsplit(word, " ") do syllable = toNFC(gsub(syllable, "([crsz]h?i)", "%1h")) syllable = gsub(syllable, "ü", "yu") syllable = gsub(syllable, "([jqx])u", "%1yu") syllable = gsub(syllable, "iu", "iou") syllable = gsub(syllable, "ui", "uei") syllable = gsub(syllable, "([wf])eng", "%1ong") syllable = gsub(syllable, "wen", "wun") syllable = gsub(syllable, "iong", "yong") syllable = gsub(syllable, "^zh", "jh") syllable = gsub(syllable, "^q", "c") syllable = gsub(syllable, "^x", "s") syllable = #syllables ~= 0 and gsub(syllable, "^([aeo])", "-%1") or syllable syllable = gsub(syllable, "^([^1-5]+)([1-5])$", num_to_mark) table.insert(syllables, syllable) end word = table.concat(syllables, "") word = cap and gsub(word, "^.", upper) or word table.insert(words, word) end return toNFC(table.concat(words, " ")) end -- Converts Hanyu Pinyin into the Yale system. function export.py_yale(text) local yale_tone = { ["1"] = u(0x304), ["2"] = u(0x301), ["3"] = u(0x30C), ["4"] = u(0x300), ["5"] = "" } local function num_to_mark(syllable, tone) tone = yale_tone[tone] if tone ~= "" then if find(syllable, "[ae]") then syllable = gsub(syllable, "([ae])", "%1" .. tone) elseif find(syllable, "o") then syllable = gsub(syllable, "(o)", "%1" .. tone) elseif find(syllable, "[iu]") then syllable = gsub(syllable, "([iu])", "%1" .. tone) elseif find(syllable, "[mnrz]") then syllable = gsub(syllable, "([mnrz])", "%1" .. tone) end end return syllable end local words = {} for word in gsplit(text, " ") do local cap = find(toNFD(word), "^%u") word = export.py_transform(word, true) local syllables = {} for syllable in gsplit(word, " ") do syllable = toNFC(gsub(syllable, "^r(%d)", "er%1")) syllable = gsub(syllable, "^([jqxy])u", "%1ü") syllable = gsub(syllable, "^(.h)i(%d)", "%1r%2") syllable = gsub(syllable, "^ri(%d)", "r%1") syllable = gsub(syllable, "^([csz])i(%d)", "%1z%2") syllable = gsub(syllable, "^zh", "j") syllable = gsub(syllable, "^.", m_data.py_yale_initial) syllable = gsub(syllable, "^tsh", "ch") syllable = gsub(syllable, "i([aeo])", "y%1") syllable = gsub(syllable, "u([ao])", "w%1") syllable = gsub(syllable, "ü([ae])", "yw%1") for chars, replacement in pairs(m_data.py_yale_two_medials) do syllable = gsub(syllable, chars, replacement) end syllable = gsub(syllable, "ong", "ung") syllable = gsub(syllable, ".", m_data.py_yale_one_medial) syllable = gsub(syllable, "ü", "yu") syllable = gsub(syllable, "([^lwy])o(%d)$", "%1wo%2") syllable = gsub(syllable, "([yz])%1", "%1") syllable = gsub(syllable, "^([^%d]+)(%d)$", num_to_mark) table.insert(syllables, syllable) end word = table.concat(syllables, "-") word = cap and gsub(word, "^.", upper) or word table.insert(words, word) end return toNFC(table.concat(words, " ")) end -- Converts Hanyu Pinyin into the Palladius system. function export.py_palladius(text) local words = {} for word in gsplit(text, " ") do local cap = find(toNFD(word), "^%u") word = export.py_transform(word, true) local syllables = {} for syllable in gsplit(word, " ") do syllable = toNFC(gsub(syllable, "%d", "")) syllable = gsub(syllable, "^([jqxy])u", "%1ü") syllable = gsub(syllable, "([mnr])(r?)$", function(m1, m2) m1 = m_data.py_palladius_final[m1] or m1 return m1 .. (m2 == "r" and "р" or "") end) syllable = gsub(syllable, "ng", "н") syllable = gsub(syllable, "^..", m_data.py_palladius_two_initials) syllable = gsub(syllable, "^.", m_data.py_palladius_one_initial) for chars, replacement in pairs(m_data.py_palladius_three_medials) do syllable = gsub(syllable, chars, replacement) end for chars, replacement in pairs(m_data.py_palladius_two_medials) do syllable = gsub(syllable, chars, replacement) end syllable = gsub(syllable, ".", m_data.py_palladius_one_medial) for chars, replacement in pairs(m_data.py_palladius_specials) do syllable = gsub(syllable, chars, replacement) end syllable = gsub(syllable, "н$", "%1" .. pua[1]) syllable = gsub(syllable, "[ую]$", "%1" .. pua[3]) syllable = gsub(syllable, "[ая]?о$", "%1" .. pua[4]) syllable = gsub(syllable, "[ая]$", "%1" .. pua[5]) syllable = gsub(syllable, "ю?[иэ]$", "%1" .. pua[6]) syllable = gsub(syllable, "оу$", "%1" .. pua[6]) if syllable == "н" or syllable == "нь" then syllable = syllable .. pua[7] end table.insert(syllables, syllable) end word = table.concat(syllables, "") word = gsub(word, "н" .. pua[1] .. "([аеёиоуэюя])", "нъ%1") for chars, replacement in pairs(m_data.py_palladius_disambig) do word = gsub(word, chars, replacement) end word = gsub(word, "[" .. pua[1] .. "-" .. pua[7] .. "]", "") word = cap and gsub(word, "^.", upper) or word table.insert(words, word) end return toNFC(table.concat(words, " ")) end function export.py_format(text, cap, bg, simple) if cap == false then cap = nil end if bg == false then bg = 'n' else bg = 'y' end if simple == false then simple = nil end text = toNFD(text) local phon = text local title = mw.title.getCurrentTitle().text local cat = '' local spaced = toNFD(export.py_transform(text)) local space_count spaced, space_count = spaced:gsub(' ', '@') local consec_third_count for _ = 1, space_count do spaced, consec_third_count = gsub(spaced, "([^@]+)̌([^#@]*)@([^#@]+̌)", function(a, b, c) return temp_bg(a..'́'..b, bg)..'@'..c end, 1) if consec_third_count > 0 then phon = gsub(spaced, '@', '') end end text = gsub(text, "#", "") phon = gsub(phon, "#", "") if title:find('一') and not text:find('一') and not simple then cat = cat .. '[[Category:Mandarin words containing 一 not undergoing tone sandhi]]' end if text:find('[一不]') and not simple then text = gsub(text, '[一不]$', {['一'] = 'yī', ['不'] = 'bù'}) phon = gsub(phon, '[一不]$', {['一'] = 'yī', ['不'] = 'bù'}) if find(text, '一') then if find(text, '一[^̄́̌̀]*[̄́̌]') then cat = cat .. '[[Category:Mandarin words containing 一 undergoing tone sandhi to the fourth tone]]' phon = gsub(phon, '一([^̄́̌̀]*[̄́̌])', function(a) return temp_bg('yì', bg) .. a end) text = gsub(text, '一([^̄́̌̀]*[̄́̌])', 'yī%1') end if find(text, '一[^̄́̌̀]*̀') or find(text, '一ge$') or find(text, '一ge[^nr]') then cat = cat .. '[[Category:Mandarin words containing 一 undergoing tone sandhi to the second tone]]' phon = gsub(phon, '一([^̄́̌̀]*̀)', function(a) return temp_bg('yí', bg) .. a end) phon = gsub(phon, '一ge', temp_bg('yí', bg) .. 'ge') text = gsub(text, '一([^̄́̌̀]*[̄́̌])', 'yī%1') end end if find(text, '不 ?[bpmfvdtnlgkhjqxzcsrwy]?[ghn]?[aeiou]*̀') then cat = cat .. '[[Category:Mandarin words containing 不 undergoing tone sandhi|2]]' phon = gsub(phon, '不( ?[bpmfvdtnlgkhjqxzcsrwy]?[ghn]?[aeiou]*̀)', function(a) return temp_bg('bú', bg) .. a end) end end text = gsub(text, '[一不]', {['一'] = 'yī', ['不'] = 'bù'}) text = gsub(text, '兒', function() return make_bg('r', bg) end) -- character is deleted phon = gsub(phon, '[一不]', {['一'] = 'yī', ['不'] = 'bù'}) phon = gsub(phon, '<([^>]+)>', '<span style="background-color:#F5DEB3">%1</span>') if not simple then if cap then text = gsub(text, '^%l', upper) phon = gsub(phon, '^%l', upper) end local linked_text = require("Module:links").full_link{term = text, lang = cmn} if phon ~= text then text = (linked_text) .. " [Phonetic: " .. phon .. "]" else text = linked_text end if mw.title.getCurrentTitle().nsText ~= "Template" then text = text .. cat end end return toNFC(text) end function export.make_tl(original_text, tl_pos, bg, cap) if bg == false then bg = 'n' else bg = 'y' end local _, countoriginal = original_text:gsub(" ", " ") local spaced = export.py_transform(original_text) if sub(spaced, -1, -1) == ' ' then spaced = sub(spaced, 1, -2) end local _, count = spaced:gsub(" ", " ") local index = {} local start, finish local pos = 1 for i = 1, count, 1 do if i ~= 1 then pos = (index[i-1] + 1) end index[i] = find(spaced, ' ', pos) end if tl_pos == 2 then start = index[count-1] - count + countoriginal + 2 finish = index[count] - count + countoriginal elseif tl_pos == 3 then start = index[count-2] - count + countoriginal + 3 finish = index[count-1] - count + countoriginal + 1 else start = count == 0 and 1 or (index[count] - count + countoriginal + 1) finish = -1 end local text = (sub(original_text, 1, start-1) .. make_bg(gsub(sub(original_text, start, finish), '.', export.py_detone), bg)) if finish ~= -1 then text = (text .. sub(original_text, finish+1, -1)) end if cap == true then text = gsub(text, '^%l', upper) end return text end function export.tag(first, second, third, fourth, fifth) local text = "(''" local tag = {} local tagg = first or "Hán ngữ tiêu chuẩn" tag[1] = (second ~= '') and second or "Hán ngữ tiêu chuẩn" tag[2] = (third ~= '') and third or nil tag[3] = (fourth ~= '') and fourth or nil tag[4] = (fifth ~= '') and fifth or nil text = text .. ((tagg == '') and table.concat(tag, ", ") or tagg) .. "'')" text = gsub(text, 'Hán ngữ tiêu chuẩn', "[[w:Hán ngữ tiêu chuẩn|Hán ngữ tiêu chuẩn]]") text = gsub(text, 'Trung Quốc đại lục', "[[w:Tiếng Phổ Thông|Đại lục]]") text = gsub(text, 'Đài Loan', "[[w:Tiếng Quan thoại Đài Loan|Đài Loan]]") text = gsub(text, 'Bắc Kinh', "[[w:Tiếng Bắc Kinh|Bắc Kinh]]") text = gsub(text, 'Nhi hóa', "[[w:Nhi hóa|Nhi hóa]]") text = gsub(text, 'Tiếng Mân Nam', "[[w:Tiếng Mân Nam|Mân Nam]]") text = gsub(text, 'shangkouzi', "''[[上口字|shangkouzi]]''") return text end function export.straitdiff(text, pron_ind, tag) local conv_text = text for i = 1, #text do if m_zh_data().MT[sub(text, i, i)] then conv_text = 'y' end end if tag == 'tag' then conv_text = (conv_text == 'y') and m_zh_data().MT_tag[match(text, '[丁-丌与-龯㐀-䶵]')][pron_ind] or '' elseif pron_ind == 1 or pron_ind == 2 or pron_ind == 3 or pron_ind == 4 or pron_ind == 5 then local reading = {} for a, b in pairs(m_zh_data().MT) do reading[a] = b[pron_ind] if reading[a] then reading[a] = gsub(reading[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") end end conv_text = gsub(text, '.', reading) text = gsub(text, "^'", "") text = gsub(text, " '", " ") if conv_text == text and tag == 'exist' then return nil end end conv_text = gsub(conv_text, "^'", "") return conv_text end function export.str_analysis(text, conv_type, other_m_vars) local MT = m_zh_data().MT text = gsub(text, '{default}', '') text = gsub(text, '=', '—') text = gsub(text, ',', '隔') text = gsub(text, '隔 ', ', ') if conv_type == 'head' or conv_type == 'link' then if find(text, '隔cap—') then text = gsub(text, '[一不]', {['一'] = 'Yī', ['不'] = 'Bù'}) end text = gsub(text, '[一不]', {['一'] = 'yī', ['不'] = 'bù'}) end local comp = split(text, '隔', true) local reading = {} local alternative_reading = {} local zhuyin = {} --[[ -- not used local param = { '1n', '1na', '1nb', '1nc', '1nd', 'py', 'cap', 'tl', 'tl2', 'tl3', 'a', 'audio', 'er', 'ertl', 'ertl2', 'ertl3', 'era', 'eraudio', '2n', '2na', '2nb', '2nc', '2nd', '2py', '2cap', '2tl', '2tl2', '2tl3', '2a', '2audio', '2er', '2ertl', '2ertl2', '2ertl3', '2era', '2eraudio', '3n', '3na', '3nb', '3nc', '3nd', '3py', '3cap', '3tl', '3tl2', '3tl3', '3a', '3audio', '3er', '3ertl', '3ertl2', '3ertl3', '3era', '3eraudio', '4n', '4na', '4nb', '4nc', '4nd', '4py', '4cap', '4tl', '4tl2', '4tl3', '4a', '4audio', '4er', '4ertl', '4ertl2', '4ertl3', '4era', '4eraudio', '5n', '5na', '5nb', '5nc', '5nd', '5py', '5cap', '5tl', '5tl2', '5tl3', '5a', '5audio', '5er', '5ertl', '5ertl2', '5ertl3', '5era', '5eraudio' } --]] if conv_type == '' then return comp[1] elseif conv_type == 'head' or conv_type == 'link' then for i, item in ipairs(comp) do if not find(item, '—') then if find(item, '[一-龯㐀-䶵]') then local M, T, t = {}, {}, {} for a, b in pairs(MT) do M[a] = b[1]; T[a] = b[2]; t[a] = b[3]; M[a] = gsub(M[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") T[a] = gsub(T[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") if t[a] then t[a] = gsub(t[a], "^([āōēáóéǎǒěàòèaoe])", "'%1") end end local mandarin = gsub(item, '.', M) local taiwan = gsub(item, '.', T) mandarin = gsub(mandarin, "^'", "") mandarin = gsub(mandarin, " '", " ") if conv_type == 'link' then return mandarin end taiwan = gsub(taiwan, "^'", "") taiwan = gsub(taiwan, " '", " ") local tt = gsub(item, '.', t) if find(text, 'cap—') then mandarin = gsub(mandarin, '^%l', upper) taiwan = gsub(taiwan, '^%l', upper) tt = gsub(tt, '^%l', upper) end if tt == item then zhuyin[i] = export.py_zhuyin(mandarin, true) .. ', ' .. export.py_zhuyin(taiwan, true) reading[i] = mandarin .. ']], [[' .. taiwan else tt = gsub(tt, "^'", "") tt = gsub(tt, " '", " ") zhuyin[i] = export.py_zhuyin(mandarin, true) .. ', ' .. export.py_zhuyin(taiwan, true) .. ', ' .. export.py_zhuyin(tt, true) reading[i] = mandarin .. ']], [[' .. taiwan .. ']], [[' .. tt end else if conv_type == 'link' then return item end zhuyin[i] = export.py_zhuyin(item, true) reading[i] = item if len(mw.title.getCurrentTitle().text) == 1 and #split(export.py_transform(item), " ") == 1 then local target = export.py_transf(reading[i]) alternative_reading[i] = "[[" .. target .. "|" .. gsub(target, '([1-5])', sup) .. "]]" if alternative_reading[i]:find("5") then alternative_reading[i] = alternative_reading[i] .. "<span class=\"Zsym mention\" style=\"font-size:100%;\">/</span>" .. alternative_reading[i]:gsub("5", "0") end local title = mw.title.new(mw.ustring.lower(target)):getContent() if not (title and title:find("{{cmn%-pinyin}}")) then track("uncreated pinyin") end end end if reading[i] ~= '' then reading[i] = '[[' .. reading[i] .. ']]' end reading[i] = gsub(reading[i], "#", "") end comp[i] = item if conv_type == 'link' then return comp[1] end end local id = m_zh.ts_determ(mw.title.getCurrentTitle().text) local accel if id == 'trad' then accel = '<span class="form-of pinyin-t-form-of transliteration-' .. m_zh.ts(mw.title.getCurrentTitle().text) elseif id == 'simp' then accel = '<span class="form-of pinyin-s-form-of transliteration-' .. m_zh.st(mw.title.getCurrentTitle().text) elseif id == 'both' then accel = '<span class="form-of pinyin-ts-form-of' end accel = accel .. '" lang="cmn" style="font-family: Consolas, monospace;">' local result = other_m_vars and "*: <small>(''[[w:Hán ngữ tiêu chuẩn|Tiêu chuẩn]]'')</small>\n*::" or "*:" result = result .. "<small>(''[[w:Bính âm Hán ngữ|Bính âm Hán ngữ]]'')</small>: " .. accel .. gsub(table.concat(reading, ", "), ", ,", ",") if alternative_reading[1] then result = result .. " (" .. table.concat(alternative_reading, ", ") .. ")" end result = result .. (other_m_vars and "</span>\n*::" or "</span>\n*:") result = result .. "<small>(''[[w:Chú âm phù hiệu|Chú âm phù hiệu]]'')</small>: " .. '<span lang="cmn-Bopo" class="Bopo">' .. gsub(table.concat(zhuyin, ", "), ", ,", ",") .. "</span>" return result elseif conv_type == '2' or conv_type == '3' or conv_type == '4' or conv_type == '5' then if not find(text, '隔') or (comp[tonumber(conv_type)] and find(comp[tonumber(conv_type)], '—')) then return '' else return comp[tonumber(conv_type)] end else for i = 1, #comp, 1 do local target = '^' .. conv_type .. '—' if find(comp[i], target) then text = gsub(comp[i], target, '') return text end end text = '' end return text end function export.homophones(pinyin) local text = '' if mw.title.getCurrentTitle().nsText == '' then local args = get_hom_data(pinyin).list[pinyin] text = '<div style="visibility:hidden; float:left"><sup><span style="color:#FFF">sửa</span></sup></div>' for i, term in ipairs(args) do if i > 1 then text = text .. "<br>" end if mw.title.new(term).exists and term ~= mw.title.getCurrentTitle().text then local forms = { term } local content = mw.title.new(term):getContent() local template = match(content, "{{zh%-forms[^}]*}}") if template then local simp = match(template, "|s=([^|}])+") if simp then table.insert(forms, simp) end for tradVar in gmatch(template, "|t[0-9]=([^|}])+") do table.insert(forms, tradVar) end for simpVar in gmatch(template, "|s[0-9]=([^|}])+") do table.insert(forms, simpVar) end term = table.concat(forms, "/") end end text = text .. require("Module:links").full_link{ term = term, lang = cmn, tr = "-" } end text = text .. '[[Thể loại:Từ đồng âm tiếng Quan thoại]]' end return text end local function erhua(word, erhua_pos, pagename) local title = split(pagename, '') local linked_title = '' local syllables = split(export.py_transform(word), ' ') local count = #syllables erhua_pos = find(erhua_pos, '[1-9]') and split(erhua_pos, ';') or { count } for _, pos in ipairs(erhua_pos) do pos = tonumber(pos) title[pos] = title[pos] .. '兒' syllables[pos] = syllables[pos] .. 'r' end local title = table.concat(title) if mw.title.new(title).exists then linked_title = ' (' .. require("Module:links").full_link{ term = title, lang = cmn, tr = "-" } .. ')' end for i, syllable in pairs(syllables) do if i ~= 1 and toNFD(syllable):find('^[aeiou]') then syllables[i] = "'" .. syllable end end word = table.concat(syllables, '') return (export.tag('', '', 'erhua-ed') .. linked_title), word end export.erhua = erhua function export.make(frame) local args = frame:getParent().args return export.make_args(args) end function export.make_args(args) local pagename = mw.title.getCurrentTitle().text local text = {} local reading = {args[1] or '', args[2] or '', args[3] or '', args[4] or '', args[5] or ''} args["1nb"] = ine(args["1nb"]) if reading[1] ~= '' then local title = export.tag((args["1n"] or ''), (args["1na"] or ''), (args["1nb"] or export.straitdiff(args[1], 1, 'tag')), (args["1nc"] or ''), (args["1nd"] or '')) local pinyin = export.straitdiff(reading[1], 1, '') table.insert(text, export.make_table(title, pinyin, (args["py"] or ''), (args["cap"] or ''), (args["tl"] or ''), (args["tl2"] or ''), (args["tl3"] or ''), (args["a"] or args["audio"] or ''))) if args["er"] and args["er"] ~= '' then title, pinyin = erhua(pinyin, args["er"], pagename) table.insert(text, export.make_table(title, pinyin, '', (args["cap"] or ''), (args["ertl"] or ''), (args["ertl2"] or ''), (args["ertl3"] or ''), (args["era"] or args["eraudio"] or ''), true)) end end if reading[2] ~= '' or export.straitdiff(reading[1], 2, 'exist') then if args["2nb"] and args["2nb"] ~= '' then tagb = args["2nb"] else tagb = export.straitdiff(args[1], 2, 'tag') end title = export.tag((args["2n"] or ''), (args["2na"] or ''), tagb, (args["2nc"] or ''), (args["2nd"] or '')) pinyin = (reading[2] ~= '') and reading[2] or export.straitdiff(reading[1], 2, '') table.insert(text, export.make_table(title, pinyin, (args["2py"] or ''), (args["2cap"] or ''), (args["2tl"] or ''), (args["2tl2"] or ''), (args["2tl3"] or ''), (args["2a"] or args["2audio"] or ''), true)) table.insert(text, '[[Thể loại:Mục từ có nhiều cách phát âm tiếng Quan Thoại|' .. (export.straitdiff(args[1], 1, '') or args[1]) .. ']]') if args["2er"] and args["2er"] ~= '' then title, pinyin = erhua(pinyin, args["2er"], pagename) table.insert(text, export.make_table(title, pinyin, '', (args["2cap"] or ''), (args["2ertl"] or ''), (args["2ertl2"] or ''), (args["2ertl3"] or ''), (args["2era"] or args["2eraudio"] or ''), true)) end if reading[3] ~= '' or export.straitdiff(reading[1], 3, 'exist') then if args["3nb"] and args["3nb"] ~= '' then tagb = args["3nb"] else tagb = export.straitdiff(args[1], 3, 'tag') end title = export.tag((args["3n"] or ''), (args["3na"] or ''), tagb, (args["3nc"] or ''), (args["3nd"] or '')) if reading[3] ~= '' then pinyin = reading[3] else pinyin = export.straitdiff(reading[1], 3, '') end table.insert(text, export.make_table(title, pinyin, (args["3py"] or ''), (args["3cap"] or ''), (args["3tl"] or ''), (args["3tl2"] or ''), (args["3tl3"] or ''), (args["3a"] or args["3audio"] or ''), true)) if args["3er"] and args["3er"] ~= '' then title, pinyin = erhua(pinyin, args["3er"], pagename) table.insert(text, export.make_table(title, pinyin, '', (args["3cap"] or ''), (args["3ertl"] or ''), (args["3ertl2"] or ''), (args["3ertl3"] or ''), (args["3era"] or args["3eraudio"] or ''), true)) end if reading[4] ~= '' or export.straitdiff(reading[1], 4, 'exist') then if args["4nb"] and args["4nb"] ~= '' then tagb = args["4nb"] else tagb = export.straitdiff(args[1], 4, 'tag') end title = export.tag((args["4n"] or ''), (args["4na"] or ''), tagb, (args["4nc"] or ''), (args["4nd"] or '')) if reading[4] ~= '' then pinyin = reading[4] else pinyin = export.straitdiff(reading[1], 4, '') end table.insert(text, export.make_table(title, pinyin, (args["4py"] or ''), (args["4cap"] or ''), (args["4tl"] or ''), (args["4tl2"] or ''), (args["4tl3"] or ''), (args["4a"] or args["4audio"] or ''), true)) if args["4er"] and args["4er"] ~= '' then title, pinyin = erhua(pinyin, args["4er"], pagename) table.insert(text, export.make_table(title, pinyin, '', (args["4cap"] or ''), (args["4ertl"] or ''), (args["4ertl2"] or ''), (args["4ertl3"] or ''), (args["4era"] or args["4eraudio"] or ''), true)) end if reading[5] ~= '' or export.straitdiff(reading[1], 5, 'exist') then if args["5nb"] and args["5nb"] ~= '' then tagb = args["5nb"] else tagb = export.straitdiff(args[1], 5, 'tag') end title = export.tag((args["5n"] or ''), (args["5na"] or ''), tagb, (args["5nc"] or ''), (args["5nd"] or '')) if reading[5] ~= '' then pinyin = reading[5] else pinyin = export.straitdiff(reading[1], 5, '') end table.insert(text, export.make_table(title, pinyin, (args["5py"] or ''), (args["5cap"] or ''), (args["5tl"] or ''), (args["5tl2"] or ''), (args["5tl3"] or ''), (args["5a"] or args["5audio"] or ''), true)) if args["5er"] and args["5er"] ~= '' then title, pinyin = erhua(pinyin, args["5er"], pagename) table.insert(text, export.make_table(title, pinyin, '', (args["5cap"] or ''), (args["5ertl"] or ''), (args["5ertl2"] or ''), (args["5ertl3"] or ''), (args["5era"] or args["5eraudio"] or ''), true)) end end end end end if (args["tl"] or '') .. (args["tl2"] or '') .. (args["tl3"] or '') .. (args["2tl"] or '') .. (args["2tl2"] or '') .. (args["2tl3"] or '') ~= '' then table.insert(text, '[[Category:Mandarin words containing toneless variants|' .. export.straitdiff(args[1], 1, '') .. ']]') end return table.concat(text) end local function add_audio(text, audio, pinyin) if audio and audio ~= "" then if audio == "y" then audio = format('zh-%s.ogg', pinyin) end table.insert(text, '\n*:: [[File:') table.insert(text, audio) table.insert(text, ']]') table.insert(text, '[[Thể loại:Mục từ có liên kết âm thanh tiếng Quan Thoại]]') end end function export.make_audio(args) local text, reading, pinyin = {}, {}, "" local audio = { args["a"] or args["audio"] or '', args["2a"] or args["2audio"] or '', args["3a"] or args["3audio"] or '', args["4a"] or args["4audio"] or '', args["5a"] or args["5audio"] or '', } for i=1, 5 do reading[i] = args[i] or '' if i == 1 then pinyin = export.straitdiff(reading[1], 1, '') else pinyin = (reading ~= '') and reading[i] or export.straitdiff(reading[1], i, '') end pinyin = export.py_format(pinyin, false, false, true) add_audio(text, audio[i], pinyin) end return table.concat(text) end function export.make_table(title, pinyin, py, cap, tl, tl2, tl3, a, novariety) py = ine(py);cap = ine(cap);tl = ine(tl);tl2 = ine(tl2);tl3 = ine(tl3);a = ine(a);novariety = ine(novariety) local text = {} local pinyin_simple_fmt = export.py_format(pinyin, false, false, true) if not novariety then table.insert(text, '* [[w:Quan thoại|Quan thoại]]') else table.insert(text, '<br>') end table.insert(text, '\n** <small>' .. title .. '</small>') local hom_found if get_hom_data(pinyin_simple_fmt).list[lower(pinyin_simple_fmt)] then hom_found = true else hom_found = false table.insert(text, '<sup><small><abbr title="Thêm từ đồng âm tiếng Quan Thoại"><span class="plainlinks">[' .. tostring(mw.uri.fullUrl("Module:zh/data/cmn-hom/" .. hom_data_part(pinyin_simple_fmt), {["action"]="edit"})) .. ' +]</span></abbr></small></sup>') end table.insert(text, "\n*** <small>''[[w:Bính âm Hán ngữ|Bính âm Hán ngữ]]''</small>: ") local id = m_zh.ts_determ(mw.title.getCurrentTitle().text) if id == 'trad' then table.insert(text, '<span class="form-of pinyin-t-form-of transliteration-') table.insert(text, m_zh.ts(mw.title.getCurrentTitle().text)) elseif id == 'simp' then table.insert(text, '<span class="form-of pinyin-s-form-of transliteration-') table.insert(text, m_zh.st(mw.title.getCurrentTitle().text)) else -- both table.insert(text, '<span class="form-of pinyin-ts-form-of') end table.insert(text, '" lang="cmn" style="font-family: Consolas, monospace;">') if py then table.insert(text, py) else if cap then table.insert(text, export.py_format(pinyin, true, true)) else table.insert(text, export.py_format(pinyin, false, true)) end if tl or tl2 or tl3 then table.insert(text, ' → ') if tl then tl_pos = 1 elseif tl2 then tl_pos = 2 elseif tl3 then tl_pos = 3 end if cap then table.insert(text, export.make_tl(export.py_format(pinyin, true, false, true), tl_pos, true, true)) else table.insert(text, export.make_tl(pinyin_simple_fmt, tl_pos, true)) end end if tl then table.insert(text, ' <small>(toneless final syllable variant)</small>') elseif tl2 or tl3 then table.insert(text, ' <small>(toneless variant)</small>') end end table.insert(text, "</span>\n*** <small>''[[w:Chú âm phù hiệu|Chú âm phù hiệu]]''</small>: ") table.insert(text, '<span lang="cmn-Bopo" class="Bopo">') table.insert(text, export.py_zhuyin(pinyin_simple_fmt, true)) if tl or tl2 or tl3 then table.insert(text, ' → ') table.insert(text, export.py_zhuyin(export.make_tl(pinyin_simple_fmt, tl_pos, false), true)) end table.insert(text, '</span>') if tl then table.insert(text, ' <small>(toneless final syllable variant)</small>') elseif tl2 or tl3 then table.insert(text, ' <small>(toneless variant)</small>') end table.insert(text, "\n*** <small>''[[w:Bính âm Thông dụng|Bính âm thông dụng]]''</small>: <span lang=\"cmn-Latn-tongyong\" style=\"font-family: Consolas, monospace;\">") if tl or tl2 or tl3 then table.insert(text, export.py_tongyong(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt)) else table.insert(text, export.py_tongyong(pinyin_simple_fmt)) end table.insert(text, '</span>') table.insert(text, "\n*** <small>''[[w:Wade–Giles|Wade–Giles]]''</small>: <span lang=\"cmn-Latn-wadegile\" style=\"font-family: Consolas, monospace;\">") if tl or tl2 or tl3 then table.insert(text, export.py_wg(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt)) else table.insert(text, export.py_wg(pinyin_simple_fmt)) end table.insert(text, '</span>') table.insert(text, "\n*** <small>''[[w:Chuyển tự Latinh Yale Quan thoại|Yale]]''</small>: <span lang=\"cmn-Latn\" style=\"font-family: Consolas, monospace;\">") if tl or tl2 or tl3 then table.insert(text, export.py_yale(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt)) else table.insert(text, export.py_yale(pinyin_simple_fmt)) end table.insert(text, '</span>') table.insert(text, "\n*** <small>''[[w:Quốc ngữ La Mã tự|Quốc ngữ La Mã tự]]''</small>: <span lang=\"cmn-Latn\" style=\"font-family: Consolas, monospace;\">") if tl or tl2 or tl3 then table.insert(text, export.py_gwoyeu(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt)) else table.insert(text, export.py_gwoyeu(pinyin_simple_fmt)) end table.insert(text, '</span>') table.insert(text, "\n*** <small>''[[w:Kirin hóa tiếng Trung|Palladius]]''</small>: <span style=\"font-family: Consolas, monospace;\"><span lang=\"cmn-Cyrl\">") local palladius if tl or tl2 or tl3 then palladius = export.py_palladius(export.make_tl(pinyin_simple_fmt, tl_pos, false), pinyin_simple_fmt) else palladius = export.py_palladius(pinyin_simple_fmt) end table.insert(text, palladius) table.insert(text, "</span> <span lang=\"cmn-Latn\">(") table.insert(text, require("Module:ru-translit").tr(palladius, "cmn")) table.insert(text, ")</span></span>") table.insert(text, '\n*** <small>[[Wiktionary:IPA|IPA]] Hán học <sup>([[Phụ lục:Cách phát âm trong tiếng Quan Thoại|ghi chú]])</sup></small>: <span class="IPA">/') table.insert(text, export.py_ipa(pinyin)) if tl or tl2 or tl3 then table.insert(text, '/ → /') table.insert(text, export.py_ipa(export.make_tl(pinyin_simple_fmt, tl_pos, false))) end table.insert(text, '/</span>') -- if a then -- if a == 'y' then a = 'zh-' .. pinyin_simple_fmt .. '.ogg' end -- table.insert(text, '\n*** <div style="display:inline-block; position:relative; top:0.5em;">[[File:') -- table.insert(text, a) -- table.insert(text, ']]</div>[[Thể loại:Từ tiếng Quan Thoại có liên kết âm thanh]]') -- end if hom_found then table.insert(text, "\n*** <small>Đồng âm</small>: " .. '<table class="wikitable" style="width:15em;margin:0; position:left; text-align:center">' .. '<tr><th class="mw-customtoggle-cmnhom" style="color:#3366bb">[Hiện/Ẩn]</th></tr>' .. '<tr class="mw-collapsible mw-collapsed" id="mw-customcollapsible-cmnhom">' .. '<td><sup><div style="float: right; clear: right;"><span class="plainlinks">[') table.insert(text, tostring(mw.uri.fullUrl("Module:zh/data/cmn-hom/" .. hom_data_part(pinyin_simple_fmt), {["action"]="edit"}))) table.insert(text, ' sửa]</span></div></sup>') table.insert(text, export.homophones(lower(pinyin_simple_fmt))) table.insert(text, '</td></tr></table>') end return table.concat(text) end function export.py_headword(frame) local plain_param = {} local params = { ["head"] = plain_param, ["zhuyin"] = plain_param, ["notr"] = {type = "boolean"}, } local args = require("Module:parameters").process(frame:getParent().args, params, nil, "cmn-pron", "py_headword") local head = args.head or mw.title.getCurrentTitle().text local head_simple = require("Module:links").remove_links(head) local Latn = require("Module:scripts").getByCode("Latn") local categories = {"Bính âm Hán ngữ", "Mục từ biến thể hình thái tiếng Quan Thoại"} local inflections = {} if head:find("[0-5]") then table.insert(categories, "Bính âm Hán ngữ có chữ số thanh điệu") head = head:gsub("%d", sup) elseif not args.notr then local py_detoned = export.py_transform(head, true) if not py_detoned:find("%s") then if py_detoned:find("5") then py_detoned = py_detoned .. "//" .. py_detoned:gsub("5", "0") end py_detoned = py_detoned:gsub("%d", sup) table.insert(inflections, {py_detoned, sc = Latn}) end end if not args.notr then local Bopo = require("Module:scripts").getByCode("Bopo") head_simple = export.py_number_to_mark(head_simple) table.insert(inflections, { label = "[[chú âm phù hiệu|chú âm]]", { term = args.zhuyin or export.py_zhuyin(head_simple), sc = Bopo, nolink = true } }) end -- Don't pass a redundant head value, because they get categorised as redundant. if head == mw.title.getCurrentTitle().text then head = nil end return require("Module:headword").full_headword{lang = cmn, sc = Latn, heads = {head}, inflections = inflections, pos_category = "pinyin", categories = categories, noposcat = true} end return export qsl61pj98z3vvpcxbojcwv7fy07f2n6 rồng Komodo 0 265533 2350785 2116085 2026-05-07T08:01:21Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350785 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Komodo dragon with tongue.jpg|nhỏ|'''Rồng Komodo'''.]] {{-etymology-}} {{etym-calque|vi|en|Komodo dragon}}. {{-pron-}} {{vie-pron|Rồng Kô mô đô}} {{-noun-}} {{vie-noun|cls=con}} # ''[[Varanus komodoensis]]'', loài [[thằn lằn]] lớn nhất thế giới còn tồn tại, được tìm thấy trên các đảo của [[Indonesia]]. #* '''2021''', Duy Tiến, ''[https://cand.com.vn/the-gioi-24h/rong-komodo-o-indonesia-co-nguy-co-tuyet-chung--i627010/ Rồng Komodo ở Indonesia có nguy cơ tuyệt chủng]'', Báo Công an nhân dân: #*: {{quote|vi|Liên minh Bảo tồn Thiên nhiên Quốc tế (IUCN) ngày 5/9 đưa ra cảnh báo rằng gần 40% loài cá mập đang bị đe dọa tuyệt chủng do bị đánh bắt quá mức trong khi loài '''rồng Komodo''' ở Indonesia cũng đối mặt với nguy cơ lớn.}} {{-trans-}} {{trans-top|Loài thằn lằn lớn}} * {{eng}}: {{t+|en|Komodo dragon}} * {{pol}}: {{t+|pl|waran z Komodo|m}} * {{por}}: {{t+|pt|dragão-de-comodo|m}} * {{cat-2}}: {{t|ca|dragó de Komodo}} * {{dan}}: {{t|da|komodovaran}} * {{deu}}: {{t+|de|Komodowaran|m}} * {{est}}: {{t|et|Komodo varaan}} * {{hun}}: {{t|hu|komodói varánusz}} * {{nld}}: {{t|nl|komodovaraan}} * {{ind}}: {{t+|id|komodo}} * {{ga}}: {{t|ga|dragan Chomódó|m}} * {{khm}}: {{t|km|បង្កួយយក្ស|tr=bɑŋkuəy yeak}} * {{ms}}: {{t|ms|bengkatak}}, {{t|ms|komodo}} * {{mkd}}: {{t|mk|ко́модски ва́ран|m}} * {{nav}}: {{t|nv|tiníléítsoh}} * {{rus}}: {{t|ru|комо́дский вара́н|m}} * {{fra}}: {{t+|fr|dragon de Komodo|m}}, {{t|fr|varan de Komodo|m}} * {{fin}} {{t|fi|komodonvaraani}} * {{ces}}: {{t|cs|varan komodský|m}} * {{hbs}}: ** {{Latn}}: {{t|sh|Komodski varan}} * {{spa}}: {{t+|es|dragón de Komodo|m}} * {{sv}}: {{t+|sv|komodovaran|c}} * {{tur}}: {{t|tr|Komodo ejderi}} * {{zho}}: ** {{cmn}}: {{t|cmn|科莫多巨蜥|tr=Kēmòduō jùxī}}, {{t|cmn|科摩多巨蜥|tr=Kēmóduō jùxī}}, {{t+|cmn|科莫多龍|tr=Kēmòduō lóng}} * {{ita}}: {{t|it|drago di Komodo|m}} {{trans-bottom}} t7rn3y6064g9qrqmhf86fjh6guzqeqa 2351048 2350785 2026-05-07T10:47:00Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351048 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Komodo dragon with tongue.jpg|nhỏ|'''Rồng Komodo'''.]] {{-etymology-}} {{etym-calque|vi|en|Komodo dragon}}. {{-pron-}} {{vie-pron|Rồng Kô mô đô}} {{-noun-}} {{vie-noun|cls=con}} # ''[[Varanus komodoensis]]'', loài [[thằn lằn]] lớn nhất thế giới còn tồn tại, được tìm thấy trên các đảo của [[Indonesia]]. #* '''2021''', Duy Tiến, ''[https://cand.com.vn/the-gioi-24h/rong-komodo-o-indonesia-co-nguy-co-tuyet-chung--i627010/ Rồng Komodo ở Indonesia có nguy cơ tuyệt chủng]'', Báo Công an nhân dân: #*: {{quote|vi|Liên minh Bảo tồn Thiên nhiên Quốc tế (IUCN) ngày 5/9 đưa ra cảnh báo rằng gần 40% loài cá mập đang bị đe dọa tuyệt chủng do bị đánh bắt quá mức trong khi loài '''rồng Komodo''' ở Indonesia cũng đối mặt với nguy cơ lớn.}} {{-trans-}} {{trans-top|Loài thằn lằn lớn}} * {{eng}}: {{t+|en|Komodo dragon}} * {{pol}}: {{t+|pl|waran z Komodo|m}} * {{por}}: {{t+|pt|dragão-de-comodo|m}} * {{cat-old}}: {{t|ca|dragó de Komodo}} * {{dan}}: {{t|da|komodovaran}} * {{deu}}: {{t+|de|Komodowaran|m}} * {{est}}: {{t|et|Komodo varaan}} * {{hun}}: {{t|hu|komodói varánusz}} * {{nld}}: {{t|nl|komodovaraan}} * {{ind}}: {{t+|id|komodo}} * {{ga}}: {{t|ga|dragan Chomódó|m}} * {{khm}}: {{t|km|បង្កួយយក្ស|tr=bɑŋkuəy yeak}} * {{ms}}: {{t|ms|bengkatak}}, {{t|ms|komodo}} * {{mkd}}: {{t|mk|ко́модски ва́ран|m}} * {{nav}}: {{t|nv|tiníléítsoh}} * {{rus}}: {{t|ru|комо́дский вара́н|m}} * {{fra}}: {{t+|fr|dragon de Komodo|m}}, {{t|fr|varan de Komodo|m}} * {{fin}} {{t|fi|komodonvaraani}} * {{ces}}: {{t|cs|varan komodský|m}} * {{hbs}}: ** {{Latn}}: {{t|sh|Komodski varan}} * {{spa}}: {{t+|es|dragón de Komodo|m}} * {{sv}}: {{t+|sv|komodovaran|c}} * {{tur}}: {{t|tr|Komodo ejderi}} * {{zho}}: ** {{cmn}}: {{t|cmn|科莫多巨蜥|tr=Kēmòduō jùxī}}, {{t|cmn|科摩多巨蜥|tr=Kēmóduō jùxī}}, {{t+|cmn|科莫多龍|tr=Kēmòduō lóng}} * {{ita}}: {{t|it|drago di Komodo|m}} {{trans-bottom}} k7zwy81xftv6csyzye3lbea9l9vqwsr đại sứ 0 265697 2350786 2056304 2026-05-07T08:01:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350786 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # [[đại|Đại]] [[sứ]] [[đặc mệnh]] [[toàn quyền]] ([[nói]] [[tắt]]) #: '''''Đại sứ''' Việt Nam tại Hoa Kỳ.'' {{-trans-}} {{trans-top}} * {{ara}}: {{t|ar|سَفِير|m}}, {{t|ar|سَفِيرَة|f}} * {{cat-2}}: {{t+|ca|ambaixador|m}} * {{zho}}: *: {{cmn}}: {{t+|cmn|大使|tr=dàshǐ}} * {{nld}}: {{t+|nl|ambassadeur|m}} * {{fin}}: {{t+|fi|suurlähettiläs}} * {{fra}}: {{t+|fr|ambassadeur|m}}, {{t+|fr|ambassadrice|f}} * {{deu}}: {{t+|de|Botschafter|m}} * {{ell}}: {{t+|el|πρέσβης|m}} *: {{grc}}: {{t|grc|πρεσβεύς|m}}, {{t|grc|πρεσβευτής|m}} * {{heb}}: {{t+|he|שַׁגְרִיר|tr=shagrír|m}}, {{t|he|שגרירה|tr=shagrira|f}} * {{hun}}: {{t+|hu|nagykövet}} * {{ita}}: {{t+|it|ambasciatore|m}}, {{t+|it|ambasciatrice|f}} * {{jpn}}: {{t+|ja|大使|tr=たいし, taishi}} * {{lat}}: {{t+|la|lēgātus|m}} * {{mkd}}: {{t|mk|амбаса́дор|m}}, {{t|mk|амбасадорка|f}} * {{nor}}: *: {{nob}}: {{t+|nb|ambassadør|m}} *: {{nno}}: {{t|nn|ambassadør|m}} * {{fas}}: {{t+|fa|سفیر|tr=safir}}, {{t|fa|آمباسادور|tr=âmbâsâdor}}, {{t+|fa|ایلچی|tr=ilči}} {{qualifier|obsolete}} * {{pol}}: {{t+|pl|ambasador|m}}, {{t|pl|ambasadorka|f}} * {{por}}: {{t+|pt|embaixador|m}}, {{t+|pt|embaixadora|f}} * {{rus}}: {{t+|ru|посо́л|m}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|амбасадор|m}}, {{t|sh|велепосланик|m}} {{qualifier|Croatia}}, {{t|sh|велепосланица|f}} {{qualifier|Croatia}} *: Roman: {{t+|sh|ambasador|m}}, {{t+|sh|veleposlanik|m}} {{qualifier|Croatia}}, {{t+|sh|veleposlanica|f}} {{qualifier|Croatia}} * {{spa}}: {{t+|es|embajador|m}}, {{t+|es|embajadora|f}} * {{swe}}: {{t+|sv|ambassadör|c}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Danh từ|tiếng Việt}} jfupclcgud1xaxlx0y4cujo8ov7p5b9 2351049 2350786 2026-05-07T10:47:03Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351049 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-pron-}} {{vie-pron}} {{-noun-}} {{pn}} # [[đại|Đại]] [[sứ]] [[đặc mệnh]] [[toàn quyền]] ([[nói]] [[tắt]]) #: '''''Đại sứ''' Việt Nam tại Hoa Kỳ.'' {{-trans-}} {{trans-top}} * {{ara}}: {{t|ar|سَفِير|m}}, {{t|ar|سَفِيرَة|f}} * {{cat-old}}: {{t+|ca|ambaixador|m}} * {{zho}}: *: {{cmn}}: {{t+|cmn|大使|tr=dàshǐ}} * {{nld}}: {{t+|nl|ambassadeur|m}} * {{fin}}: {{t+|fi|suurlähettiläs}} * {{fra}}: {{t+|fr|ambassadeur|m}}, {{t+|fr|ambassadrice|f}} * {{deu}}: {{t+|de|Botschafter|m}} * {{ell}}: {{t+|el|πρέσβης|m}} *: {{grc}}: {{t|grc|πρεσβεύς|m}}, {{t|grc|πρεσβευτής|m}} * {{heb}}: {{t+|he|שַׁגְרִיר|tr=shagrír|m}}, {{t|he|שגרירה|tr=shagrira|f}} * {{hun}}: {{t+|hu|nagykövet}} * {{ita}}: {{t+|it|ambasciatore|m}}, {{t+|it|ambasciatrice|f}} * {{jpn}}: {{t+|ja|大使|tr=たいし, taishi}} * {{lat}}: {{t+|la|lēgātus|m}} * {{mkd}}: {{t|mk|амбаса́дор|m}}, {{t|mk|амбасадорка|f}} * {{nor}}: *: {{nob}}: {{t+|nb|ambassadør|m}} *: {{nno}}: {{t|nn|ambassadør|m}} * {{fas}}: {{t+|fa|سفیر|tr=safir}}, {{t|fa|آمباسادور|tr=âmbâsâdor}}, {{t+|fa|ایلچی|tr=ilči}} {{qualifier|obsolete}} * {{pol}}: {{t+|pl|ambasador|m}}, {{t|pl|ambasadorka|f}} * {{por}}: {{t+|pt|embaixador|m}}, {{t+|pt|embaixadora|f}} * {{rus}}: {{t+|ru|посо́л|m}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|амбасадор|m}}, {{t|sh|велепосланик|m}} {{qualifier|Croatia}}, {{t|sh|велепосланица|f}} {{qualifier|Croatia}} *: Roman: {{t+|sh|ambasador|m}}, {{t+|sh|veleposlanik|m}} {{qualifier|Croatia}}, {{t+|sh|veleposlanica|f}} {{qualifier|Croatia}} * {{spa}}: {{t+|es|embajador|m}}, {{t+|es|embajadora|f}} * {{swe}}: {{t+|sv|ambassadör|c}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} {{catname|Danh từ|tiếng Việt}} 1wcvxj8bnz8gfnetk1f4k8vnph6oaig chim cánh cụt 0 266242 2350787 2102212 2026-05-07T08:01:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350787 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:SGI-2016-South Georgia (Fortuna Bay)–King penguin (Aptenodytes patagonicus) 04.jpg|nhỏ|Một con '''chim cánh cụt'''.]] {{-etym-}} Từ ghép giữa {{compound|vi|chim|cánh|cụt}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|cls=[[con]]}} # Loài [[chim biển]] không biết [[bay]], sống ở [[Nam bán cầu]], [[lông]] màu [[đen]] và [[trắng]], [[chân]] có [[màng]], [[cánh]] như [[mái chèo]] dùng để [[bơi]], có thể đi thẳng mình bằng hai chân. #* '''2009''', B.T.N, ''[https://nld.com.vn/khoa-hoc/chim-canh-cut-chet-hang-loat-dat-vao-bo-bien-chile-20090330032915242.htm Chim cánh cụt chết hàng loạt dạt vào bờ biển Chile]'', Người Lao Động Online: #*: {{quote|vi|Hơn 1.500 '''chim cánh cụt''' bị chết đã dạt vào bờ biển vịnh Queule, cách thủ đô [[w:Santiago de Chile|Santiago de Chile]] khoảng 900 km về phía Nam.}} #* '''2016''', Phương Hoa, ''[https://vnexpress.net/chim-canh-cut-boi-8-000-km-ve-tham-an-nhan-cuu-mang-3367241.html Chim cánh cụt bơi 8.000 km về thăm ân nhân cứu mạng]'', VnExpress: #*: {{quote|vi|Con '''chim cánh cụt''' không ngại vượt qua quãng đường xa xôi để về thăm ân nhân cứu mạng mỗi năm, cho thấy tình bạn đẹp giữa con người và động vật.}} {{-synonym-}} * {{l|vi|chim cụt cánh}} {{q|ít dùng}} {{-drv-}} * {{l|vi|chim cánh cụt hoàng đế}} {{-trans-}} {{trans-top|Loài chim biển không biết bay}} * {{ara}}: {{t|ar|بطريق|m|tr=biṭrīq}} ** {{arz}}: {{t|arz|بطريق|m|tr=baṭrīq}} ** {{acw}}: {{t|acw|بطريق|m|tr=baṭrīg}} * {{afr}}: {{t|af|pikkewyn}} * {{sqi}}: {{t|sq|pinguin|m}} * {{eng}}: {{t+|en|penguin}} * {{arg}}: {{t|an|pingüino|m}} * {{hye}}: {{t|hy|պինգվին}}, {{t|hy|անթեւուկ}} * {{asm}}: {{t|as|পেঙ্গুইন}} * {{ast}}: {{t|ast|pingüín|m}} * {{aze}}: {{t|az|pinqvin}} * {{pol}}: {{t|pl|pingwin|m}}, {{t|pl|bezlotek|m}} * {{fas}}: {{t|fa|پنگوئن|tr=pangu'an}} * {{eus}}: {{t|eu|pinguino}} * {{isl}}: {{t|is|mörgæs|f}} * {{bel}}: {{t|be|пінгвін|m}} * {{ben}}: {{t|bn|পেঙ্গুইন}} * {{por}}: {{t|pt|pinguim|m}} * {{bul}}: {{t|bg|пингвин|m}} * {{cat-2}}: {{t|ca|pingüí|m}} * {{div}}: {{t|dv|ޕެންގުއިން}} * {{heb}}: {{t|he|פינגוין|m|tr=pingvín}} * {{uig}}: {{t|ug|پىنگېۋىن}} * {{dan}}: {{t|da|pingvin}} * {{deu}}: {{t|de|Pinguin|m}} * {{myv}}: {{t|myv|эймацей|tr=ejmacej}} * {{est}}: {{t|et|pingviin}} * {{fao}}: {{t|fo|pingvin|f}} * {{glg}}: {{t|gl|pingüín|m}} * {{kat}}: {{t|ka|პინგვინი}} * {{guj}}: {{t|gu|પેંગ્વિન|tr=peṅgvin}} * {{nds}}: {{t|nds|Pinguien|m}} * {{nld}}: {{t|nl|pinguïn|m}}, {{t|nl|vetgans|f}} * {{haw}}: {{t|haw|penekuina}}, {{t|haw|manuhelekū}} * {{hin}}: {{t|hi|पेंगुइन}} * {{hun}}: {{t|hu|pingvin}} * {{ell}}: {{t|el|πιγκουίνος|m}} * {{ido}}: {{t|io|pinguino}} * {{ind}}: {{t|id|pinguin}} * {{gle}}: {{t|ga|piongain|f}} * {{kaz}}: {{t|kk|пингвин}} * {{khm}}: {{t|km|ភេនឃ្វីន|tr=pheinkhviin}} * {{kir}}: {{t|ky|пингвин}}, {{t|ky|карабат}} * {{lao}}: {{t|lo|ນົກຄໍກ່ານ}}, {{t|lo|ຫ່ານຢິ່ງຢີ້}} * {{lav}}: {{t|lv|pingvīns|m}} * {{lit}}: {{t|lt|pingvinas|m}} * {{msa}}: {{t|ms|penguin}} * {{mkd}}: {{t|mk|пингвин|m}} * {{mlt}}: {{t|mt|pengwin|m}} * {{mya}}: {{t|my|ပင်ဂွင်}} * {{mon}}: {{t|mn|оцон шувуу}}, {{t|mn|пингвин}} * {{nor}}: ** {{nob}}: {{t|nb|pingvin|m}} ** {{nno}}: {{t|nn|pingvin|m}} * {{nah}}: ** {{nhn}}: {{t|nhn|michtototl}} * {{nav}}: {{t|nv|tsídii naʼałkʼaiʼí}} * {{rus}}: {{t|ru|пингвин|m}} * {{jpn}}: {{t|ja|ペンギン|tr=pengin}}, {{t|ja|人鳥|tr=じんちょう, jinchō}}, {{t|ja|企鵝|tr=きが, kiga}} * {{nrf}}: {{t|nrf|pîngouîn|m}} * {{pus}}: {{t|ps|پنګوين|m|tr=pangwín}} * {{fra}}: {{t|fr|manchot|m}}, {{t|fr|pingouin|m}} {{q|không chính thức}} * {{fin}}: {{t|fi|pingviini}} * {{epo}}: {{t|eo|pingveno}} * {{ron}}: {{t|ro|pinguin|m}} * {{ces}}: {{t|cs|tučňák|m}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|пингвин|m}} ** {{Latn}}: {{t|sh|pingvin|m}} * {{slk}}: {{t|sk|tučniak|m}} * {{slv}}: {{t|sl|pingvin|m}} * {{tgl}}: {{t|tl|pingguwino}} * {{tgk}}: {{t|tg|пингвин}} * {{tat}}: {{t|tt|пингвин}} * {{spa}}: {{t|es|pingüino|m}} * {{tha}}: {{t|th|เพนกวิน|tr=pen-gwîn}} * {{tur}}: {{t|tr|penguen}} * {{swe}}: {{t|sv|pingvin}} * {{kor}}: {{t|ko|펭귄}} * {{zha}}: {{t|za|gingoz}} * {{zho}}: ** {{hak}}: {{t|hak|企鵝|tr=khî-ngò}} ** {{nan}}: {{t|nan|徛鵝|tr=khiā-gô}}, {{t|nan|企鵝|tr=khì-gô}} ** {{wuu}}: {{t|wuu|企鵝|tr=qi ngu}} ** {{cmn}}: {{t|cmn|企鵝}} ** {{yue}}: {{t|yue|企鵝}} * {{tuk}}: {{t|tk|pingwin}} * {{ukr}}: {{t|uk|пінгвін|m}} * {{urd}}: {{t|ur|پنگوئن|tr=penguin}} * {{uzb}}: {{t|uz|pingvin}} * {{vol}}: {{t|vo|pinguen}} * {{cym}}: {{t|cy|pengwin|m}} * {{ita}}: {{t|it|pinguino|m}} * {{yid}}: {{t|yi|פּינגווין|m}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vn|vn}} {{C|vi|Chim cánh cụt}} g3du2zjafxm9eguv8v52xnwfyj5fs0h 2351050 2350787 2026-05-07T10:47:06Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351050 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:SGI-2016-South Georgia (Fortuna Bay)–King penguin (Aptenodytes patagonicus) 04.jpg|nhỏ|Một con '''chim cánh cụt'''.]] {{-etym-}} Từ ghép giữa {{compound|vi|chim|cánh|cụt}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|cls=[[con]]}} # Loài [[chim biển]] không biết [[bay]], sống ở [[Nam bán cầu]], [[lông]] màu [[đen]] và [[trắng]], [[chân]] có [[màng]], [[cánh]] như [[mái chèo]] dùng để [[bơi]], có thể đi thẳng mình bằng hai chân. #* '''2009''', B.T.N, ''[https://nld.com.vn/khoa-hoc/chim-canh-cut-chet-hang-loat-dat-vao-bo-bien-chile-20090330032915242.htm Chim cánh cụt chết hàng loạt dạt vào bờ biển Chile]'', Người Lao Động Online: #*: {{quote|vi|Hơn 1.500 '''chim cánh cụt''' bị chết đã dạt vào bờ biển vịnh Queule, cách thủ đô [[w:Santiago de Chile|Santiago de Chile]] khoảng 900 km về phía Nam.}} #* '''2016''', Phương Hoa, ''[https://vnexpress.net/chim-canh-cut-boi-8-000-km-ve-tham-an-nhan-cuu-mang-3367241.html Chim cánh cụt bơi 8.000 km về thăm ân nhân cứu mạng]'', VnExpress: #*: {{quote|vi|Con '''chim cánh cụt''' không ngại vượt qua quãng đường xa xôi để về thăm ân nhân cứu mạng mỗi năm, cho thấy tình bạn đẹp giữa con người và động vật.}} {{-synonym-}} * {{l|vi|chim cụt cánh}} {{q|ít dùng}} {{-drv-}} * {{l|vi|chim cánh cụt hoàng đế}} {{-trans-}} {{trans-top|Loài chim biển không biết bay}} * {{ara}}: {{t|ar|بطريق|m|tr=biṭrīq}} ** {{arz}}: {{t|arz|بطريق|m|tr=baṭrīq}} ** {{acw}}: {{t|acw|بطريق|m|tr=baṭrīg}} * {{afr}}: {{t|af|pikkewyn}} * {{sqi}}: {{t|sq|pinguin|m}} * {{eng}}: {{t+|en|penguin}} * {{arg}}: {{t|an|pingüino|m}} * {{hye}}: {{t|hy|պինգվին}}, {{t|hy|անթեւուկ}} * {{asm}}: {{t|as|পেঙ্গুইন}} * {{ast}}: {{t|ast|pingüín|m}} * {{aze}}: {{t|az|pinqvin}} * {{pol}}: {{t|pl|pingwin|m}}, {{t|pl|bezlotek|m}} * {{fas}}: {{t|fa|پنگوئن|tr=pangu'an}} * {{eus}}: {{t|eu|pinguino}} * {{isl}}: {{t|is|mörgæs|f}} * {{bel}}: {{t|be|пінгвін|m}} * {{ben}}: {{t|bn|পেঙ্গুইন}} * {{por}}: {{t|pt|pinguim|m}} * {{bul}}: {{t|bg|пингвин|m}} * {{cat-old}}: {{t|ca|pingüí|m}} * {{div}}: {{t|dv|ޕެންގުއިން}} * {{heb}}: {{t|he|פינגוין|m|tr=pingvín}} * {{uig}}: {{t|ug|پىنگېۋىن}} * {{dan}}: {{t|da|pingvin}} * {{deu}}: {{t|de|Pinguin|m}} * {{myv}}: {{t|myv|эймацей|tr=ejmacej}} * {{est}}: {{t|et|pingviin}} * {{fao}}: {{t|fo|pingvin|f}} * {{glg}}: {{t|gl|pingüín|m}} * {{kat}}: {{t|ka|პინგვინი}} * {{guj}}: {{t|gu|પેંગ્વિન|tr=peṅgvin}} * {{nds}}: {{t|nds|Pinguien|m}} * {{nld}}: {{t|nl|pinguïn|m}}, {{t|nl|vetgans|f}} * {{haw}}: {{t|haw|penekuina}}, {{t|haw|manuhelekū}} * {{hin}}: {{t|hi|पेंगुइन}} * {{hun}}: {{t|hu|pingvin}} * {{ell}}: {{t|el|πιγκουίνος|m}} * {{ido}}: {{t|io|pinguino}} * {{ind}}: {{t|id|pinguin}} * {{gle}}: {{t|ga|piongain|f}} * {{kaz}}: {{t|kk|пингвин}} * {{khm}}: {{t|km|ភេនឃ្វីន|tr=pheinkhviin}} * {{kir}}: {{t|ky|пингвин}}, {{t|ky|карабат}} * {{lao}}: {{t|lo|ນົກຄໍກ່ານ}}, {{t|lo|ຫ່ານຢິ່ງຢີ້}} * {{lav}}: {{t|lv|pingvīns|m}} * {{lit}}: {{t|lt|pingvinas|m}} * {{msa}}: {{t|ms|penguin}} * {{mkd}}: {{t|mk|пингвин|m}} * {{mlt}}: {{t|mt|pengwin|m}} * {{mya}}: {{t|my|ပင်ဂွင်}} * {{mon}}: {{t|mn|оцон шувуу}}, {{t|mn|пингвин}} * {{nor}}: ** {{nob}}: {{t|nb|pingvin|m}} ** {{nno}}: {{t|nn|pingvin|m}} * {{nah}}: ** {{nhn}}: {{t|nhn|michtototl}} * {{nav}}: {{t|nv|tsídii naʼałkʼaiʼí}} * {{rus}}: {{t|ru|пингвин|m}} * {{jpn}}: {{t|ja|ペンギン|tr=pengin}}, {{t|ja|人鳥|tr=じんちょう, jinchō}}, {{t|ja|企鵝|tr=きが, kiga}} * {{nrf}}: {{t|nrf|pîngouîn|m}} * {{pus}}: {{t|ps|پنګوين|m|tr=pangwín}} * {{fra}}: {{t|fr|manchot|m}}, {{t|fr|pingouin|m}} {{q|không chính thức}} * {{fin}}: {{t|fi|pingviini}} * {{epo}}: {{t|eo|pingveno}} * {{ron}}: {{t|ro|pinguin|m}} * {{ces}}: {{t|cs|tučňák|m}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|пингвин|m}} ** {{Latn}}: {{t|sh|pingvin|m}} * {{slk}}: {{t|sk|tučniak|m}} * {{slv}}: {{t|sl|pingvin|m}} * {{tgl}}: {{t|tl|pingguwino}} * {{tgk}}: {{t|tg|пингвин}} * {{tat}}: {{t|tt|пингвин}} * {{spa}}: {{t|es|pingüino|m}} * {{tha}}: {{t|th|เพนกวิน|tr=pen-gwîn}} * {{tur}}: {{t|tr|penguen}} * {{swe}}: {{t|sv|pingvin}} * {{kor}}: {{t|ko|펭귄}} * {{zha}}: {{t|za|gingoz}} * {{zho}}: ** {{hak}}: {{t|hak|企鵝|tr=khî-ngò}} ** {{nan}}: {{t|nan|徛鵝|tr=khiā-gô}}, {{t|nan|企鵝|tr=khì-gô}} ** {{wuu}}: {{t|wuu|企鵝|tr=qi ngu}} ** {{cmn}}: {{t|cmn|企鵝}} ** {{yue}}: {{t|yue|企鵝}} * {{tuk}}: {{t|tk|pingwin}} * {{ukr}}: {{t|uk|пінгвін|m}} * {{urd}}: {{t|ur|پنگوئن|tr=penguin}} * {{uzb}}: {{t|uz|pingvin}} * {{vol}}: {{t|vo|pinguen}} * {{cym}}: {{t|cy|pengwin|m}} * {{ita}}: {{t|it|pinguino|m}} * {{yid}}: {{t|yi|פּינגווין|m}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vn|vn}} {{C|vi|Chim cánh cụt}} n1622ha7iuflwwws4hvqs9kgltxqhoz Thể loại:zh:Mùa 14 267208 2350508 2062168 2026-05-06T15:22:39Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Thể loại:Mùa/Tiếng Trung Quốc]] thành [[Thể loại:zh:Mùa]] (đã tắt đổi hướng) 2062168 wikitext text/x-wiki Trang này liệt kê các mục từ tiếng Trung Quốc thuộc chủ đề [[mùa]]. [[Thể loại:Mục từ tiếng Trung Quốc theo chủ đề]] [[Thể loại:Mùa|T]] 1dj0kc0ag64hk8pzxlm171iu83has0e 2350526 2350508 2026-05-06T16:49:11Z Kateru Zakuro 34522 Thay cả nội dung bằng “{{auto cat}}” 2350526 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 四季 0 267209 2350506 2062155 2026-05-06T15:21:53Z Kateru Zakuro 34522 2350506 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=sìjì |c=sei3 gwai3 |c-t=lhei1 gei1 |h=pfs=si-kui |md=sé̤ṳ-gié |mn=ml:sì-kùi/tw,xm,zz:sù-kùi |w=sh:5sy ci |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[tứ quý|Tứ quý]] (bốn [[mùa]] trong năm). ===={{ĐM|synonyms}}==== {{syn-saurus|zh|全年}} ===={{ĐM|derived terms}}==== {{col3|zh|四季豆|四季如春|四季橘|四季青|四季蘭}} ===={{ĐM|see also}}==== {{table:seasons/zh}} * {{zh-l|季節}} {{C|zh|Mùa|Thời gian|Bốn}} =={{langname|ja}}== {{ja-kanjitab|し|き|yomi=o}} ==={{ĐM|pronunciation}}=== {{ja-pron|しき|acc=1|dev=1|acc_ref=NHK|acc2=2|acc2_note={{ja-non-lexical-pitch}}}} ==={{ĐM|noun}}=== {{ja-noun|しき}} # [[bốn|Bốn]] [[mùa]] trong năm #: {{ja-usex|'''四季'''を[[通じて]]|'''しき''' を つうじて|Suốt cả năm (cả bốn mùa)}} #: {{ja-usex|'''四季'''の[[移り変わる|移り変わり]]|'''しき''' の うつりかわり|sự thay đổi theo mùa}} ===={{ĐM|derived terms}}==== * {{ja-r|四季%折々|しき%おりおり}} * {{ja-r|四季咲き|しきざき}} * {{ja-r|四季%鳥|シキ%チョウ}} * {{ja-r|四季%報|しき%ほう}} ==={{ĐM|see also}}=== {{table:seasons/ja}} ==={{ĐM|references}}=== <references/> :* {{R:Kanjipedia Kotoba|0002716900}} {{C|ja|Meteorology|sort=しき}} {{C|ja|Seasons|sort=しき}} =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=사계}} # {{hanja form of|사계|the [[four]] [[seasons]]}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|tứ quý}} q2gdc8o7v3pgr6vudgjn00uwundohzm 2350510 2350506 2026-05-06T15:23:11Z Kateru Zakuro 34522 2350510 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=sìjì |c=sei3 gwai3 |c-t=lhei1 gei1 |h=pfs=si-kui |md=sé̤ṳ-gié |mn=ml:sì-kùi/tw,xm,zz:sù-kùi |w=sh:5sy ci |cat=n }} ==={{ĐM|noun}}=== {{head|zh|noun}} # [[tứ quý|Tứ quý]] (bốn [[mùa]] trong năm). ===={{ĐM|synonyms}}==== {{syn-saurus|zh|全年}} ===={{ĐM|derived terms}}==== {{col3|zh|四季豆|四季如春|四季橘|四季青|四季蘭}} ===={{ĐM|see also}}==== {{table:seasons/zh}} * {{zh-l|季節}} {{C|zh|Mùa|Thời gian|Bốn}} =={{langname|ja}}== {{ja-kanjitab|し|き|yomi=o}} ==={{ĐM|pronunciation}}=== {{ja-pron|しき|acc=1|dev=1|acc_ref=NHK|acc2=2|acc2_note={{ja-non-lexical-pitch}}}} ==={{ĐM|noun}}=== {{ja-noun|しき}} # [[bốn|Bốn]] [[mùa]] trong năm #: {{ja-usex|'''四季'''を[[通じて]]|'''しき''' を つうじて|Suốt cả năm (cả bốn mùa)}} #: {{ja-usex|'''四季'''の[[移り変わる|移り変わり]]|'''しき''' の うつりかわり|sự thay đổi theo mùa}} ===={{ĐM|derived terms}}==== * {{ja-r|四季%折々|しき%おりおり}} * {{ja-r|四季咲き|しきざき}} * {{ja-r|四季%鳥|シキ%チョウ}} * {{ja-r|四季%報|しき%ほう}} ==={{ĐM|see also}}=== {{table:seasons/ja}} ==={{ĐM|references}}=== <references/> :* {{R:Kanjipedia Kotoba|0002716900}} {{C|ja|Meteorology|sort=しき}} {{C|ja|Mùa|sort=しき}} =={{langname|ko}}== {{ko-hanjatab}} ==={{ĐM|noun}}=== {{ko-noun|hangeul=사계}} # {{hanja form of|사계|the [[four]] [[seasons]]}} =={{langname|vi}}== {{vi-hantutab}} ==={{ĐM|noun}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|tứ quý}} ovmcli3ey3zdo2evx6sgly3yrcl3hmg 0 270001 2350532 2071087 2026-05-06T17:44:54Z Kateru Zakuro 34522 2350532 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=9|rad=人|as=04|sn=6|four=27220|canj=OB,XXOB|ids=⿰亻月}} ===={{ĐM|references}}==== * {{Han ref|kx=0094.160|dkj=00408|hdz=10124.150|uh=4EF4}} =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=wò |c=wut6 |mc= |oc= |ma= |cat=pn }} ==={{ĐM|definition}}=== {{head|zh|Hanzi}} # {{n-g|Tên một [[địa danh]] cổ..}} =={{langname|ja}}== ==={{ĐM|kanji}}=== {{ja-kanji|grade=|rs=人04}} # {{rfdef|ja|sort=人04}} ===={{ĐM|reading}}==== {{ja-readings |goon=がち<ぐわち |kanon=がつ<ぐわつ }} mc64w24jnqch0s8kjxb67zy5y7fqavf 2350533 2350532 2026-05-06T17:45:05Z Kateru Zakuro 34522 2350533 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=9|rad=人|as=04|sn=6|four=27220|canj=OB,XXOB|ids=⿰亻月}} ===={{ĐM|references}}==== * {{Han ref|kx=0094.160|dkj=00408|hdz=10124.150|uh=4EF4}} =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=wò |c=wut6 |mc= |oc= |ma= |cat=pn }} ==={{ĐM|definition}}=== {{head|zh|Hanzi}} # {{n-g|Tên một [[địa danh]] cổ.}} =={{langname|ja}}== ==={{ĐM|kanji}}=== {{ja-kanji|grade=|rs=人04}} # {{rfdef|ja|sort=人04}} ===={{ĐM|reading}}==== {{ja-readings |goon=がち<ぐわち |kanon=がつ<ぐわつ }} rfye1y8korw8nmjgaeiqft7rhyuigcv 2350540 2350533 2026-05-07T02:15:36Z Kateru Zakuro 34522 Thay cả nội dung bằng “{{head|zh|hanzi}}” 2350540 wikitext text/x-wiki {{head|zh|hanzi}} 50tlspn7lf87xpfah0t0sd5w7xhwhhs 2350543 2350540 2026-05-07T02:22:47Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350533 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350543 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=9|rad=人|as=04|sn=6|four=27220|canj=OB,XXOB|ids=⿰亻月}} ===={{ĐM|references}}==== * {{Han ref|kx=0094.160|dkj=00408|hdz=10124.150|uh=4EF4}} =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=wò |c=wut6 |mc= |oc= |ma= |cat=pn }} ==={{ĐM|definition}}=== {{head|zh|Hanzi}} # {{n-g|Tên một [[địa danh]] cổ.}} =={{langname|ja}}== ==={{ĐM|kanji}}=== {{ja-kanji|grade=|rs=人04}} # {{rfdef|ja|sort=人04}} ===={{ĐM|reading}}==== {{ja-readings |goon=がち<ぐわち |kanon=がつ<ぐわつ }} rfye1y8korw8nmjgaeiqft7rhyuigcv 2350545 2350543 2026-05-07T02:25:57Z Kateru Zakuro 34522 2350545 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=9|rad=人|as=04|sn=6|four=27220|canj=OB,XXOB|ids=⿰亻月}} ===={{ĐM|references}}==== * {{Han ref|kx=0094.160|dkj=00408|hdz=10124.150|uh=4EF4}} =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=wò |c=wut6 |mc= |oc= |ma= |cat=pn }} ==={{ĐM|definition}}=== {{head|zh|hanzi}} # {{n-g|Tên một [[địa danh]] cổ.}} =={{langname|ja}}== ==={{ĐM|kanji}}=== {{ja-kanji|grade=|rs=人04}} # {{rfdef|ja|sort=人04}} ===={{ĐM|reading}}==== {{ja-readings |goon=がち<ぐわち |kanon=がつ<ぐわつ }} owfnfx5glsiblp6lqxwzgs6qrks9obs 2350546 2350545 2026-05-07T02:26:15Z Kateru Zakuro 34522 Thay cả nội dung bằng “{{head|zh|hanzi}}” 2350546 wikitext text/x-wiki {{head|zh|hanzi}} 50tlspn7lf87xpfah0t0sd5w7xhwhhs 2350547 2350546 2026-05-07T02:27:43Z Kateru Zakuro 34522 2350547 wikitext text/x-wiki {{đang viết}} {{head|zh|hanzi}} 6g6owe8sbxebc09412l4p0lxuqaigcu 2350550 2350547 2026-05-07T02:29:17Z Kateru Zakuro 34522 2350550 wikitext text/x-wiki {{đang viết}} {{head/sandbox|zh|hanzi}} lmpi8gc56ov3ow2uw1oqa8xgs0rci1h 2350572 2350550 2026-05-07T05:30:52Z Kateru Zakuro 34522 2350572 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han character}}=== {{Han char|rn=9|rad=人|as=04|sn=6|four=27220|canj=OB,XXOB|ids=⿰亻月}} ===={{ĐM|references}}==== * {{Han ref|kx=0094.160|dkj=00408|hdz=10124.150|uh=4EF4}} =={{langname|zh}}== {{zh-forms}} ==={{ĐM|pronunciation}}=== {{zh-pron |m=wò |c=wut6 |mc= |oc= |ma= |cat=pn }} ==={{ĐM|definition}}=== {{head|zh|hanzi}} # {{n-g|Tên một [[địa danh]] cổ.}} =={{langname|ja}}== ==={{ĐM|kanji}}=== {{ja-kanji|grade=|rs=人04}} # {{rfdef|ja|sort=人04}} ===={{ĐM|reading}}==== {{ja-readings |goon=がち<ぐわち |kanon=がつ<ぐわつ }} owfnfx5glsiblp6lqxwzgs6qrks9obs Mô đun:languages/data/3/a 828 270567 2350455 2349878 2026-05-06T12:44:40Z Lcsnes 40261 2350455 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["aaa"] = { "tiếng Ghotuo", 35463, "alv-yek", "Latn", "Tiếng Ghotuo", "Ghotuo", } m["aab"] = { "tiếng Alumu-Tesu", 35034, "nic-alu", "Latn", "Tiếng Alumu-Tesu", "Alumu-Tesu", } m["aac"] = { "tiếng Ari", 1811224, "paa-pag", "Latn", "Tiếng Ari", "Ari", } m["aad"] = { "tiếng Amal", 56708, "paa-iwm", "Latn", "Tiếng Amal", "Amal", } -- "aae" IS TREATED AS "sq", SEE WT:LT m["aaf"] = { "tiếng Aranadan", 3507928, "dra-mal", "Mlym", "Tiếng Aranadan", "Aranadan", translit = {Mlym = "ml-translit"}, } m["aag"] = { "tiếng Ambrak", 4741706, "qfa-tor", "Latn", "Tiếng Ambrak", "Ambrak", } m["aah"] = { "Abu' Arapesh", 4670715, "qfa-tor", "Latn", } m["aai"] = { "Arifama-Miniafia", 4790560, "poz-ocw", "Latn", } m["aak"] = { "tiếng Ankave", 3446690, "ngf", "Latn", "Tiếng Ankave", "Ankave", } m["aal"] = { "tiếng Afade", 56434, "cdc-cbm", "Latn", "Tiếng Afade", "Afade", } m["aan"] = { "Anambé", 3507873, "tup-gua", "Latn", } m["aap"] = { "Pará Arára", 56807, "sai-pek", "Latn", } m["aaq"] = { "tiếng Đông Abenaki", 3515185, "alg-abp", "Latn", "Tiếng Đông Abenaki", "Đông Abenaki", } m["aas"] = { "tiếng Aasax", 56620, "cus-sou", "Latn", "Tiếng Aasax", "Aasax", } -- "aat" IS TREATED AS "sq", SEE WT:LT m["aau"] = { "tiếng Abau", 3073568, "paa-spk", "Latn", "Tiếng Abau", "Abau", } m["aaw"] = { "tiếng Solong", 7558834, "poz-ocw", "Latn", "Tiếng Solong", "Solong", } m["aax"] = { "Mandobo Atas", 12636156, "ngf", "Latn", } m["aaz"] = { "tiếng Amarasi", 4740192, "poz-tim", "Latn", "Tiếng Amarasi", "Amarasi", } m["aba"] = { "Abé", 34833, "alv-lag", "Latn", } m["abb"] = { "tiếng Bankon", 34860, "bnt-bsa", "Latn", "Tiếng Bankon", "Bankon", } m["abc"] = { "Ambala Ayta", 3448896, "phi", "Latn", } m["abd"] = { "Camarines Norte Agta", 3399682, "phi", "Latn", } m["abe"] = { "tiếng Tây Abenaki", 17502788, "alg-abp", "Latn", "Tiếng Tây Abenaki", "Tây Abenaki", } m["abf"] = { "Abai Sungai", 4663287, "poz-san", "Latn", } m["abg"] = { "tiếng Abaga", 3507954, "paa-kag", "Latn", "Tiếng Abaga", "Abaga", } m["abh"] = { "tiếng Ả Rập Tajikistan", 56833, "sem-arb", "Arab", "Tiếng Ả Rập Tajikistan", "Ả Rập Tajikistan", entry_name = "ar-entryname", } m["abi"] = { "tiếng Abidji", 34781, "alv-lag", "Latn", "Tiếng Abidji", "Abidji", } m["abj"] = { "Aka-Bea", 2356391, "qfa-ads", "Latn", } m["abl"] = { "Abung", 49215, "poz-lgx", "Latn", } m["abm"] = { "tiếng Abanyom", 7502, "nic-eko", "Latn", "Tiếng Abanyom", "Abanyom", } m["abn"] = { "Abua", 34835, "nic-cde", "Latn", } m["abo"] = { "tiếng Abon", 35121, "nic-tvn", "Latn", "Tiếng Abon", "Abon", } m["abp"] = { "Abenlen Ayta", 3436621, "phi", "Latn", } m["abq"] = { "tiếng Abaza", 27567, "cau-abz", "Cyrl, Latn", "Tiếng Abaza", "Abaza", translit = {Cyrl = "abq-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 }, to = { "г" .. p[3], "г" .. p[4], "г" .. p[7], "д" .. p[2], "д" .. p[3], "к" .. p[3], "к" .. p[4], "к" .. p[7], "к" .. p[8], "х" .. p[3], "х" .. p[6], "ч" .. p[3], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "д" .. p[1], "д" .. p[4], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "к" .. p[1], "к" .. p[2], "к" .. p[5], "к" .. p[6], "л" .. p[1], "л" .. p[2], "п" .. p[1], "т" .. p[1], "т" .. p[2], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[4], "х" .. p[5], "ц" .. p[1], "ч" .. p[1], "ч" .. p[2], "ш" .. p[1], "ш" .. p[2] } }, }, } m["abr"] = { "tiếng Abron", 34831, "alv-ctn", "Latn", "Tiếng Abron", "Abron", ancestors = "ak", } m["abs"] = { "tiếng Mã Lai Ambon", 3124354, "crp", "Latn", "Tiếng Mã Lai Ambon", "Mã Lai Ambon", ancestors = "ms", } m["abt"] = { "tiếng Ambulas", 3508015, "paa-spk", "Latn", "Tiếng Ambulas", "Ambulas", } m["abu"] = { "tiếng Abure", 34767, "alv-ptn", "Latn", "Tiếng Abure", "Abure", } m["abv"] = { "Baharna Arabic", 56576, "sem-arb", "Arab", entry_name = "ar-entryname", } m["abw"] = { "Pal", 7126121, "ngf-mad", "Latn", } m["abx"] = { "Inabaknon", 2820163, "poz-sbj", "Latn", } m["aby"] = { "Aneme Wake", 3508107, "ngf", "Latn", } m["abz"] = { "tiếng Abui", 2822110, "qfa-tap", "Latn", "Tiếng Abui", "Abui", } m["aca"] = { "tiếng Achawa", 2822982, "awd", "Latn", "Tiếng Achawa", "Achawa", } m["acb"] = { "Áncá", 11130787, "nic-mom", "Latn", } m["acd"] = { "Gikyode", 35256, "alv-gng", "Latn", } m["ace"] = { "tiếng Aceh", 27683, "cmc", "Latn, ms-Arab", "Tiếng Aceh", "Aceh", standardChars = { Latn = "AaBbCcDdEeÉéÈèËëFfGgHhIiJjKkLlMmNnOoÔôÖöPpQqRrSsTtUuVvWwXxYyZz", -- current orthography (not yet add Arab) c.punc }, } m["ach"] = { "tiếng Acholi", 34926, "sdv-los", "Latn", "Tiếng Acholi", "Acholi", } m["aci"] = { "Aka-Cari", 2670418, "qfa-adn", "Latn", } m["ack"] = { "Aka-Kora", 3433680, "qfa-adn", "Latn", } m["acl"] = { "Akar-Bale", 3436825, "qfa-ads", "Latn", } m["acm"] = { "tiếng Ả Rập Iraq", 56232, "sem-arb", "Arab", "Tiếng Ả Rập Iraq", "Ả Rập Iraq", entry_name = "ar-entryname", } m["acn"] = { "tiếng A Xương", 56582, "tbq-brm", "Latn", "Tiếng A Xương", "A Xương", } m["acp"] = { "tiếng Đông Acipa", 5329945, "nic-kmk", "Latn", "Tiếng Đông Acipa", "Đông Acipa", } m["acr"] = { "tiếng Achi", 34774, "myn", "Latn", "Tiếng Achi", "Achi", } m["acs"] = { "Acroá", 2829146, "sai-cje", "Latn", } m["acu"] = { "tiếng Achuar", 2823170, "sai-jiv", "Latn", "Tiếng Achuar", "Achuar", } m["acv"] = { "tiếng Achumawi", 56661, "nai-pal", "Latn", "Tiếng Achumawi", "Achumawi", } m["acw"] = { "tiếng Ả Rập Hijazi", 56608, "sem-arb", "Arab", "Tiếng Ả Rập Hijazi", "Ả Rập Hijazi", entry_name = "ar-entryname", } m["acx"] = { "tiếng Ả Rập Oman", 56630, "sem-arb", "Arab", "Tiếng Ả Rập Oman", "Ả Rập Oman", entry_name = "ar-entryname", } m["acy"] = { "tiếng Ả Rập Síp", 56416, "sem-arb", "Latn, Grek", "Tiếng Ả Rập Síp", "Ả Rập Síp", ancestors = "acm", standardChars = { Latn = "AaBbCcDdΔδEeFfGgĠġĊċIiJjKkLlMmNnOoPpΘθRrSsTtUuVvWwXxYyZzŞş", c.punc }, entry_name = {remove_diacritics = c.grave .. c.acute .. c.breve}, } m["acz"] = { "tiếng Acheron", 34769, "alv-tal", "Latn", "Tiếng Acheron", "Acheron", } m["ada"] = { "tiếng Adangme", 35141, "alv-gda", "Latn", "Tiếng Adangme", "Adangme", } m["adb"] = { -- rename or remove, see RFM "Adabe", 36872, nil, "Latn", } m["add"] = { "Dzodinka", 35266, "nic-nka", "Latn", } m["ade"] = { "Adele", 27740, "alv-ntg", "Latn", } m["adf"] = { "Dhofari Arabic", 56565, "sem-arb", "Arab", entry_name = "ar-entryname", } m["adg"] = { "Andegerebinha", 3508123, "aus-pam", "Latn", } m["adh"] = { "Adhola", 1971400, "sdv-los", "Latn", } m["adi"] = { "tiếng Adi", 56440, "sit-tan", "Latn", "Tiếng Adi", "Adi", } m["adj"] = { "Adioukrou", 34738, "alv-lag", "Latn", } m["adl"] = { "tiếng Galo", 2857892, "sit-tan", "Latn", "Tiếng Galo", "Galo", } m["adn"] = { "Adang", 3398276, "qfa-tap", "Latn", } m["ado"] = { "Abu", 56659, "paa-ram", "Latn", } m["adp"] = { "Adap", 3512402, "sit-tib", "Tibt", ancestors = "dz", translit = "Tibt-translit", override_translit = true, display_text = s["Tibt-displaytext"], entry_name = s["Tibt-entryname"], sort_key = "Tibt-sortkey", wikipedia_article = "Dzongkha", -- Considered a dialect of Dzongkha } m["adq"] = { "Adangbe", 34730, "alv-gda", "Latn", ancestors = "ada", } m["adr"] = { "Adonara", 4684505, "poz-cet", "Latn", } m["ads"] = { "Adamorobe Sign Language", 27709, "sgn", "Latn", -- when documented } m["adt"] = { "tiếng Adnyamathanha", 2225391, "aus-psw", "Latn", "Tiếng Adnyamathanha", "Adnyamathanha", } m["adu"] = { "Aduge", 34734, "alv-nwd", "Latn", ancestors = "opa", wikipedia_article = "Okpamheri language", } m["adw"] = { "Amondawa", 12626847, "tup-gua", "Latn", } m["ady"] = { "tiếng Adygea", 27776, "cau-cir", "Cyrl, Latn, Arab", "Tiếng Adygea", "Adygea", translit = { Cyrl = "cau-cir-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 = { "кхъу", "къӏу", -- 4 chars "гъу", "джу", "дзу", "жъу", "къу", "кхъ", "къӏ", "кӏу", "кӏь", "лъу", "лӏу", "пӏу", "сӏу", "тӏу", "фӏу", "хъу", "цӏу", "чъу", "чӏу", "шъу", "шӏу", "щӏу", -- 3 chars "гу", "гъ", "гь", "дж", "дз", "ё", "жъ", "жь", "ку", "къ", "кь", "кӏ", "лъ", "ль", "лӏ", "пӏ", "сӏ", "тӏ", "фӏ", "ху", "хъ", "хь", "цу", "цӏ", "чу", "чъ", "чӏ", "шъ", "шӏ", "щӏ", "ӏу", "ӏь" -- 2 chars }, to = { "к" .. p[5], "к" .. p[7], "г" .. p[3], "д" .. p[2], "д" .. p[4], "ж" .. p[2], "к" .. p[3], "к" .. p[4], "к" .. p[6], "к" .. p[10], "к" .. p[11], "л" .. p[2], "л" .. p[5], "п" .. p[2], "с" .. p[2], "т" .. p[2], "ф" .. p[2], "х" .. p[3], "ц" .. p[3], "ч" .. p[3], "ч" .. p[5], "ш" .. p[2], "ш" .. p[4], "щ" .. p[2], "г" .. p[1], "г" .. p[2], "г" .. p[4], "д" .. p[1], "д" .. p[3], "е" .. p[1], "ж" .. p[1], "ж" .. p[3], "к" .. p[1], "к" .. p[2], "к" .. p[8], "к" .. p[9], "л" .. p[1], "л" .. p[3], "л" .. p[4], "п" .. p[1], "с" .. p[1], "т" .. p[1], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[4], "ц" .. p[1], "ц" .. p[2], "ч" .. p[1], "ч" .. p[2], "ч" .. p[4], "ш" .. p[1], "ш" .. p[3], "щ" .. p[1], "ӏ" .. p[1], "ӏ" .. p[2] } }, }, } m["adz"] = { "tiếng Adzera", nil, "poz-ocw", "Latn", "Tiếng Adzera", "Adzera", } m["aea"] = { "Areba", 3509129, "aus-pam", "Latn", } m["aeb"] = { "Tunisian Arabic", 56240, "sem-arb", "Arab", entry_name = "ar-entryname", } m["aed"] = { "Argentine Sign Language", 3322073, "sgn", "Latn", -- when documented } m["aee"] = { "Northeast Pashayi", 12642198, "inc-pas", "fa-Arab, Latn", } m["aek"] = { "Haeke", 5638166, "poz-cln", "Latn", } m["ael"] = { "Ambele", 34818, "nic-grf", "Latn", } m["aem"] = { "tiếng Arem", 3507920, "mkh-vie", "Latn", "Tiếng Arem", "Arem", } m["aen"] = { "Armenian Sign Language", 3446604, "sgn", } m["aeq"] = { "tiếng Aer", 3246741, "inc-wes", "Arab", "Tiếng Aer", "Aer", } m["aer"] = { "tiếng Arrernte Đông", 10728232, "aus-pam", "Latn", "Tiếng Arrernte Đông", "Arrernte Đông", } m["aes"] = { "tiếng Alsea", 2395641, nil, "Latn", "Tiếng Alsea", "Alsea", } m["aeu"] = { "Akeu", 4700657, "tbq-sil", "Latn", } m["aew"] = { "Ambakich", 56642, "paa-ram", "Latn", } m["aey"] = { "Amele", 3508025, "ngf-mad", "Latn", } m["aez"] = { "Aeka", 16110528, "ngf", "Latn", wikipedia_article = "Orokaiva language", -- subvariety? } m["afb"] = { "tiếng Ả Rập vùng Vịnh", 56385, "sem-arb", "Arab", "Tiếng Ả Rập vùng Vịnh", "Ả Rập vùng Vịnh", entry_name = "ar-entryname", } m["afd"] = { "Andai", 4753480, "paa-arf", "Latn", } m["afe"] = { "Putukwam", 3914930, "nic-ben", "Latn", } m["afg"] = { "Afghan Sign Language", 4689093, "sgn", } m["afh"] = { "Afrihili", 384707, "art", "Latn", type = "appendix-constructed", } m["afi"] = { "Akrukay", 57003, "paa-ram", "Latn", } m["afk"] = { "Nanubae", 6964416, "paa-arf", "Latn", } m["afn"] = { "Defaka", 35174, "nic", "Latn", } m["afo"] = { "Eloyi", 3914066, "nic-plt", "Latn", } m["afp"] = { "Tapei", 16887371, "paa-arf", "Latn", } m["afs"] = { "Afro-Seminole Creole", 27867, "crp", "Latn", ancestors = "en", } m["aft"] = { "Afitti", 3400829, "sdv-nyi", "Latn", } m["afu"] = { "Awutu", 34847, "alv-gng", "Latn", } m["afz"] = { "Obokuitai", 7075258, "paa-lkp", "Latn", } m["aga"] = { "Aguano", 3331203, nil, "Latn", } m["agb"] = { "Legbo", 35584, "nic-uce", "Latn", } m["agc"] = { "tiếng Agatu", 34732, "alv-ido", "Latn", "Tiếng Agatu", "Agatu", } m["agd"] = { "Agarabi", 3399642, "paa-kag", "Latn", } m["age"] = { "Angal", 10951553, "paa-eng", "Latn", } m["agf"] = { "Arguni", 12473346, "poz-cet", "Latn", } m["agg"] = { "Angor", 3508100, "paa", "Latn", } m["agh"] = { "Ngelima", 7022266, "bnt-bta", "Latn", } m["agi"] = { "Agariya", 663586, "mun", "Deva", } m["agj"] = { "tiếng Argobba", 29292, "sem-eth", "Ethi", "Tiếng Argobba", "Argobba", } m["agk"] = { "Isarog Agta", 6078982, "phi", "Latn", } m["agl"] = { "Fembe", 372927, "ngf", "Latn", } m["agm"] = { "Angaataha", 3508001, "ngf", "Latn", } m["agn"] = { "Agutaynen", 3399717, "phi-kal", "Latn", } m["ago"] = { "Tainae", 7676186, "ngf", "Latn", } m["agq"] = { "tiếng Aghem", 34737, "nic-rnw", "Latn", "Tiếng Aghem", "Aghem", } m["agr"] = { "Aguaruna", 1526530, "sai-jiv", "Latn", "Tiếng Aguaruna", "Aguaruna", } m["ags"] = { "tiếng Esimbi", 35260, "nic-bds", "Latn", "Tiếng Esimbi", "Esimbi", } m["agt"] = { "Central Cagayan Agta", 5017296, "phi", "Latn", } m["agu"] = { "tiếng Aguacateca", 35091, "myn", "Latn", "Tiếng Aguacateca", "Aguacateca", } m["agv"] = { "Remontado Agta", 3508085, "phi", "Latn", } m["agw"] = { "Kahua", 3191906, "poz-sls", "Latn", } m["agx"] = { "tiếng Aghul", 36498, "cau-esm", "Cyrl", "Tiếng Aghul", "Aghul", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, sort_key = { from = {"аь", "гъ", "гь", "гӏ", "дж", "ё", "къ", "кь", "кӏ", "оь", "пӏ", "тӏ", "уь", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"а" .. p[1], "г" .. p[1], "г" .. p[2], "г" .. p[3], "д" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "ц" .. p[1], "ч" .. p[1]} }, } m["agy"] = { "Southern Alta", 7569611, "phi", "Latn", } m["agz"] = { "Mount Iriga Agta", 6921432, "phi", "Latn", } m["aha"] = { "Ahanta", 34729, "alv-ctn", "Latn", } m["ahb"] = { "Axamb", 2874710, "poz-vnc", "Latn", } m["ahg"] = { "tiếng Qimant", 35663, "cus-cen", "Latn", "Tiếng Qimant", "Qimant", } m["ahh"] = { "Aghu", 3436645, "ngf", "Latn", } m["ahi"] = { "Tiagbamrin Aizi", 3400073, "kro-aiz", "Latn", } m["ahk"] = { "tiếng Akha", 56643, "tbq-han", "Latn, Mymr, Thai", "Tiếng Akha", "Akha", sort_key = { Thai = { from = {"[%pๆ]", "[็-๎]", "([เแโใไ])([ก-ฮ])"}, to = {"", "", "%2%1"} }, }, } m["ahl"] = { "Igo", 35412, "alv-ktg", "Latn", } m["ahm"] = { "Mobumrin Aizi", 35967, "kro-aiz", "Latn", } m["ahn"] = { "Àhàn", 34723, "alv-aah", "Latn", } m["aho"] = { "tiếng Ahom", 34778, "tai-swe", "Ahom", "Tiếng Ahom", "Ahom", translit = "Ahom-translit", } m["ahp"] = { "Aproumu Aizi", 34810, "alv-kwa", "Latn", } m["ahr"] = { "Ahirani", 15549890, "inc-wes", "Deva", translit = "mr-translit", } m["ahs"] = { "Ashe", 34823, "nic-plc", "Latn", } m["aht"] = { "tiếng Ahtna", 21058, "ath-nor", "Latn", "Tiếng Ahtna", "Ahtna", } m["aia"] = { "Arosi", 2863483, "poz-sls", "Latn", } m["aib"] = { "tiếng Äynu", 27927, "qfa-mix", "Arab, Latn", "Tiếng Äynu", "Äynu", ancestors = "ug, fa" } m["aic"] = { "Ainbai", 3332149, "paa-brd", "Latn", } m["aid"] = { "Alngith", 3279409, "aus-pmn", "Latn", } m["aie"] = { "Amara", 2841180, "poz-ocw", "Latn", } m["aif"] = { "Agi", 3331491, "qfa-tor", "Latn", } m["aig"] = { "Antigua and Barbuda Creole English", 3244184, "crp", "Latn", ancestors = "en", } m["aih"] = { "Ai-Cham", 2827749, "qfa-kms", "Latn, Hani", sort_key = {Hani = "Hani-sortkey"}, } m["aii"] = { "tiếng Tân Aram Assyria", 29440, "sem-nna", "Syrc, Cyrl", "Tiếng Tân Aram Assyria", "Tân Aram Assyria", translit = {Syrc = "aii-translit"}, entry_name = "Syrc-entryname", } m["aij"] = { "tiếng Lishanid Noshan", 3436467, "sem-nna", "Hebr", "Tiếng Lishanid Noshan", "Lishanid Noshan", } m["aik"] = { "Ake", 34808, "nic-pls", "Latn", } m["ail"] = { "Aimele", 3327418, "ngf", "Latn", } m["aim"] = { "tiếng Aimol", 4697175, "tbq-kuk", "Latn, Beng", "Tiếng Aimol", "Aimol", } m["ain"] = { "tiếng Ainu", 27969, "qfa-ain", "Kana, Latn, Cyrl", "Tiếng Ainu", "Ainu", sort_key = {Kana = "Kana-sortkey"}, } m["aio"] = { "tiếng Aiton", 3399725, "tai-swe", "Mymr", "Tiếng Aiton", "Aiton", translit = "aio-phk-translit", entry_name = {remove_diacritics = c.VS01}, } m["aip"] = { "Burumakok", 5000984, "ngf-okk", "Latn", } m["air"] = { "Airoran", 3321131, "paa-tkw", "Latn", } m["ait"] = { "Arikem", 3446679, "tup", "Latn", } m["aiw"] = { "tiếng Aari", 7495, "omv-aro", "Latn, Ethi", "Tiếng Aari", "Aari", } m["aix"] = { "Aighon", 3504287, "poz-ocw", "Latn", } m["aiy"] = { "Ali", 34814, "alv-gbf", "Latn", } m["aja"] = { "Aja", 3237491, "csu-bkr", "Latn", } m["ajg"] = { "tiếng Adja", 35035, "alv-gbe", "Latn", "Tiếng Adja", "Adja", } m["aji"] = { "tiếng Ajië", 2828867, "poz-cln", "Latn", "Tiếng Ajië", "Ajië", } m["ajn"] = { "Andajin", 16111302, "aus-wor", "Latn", } m["ajp"] = { "tiếng Ả Rập Nam Levant", nil, "sem-arb", "Arab", "Tiếng Ả Rập Nam Levant", "Ả Rập Nam Levant", entry_name = "ar-entryname", } m["ajw"] = { "Ajawa", 56645, "cdc-wst", "Latn", } m["ajz"] = { "Amri Karbi", 3508092, "tbq-kuk", "Latn", ancestors = "mjw", } m["akb"] = { "Angkola Batak", 2640686, "btk", "Latn, Batk", } m["akc"] = { "Mpur", 3327139, "paa-wpa", "Latn", } m["akd"] = { "Ukpet-Ehom", 36618, "nic-ucr", "Latn", } m["ake"] = { "tiếng Akawaio", 28059, "sai-pem", "Latn", "Tiếng Akawaio", "Akawaio", } m["akf"] = { "Akpa", 34801, "alv-ido", "Latn", } m["akg"] = { "Anakalangu", 4750964, "poz-cet", "Latn", } m["akh"] = { "Angal Heneng", 10950354, "paa-eng", "Latn", } m["aki"] = { "Aiome", 56735, "paa", "Latn", } m["akj"] = { "tiếng Aka-Jeru", 2919121, "qfa-adn", "Latn, Deva", "Tiếng Aka-Jeru", "Aka-Jeru", } m["akk"] = { "tiếng Akkad", 35518, "sem-eas", "Xsux, Latn", "Tiếng Akkad", "Akkad", } m["akl"] = { "tiếng Aklanon", 8773, "phi", "Latn", "Tiếng Aklanon", "Aklanon", ancestors = "poz-pro,phi-pro", } m["akm"] = { "tiếng Aka-Bo", 35361, "qfa-adn", "Latn", "Tiếng Aka-Bo", "Aka-Bo", } m["ako"] = { "Akurio", 56650, "sai-tar", "Latn", } m["akp"] = { "tiếng Siwu", 36470, "alv-ntg", "Latn", "Tiếng Siwu", "Siwu", } m["akq"] = { "Ak", 56654, "paa", "Latn", } m["akr"] = { "tiếng Araki", 2699882, "poz-vnc", "Latn", "Tiếng Araki", "Araki", } m["aks"] = { "tiếng Akaselem", 34817, "nic-grm", "Latn", "Tiếng Akaselem", "Akaselem", } m["akt"] = { "Akolet", 3330162, "poz-ocw", "Latn", } m["aku"] = { "Akum", 34799, "nic-ykb", "Latn", } m["akv"] = { "tiếng Akhvakh", 56423, "cau-and", "Cyrl", "Tiếng Akhvakh", "Akhvakh", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["akw"] = { "Akwa", 34802, "bnt-mbo", "Latn", } m["akx"] = { "Aka-Kede", 3436816, "qfa-adc", "Latn", } m["aky"] = { "Aka-Kol", 3436784, "qfa-adc", "Latn", } m["akz"] = { "tiếng Alabama", 1815020, "nai-mus", "Latn", "Tiếng Alabama", "Alabama", } m["ala"] = { "Alago", 34813, "alv-ido", "Latn", } m["alc"] = { "tiếng Kawésqar", 56544, "aqa", "Latn", "Tiếng Kawésqar", "Kawésqar", } m["ald"] = { "Alladian", 34837, "alv-lag", "Latn", } m["ale"] = { "tiếng Aleut", 27210, "esx", "Latn, Cyrl", "Tiếng Aleut", "Aleut", } m["alf"] = { "Alege", 34815, "nic-ben", "Latn", } m["alh"] = { "tiếng Alawa", 2147917, "aus-gun", "Latn", "Tiếng Alawa", "Alawa", } m["ali"] = { "tiếng Amaimon", 3327427, "ngf-mad", "Latn", "Tiếng Amaimon", "Amaimon", } m["alj"] = { "tiếng Alangan", 3327423, "phi", "Latn", "Tiếng Alangan", "Alangan", } m["alk"] = { "tiếng Alak", 2714690, "mkh", "Latn", "Tiếng Alak", "Alak" } m["all"] = { "tiếng Allar", 3393634, "dra-mal", "Mlym", "Tiếng Allar", "Allar", translit = "ml-translit" } -- "aln" IS TREATED AS "sq", SEE WT:LT m["alm"] = { "Amblong", 11022615, "poz-vnc", "Latn", } m["alo"] = { "Larike-Wakasihu", 3217929, "poz-cma", "Latn", } m["alp"] = { "Alune", 3327367, "poz-cet", "Latn", } m["alq"] = { "tiếng Algonquin", 28092, "alg", "Latn", "Tiếng Algonquin", "Algonquin", ancestors = "oj", } m["alr"] = { "tiếng Alutor", 28213, "qfa-ckn", "Cyrl", "Tiếng Alutor", "Alutor", entry_name = { from = {"['’]"}, to = {"ʼ"} }, sort_key = { from = {"вʼ", "гʼ", "ғ", "ә", "ё", "ӄ", "ӈ"}, to = {"в" .. p[1], "г" .. p[1], "г" .. p[2], "е" .. p[1], "е" .. p[2], "к" .. p[1], "н" .. p[1]} }, } m["alt"] = { "tiếng Nam Altai", 1991779, "trk-kkp", "Cyrl", "Tiếng Nam Altai", "Nam Altai", translit = "Altai-translit", sort_key = { from = {"ј", "ё", "ҥ", "ӧ", "ӱ"}, to = {"д" .. p[1], "е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, } m["alu"] = { "tiếng 'Are'are", 5160, "poz-sls", "Latn", "Tiếng 'Are'are", "'Are'are", } m["alw"] = { "tiếng Alaba-K’abeena", 56652, "cus-hec", "Latn, Ethi", "Tiếng Alaba-K’abeena", "Alaba-K’abeena", } m["alx"] = { "Amol", 3504260, "qfa-tor", "Latn", } m["aly"] = { "Alyawarr", 3327389, "aus-pam", "Latn", } m["alz"] = { "Alur", 56507, "sdv-los", "Latn", } m["ama"] = { "Amanayé", 3508053, "tup-gua", "Latn", } m["amb"] = { "Ambo", 3450142, "nic-tvn", "Latn", } m["amc"] = { "tiếng Amahuaca", 2669150, "sai-pan", "Latn", "Tiếng Amahuaca", "Amahuaca", } m["ame"] = { "Yanesha'", 3088540, "awd", "Latn", } m["amf"] = { "tiếng Hamer-Banna", 35764, "omv-aro", "Latn, Ethi", "Tiếng Hamer-Banna", "Hamer-Banna", } m["amg"] = { "tiếng Amurdag", 3360016, "aus-wdj", "Latn", "Tiếng Amurdag", "Amurdag", } m["ami"] = { "tiếng Amis", 35132, "map", "Latn", "Tiếng Amis", "Amis", } m["amj"] = { "tiếng Amdang", 28335, "ssa-fur", "Latn", "Tiếng Amdang", "Amdang", } m["amk"] = { "tiếng Ambai", 1875885, "poz-hce", "Latn", "Tiếng Ambai", "Ambai", } m["aml"] = { "tiếng War-Jaintia", 56321, "aav-khs", "Latn", "Tiếng War-Jaintia", "War-Jaintia", } m["amm"] = { "tiếng Ama", 3446626, "qfa-mal", "Latn", "Tiếng Ama", "Ama", } m["amn"] = { "tiếng Amanab", 3327399, "paa-brd", "Latn", "Tiếng Amanab", "Amanab", } m["amo"] = { "Amo", 34826, "nic-kne", "Latn", } m["amp"] = { "tiếng Alamblak", 56688, "paa", "Latn", "Tiếng Alamblak", "Alamblak", } m["amq"] = { "Amahai", 3327384, "poz-cma", "Latn", } m["amr"] = { "Amarakaeri", 35128, "sai-har", "Latn", } m["ams"] = { "tiếng Nam Amami Ōshima", 2840986, "jpx-nry", "Jpan", "Tiếng Nam Amami Ōshima", "Nam Amami Ōshima", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], entry_name = s["jpx-entryname"], sort_key = s["jpx-sortkey"], } m["amt"] = { "Amto", 56517, "paa-asa", "Latn", } m["amu"] = { "tiếng Amuzgo", 3501942, "omq", "Latn", "Tiếng Amuzgo", "Amuzgo", } m["amv"] = { "Ambelau", 2669214, "poz-cma", "Latn", } m["amw"] = { "tiếng Tân Aram Tây", 34226, "sem-arw", "Armi, Syrc, Latn", "Tiếng Tân Aram Tây", "Tân Aram Tây", entry_name = {Syrc = "Syrc-entryname"}, } m["amx"] = { "Anmatyerre", 10412317, "aus-pam", "Latn", } m["amy"] = { "Ami", 12626835, "aus-dal", "Latn", } m["amz"] = { "Atampaya", 3446651, "aus-pam", "Latn", } m["ana"] = { "Andaqui", 2846078, nil, "Latn", } m["anb"] = { "Andoa", 2846171, "sai-zap", "Latn", } m["anc"] = { "tiếng Ngas", 35999, "cdc-wst", "Latn", "Tiếng Ngas", "Ngas", } m["and"] = { "Ansus", 3513300, "poz-hce", "Latn", } m["ane"] = { "tiếng Xârâcùù", 3571097, "poz-cln", "Latn", "Tiếng Xârâcùù", "Xârâcùù", } m["anf"] = { "Animere", 34783, "alv-ktg", "Latn", } m["ang"] = { "tiếng Anh cổ", 42365, "gmw-ang", "Latn, Runr", "Tiếng Anh cổ", "Anh cổ", translit = {Runr = "Runr-translit"}, entry_name = { Latn = { remove_diacritics = c.acute .. c.macron .. c.dotabove, from = {"Ƿ", "ƿ"}, to = {"W", "w"} }, }, sort_key = { Latn = { from = {"æ", "ð", "þ", "ƿ"}, to = {"ae", "t" .. p[1], "t" .. p[2], "w" .. p[1]} }, }, } m["anh"] = { "Nend", 6991554, "ngf-mad", "Latn", } m["ani"] = { "tiếng Andi", 34849, "cau-and", "Cyrl", "Tiếng Andi", "Andi", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, } m["anj"] = { "Anor", 56458, "paa", "Latn", } m["ank"] = { "Goemai", 35272, "cdc-wst", "Latn", } m["anl"] = { "Anu", 4777679, "sit-mru", "Latn", } m["anm"] = { "tiếng Anal", 56235, "tbq-kuk", "Latn", "Tiếng Anal", "Anal", } m["ann"] = { "Obolo", 36614, "nic-lcr", "Latn", } m["ano"] = { "Andoque", 2669225, "qfa-iso", "Latn", } m["anp"] = { "tiếng Angika", 28378, "inc-eas", "Deva", "Tiếng Angika", "Angika", ancestors = "bh", } m["anq"] = { "tiếng Jarawa", 2475526, "qfa-ong", "Latn, Deva", "Tiếng Jarawa", "Jarawa", } m["anr"] = { "Andh", 4754314, "inc-sou", "Deva", } m["ans"] = { "Anserma", 3446613, "sai-chc", "Latn", } m["ant"] = { "Antakarinya", 921304, "aus-psw", "Latn", } m["anu"] = { "tiếng Anuak", 56677, "sdv-lon", "Latn, Ethi", "Tiếng Anuak", "Anuak", } m["anv"] = { "Denya", 35187, "nic-mam", "Latn", } m["anw"] = { "tiếng Anaang", 2845320, "nic-ief", "Latn", "Tiếng Anaang", "Anaang", } m["anx"] = { "Andra-Hus", 2846195, "poz-aay", "Latn", } m["any"] = { "tiếng Anyi", 28395, "alv-ctn", "Latn", "Tiếng Anyi", "Anyi", } m["anz"] = { "Anem", 56512, "paa", "Latn", } m["aoa"] = { "tiếng Angola", 34994, "crp", "Latn", "Tiếng Angola", "Angola", ancestors = "pt", } m["aob"] = { "Abom", 3446647, "ngf", "Latn", } m["aoc"] = { "tiếng Pemon", 10729616, "sai-pem", "Latn", "Tiếng Pemon", "Pemon", } m["aod"] = { "Andarum", 3507888, "paa", "Latn", } m["aoe"] = { "Angal Enen", 10951638, "paa-eng", "Latn", } m["aof"] = { "Bragat", 3507977, "qfa-tor", "Latn", } m["aog"] = { "Angoram", 56366, -- cf 6754745 for merged dialect "paa-lsp", "Latn", } m["aoi"] = { "Anindilyakwa", 2714654, "aus-arn", "Latn", } m["aoj"] = { "Mufian", 3507881, "qfa-tor", "Latn", } m["aok"] = { "Arhö", 4790086, "poz-cln", "Latn", } m["aol"] = { "Alor", 3332062, "poz", "Latn", } m["aom"] = { "Ömie", 8078975, "ngf", "Latn", } m["aon"] = { "Bumbita Arapesh", 3508044, "qfa-tor", "Latn", } m["aor"] = { "Aore", 12627129, "poz-vnc", "Latn", } m["aos"] = { "Taikat", 7676018, "paa-brd", "Latn", } m["aot"] = { "tiếng Atong (Ấn Độ)", 5646, "tbq-bdg", "Latn, Beng", "Tiếng Atong (Ấn Độ)", "Atong (Ấn Độ)", } m["aou"] = { "tiếng A'ou", 16109994, "qfa-gel", "Latn", -- also Hani? "Tiếng A'ou", "A'ou", } m["aox"] = { "Atorada", 3507932, "awd", "Latn", } m["aoz"] = { "Uab Meto", 3441962, "poz-tim", "Latn", } m["apb"] = { "Sa'a", 36294, "poz-sls", "Latn", } m["apc"] = { "tiếng Ả Rập Bắc Levant", 22809485, "sem-arb", "Arab", "Tiếng Ả Rập Bắc Levant", "Ả Rập Bắc Levant", entry_name = "ar-entryname", } m["apd"] = { "tiếng Ả Rập Sudan", 56573, "sem-arb", "Arab", "Tiếng Ả Rập Sudan", "Ả Rập Sudan", entry_name = "ar-entryname", } m["ape"] = { "Bukiyip", 3507895, "qfa-tor", "Latn", } m["apf"] = { "Pahanan Agta", 7135432, "phi", "Latn", } m["apg"] = { "Ampanang", 4748035, "poz", "Latn", } m["aph"] = { "tiếng Athpariya", 3449126, "sit-kie", "Deva, Latn", "Tiếng Athpariya", "Athpariya", } m["api"] = { "Apiaká", 3507941, "tup-gua", "Latn", } m["apj"] = { "tiếng Jicarilla", 28277, "apa", "Latn", "Tiếng Jicarilla", "Jicarilla", } m["apk"] = { "tiếng Apache đồng bằng", 27861, "apa", "Latn", "Tiếng Apache đồng bằng", "Apache đồng bằng" } m["apl"] = { "tiếng Lipan", 28269, "apa", "Latn", "Tiếng Lipan", "Lipan", } m["apm"] = { "tiếng Chiricahua", 13368, "apa", "Latn", "Tiếng Chiricahua", "Chiricahua", } m["apn"] = { "tiếng Apinayé", 2858311, "sai-nje", "Latn", "Tiếng Apinayé", "Apinayé", } m["apo"] = { "Ambul", 12627135, "poz-ocw", "Latn", } m["app"] = { "Apma", 2669188, "poz-vnc", "Latn", } m["apq"] = { "tiếng Pucikwar", 28466, "qfa-adc", "Latn", "Tiếng Pucikwar", "Pucikwar", } m["apr"] = { "Arop-Lokep", 2863482, "poz-ocw", "Latn", } m["aps"] = { "Arop-Sissano", 12627242, "poz-ocw", "Latn", } m["apt"] = { "tiếng Apatani", 56306, "sit-tan", "Latn", "Tiếng Apatani", "Apatani", } m["apu"] = { "Apurinã", 2859081, "awd", "Latn", } m["apv"] = { "Alapmunte", 16110782, "sai-nmk", "Latn", } m["apw"] = { "tiếng Apache Tây", 28060, "apa", "Latn", "Tiếng Apache Tây", "Apache Tây", } m["apx"] = { "tiếng Aputai", 12473343, "poz-tim", "Latn", "Tiếng Aputai", "Aputai", } m["apy"] = { "tiếng Aparaí", 2736980, "sai-gui", "Latn", "Tiếng Aparaí", "Aparaí", } m["apz"] = { "Safeyoka", 7398693, "ngf", "Latn", } m["aqc"] = { "tiếng Archi", 34915, "cau-lzg", "Cyrl", "Tiếng Archi", "Archi", translit = "cau-nec-translit", override_translit = true, display_text = {Cyrl = s["cau-Cyrl-displaytext"]}, entry_name = {Cyrl = s["cau-Cyrl-entryname"]}, sort_key = { from = { "ккъӏв", "ххьӏв", -- 5 chars "гъӏв", "ёоӏ", "ккъӏ", "ккъв", "къӏв", "ллъв", "ххьӏ", "хъӏв", "хьӏв", "ццӏв", "ччӏв", -- 4 chars "ааӏ", "гӏв", "гъӏ", "гъв", "гьв", "ееӏ", "ёӏ", "ёо", "ииӏ", "кӏв", "ккв", "ккъ", "къӏ", "къв", "кьв", "лӏв", "ллъ", "лъв", "льв", "ооӏ", "пӏв", "ппв", "ссв", "тӏв", "ттв", "ууӏ", "хӏв", "ххв", "хъӏ", "хъв", "хьӏ", "цӏв", "ццӏ", "ццв", "чӏв", "ччӏ", "ээӏ", "юуӏ", "яаӏ", -- 3 chars "аӏ", "аа", "гӏ", "гв", "гъ", "гь", "дв", "еӏ", "ее", "ё", "жв", "зв", "иӏ", "ии", "кӏ", "кв", "кк", "къ", "кь", "лӏ", "лв", "лъ", "ль", "оӏ", "оо", "пӏ", "пв", "пп", "св", "сс", "тӏ", "тв", "тт", "уӏ", "уу", "фв", "хӏ", "хв", "хх", "хъ", "цӏ", "цв", "цц", "чӏ", "чв", "шв", "щв", "эӏ", "ээ", "юӏ", "юу", "яӏ", "яа" -- 2 chars }, to = { "к" .. p[8], "х" .. p[7], "г" .. p[6], "е" .. p[7], "к" .. p[7], "к" .. p[9], "к" .. p[12], "л" .. p[5], "х" .. p[6], "х" .. p[10], "х" .. p[13], "ц" .. p[6], "ч" .. p[5], "а" .. p[3], "г" .. p[2], "г" .. p[5], "г" .. p[7], "г" .. p[9], "е" .. p[3], "е" .. p[5], "е" .. p[6], "и" .. p[3], "к" .. p[2], "к" .. p[5], "к" .. p[6], "к" .. p[11], "к" .. p[13], "к" .. p[15], "л" .. p[2], "л" .. p[4], "л" .. p[7], "л" .. p[9], "о" .. p[3], "п" .. p[2], "п" .. p[5], "с" .. p[3], "т" .. p[2], "т" .. p[5], "у" .. p[3], "х" .. p[2], "х" .. p[5], "х" .. p[9], "х" .. p[11], "х" .. p[12], "ц" .. p[2], "ц" .. p[5], "ц" .. p[7], "ч" .. p[2], "ч" .. p[4], "э" .. p[3], "ю" .. p[3], "я" .. p[3], "а" .. p[1], "а" .. p[2], "г" .. p[1], "г" .. p[3], "г" .. p[4], "г" .. p[8], "д" .. p[1], "е" .. p[1], "е" .. p[2], "е" .. p[4], "ж" .. p[1], "з" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "к" .. p[3], "к" .. p[4], "к" .. p[10], "к" .. p[14], "л" .. p[1], "л" .. p[3], "л" .. p[6], "л" .. p[8], "о" .. p[1], "о" .. p[2], "п" .. p[1], "п" .. p[3], "п" .. p[4], "с" .. p[1], "с" .. p[2], "т" .. p[1], "т" .. p[3], "т" .. p[4], "у" .. p[1], "у" .. p[2], "ф" .. p[1], "х" .. p[1], "х" .. p[3], "х" .. p[4], "х" .. p[8], "ц" .. p[1], "ц" .. p[3], "ц" .. p[4], "ч" .. p[1], "ч" .. p[3], "ш" .. p[1], "щ" .. p[1], "э" .. p[1], "э" .. p[2], "ю" .. p[1], "ю" .. p[2], "я" .. p[1], "я" .. p[2] } }, } m["aqd"] = { "Ampari Dogon", 4748057, "nic-dgw", "Latn", } m["aqg"] = { "Arigidi", 34829, "alv-von", "Latn", } m["aqm"] = { "Atohwaim", 11732297, "ngf", "Latn", } m["aqn"] = { "Northern Alta", 7058116, "phi", "Latn", } m["aqp"] = { "Atakapa", 10975683, "qfa-iso", "Latn", } m["aqr"] = { "Arhâ", 4790085, "poz-cln", "Latn", } m["aqt"] = { "Angaité", 15736037, "sai-mas", "Latn", } m["aqz"] = { "tiếng Akuntsu", 4701960, "tup", "Latn", "Tiếng Akuntsu", "Akuntsu", } m["arc"] = { "tiếng Aram", 28602, "sem-ara", "Hebr, Armi, Syrc, Palm, Nbat, Phnx, Mand, Samr, Hatr, Elym", "Tiếng Aram", "Aram", translit = { Armi = "Armi-translit", Palm = "Palm-translit", }, entry_name = { Hebr = {remove_diacritics = u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7)}, Syrc = {remove_diacritics = u(0x0730) .. "-" .. u(0x0748)}, remove_diacritics = c.macron .. c.diaer .. c.macronbelow}, -- Which script(s)? } m["ard"] = { "Arabana", 3507959, "aus-kar", "Latn", } m["are"] = { "Western Arrernte", 12645549, "aus-pam", "Latn", } m["arh"] = { "tiếng Arhuaco", 2640621, "cba", "Latn", "Tiếng Arhuaco", "Arhuaco", } m["ari"] = { "Arikara", 56539, "cdd", "Latn", } m["arj"] = { "Arapaso", 12627166, "sai-tuc", "Latn", } m["ark"] = { "Arikapú", 3446640, "sai-mje", "Latn", } m["arl"] = { "Arabela", 2591221, "sai-zap", "Latn", } m["arn"] = { "tiếng Mapuche", 33730, "sai-ara", "Latn", "Tiếng Mapuche", "Mapuche", } m["aro"] = { "Araona", 958414, "sai-tac", "Latn", } m["arp"] = { "tiếng Arapaho", 56417, "alg-ara", "Latn", "Tiếng Arapaho", "Arapaho", } m["arq"] = { "tiếng Ả Rập Algérie", 56499, "sem-arb", "Arab", "Tiếng Ả Rập Algérie", "Ả Rập Algérie", entry_name = "ar-entryname", } m["arr"] = { "Arara-Karo", 35539, "tup", "Latn", } m["ars"] = { "Najdi Arabic", 56574, "sem-arb", "Arab", entry_name = "ar-entryname", } m["aru"] = { "Arua", 2746221, "auf", "Latn", } m["arv"] = { "Arbore", 56883, "cus-eas", "Latn", } m["arw"] = { "tiếng Lokono", 2655664, "awd-taa", "Latn", "Tiếng Lokono", "Lokono", } m["arx"] = { "Aruá", 3507907, "tup", "Latn", } m["ary"] = { "tiếng Ả Rập Maroc", 56426, "sem-arb", "Arab", "Tiếng Ả Rập Maroc", "Ả Rập Maroc", entry_name = "ar-entryname", sort_key = { from = {"^%f[" .. u(0x5D0) .. "-" .. u(0x5EA) .. "]"}, to = {u(0xFB21)}, }, } m["arz"] = { "tiếng Ả Rập Ai Cập", 29919, "sem-arb", "Arab", "Tiếng Ả Rập Ai Cập", "Ả Rập Ai Cập", entry_name = "ar-entryname", } m["asa"] = { "Pare", 36403, "bnt-par", "Latn", } m["asb"] = { "tiếng Assiniboine", 2591288, "sio-dkt", "Latn", "Tiếng Assiniboine", "Assiniboine", } m["asc"] = { "Casuarina Coast Asmat", 11732046, "ngf", "Latn", } m["ase"] = { "ngôn ngữ ký hiệu Mỹ", 14759, "sgn", "Sgnw", "Ngôn ngữ ký hiệu Mỹ", "ngôn ngữ ký hiệu Mỹ", } m["asf"] = { "Auslan", 29525, "sgn", "Latn", -- when documented } m["asg"] = { "Cishingini", 35199, "nic-kam", "Latn", } m["ash"] = { "Abishira", 2871740, "qfa-iso", "Latn", } m["asi"] = { "Buruwai", 5001031, "ngf", "Latn", } m["asj"] = { "Nsari", 36418, "nic-bbe", "Latn", } m["ask"] = { "tiếng Ashkun", 29379, "nur-sou", "Arab, Latn", "Tiếng Ashkun", "Ashkun", } m["asl"] = { "Asilulu", 12473347, "poz-cma", "Latn", } m["asn"] = { "Xingú Asuriní", 8044571, "tup-gua", "Latn", } m["aso"] = { "Dano", 5220979, "paa-kag", "Latn", } m["asp"] = { "Algerian Sign Language", 3135421, "sgn", } m["asq"] = { "Austrian Sign Language", 36668, "sgn", "Latn", -- when documented } m["asr"] = { "tiếng Asur", 3504321, "mun", "Deva, Latn", "Tiếng Asur", "Asur" } m["ass"] = { "Ipulo", 35408, "nic-tvc", "Latn", } m["ast"] = { "tiếng Asturias", 29507, "roa-ibe", "Latn", "Tiếng Asturias", "Asturias", ancestors = "roa-ole", } m["asu"] = { "Tocantins Asurini", 32041490, "tup-gua", "Latn", } m["asv"] = { "Asoa", 56296, "csu-maa", "Latn", } m["asw"] = { "Australian Aboriginal Sign Language", 955216, "sgn", "Latn", -- when documented } m["asx"] = { "Muratayak", 11732766, "ngf-fin", "Latn", } m["asy"] = { "Yaosakor Asmat", 16113158, "ngf", "Latn", } m["asz"] = { "As", 2866218, "poz-hce", "Latn", } m["ata"] = { "Pele-Ata", 56511, "paa", "Latn", } m["atb"] = { "tiếng Zaiwa", 56594, "tbq-brm", "Latn, Lisu", -- also Hani? "Tiếng Zaiwa", "Zaiwa", translit = {Lisu = "Lisu-translit"}, sort_key = {Lisu = s["Lisu-sortkey"]}, } m["atc"] = { "tiếng Atsahuaca", 4817730, "sai-pan", "Latn", "Tiếng Atsahuaca", "Atsahuaca", } m["atd"] = { "Ata Manobo", 12627315, "mno", "Latn", } m["ate"] = { "tiếng Atemble", 4813055, "ngf-mad", "Latn", "Tiếng Atemble", "Atemble", } m["atg"] = { "Okpela", 7082551, "alv-yek", "Latn", } m["ati"] = { "Attié", 34844, "alv-lag", "Latn", } m["atj"] = { "tiếng Atikamekw", 56590, "alg", "Latn", ancestors = "cr", "Tiếng Atikamekw", "Atikamekw", } m["atk"] = { "Ati", 4815751, "phi", "Latn", } m["atl"] = { "Mount Iraya Agta", 6921430, "phi", "Latn", } m["atm"] = { "Ata", 4812603, "phi", "Latn", } m["ato"] = { "Atong (Cameroon)", 34824, "nic-grs", "Latn", } m["atp"] = { "Pudtol Atta", 12640726, "phi", "Latn", } m["atq"] = { "Aralle-Tabulahan", 4783889, "poz-ssw", "Latn", } m["atr"] = { "Waimiri-Atroari", 56865, "sai-car", "Latn", } m["ats"] = { "Gros Ventre", 56628, "alg-ara", "Latn", } m["att"] = { "Pamplona Atta", 12639245, "phi", "Latn", } m["atu"] = { "Reel", 7306882, "sdv-dnu", "Latn", } m["atv"] = { "tiếng Bắc Altai", 2640863, "trk-ssb", "Cyrl", "Tiếng Bắc Altai", "Bắc Altai", translit = "Altai-translit", } m["atw"] = { "Atsugewi", 56718, "nai-pal", "Latn", } m["atx"] = { "Arutani", 56609, nil, "Latn", } m["aty"] = { "Aneityum", 2379113, "poz-oce", "Latn", } m["atz"] = { "Arta", 3508067, "phi", "Latn", } m["aua"] = { "tiếng Asumboa", 4811870, "poz-oce", "Latn", "Tiếng Asumboa", "Asumboa", } m["aub"] = { "Alugu", 12626798, "tbq-urp", "Latn", -- also Hani? } m["auc"] = { "Huaorani", 758570, "qfa-iso", "Latn", } m["aud"] = { "Anuta", 35326, "poz-pnp", "Latn", } m["aug"] = { "Aguna", 34733, "alv-gbe", "Latn", } m["auh"] = { "Aushi", 2872082, "bnt-sbi", "Latn", } m["aui"] = { "tiếng Anuki", 3508132, "poz-ocw", "Latn", "Tiếng Anuki", "Anuki", } m["auj"] = { "tiếng Awjila", 56398, "ber", "Latn, Arab, Tfng", "Tiếng Awjila", "Awjila", } m["auk"] = { "Heyo", 3504295, "qfa-tor", "Latn", } m["aul"] = { "Aulua", 427300, "poz-vnc", "Latn", } m["aum"] = { "Asu", 34798, "alv-ngb", "Latn", } m["aun"] = { "Molmo One", 12637224, "qfa-tor", "Latn", } m["auo"] = { "Auyokawa", 56247, "cdc-wst", "Latn", } m["aup"] = { "Makayam", 6738863, "ngf", "Latn", } m["auq"] = { "Anus", 23855, "poz-ocw", "Latn", } m["aur"] = { "Aruek", 3504279, "qfa-tor", "Latn", } m["aut"] = { "Austral", 2669261, "poz-pep", "Latn", } m["auu"] = { "Auye", 4827334, "ngf", "Latn", } m["auw"] = { "Awyi", 3513326, "paa-brd", "Latn", } m["aux"] = { "Aurá", 3507995, "tup-gua", "Latn", } m["auy"] = { "Auyana", 2873211, "paa-kag", "Latn", } m["auz"] = { "tiếng Ả Rập Uzbekistan", 3399507, "sem-arb", "Arab", "Tiếng Ả Rập Uzbekistan", "Ả Rập Uzbekistan", entry_name = "ar-entryname", } m["avb"] = { "Avau", 12627412, "poz-ocw", "Latn", } m["avd"] = { "Alviri-Vidari", 3327357, "xme", "fa-Arab", ancestors = "xme-mid", } m["avi"] = { "Avikam", 34840, "alv-lag", "Latn", } m["avk"] = { "tiếng Kotava", 1377116, "art", "Latn", "Tiếng Kotava", "Kotava", type = "appendix-constructed", } m["avm"] = { "Angkamuthi", nil, "aus-pmn", "Latn", } m["avn"] = { "tiếng Avatime", 34796, "alv-ktg", "Latn", "Tiếng Avatime", "Avatime", } m["avo"] = { "Agavotaguerra", 3508007, "awd", "Latn", } m["avs"] = { "Aushiri", 3409318, "sai-zap", "Latn", } m["avt"] = { "Au", 3446608, "qfa-tor", "Latn", } m["avu"] = { "tiếng Avokaya", 56685, "csu-mma", "Latn", "Tiếng Avokaya", "Avokaya", } m["avv"] = { "Avá-Canoeiro", 4829584, "tup-gua", "Latn", } m["awa"] = { "tiếng Awadh", 29579, "inc-hie", "Deva, Kthi, fa-Arab", "Tiếng Awadh", "Awadh", translit = {Deva = "hi-translit"}, } m["awb"] = { "Awa (New Guinea)", 2874650, "paa-kag", "Latn", } m["awc"] = { "Cicipu", 35193, "nic-kam", "Latn", } m["awe"] = { "Awetí", 4830038, "tup", "Latn", } m["awg"] = { "Anguthimri", 4764288, "aus-pam", "Latn", } m["awh"] = { "Awbono", 3446684, "ngf", "Latn", } m["awi"] = { "Aekyom", 3399691, "ngf", "Latn", } m["awk"] = { "Awabakal", 3449138, "aus-pam", "Latn", } m["awm"] = { "Arawum", 4784537, "ngf-mad", "Latn", } m["awn"] = { "tiếng Awngi", 34934, "cus-cen", "Ethi", "Tiếng Awngi", "Awngi", } m["awo"] = { "Awak", 3446643, "alv-wjk", "Latn", } m["awr"] = { "Awera", 56379, "paa-lkp", "Latn", } m["aws"] = { "South Awyu", 12633986, "ngf", "Latn", } m["awt"] = { "tiếng Araweté", 4784535, "tup-gua", "Latn", "Tiếng Araweté", "Araweté", } m["awu"] = { "Central Awyu", 12628801, "ngf", "Latn", } m["awv"] = { "Jair Awyu", 16110177, "ngf", "Latn", } m["aww"] = { "Awun", 56369, "paa-spk", "Latn", } m["awx"] = { "Awara", 2874670, "ngf-fin", "Latn", } m["awy"] = { "Edera Awyu", 12630425, "ngf", "Latn", } m["axb"] = { "Abipon", 11252539, "sai-guc", "Latn", } m["axe"] = { "Ayerrerenge", 16112737, "aus-pam", "Latn", } m["axg"] = { "Mato Grosso Arára", 3446660, nil, "Latn", } m["axk"] = { "Aka (Central Africa)", 11010149, "bnt-ngn", "Latn", } m["axl"] = { "Lower Southern Aranda", 6693295, "aus-pam", "Latn", } m["axm"] = { "tiếng Armenia trung đại", 4438498, "hyx", "Armn", "Tiếng Armenia trung đại", "Armenia trung đại", ancestors = "xcl", translit = "Armn-translit", override_translit = true, entry_name = { remove_diacritics = "՞՜՛՟", from = {"եւ"}, to = {"և"} } } m["axx"] = { "Xaragure", 8045635, "poz-cln", "Latn", } m["aya"] = { "Awar", 56876, "paa", "Latn", } m["ayb"] = { "Ayizo", 34841, "alv-pph", "Latn", } m["ayd"] = { "Ayabadhu", 3509164, "aus-pmn", "Latn", } m["aye"] = { "tiếng Ayere", 34788, "alv-aah", "Latn", "Tiếng Ayere", "Ayere", } m["ayg"] = { "Nyanga (Togo)", 35446, "alv-gng", "Latn", } m["ayi"] = { "Leyigha", 3914492, "nic-uce", "Latn", } m["ayk"] = { "Akuku", 3450179, "alv-nwd", "Latn", } m["ayl"] = { "tiếng Ả Rập Libya", 56503, "sem-arb", "Arab", entry_name = "ar-entryname", "Tiếng Ả Rập Libya", "Ả Rập Libya", } m["ayn"] = { "Yemeni Arabic", 1686766, "sem-arb", "Arab", entry_name = "ar-entryname", } m["ayo"] = { "Ayoreo", 56634, "sai-zam", "Latn", } m["ayp"] = { "North Mesopotamian Arabic", 56577, "sem-arb", "Arab", ancestors = "acm", entry_name = "ar-entryname", } m["ayq"] = { "Ayi", 56449, "paa-spk", "Latn", } m["ays"] = { "Sorsogon Ayta", 7563752, "phi", "Latn", } m["ayt"] = { "Bataan Ayta", 4921648, "phi", "Latn", } m["ayu"] = { "Ayu", 34786, "alv", "Latn", } m["ayy"] = { "Tayabas Ayta", 7689745, "phi", "Latn", } m["ayz"] = { "Maybrat", 4830892, "paa-wpa", "Latn", } m["aza"] = { "Azha", 4832486, "tbq-axi", "Latn", } m["azd"] = { "Eastern Durango Nahuatl", 16115449, "azc-nah", "Latn", } m["azg"] = { "San Pedro Amuzgos Amuzgo", 35092, "omq", "Latn", } m["azm"] = { "Ipalapa Amuzgo", 12633013, "omq", "Latn", } m["azn"] = { "Western Durango Nahuatl", 12645553, "azc-nah", "Latn", } m["azo"] = { "tiếng Awing", 34856, "nic-nge", "Latn", "Tiếng Awing", "Awing", } m["azt"] = { "Faire Atta", 12630884, "phi", "Latn", } m["azz"] = { "Highland Puebla Nahuatl", 12953754, "azc-nah", "Latn", } return require("Module:languages").finalizeData(m, "language") hu9plpqf7w4ypyuxp8yved5r7ajs46n Mô đun:languages/data/3/y 828 272295 2351082 2349060 2026-05-07T11:05:17Z Lcsnes 40261 2351082 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared local m = {} m["yaa"] = { "Yaminahua", 3026110, "sai-pan", "Latn", } m["yab"] = { "Yuhup", 3573115, "sai-nad", "Latn", } m["yac"] = { "Pass Valley Yali", 12953309, "ngf", "Latn", } m["yad"] = { "Yagua", 3182567, nil, "Latn", } m["yae"] = { "Pumé", 3121835, nil, "Latn", } m["yaf"] = { "Yaka", 35588, "bnt-yak", "Latn", } m["yag"] = { "Yámana", 531826, "qfa-iso", "Latn", } m["yah"] = { "tiếng Yazghulom", 34186, "ira-shy", "Latn, Cyrl", "Tiếng Yazghulom", "Yazghulom", translit = "yah-translit", } m["yai"] = { "tiếng Yaghnob", 34247, "ira-sgc", "Latn, Cyrl", "Tiếng Yaghnob", "Yaghnob", translit = { Cyrl = "tg-translit", }, } m["yaj"] = { "Banda-Yangere", 8048561, "bad", } m["yak"] = { "tiếng Yakima", 35976053, "nai-shp", "Latn", "Tiếng Yakima", "Yakima", ancestors = "nai-spt", } m["yal"] = { "Yalunka", 35524, "dmn-sya", } m["yam"] = { "Yamba", 36904, "nic-nka", "Latn", } m["yan"] = { "Mayangna", 3302929, "nai-min", "Latn", } m["yao"] = { "tiếng Yao (châu Phi)", 36902, "bnt-rvm", "Latn", "Tiếng Yao (châu Phi)", "Yao (châu Phi)", } m["yap"] = { "tiếng Yap", 34029, "poz-oce", "Latn", "Tiếng Yap", "Yap", } m["yaq"] = { "Yaqui", 34191, "azc-trc", "Latn", } m["yar"] = { "Yabarana", 3571238, "sai-map", "Latn", } m["yas"] = { "Gunu", 36358, "nic-ymb", "Latn", } m["yat"] = { "Yambeta", 8048020, "nic-mbw", "Latn", } m["yau"] = { "Yuwana", 5876347, } m["yav"] = { "Yangben", 12953315, "nic-ymb", "Latn", } m["yaw"] = { "Yawalapití", 3450709, "awd", "Latn", } m["yay"] = { "Agwagwune", 34736, "nic-ucn", "Latn", } m["yaz"] = { "Lokaa", 3914439, "nic-uce", "Latn", } m["yba"] = { "Yala", 3914920, "alv-ido", "Latn", } m["ybb"] = { "Yemba", 36917, "bai", "Latn", } m["ybe"] = { "tiếng Tây Yugur", 34224, "trk-ssb", "Latn, Ougr", "Tiếng Tây Yugur", "Tây Yugur", ancestors = "oui", } m["ybh"] = { "tiếng Yakkha", 56666, "sit-kie", "Deva", "Tiếng Yakkha", "Yakkha", } m["ybi"] = { "tiếng Yamphu", 56316, "sit-kie", "Deva", "Tiếng Yamphu", "Yamphu", translit = "ybi-translit", } m["ybj"] = { "Hasha", 3915338, "nic-alu", } m["ybk"] = { "Bokha", nil, "tbq-muj", } m["ybl"] = { "Yukuben", 3915846, "nic-ykb", } m["ybm"] = { "Yaben", 8046372, "ngf-mad", } m["ybn"] = { "Yabaâna", 3450534, "awd", "Latn", } m["ybo"] = { "Yabong", 8046383, "ngf-mad", } m["ybx"] = { "Yawiyo", 8050463, "paa-spk", } m["yby"] = { "Yaweyuha", 3571231, "paa-kag", } m["ych"] = { "Chesu", 30334841, "tbq-nas", } m["ycl"] = { "Lolopo", 56441, "tbq-llo", } m["ycn"] = { "Yucuna", 3438356, "awd-nwk", "Latn", } m["ycp"] = { "Chepya", 46603077, "tbq-han", } m["ycr"] = { "tiếng Creole Nghi Lan", 10955036, "crp", "Latn", "Tiếng Creole Nghi Lan", "Creole Nghi Lan", } m["yda"] = { "Yanda", 8048318, "aus-pam", } m["yde"] = { "Yangum Dey", nil, "qfa-tor", "Latn", } m["ydg"] = { "tiếng Yidgha", 34179, "ira-mny", "Arab", "Tiếng Yidgha", "Yidgha", } m["ydk"] = { "Yoidik", 8054512, "ngf-mad", } m["yea"] = { "tiếng Ravula", 7296830, "dra-mal", "Knda, Mlym", "Tiếng Ravula", "Ravula", translit = { Knda = "kn-translit", Mlym = "ml-translit", }, } m["yec"] = { "Yeniche", 1365342, "gmw-hgm", "Latn", ancestors = "gmh", } m["yee"] = { "Yimas", 36954, "paa-lsp", } m["yei"] = { "Yeni", 34213, "nic-mmb", } m["yej"] = { "tiếng Yevan", 34200, "grk", "Hebr", "Tiếng Yevan", "Yevan", ancestors = "gkm", entry_name = {remove_diacritics = u(0x0591) .. "-" .. u(0x05BD) .. u(0x05BF) .. "-" .. u(0x05C5) .. u(0x05C7)}, } m["yen"] = { "Yendang", nil, "alv-mye", "Latn", } m["yer"] = { "Tarok", 3914953, "nic-tar", "Latn", } m["yes"] = { "Yeskwa", 3914962, "nic-plc", "Latn", } m["yet"] = { "Yetfa", 8053020, "paa-pau", } m["yeu"] = { "Yerukula", 3535117, "dra-tam", } m["yev"] = { "tiếng Yapunda", 11044384, "qfa-tor", "Latn", "Tiếng Yapunda", "Yapunda", } m["yey"] = { "Yeyi", 8053347, "bnt", } m["ygi"] = { "Yiningayi", nil, "aus-pam", } m["ygl"] = { "Yangum Gel", nil, "qfa-tor", "Latn", } m["ygm"] = { "Yagomi", 20771657, "ngf-fin", "Latn", } m["ygp"] = { "Gepo", 5548692, "tbq-nas", } m["ygr"] = { "Yagaria", 8046690, "paa-kag", "Latn", } m["ygs"] = { "Yolngu Sign Language", 16211970, "sgn", } m["ygu"] = { "Yugul", 8060437, "aus-arn", } m["ygw"] = { "Yagwoia", 8046761, "ngf", "Latn", } m["yha"] = { "Baha", 2879238, "qfa-kra", } m["yhl"] = { "Hlepho Phowa", nil, "tbq-phw", } m["yia"] = { "Yinggarda", 3913777, "aus-psw", "Latn", } m["yif"] = { "Ache", 10949828, "tbq-sel", } m["yig"] = { "Wusa", 12953334, "tbq-nas", } m["yii"] = { "tiếng Yidiny", 3053283, "aus-yid", "Latn", "Tiếng Yidiny", "Yidiny", } m["yij"] = { "tiếng Yindjibarndi", 3121073, "aus-nga", "Latn", "Tiếng Yindjibarndi", "Yindjibarndi", } m["yik"] = { "Dongshanba Lalo", 12953333, "tbq-lal", } m["yil"] = { "Yindjilandji", 10723541, "aus-pam", "Latn", } m["yim"] = { "Yimchungru Naga", 56348, "sit-aao", "Latn", } m["yin"] = { "tiếng Riang Lai", 12953981, "mkh-pal", "Mymr", "Tiếng Riang Lai", "Riang Lai", } m["yip"] = { "Pholo", 7187103, "tbq-nso", } m["yiq"] = { "Micha", 6827993, "tbq-llo", "Latn", } m["yir"] = { "North Awyu", 12642164, "ngf", } m["yis"] = { "Yis", 8053831, "qfa-tor", "Latn", } m["yit"] = { "Eastern Lalu", 12953328, "tbq-lal", } m["yiu"] = { "Lope", 11163308, "tbq-nlo", } m["yiv"] = { "tiếng Bắc Nisu", 25559454, "tbq-nis", nil, "Tiếng Bắc Nisu", "Bắc Nisu", } m["yix"] = { "tiếng Axi", 4830439, "tbq-axi", nil, "Tiếng Axi", "Axi", } m["yiy"] = { "Yir-Yoront", 8053819, "aus-pmn", "Latn", } m["yiz"] = { "Azhe", 4832535, "tbq-axi", } m["yka"] = { "tiếng Yakan", 3571351, "poz-sbj", "Latn", "Tiếng Yakan", "Yakan", ancestors = "map-pro", } m["ykg"] = { "tiếng Bắc Yukaghir", 56319, "qfa-yuk", "Cyrl", "Tiếng Bắc Yukaghir", "Bắc Yukaghir", translit = "ykg-translit", } m["ykh"] = { "tiếng Mông Cổ Khamnigan", 3196052, "xgn-cen", "Mong, Latn, Cyrl", "Tiếng Mông Cổ Khamnigan", "Mông Cổ Khamnigan", translit = { Mong = "Mong-translit", Cyrl = "ykh-translit", }, display_text = {Mong = s["Mong-displaytext"]}, entry_name = {Mong = s["Mong-entryname"]}, } m["yki"] = { "Yoke", 3832977, } m["ykk"] = { "Yakaikeke", 8047041, "poz-oce", } m["ykl"] = { "Khlula", 6401849, "tbq-phw", } m["ykm"] = { "Kap", 8047048, "poz-ocw", "Latn", } m["ykn"] = { "Kua-nsi", 6440952, "tbq-tal", } m["yko"] = { "Yasa", 36899, "bnt-yko", "Latn", } m["ykr"] = { "Yekora", 11732781, "ngf", } m["ykt"] = { "Kathu", 6377155, "sit-mnz", } m["yku"] = { "Kuamasi", 6441074, "tbq-tal", } m["yky"] = { "Yakoma", 3571364, "nic-ngd", } m["yla"] = { "Yaul", 8050336, "paa", "Latn", } m["ylb"] = { "Yaleba", 37710600, "poz-oce", } m["yle"] = { "tiếng Yele", 36942, nil, "Latn", "Tiếng Yele", "Yele", } m["ylg"] = { "Yelogu", 8052024, "paa-spk", } m["yli"] = { "tiếng Yali Angguruk", 3514481, "ngf", "Latn", "Tiếng Yali Angguruk", "Yali Angguruk", } m["yll"] = { "Yil", 3501797, "qfa-tor", "Latn", } m["ylm"] = { "Limi", 12953327, "tbq-lso", } m["yln"] = { "Langnian Buyang", 2929025, "qfa-buy", } m["ylo"] = { "Naruo", 6961032, "tbq-tal", } m["ylr"] = { "Yalarnnga", 3915686, "aus-pam", "Latn", } m["ylu"] = { "Aribwaung", 11044246, "poz-ocw", "Latn", } m["yly"] = { "Nyâlayu", 303154, "poz-cln", "Latn", } m["ymb"] = { "Yambes", 8048022, "qfa-tor", "Latn", } m["ymc"] = { "Southern Muji", nil, "tbq-muj", } m["ymd"] = { "Muda", 6931494, "tbq-han", } m["yme"] = { "Yameo", 3121032, } m["ymg"] = { "Yamongeri", 11008893, "bnt-mon", "Latn", ancestors = "lol", } m["ymh"] = { "Mili", 12953329, "tbq-lso", } m["ymi"] = { "Moji", 6895060, "tbq-muj", } m["ymk"] = { "Makwe", 6740513, "bnt-swh", } m["yml"] = { "Iamalele", 8047849, "poz-ocw", "Latn", } m["ymm"] = { "tiếng Maay", 36221, "cus-som", "Latn", "Tiếng Maay", "Maay", } m["ymn"] = { "Sunum", 8048083, "poz-ocw", "Latn", } m["ymo"] = { "Yangum Mon", nil, "qfa-tor", "Latn", } m["ymp"] = { "Yamap", 8047913, "poz-ocw", "Latn", } m["ymq"] = { "Qila Muji", nil, "tbq-muj", } m["ymr"] = { "tiếng Malasar", 16889525, "dra-tam", "Taml", "Tiếng Malasar", "Malasar", translit = "ta-translit", } m["yms"] = { "Mysian", 2577228, "ine", } m["ymx"] = { "Northern Muji", nil, "tbq-muj", } m["ymz"] = { "Muzi", 6944445, "tbq-muj", } m["yna"] = { "Aluo", 4737539, "tbq-nas", } m["ynd"] = { "Yandruwandha", 8048335, "aus-kar", "Latn", } m["yne"] = { "Lang'e", 6485577, "tbq-tal", } m["yng"] = { "Yango", 13123599, "nic-nkk", "Latn", } m["ynk"] = { "tiếng Naukan", 27963, "ypk", "Cyrl, Latn", "Tiếng Naukan", "Naukan", } m["ynl"] = { "Yangulam", 8048663, "ngf-mad", } m["ynn"] = { "Yana", 56419, "qfa-iso", } m["yno"] = { "tiếng Yong", 8054978, "tai-swe", "Lana, Thai", "Tiếng Yong", "Yong", sort_key = { Lana = "Lana-sortkey", Thai = "Thai-sortkey" }, } m["yns"] = { "Yansi", 36953, "bnt-yak", } m["ynu"] = { "Yahuna", 8050347, "sai-tuc", } m["yob"] = { "Yoba", 8054220, "poz-ocw", "Latn", } m["yog"] = { "tiếng Yogad", 8054343, "phi", "Latn", "Tiếng Yogad", "Yogad", } m["yoi"] = { "tiếng Yonaguni", 34243, "jpx-sry", "Jpan", "Tiếng Yonaguni", "Yonaguni", translit = s["Jpan-translit"], sort_key = s["Jpan-sortkey"], } m["yol"] = { "tiếng Yola", 56395, "gmw-ian", "Latn", "Tiếng Yola", "Yola", } m["yom"] = { "Yombe", 10961975, "bnt-kng", "Latn", } m["yon"] = { "tiếng Yongkom", 8055002, "ngf-okk", "Latn", "Tiếng Yongkom", "Yongkom", } m["yox"] = { "tiếng Yoron", 2424943, "jpx-nry", "Jpan", "Tiếng Yoron", "Yoron", translit = s["jpx-translit"], display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["yoy"] = { "tiếng Yoy", 3503717, "tai", nil, "Tiếng Yoy", "Yoy", } m["ypa"] = { "Phala", 36211907, "tbq-drp", } m["ypb"] = { "Labo Phowa", nil, "tbq-phw", } m["ypg"] = { "Phola", nil, "tbq-drp", } m["yph"] = { "Phupha", 7188378, "tbq-urp", } m["ypm"] = { "Phuma", nil, "tbq-muj", } m["ypn"] = { "Ani Phowa", 33590104, "tbq-phw", } m["ypo"] = { "Alo Phola", 33522157, "tbq-drp", } m["ypp"] = { "Phupa", 48565467, "tbq-urp", } m["ypz"] = { "Phuza", 48565339, "tbq-urp", } m["yra"] = { "Yerakai", 8052531, } m["yrb"] = { "Yareba", 3571876, "ngf", } m["yre"] = { "Yaouré", 3913951, "dmn-mda", } m["yri"] = { "Yarí", 8049616, } m["yrk"] = { "tiếng Nenets lãnh nguyên", 36452, "syd", "Cyrl", "Tiếng Nenets lãnh nguyên", "Nenets lãnh nguyên", entry_name = { from = {"ӑ", "а̄", "э̇", "ӣ", "ы̄", "ӯ", "ю̄", "я̆", "я̄"}, to = {"а", "а", "э", "и", "ы", "у", "ю", "я", "я"}, }, translit = "yrk-translit", } m["yrl"] = { "tiếng Nheengatu", 34333, "tup-gua", "Latn", "Tiếng Nheengatu", "Nheengatu", ancestors = "tpw", } m["yrn"] = { "tiếng Nha Lang", 3572191, "qfa-buy", nil, "Tiếng Nha Lang", "Nha Lang", } m["yro"] = { "tiếng Ỹaroamë", 24190396, "sai-ynm", "Latn", "Tiếng Ỹaroamë", "Ỹaroamë", } m["yrw"] = { "Yarawata", 8049237, "ngf-mad", } m["yry"] = { "Yarluyandi", 33061540, "aus-kar", } m["ysc"] = { "Jassic", 2479368, "xsc", "Latn", ancestors = "oos", } m["ysd"] = { "Samatao", 7408902, "tbq-kzh", } m["ysg"] = { "Sonaga", 7560736, "tbq-tal", } m["ysl"] = { "Yugoslavian Sign Language", 8060373, "sgn", } m["ysn"] = { "Sani", 1055287, "tbq-axi", "Latn", -- Not Yiii, which is the Nuosu syllabary, and does not cover classical Yi scripts. } m["yso"] = { "Nisi", 12953326, "tbq-sel", } m["ysp"] = { "Southern Lolopo", 12633989, "tbq-llo", } m["ysr"] = { "tiếng Sirenik", 28156, "ypk", "Cyrl", "Tiếng Sirenik", "Sirenik", } m["yss"] = { "Yessan-Mayo", 8052927, "paa-spk", "Latn", } m["ysy"] = { "Sanie", 7418287, "tbq-kzh", } m["yta"] = { "Talu", 16999095, "tbq-tal", } m["ytl"] = { "Toloza", 7786695, "tbq-lso", } m["ytp"] = { "Thopho", 7796015, "tbq-muj", } m["ytw"] = { "Yout Wam", nil, "ngf-fin", "Latn", } m["yty"] = { "Yatay", nil, "aus-pmn", } m["yua"] = { "tiếng Maya Yucatán", 13354, "myn", "Latn", "Tiếng Maya Yucatán", "Maya Yucatán", } m["yub"] = { "Yugambal", 3446663, } m["yuc"] = { "Yuchi", 34204, "qfa-iso", } m["yue"] = { "tiếng Quảng Đông", 9186, "zhx-yue", "Hants, Latn", "Tiếng Quảng Đông", "Quảng Đông", wikimedia_codes = "yue, zh-yue", generate_forms = "zh-generateforms", translit = {Hani = "zh-translit"}, sort_key = {Hani = "Hani-sortkey"}, } m["yuf"] = { "tiếng Havasupai-Walapai-Yavapai", 3565286, "nai-yuc", "Latn", "Tiếng Havasupai-Walapai-Yavapai", "Havasupai-Walapai-Yavapai", } m["yug"] = { "tiếng Yugh", 56311, "qfa-yno", "Cyrl", "Tiếng Yugh", "Yugh", } m["yui"] = { "Yurutí", 3573266, "sai-tuc", "Latn", } m["yuj"] = { "Karkar-Yuri", 2992906, "paa-pau", "Latn", } m["yuk"] = { "Yuki", 36993, "nai-ykn", "Latn", } m["yul"] = { "Yulu", 3915595, "csu-bba", } m["yum"] = { "Yuma", 3573199, "nai-yuc", "Latn", } m["yun"] = { "Bena", 3913283, "alv-yun", } m["yup"] = { "Yukpa", 3441447, "sai-yuk", "Latn", } m["yuq"] = { "Yuqui", 8061440, "tup-gua", "Latn", } m["yur"] = { "tiếng Yurok", 34685, "aql", "Latn", "Tiếng Yurok", "Yurok", } m["yut"] = { "Yopno", 12953338, "ngf-fin", "Latn", } m["yuw"] = { "Finisterre Yau", 12953319, "ngf-fin", "Latn", } m["yux"] = { "tiếng Nam Yukaghir", 56545, "qfa-yuk", "Cyrl", "Tiếng Nam Yukaghir", "Nam Yukaghir", translit = "yux-translit", } m["yuy"] = { "tiếng Đông Yugur", 29902, "xgn-sou", "Latn", "Tiếng Đông Yugur", "Đông Yugur", } m["yuz"] = { "Yuracare", 2640646, "qfa-iso", "Latn", } m["yva"] = { "Yawa", 3572020, "paa", "Latn", } m["yvt"] = { "Yavitero", 3441427, "awd", "Latn", } m["ywa"] = { "Kalou", 6354305, "paa-spk", "Latn", } m["ywg"] = { "Yinhawangka", 8053734, "aus-nga", "Latn", } m["ywl"] = { "Western Lalu", 12953325, "tbq-lal", } m["ywn"] = { "Yawanawa", 10322118, "sai-pan", "Latn", } m["ywq"] = { "Nasu", 25559456, "tbq-nas", "Plrd", -- Not Yiii, which is the Nuosu syllabary, and does not cover classical Yi scripts. } m["ywr"] = { "Yawuru", 8050479, "aus-nyu", "Latn", } m["ywt"] = { "Xishanba Lalo", 12953336, "tbq-lal", } m["ywu"] = { "Wumeng", 25559442, "tbq-nas", } m["yww"] = { "Yawarawarga", 10723454, "aus-kar", "Latn", } m["yxa"] = { "Mayawali", 33060513, "aus-pam", "Latn", } m["yxg"] = { "Yagara", nil, "aus-pam", "Latn", } m["yxl"] = { "Yarli", 46264708, "aus-pam", "Latn", } m["yxm"] = { "Yinwum", 8053763, "aus-pam", "Latn", } m["yxu"] = { "Yuyu", 8062232, "aus-pam", "Latn", } m["yxy"] = { "Yabula Yabula", 8046394, "aus-pam", "Latn", } m["yyu"] = { "Torricelli Yau", 8050328, "qfa-tor", "Latn", } m["yyz"] = { "Ayizi", 20527363, "tbq-nas", } m["yzg"] = { "E'ma Buyang", 16115619, "qfa-buy", } m["yzk"] = { "Zokhuo", 8073523, "tbq-phw", } return require("Module:languages").finalizeData(m, "language") 11m49qowgosl6ijyxfbtzyld6vhbjzr Mô đun:languages/canonical names 828 273923 2350516 2350326 2026-05-06T15:37:51Z TheHighFighter2 42988 2350516 Scribunto text/plain return { ["Tiếng A'ou"] = "aou", ["Aba"] = "utp", ["Abai Sungai"] = "abf", ["Tiếng Abanyom"] = "abm", ["Abenlen Ayta"] = "abp", ["Abipon"] = "axb", ["Abishira"] = "ash", ["Abom"] = "aob", ["Tiếng Abon"] = "abo", ["Tiếng Abron"] = "abr", ["Abu"] = "ado", ["Abu' Arapesh"] = "aah", ["Abua"] = "abn", ["Tiếng Abui"] = "abz", ["Abun"] = "kgr", ["Abung"] = "abl", ["Tiếng Abure"] = "abu", ["Abureni"] = "mgj", ["Abé"] = "aba", ["Tiếng Me'phaa Acatepec"] = "tpx", ["Ache"] = "yif", ["Tiếng Achi"] = "acr", ["Tiếng Achuar"] = "acu", ["Achumawi"] = "acv", ["Aché"] = "guq", ["Acroá"] = "acs", ["Adabe"] = "adb", ["Adai"] = "xad", ["Adamorobe Sign Language"] = "ads", ["Adang"] = "adn", ["Adangbe"] = "adq", ["Adap"] = "adp", ["Adasen"] = "tiu", ["Adele"] = "ade", ["Adhola"] = "adh", ["Tiếng Adi"] = "adi", ["Adioukrou"] = "adj", ["Adithinngithigh"] = "dth", ["Tiếng Adnyamathanha"] = "adt", ["Adonara"] = "adr", ["Aduge"] = "adu", ["Aeka"] = "aez", ["Aekyom"] = "awi", ["Aequian"] = "xae", ["Aer"] = "aeq", ["Afade"] = "aal", ["Afghan Sign Language"] = "afg", ["Afitti"] = "aft", ["Afra"] = "ulf", ["Afrihili"] = "afh", ["Afro-Seminole Creole"] = "afs", ["Agarabi"] = "agd", ["Agariya"] = "agi", ["Tiếng Agatu"] = "agc", ["Agavotaguerra"] = "avo", ["Aghu"] = "ahh", ["Aghu Tharrnggala"] = "gtu", ["Agi"] = "aif", ["Agob"] = "kit", ["Agoi"] = "ibm", ["Tiếng Aguacateca"] = "agu", ["Aguano"] = "aga", ["Aguaruna"] = "agr", ["Aguna"] = "aug", ["Agusan Manobo"] = "msm", ["Agutaynen"] = "agn", ["Agwagwune"] = "yay", ["Ahanta"] = "aha", ["Ahirani"] = "ahr", ["Ahwai"] = "nfd", ["Ai-Cham"] = "aih", ["Aighon"] = "aix", ["Aikanã"] = "tba", ["Aiklep"] = "mwg", ["Aimele"] = "ail", ["Ainbai"] = "aic", ["Aiome"] = "aki", ["Airoran"] = "air", ["Aisi"] = "mmq", ["Aiwoo"] = "nfl", ["Aja"] = "aja", ["Ajagua"] = "sai-ajg", ["Ajawa"] = "ajw", ["Ajyíninka Apurucayali"] = "cpc", ["Ak"] = "akq", ["Aka (Central Africa)"] = "axk", ["Aka (Sudan)"] = "soh", ["Aka-Bea"] = "abj", ["Aka-Cari"] = "aci", ["Aka-Kede"] = "akx", ["Aka-Kol"] = "aky", ["Aka-Kora"] = "ack", ["Akar-Bale"] = "acl", ["Akaselem"] = "aks", ["Akatek"] = "knj", ["Ake"] = "aik", ["Akebu"] = "keu", ["Akei"] = "tsr", ["Akeu"] = "aeu", ["Akolet"] = "akt", ["Akoose"] = "bss", ["Akoye"] = "miw", ["Akpa"] = "akf", ["Akpes"] = "ibe", ["Akrukay"] = "afi", ["Akuku"] = "ayk", ["Akum"] = "aku", ["Tiếng Akuntsu"] = "aqz", ["Akurio"] = "ako", ["Akuwagel"] = "bey", ["Akwa"] = "akw", ["Akyaung Ari"] = "nqy", ["Al-Sayyid Bedouin Sign Language"] = "syy", ["Alabat Island Agta"] = "dul", ["Alacatlatzala Mixtec"] = "mim", ["Alago"] = "ala", ["Tiếng Alamblak"] = "amp", ["Tiếng Alangan"] = "alj", ["Alapmunte"] = "apv", ["Alas-Kluet Batak"] = "btz", ["Alazapa"] = "nai-ala", ["Albanian Sign Language"] = "sqk", ["Tiếng Mixtec Alcozauca"] = "xta", ["Alege"] = "alf", ["Algerian Sign Language"] = "asp", ["Ali"] = "aiy", ["Alladian"] = "ald", ["Allar"] = "all", ["Tiếng Alyentiyak"] = "sai-all", ["Alngith"] = "aid", ["Alo Phola"] = "ypo", ["Alor"] = "aol", ["Aloápam Zapotec"] = "zaq", ["Alu"] = "mte", ["Tiếng Kurumba Alu"] = "xua", ["Alugu"] = "aub", ["Tiếng Alumu-Tesu"] = "aab", ["Alune"] = "alp", ["Alungul"] = "aus-alu", ["Aluo"] = "yna", ["Alur"] = "alz", ["Alutiiq"] = "ems", ["Alviri-Vidari"] = "avd", ["Alyawarr"] = "aly", ["Amahai"] = "amq", ["Tiếng Amal"] = "aad", ["Tiếng Amanab"] = "amn", ["Amanayé"] = "ama", ["Amara"] = "aie", ["Amarakaeri"] = "amr", ["Amarizana"] = "awd-ama", ["Amasi"] = "alv-ama", ["Amatlán Zapotec"] = "zpo", ["Amba"] = "rwm", ["Tiếng Ambai"] = "amk", ["Ambakich"] = "aew", ["Ambala Ayta"] = "abc", ["Ambelau"] = "amv", ["Ambele"] = "ael", ["Amblong"] = "alm", ["Ambo"] = "amb", ["Ambul"] = "apo", ["Tiếng Ambulas"] = "abt", ["Amele"] = "aey", ["Amganad Ifugao"] = "ifa", ["Ami"] = "amy", ["Ammonite"] = "sem-amm", ["Amo"] = "amo", ["Amol"] = "alx", ["Amoltepec Mixtec"] = "mbz", ["Amondawa"] = "adw", ["Amorite"] = "sem-amo", ["Ampanang"] = "apg", ["Ampari Dogon"] = "aqd", ["Amri Karbi"] = "ajz", ["Amto"] = "amt", ["Ana Tinga Dogon"] = "dti", ["Tiếng Anaang"] = "anw", ["Anakalangu"] = "akg", ["Anam"] = "pda", ["Anambé"] = "aan", ["Anamgura"] = "imi", ["Anasi"] = "bpo", ["Tiếng Anauyá"] = "awd-ana", ["Ancient Ligurian"] = "xlg", ["Ancient North Arabian"] = "xna", ["Ancient Zapotec"] = "xzp", ["Andai"] = "afd", ["Andajin"] = "ajn", ["Tiếng Ả Rập Andalusia"] = "xaa", ["Andaman Creole Hindi"] = "hca", ["Andaqui"] = "ana", ["Andarum"] = "aod", ["Andegerebinha"] = "adg", ["Andh"] = "anr", ["Andio"] = "bzb", ["Andjingith"] = "aus-and", ["Andoa"] = "anb", ["Andoque"] = "ano", ["Andoquero"] = "sai-and", ["Andra-Hus"] = "anx", ["Aneityum"] = "aty", ["Anem"] = "anz", ["Aneme Wake"] = "aby", ["Anfillo"] = "myo", ["Angaataha"] = "agm", ["Angaité"] = "aqt", ["Angal"] = "age", ["Angal Enen"] = "aoe", ["Angal Heneng"] = "akh", ["Tiếng Angami"] = "njm", ["Angevin"] = "roa-ang", ["Tiếng Yali Angguruk"] = "yli", ["Angkamuthi"] = "avm", ["Angkola Batak"] = "akb", ["Tiếng Angkula"] = "aus-ang", ["Angloromani"] = "rme", ["Angor"] = "agg", ["Angoram"] = "aog", ["Angosturas Tunebo"] = "tnd", ["Anguthimri"] = "awg", ["Ani Phowa"] = "ypn", ["Animere"] = "anf", ["Anindilyakwa"] = "aoi", ["Anjam"] = "boj", ["Anmatyerre"] = "amx", ["Tiếng Annobón"] = "fab", ["Anong"] = "nun", ["Anor"] = "anj", ["Anserma"] = "ans", ["Ansus"] = "and", ["Antakarinya"] = "ant", ["Antigua and Barbuda Creole English"] = "aig", ["Tiếng Creole Antilles"] = "gcf", ["Anu"] = "anl", ["Anuak"] = "anu", ["Anufo"] = "cko", ["Anus"] = "auq", ["Anuta"] = "aud", ["Anyin Morofo"] = "mtb", ["Tiếng Ao"] = "njo", ["Aoheng"] = "pni", ["Aore"] = "aor", ["Ap Ma"] = "kbx", ["Apalachee"] = "xap", ["Apali"] = "ena", ["Apasco-Apoala Mixtec"] = "mip", ["Tiếng Apatani"] = "apt", ["Apiaká"] = "api", ["Apma"] = "app", ["Apolista"] = "awd-apo", ["Aproumu Aizi"] = "ahp", ["Apurinã"] = "apu", ["Arabana"] = "ard", ["Arabela"] = "arl", ["Aralle-Tabulahan"] = "atq", ["Arammba"] = "stk", ["Aranama-Tamique"] = "xrt", ["Arandai"] = "jbj", ["Araona"] = "aro", ["Tiếng Arapaho"] = "arp", ["Arapaso"] = "arj", ["Arara-Karo"] = "arr", ["Ararandewára"] = "xaj", ["Arawum"] = "awm", ["Arbore"] = "arv", ["Are"] = "mwc", ["Areba"] = "aea", ["Argentine Sign Language"] = "aed", ["Arguni"] = "agf", ["Arhuaco"] = "arh", ["Arhâ"] = "aqr", ["Arhö"] = "aok", ["Tiếng Ari"] = "aac", ["Aribwatsa"] = "laz", ["Aribwaung"] = "ylu", ["Arifama-Miniafia"] = "aai", ["Arigidi"] = "aqg", ["Arikapú"] = "ark", ["Arikara"] = "ari", ["Arikem"] = "ait", ["Tiếng Arin"] = "xrn", ["Aringa"] = "luc", ["Armazic"] = "xrm", ["Armenian Sign Language"] = "aen", ["Arop-Lokep"] = "apr", ["Arop-Sissano"] = "aps", ["Arosi"] = "aia", ["Arritinngithigh"] = "rrt", ["Arta"] = "atz", ["Arua"] = "aru", ["Aruamu"] = "msy", ["Aruek"] = "aur", ["Aruop"] = "lsr", ["Arutani"] = "atx", ["Aruá"] = "arx", ["As"] = "asz", ["Asaro'o"] = "mtv", ["Ashe"] = "ahs", ["Tiếng Ashkun"] = "ask", ["Asho Chin"] = "csh", ["Asháninka"] = "cni", ["Tiếng Ashéninka Pajonal"] = "cjo", ["Ashéninka Perené"] = "prq", ["Tiếng Asi"] = "bno", ["Asilulu"] = "asl", ["Asoa"] = "asv", ["Assangori"] = "sjg", ["Tiếng Assiniboine"] = "asb", ["Asu"] = "aum", ["Asue Awyu"] = "psa", ["Tiếng Asumboa"] = "aua", ["Asunción Mixtepec Zapotec"] = "zoo", ["Ata"] = "atm", ["Ata Manobo"] = "atd", ["Atakapa"] = "aqp", ["Atampaya"] = "amz", ["Atanques"] = "cba-ata", ["Atatláhuca Mixtec"] = "mib", ["Tiếng Atemble"] = "ate", ["Ateso"] = "teo", ["Ati"] = "atk", ["Atohwaim"] = "aqm", ["Atong (Cameroon)"] = "ato", ["Atorada"] = "aox", ["Tiếng Atsahuaca"] = "atc", ["Atsam"] = "cch", ["Atsugewi"] = "atw", ["Attié"] = "ati", ["Au"] = "avt", ["Aulua"] = "aul", ["Aurá"] = "aux", ["Aushi"] = "auh", ["Aushiri"] = "avs", ["Auslan"] = "asf", ["Austral"] = "aut", ["Australian Aboriginal Sign Language"] = "asw", ["Austrian Sign Language"] = "asq", ["Austronesian Mari"] = "hob", ["Auwe"] = "smf", ["Auyana"] = "auy", ["Auye"] = "auu", ["Auyokawa"] = "auo", ["Avatime"] = "avn", ["Avau"] = "avb", ["Avava"] = "tmb", ["Avikam"] = "avi", ["Avá-Canoeiro"] = "avv", ["Awa (China)"] = "vwa", ["Awa (New Guinea)"] = "awb", ["Awa-Cuaiquer"] = "kwi", ["Awabakal"] = "awk", ["Awak"] = "awo", ["Awar"] = "aya", ["Awara"] = "awx", ["Awbono"] = "awh", ["Aweer"] = "bob", ["Awera"] = "awr", ["Awetí"] = "awe", ["Tiếng Awjila"] = "auj", ["Awngthim"] = "gwm", ["Awtuw"] = "kmn", ["Awun"] = "aww", ["Awutu"] = "afu", ["Awyi"] = "auw", ["Axamb"] = "ahb", ["Ayabadhu"] = "ayd", ["Ayautla Mazatec"] = "vmy", ["Ayerrerenge"] = "axe", ["Ayi"] = "ayq", ["Ayizi"] = "yyz", ["Ayizo"] = "ayb", ["Ayomán"] = "sai-ayo", ["Ayoquesco Zapotec"] = "zaf", ["Ayoreo"] = "ayo", ["Ayu"] = "ayu", ["Ayutla Mixtec"] = "miy", ["Azha"] = "aza", ["Azhe"] = "yiz", ["Tiếng Me'phaa Azoyú"] = "tpc", ["Baa"] = "kwb", ["Tiếng Baagandji"] = "drl", ["Baan"] = "bvj", ["Baangi"] = "bqx", ["Baatonum"] = "bba", ["Baba"] = "bbw", ["Babango"] = "bbm", ["Babanki"] = "bbk", ["Babine-Witsuwit'en"] = "bcr", ["Babole"] = "bvx", ["Tiếng Bacama"] = "bcy", ["Tiếng Mã Lai Bacan"] = "btj", ["Bada"] = "bhz", ["Bade"] = "bde", ["Badeshi"] = "bdz", ["Badimaya"] = "bia", ["Badyara"] = "pbp", ["Baeggu"] = "bvd", ["Baelelea"] = "bvc", ["Baenan"] = "sai-bae", ["Baetora"] = "btr", ["Bafanji"] = "bfj", ["Bafaw"] = "bwt", ["Bafia"] = "ksf", ["Bafut"] = "bfd", ["Baga Kaloum"] = "bqf", ["Baga Koga"] = "bgo", ["Baga Manduri"] = "bmd", ["Baga Pokur"] = "bcg", ["Baga Sitemu"] = "bsp", ["Baga Sobané"] = "bsv", ["Bagheli"] = "bfy", ["Bagirmi"] = "bmi", ["Bago-Kusuntu"] = "bqg", ["Bagri"] = "bgq", ["Tiếng Bagua"] = "sai-bag", ["Bagupi"] = "bpi", ["Bagusa"] = "bqb", ["Baha"] = "yha", ["Baham"] = "bdw", ["Bahamian Creole"] = "bah", ["Baharna Arabic"] = "abv", ["Bahau"] = "bhv", ["Bahinemo"] = "bjh", ["Bahonsuai"] = "bsu", ["Bai"] = "bdj", ["Baibai"] = "bbf", ["Baikeno"] = "bkx", ["Baima"] = "bqh", ["Baimak"] = "bmx", ["Bainouk-Gunyaamolo"] = "bcz", ["Bainouk-Samik"] = "bcb", ["Baissa Fali"] = "fah", ["Bajan"] = "bjs", ["Bajelani"] = "bjm", ["Bajjika"] = "vjk", ["Baka"] = "bkc", ["Bakairí"] = "bkq", ["Bakaka"] = "bqz", ["Baki"] = "bki", ["Bakoko"] = "bkh", ["Bakole"] = "kme", ["Bakpinka"] = "bbs", ["Bakulung"] = "bbu", ["Bakumpai"] = "bkr", ["Tiếng Bakung"] = "xkl", ["Bakwé"] = "bjw", ["Balaesang"] = "bls", ["Balangao"] = "blw", ["Balangingi"] = "sse", ["Tiếng Balantak"] = "blz", ["Balau"] = "blg", ["Baldemu"] = "bdn", ["Bali"] = "bcp", ["Baliledo"] = "poz-bal", ["Balinese Malay"] = "mhp", ["Balkan Romani"] = "rmn", ["Balo"] = "bqo", ["Baloi"] = "biz", ["Balong"] = "bnt-bal", ["Baltic Romani"] = "rml", ["Baluan-Pam"] = "blq", ["Bamako Sign Language"] = "bog", ["Bamali"] = "bbq", ["Bambalang"] = "bmo", ["Bambam"] = "ptu", ["Bambili-Bambui"] = "baw", ["Bamenyam"] = "bce", ["Bamu"] = "bcf", ["Bamukumbit"] = "bqt", ["Bamum"] = "bax", ["Bamunka"] = "bvm", ["Bamwe"] = "bmg", ["Ban Khor Sign Language"] = "bfk", ["Bana"] = "bcw", ["Banam Bay"] = "vrt", ["Banao Itneg"] = "bjx", ["Banaro"] = "byz", ["Banda"] = "bnd", ["Banda Malay"] = "bpq", ["Banda-Bambari"] = "liy", ["Banda-Banda"] = "bpd", ["Banda-Mbrès"] = "bqk", ["Banda-Ndélé"] = "bfl", ["Banda-Yangere"] = "yaj", ["Bandi"] = "bza", ["Bandial"] = "bqj", ["Tiếng Bandjalang"] = "bdy", ["Bangala"] = "bxg", ["Bangandu"] = "bgf", ["Bangba"] = "bbe", ["Tiếng Banggai"] = "bgz", ["Tiếng Bangi"] = "bni", ["Bangime"] = "dba", ["Bangka"] = "mfb", ["Bangolan"] = "bgj", ["Bangubangu"] = "bnx", ["Bangwinji"] = "bsj", ["Baniva"] = "bvv", ["Baniwa"] = "bwi", ["Banka"] = "bxw", ["Bankan Tey Dogon"] = "dbw", ["Tiếng Bankon"] = "abb", ["Banoni"] = "bcm", ["Bantayanon"] = "bfx", ["Bantik"] = "bnq", ["Banyumasan"] = "map-bms", ["Baraamu"] = "brd", ["Baram Kayan"] = "kys", ["Barama"] = "bbg", ["Barambu"] = "brm", ["Baramu"] = "bmz", ["Barapasi"] = "brp", ["Baras"] = "brs", ["Barasana"] = "bsn", ["Barbareño"] = "boi", ["Barclayville Grebo"] = "gry", ["Bardi"] = "bcj", ["Barein"] = "bva", ["Bargam"] = "mlp", ["Bariai"] = "bch", ["Bariji"] = "bjc", ["Barikanchi"] = "bxo", ["Tiếng Barikewa"] = "jbk", ["Barngarla"] = "bjb", ["Barok"] = "bjk", ["Tiếng Barombi"] = "bbi", ["Barranbinya"] = "aus-bra", ["Barro Negro Tunebo"] = "tbn", ["Barrow Point"] = "bpt", ["Baruga"] = "bjz", ["Barunggam"] = "aus-brm", ["Baruya"] = "byr", ["Barwe"] = "bwg", ["Barí"] = "mot", ["Basa"] = "bzw", ["Basa-Gumna"] = "bsl", ["Basa-Gurmana"] = "buj", ["Basap"] = "bdb", ["Bashkardi"] = "bsg", ["Bassa-Kontagora"] = "bsr", ["Bassari"] = "bsc", ["Bassossi"] = "bsi", ["Bata"] = "bta", ["Bataan Ayta"] = "ayt", ["Batad Ifugao"] = "ifb", ["Batanga"] = "bnm", ["Bateri"] = "btv", ["Bathari"] = "bhm", ["Bati (Cameroon)"] = "btc", ["Bati (Indonesia)"] = "bvt", ["Batu"] = "btu", ["Batui"] = "zbt", ["Bau"] = "bbd", ["Bauchi"] = "bsf", ["Baure"] = "brg", ["Bauria"] = "bge", ["Bauro"] = "bxa", ["Bauwaki"] = "bwk", ["Bauzi"] = "bvz", ["Bawm Chin"] = "bgr", ["Bay Miwok"] = "mkq", ["Bayali"] = "bjy", ["Baybayanon"] = "bvy", ["Baygo"] = "byg", ["Bayogoula"] = "nai-bay", ["Bayono"] = "byl", ["Bayot"] = "bda", ["Bayungu"] = "bxj", ["Bazigar"] = "bfr", ["Baïnounk Gubëeher"] = "alv-bgu", ["Beami"] = "beo", ["Beaver"] = "bea", ["Beba"] = "bfp", ["Bebe"] = "bzv", ["Bebele"] = "beb", ["Bebeli"] = "bek", ["Bebil"] = "bxp", ["Bedik"] = "tnr", ["Bedjond"] = "bjv", ["Bedoanas"] = "bed", ["Beeke"] = "bkf", ["Beele"] = "bxq", ["Beembe"] = "beq", ["Beezen"] = "bnz", ["Befang"] = "bby", ["Begbere-Ejar"] = "bqv", ["Bekati'"] = "bei", ["Bekwarra"] = "bkv", ["Bekwel"] = "bkw", ["Belait"] = "beg", ["Belanda Bor"] = "bxb", ["Belanda Viri"] = "bvi", ["Belizean Creole"] = "bzj", ["Bembe"] = "bmb", ["Ben Tey"] = "dbt", ["Bena"] = "yun", ["Benabena"] = "bef", ["Bende"] = "bdp", ["Bendi"] = "bct", ["Beneraf"] = "bnv", ["Beng"] = "nhb", ["Benga"] = "bng", ["Benggoi"] = "bgy", ["Bengkala Sign Language"] = "bqy", ["Bentong"] = "bnu", ["Benyadu'"] = "byd", ["Beothuk"] = "bue", ["Bepour"] = "bie", ["Bera"] = "brf", ["Berakou"] = "bxv", ["Berau Malay"] = "bve", ["Berawan"] = "lod", ["Bergish"] = "gmw-bgh", ["Berinomo"] = "bit", ["Berom"] = "bom", ["Berta"] = "wti", ["Berti"] = "byt", ["Besme"] = "bes", ["Besoa"] = "bep", ["Betaf"] = "bfe", ["Bete"] = "byf", ["Bete-Bendi"] = "btt", ["Betoi"] = "sai-bet", ["Betta Kurumba"] = "xub", ["Bhadrawahi"] = "bhd", ["Bhalay"] = "bhx", ["Bharia"] = "bha", ["Bhatri"] = "bgw", ["Bhattiyali"] = "bht", ["Bhaya"] = "bhe", ["Bhele"] = "bhy", ["Bhilali"] = "bhi", ["Bhoti Kinnauri"] = "nes", ["Bhunjia"] = "bhu", ["Biafada"] = "bif", ["Biage"] = "bdf", ["Biak"] = "bhw", ["Biali"] = "beh", ["Bian Marind"] = "bpv", ["Biangai"] = "big", ["Biao"] = "byk", ["Biao Mon"] = "bmt", ["Biao-Jiao Mien"] = "bje", ["Bibaali"] = "bcn", ["Bibbulman"] = "xbp", ["Bidiyo"] = "bid", ["Bidyara"] = "bym", ["Bidyogo"] = "bjg", ["Biem"] = "bmc", ["Bierebo"] = "bnk", ["Bieria"] = "brj", ["Biete"] = "biu", ["Big Nambas"] = "nmb", ["Biga"] = "bhc", ["Bigambal"] = "xbe", ["Bikaru"] = "bic", ["Bikya"] = "byb", ["Bila"] = "bip", ["Bilakura"] = "bql", ["Bilba"] = "bpz", ["Bilbil"] = "brz", ["Bile"] = "bil", ["Biliau"] = "bcu", ["Biloxi"] = "bll", ["Tiếng Bilua"] = "blb", ["Bilur"] = "bxf", ["Tiếng Bima"] = "bhp", ["Bimin"] = "bhl", ["Bimoba"] = "bim", ["Bina"] = "bmn", ["Binahari"] = "bxz", ["Binandere"] = "bhg", ["Binawa"] = "byj", ["Bindal"] = "xbd", ["Bine"] = "bon", ["Binji"] = "bpj", ["Binongan Itneg"] = "itb", ["Bintauna"] = "bne", ["Bintulu"] = "bny", ["Binukid"] = "bkd", ["Binumarien"] = "bjr", ["Bipi"] = "biq", ["Birgid"] = "brk", ["Birgit"] = "btf", ["Biri"] = "bzr", ["Biritai"] = "bqq", ["Birri"] = "bvq", ["Birrpayi"] = "xbj", ["Birwa"] = "brl", ["Biseni"] = "ije", ["Bishuo"] = "bwh", ["Bisis"] = "bnw", ["Bisorio"] = "bir", ["Tiếng Bissa"] = "bib", ["Bitare"] = "brt", ["Bitur"] = "mcc", ["Biwat"] = "bwm", ["Biyo"] = "byo", ["Biyom"] = "bpm", ["Blablanga"] = "blp", ["Black Speech"] = "art-bsp", ["Blafe"] = "bfh", ["Bo"] = "bgl", ["Bo-Rukul"] = "mae", ["Bo-Ung"] = "mux", ["Boano (Maluku)"] = "bzn", ["Boano (Sulawesi)"] = "bzl", ["Bobongko"] = "bgb", ["Bobot"] = "bty", ["Bodo (Central Africa)"] = "boy", ["Tiếng Gadaba Bodo"] = "gbj", ["Bodo Parja"] = "bdv", ["Bofi"] = "bff", ["Boga"] = "bvw", ["Bogaya"] = "boq", ["Boguru"] = "bqu", ["Tiếng Tân Aram Bohtan"] = "bhn", ["Boikin"] = "bzf", ["Bokha"] = "ybk", ["Boko"] = "bqc", ["Bokoto"] = "bdt", ["Bokyi"] = "bky", ["Tiếng Bola"] = "bnp", ["Bolak"] = "art-blk", ["Bolango"] = "bld", ["Bole"] = "bol", ["Bolgo"] = "bvo", ["Bolia"] = "bli", ["Bolinao"] = "smk", ["Bolivian Sign Language"] = "bvl", ["Boloki"] = "bkt", ["Bolon"] = "bof", ["Bolondo"] = "bzm", ["Bolongan"] = "blj", ["Bom"] = "bmf", ["Boma Nkuu"] = "bnt-bon", ["Boma Yumu"] = "bnt-boy", ["Bomboli"] = "bml", ["Bomboma"] = "bws", ["Bomitaba"] = "zmx", ["Bomu"] = "bmq", ["Bomwali"] = "bmw", ["Bon Gula"] = "glc", ["Bondei"] = "bou", ["Bondoukou Kulango"] = "kzc", ["Bondum Dom Dogon"] = "dbu", ["Bonerate"] = "bna", ["Bonggi"] = "bdg", ["Bonggo"] = "bpg", ["Bongili"] = "bui", ["Bongo"] = "bot", ["Bongu"] = "bpu", ["Bonjo"] = "bok", ["Bonkeng"] = "bvg", ["Bonkiman"] = "bop", ["Bookan"] = "bnb", ["Boor"] = "bvf", ["Bora"] = "boa", ["Border Kuna"] = "kvn", ["Borei"] = "gai", ["Boro"] = "xxb", ["Borong"] = "ksr", ["Boruca"] = "brn", ["Boselewa"] = "bwf", ["Bosngun"] = "bqs", ["Bote-Majhi"] = "bmj", ["Botolan Sambal"] = "sbl", ["Bouna Kulango"] = "nku", ["Bourbonnais-Berrichon"] = "roa-bbn", ["Tiếng Bourguignon"] = "roa-brg", ["Bozaba"] = "bzo", ["Bragat"] = "aof", ["Brazilian Sign Language"] = "bzs", ["Brek Karen"] = "kvl", ["Brem"] = "buq", ["Bribri"] = "bzd", ["British Sign Language"] = "bfi", ["Brokkat"] = "bro", ["Brokpake"] = "sgt", ["Brokskat"] = "bkk", ["Broome Pearling Lugger Pidgin"] = "bpl", ["Brunei Bisaya"] = "bsb", ["Bruny Island"] = "xpz", ["Bu"] = "jid", ["Bu-Nao Bunu"] = "bwx", ["Bua"] = "bub", ["Bualkhaw Chin"] = "cbl", ["Buamu"] = "box", ["Tiếng Bube"] = "bvb", ["Bubi"] = "buw", ["Bubia"] = "bbx", ["Budibud"] = "btp", ["Budong-Budong"] = "bdx", ["Budu"] = "buu", ["Buduma"] = "bdm", ["Budza"] = "bja", ["Buena Vista Yokuts"] = "nai-bvy", ["Buglere"] = "sab", ["Bugun"] = "bgg", ["Buhi'non Bikol"] = "ubl", ["Tiếng Buhid"] = "bku", ["Buhutu"] = "bxh", ["Bujhyal"] = "byh", ["Bukar-Sadung Bidayuh"] = "sdo", ["Bukat"] = "bvk", ["Bukawa"] = "buk", ["Bukit Malay"] = "bvu", ["Bukitan"] = "bkn", ["Bukiyip"] = "ape", ["Buksa"] = "tkb", ["Bukusu"] = "bxk", ["Bulgarian Sign Language"] = "bqn", ["Bulgebi"] = "bmp", ["Buli (Ghana)"] = "bwu", ["Buli (Indonesia)"] = "bzq", ["Bulu (Cameroon)"] = "bum", ["Bulu (New Guinea)"] = "bjl", ["Bum"] = "bmv", ["Bumaji"] = "byp", ["Bumbita Arapesh"] = "aon", ["Bumthangkha"] = "kjz", ["Bun"] = "buv", ["Buna"] = "bvn", ["Bunaba"] = "bck", ["Bunak"] = "bfn", ["Bunama"] = "bdd", ["Bundeli"] = "bns", ["Bung"] = "bqd", ["Bungain"] = "but", ["Bunganditj"] = "xbg", ["Tiếng Bungku"] = "bkz", ["Bungu"] = "wun", ["Bunoge"] = "dgb", ["Buol"] = "blf", ["Bura"] = "bwr", ["Burak"] = "bys", ["Buraka"] = "bkg", ["Burarra"] = "bvr", ["Burate"] = "bti", ["Burduna"] = "bxn", ["Bure"] = "bvh", ["Burgundian"] = "gem-bur", ["Burmeso"] = "bzu", ["Buru (Indonesia)"] = "mhs", ["Buru (Nigeria)"] = "bqw", ["Burui"] = "bry", ["Burumakok"] = "aip", ["Burun"] = "bdi", ["Burusu"] = "bqr", ["Buruwai"] = "asi", ["Busam"] = "bxs", ["Busami"] = "bsm", ["Busang Kayan"] = "bfg", ["Bushoong"] = "buf", ["Buso"] = "bso", ["Busoa"] = "bup", ["Bussa"] = "dox", ["Busuu"] = "bju", ["Butbut Kalinga"] = "kyb", ["Butchulla"] = "xby", ["Butmas-Tur"] = "bnr", ["Tiếng Butuanon"] = "btw", ["Buwal"] = "bhs", ["Buyeo"] = "xpy", ["Buyu"] = "byi", ["Buyuan Jino"] = "jiy", ["Bwa"] = "bww", ["Bwaidoka"] = "bwd", ["Bwala"] = "bnt-bwa", ["Bwanabwana"] = "tte", ["Bwatoo"] = "bwa", ["Bwela"] = "bwl", ["Bwile"] = "bwc", ["Bwisi"] = "bwz", ["Byangsi"] = "bee", ["Byep"] = "mkk", ["Bädi Kanum"] = "khd", ["Caac"] = "msq", ["Cabiyarí"] = "cbb", ["Cabécar"] = "cjp", ["Cacaloxtepec Mixtec"] = "miu", ["Cacaopera"] = "ccr", ["Cacua"] = "cbv", ["Cacán"] = "sai-cac", ["Caddo"] = "cad", ["Cafundó"] = "ccd", ["Cahuarano"] = "cah", ["Cajonos Zapotec"] = "zad", ["Caka"] = "ckx", ["Cakchiquel-Quiché Mixed Language"] = "ckz", ["Cakfem-Mushere"] = "cky", ["Calabrian Greek"] = "grk-cal", ["Calamian Tagbanwa"] = "tbk", ["Callawalla"] = "caw", ["Calusa"] = "nai-cal", ["Caluyanun"] = "clu", ["Caló"] = "rmq", ["Camarines Norte Agta"] = "abd", ["Cameroon Mambila"] = "mcu", ["Cameroon Pidgin"] = "wes", ["Campalagian"] = "cml", ["Camsá"] = "kbh", ["Camtho"] = "cmt", ["Camunic"] = "xcc", ["Candoshi-Shapra"] = "cbu", ["Canichana"] = "caz", ["Cao Miao"] = "cov", ["Tiếng Capanahua"] = "kaq", ["Capiznon"] = "cps", ["Caquinte"] = "cot", ["Cara"] = "cfd", ["Carabayo"] = "cby", ["Caramanta"] = "crf", ["Caranqui"] = "sai-caq", ["Carapana"] = "cbc", ["Carian"] = "xcr", ["Cariay"] = "awd-kar", ["Carijona"] = "cbd", ["Carolina Algonquian"] = "crr", ["Carolinian"] = "cal", ["Carpathian Romani"] = "rmc", ["Cashibo-Cacataibo"] = "cbr", ["Cashinahua"] = "cbs", ["Casiguran Dumagat Agta"] = "dgc", ["Casuarina Coast Asmat"] = "asc", ["Catacao"] = "sai-cat", ["Catalan Sign Language"] = "csc", ["Tiếng Catawba"] = "chc", ["Catuquinaru"] = "sai-ctq", ["Catío Chibcha"] = "cba-cat", ["Cauca"] = "cca", ["Cavere"] = "awd-cav", ["Cavineña"] = "cav", ["Cayubaba"] = "cyb", ["Cayuse"] = "xcy", ["Cazcan"] = "azc-caz", ["Cañari"] = "sai-cnr", ["Cebaara Senoufo"] = "sef", ["Cemuhî"] = "cam", ["Cen"] = "cen", ["Central Asmat"] = "cns", ["Central Awyu"] = "awu", ["Tiếng Bạch Trung"] = "bca", ["Central Bontoc"] = "lbk", ["Central Cagayan Agta"] = "agt", ["Tiếng Trung Dusun"] = "dtp", ["Central Grebo"] = "grv", ["Central Huishui Hmong"] = "hmc", ["Central Maewo"] = "mwo", ["Central Mahuatlán Zapoteco"] = "zam", ["Central Malay"] = "pse", ["Central Masela"] = "mxz", ["Central Mashan Hmong"] = "hmm", ["Central Melanau"] = "mel", ["Central Ojibwa"] = "ojc", ["Central Palawano"] = "plc", ["Central Pame"] = "pbs", ["Central Pomo"] = "poo", ["Central Puebla Nahuatl"] = "ncx", ["Central Sama"] = "sml", ["Central Siberian Yupik"] = "ess", ["Central Sierra Miwok"] = "csm", ["Central Subanen"] = "syb", ["Central Tagbanwa"] = "tgt", ["Central Tarahumara"] = "tar", ["Central Teke"] = "nzu", ["Central Tunebo"] = "tuf", ["Centúúm"] = "cet", ["Cerma"] = "cme", ["Ch'olti'"] = "myn-chl", ["Chaap Wuurong"] = "tjw", ["Chadian Sign Language"] = "cds", ["Chaha"] = "sem-cha", ["Chairel"] = "sit-cha", ["Chak"] = "ckh", ["Chakali"] = "cli", ["Chala"] = "cll", ["Chaldean Neo-Aramaic"] = "cld", ["Chali"] = "tgf", ["Chamacoco"] = "ceg", ["Chamba Daka"] = "ccg", ["Chamba Leko"] = "ndi", ["Chambri"] = "can", ["Champenois"] = "roa-cha", ["Chang"] = "nbc", ["Changriwa"] = "cga", ["Changthang"] = "cna", ["Chantyal"] = "chx", ["Chaná"] = "sai-chn", ["Chané"] = "caj", ["Chapacura"] = "sai-chp", ["Chara"] = "cra", ["Charrua"] = "sai-chr", ["Chaudangsi"] = "cdn", ["Chayahuita"] = "cbt", ["Chazumba Mixtec"] = "xtb", ["Che"] = "ruk", ["Cheke Holo"] = "mrn", ["Chemakum"] = "xch", ["Chenapian"] = "cjn", ["Chenchu"] = "cde", ["Chenoua"] = "cnu", ["Chepya"] = "ycp", ["Cherepon"] = "cpn", ["Chesu"] = "ych", ["Chetco-Tolowa"] = "ctc", ["Chhintange"] = "ctn", ["Chhulung"] = "cur", ["Chiangmai Sign Language"] = "csd", ["Chiapanec"] = "cip", ["Tiếng Triqui Chicahuaxtla"] = "trs", ["Chichicapan Zapotec"] = "zpv", ["Chichimeca-Jonaz"] = "pei", ["Chichonyi-Chidzihana-Chikauma"] = "coh", ["Chicomuceltec"] = "cob", ["Chiduruma"] = "dug", ["Chigmecatitlán Mixtec"] = "mii", ["Chilcotin"] = "clc", ["Chilean Sign Language"] = "csg", ["Chilisso"] = "clh", ["Chiltepec Chinantec"] = "csa", ["Chimalapa Zoque"] = "zoh", ["Chimariko"] = "cid", ["Chimila"] = "cbg", ["Chimwiini"] = "bnt-cmw", ["Chinali"] = "cih", ["Chinbon Chin"] = "cnb", ["Chinese Pidgin English"] = "cpi", ["Chinese Sign Language"] = "csl", ["Chipaya"] = "cap", ["Chiquihuitlán Mazatec"] = "maq", ["Chiquimulilla"] = "nai-chi", ["Chiquitano"] = "cax", ["Tiếng Chiricahua"] = "apm", ["Chirino"] = "sai-chi", ["Chiripá"] = "nhd", ["Chitimacha"] = "ctm", ["Chitkuli Kinnauri"] = "cik", ["Chitwania Tharu"] = "the", ["Choapan Zapotec"] = "zpc", ["Chochotec"] = "coz", ["Chokri Naga"] = "nri", ["Chokwe"] = "cjk", ["Tiếng Chol"] = "ctu", ["Cholón"] = "cht", ["Chono"] = "sai-cno", ["Chopi"] = "cce", ["Chuabo"] = "chw", ["Chuanqiandian Cluster Miao"] = "cqd", ["Chuave"] = "cjv", ["Chug"] = "cvg", ["Chuj"] = "cac", ["Chuka"] = "cuh", ["Chukwa"] = "cuw", ["Chumburung"] = "ncu", ["Tiếng Churah"] = "cdj", ["Churuya"] = "sai-chu", ["Chácobo"] = "cao", ["Ci Gbe"] = "cib", ["Cibak"] = "ckl", ["Cicipu"] = "awc", ["Ciguayo"] = "nai-cig", ["Cinamiguin Manobo"] = "mkx", ["Cinda-Regi-Tiyal"] = "cdr", ["Cineni"] = "cie", ["Cinta Larga"] = "cin", ["Cishingini"] = "asg", ["Citak"] = "txt", ["Ciwogai"] = "tgd", ["Classical Gaelic"] = "ghc", ["Classical Guaraní"] = "gn-cls", ["Classical Mandaic"] = "myz", ["Classical Newar"] = "nwc", ["Classical Quechua"] = "qwc", ["Coahuilteco"] = "xcw", ["Coast Miwok"] = "csi", ["Tiếng Kadazan bờ biển"] = "kzj", ["Coastal Konjo"] = "kjc", ["Coatecas Altas Zapotec"] = "zca", ["Coatepec Nahuatl"] = "naz", ["Coatlán Mixe"] = "mco", ["Coatlán Zapotec"] = "zps", ["Coatzospan Mixtec"] = "miz", ["Tiếng Cocama"] = "cod", ["Tiếng Cochimi"] = "coj", ["Cocopa"] = "coc", ["Cocos Islands Malay"] = "coa", ["Coeruna"] = "sai-coe", ["Coeur d'Alene"] = "crd", ["Cogui"] = "kog", ["Col"] = "liw", ["Colombian Sign Language"] = "csn", ["Colonia Tovar German"] = "gct", ["Columbia-Wenatchi"] = "col", ["Colán"] = "sai-col", ["Comaltepec Chinantec"] = "cco", ["Comechingon"] = "sai-cmg", ["Comecrudo"] = "xcm", ["Communicationssprache"] = "art-com", ["Como Karim"] = "cfg", ["Con"] = "cno", ["Coos"] = "csz", ["Copainalá Zoque"] = "zoc", ["Copala Triqui"] = "trc", ["Copallén"] = "sai-cop", ["Coquille"] = "coq", ["Cora"] = "crn", ["Cori"] = "cry", ["Coroado Puri"] = "sai-crd", ["Cosoleacaque Nahuatl"] = "nhk", ["Costa Rican Sign Language"] = "csr", ["Cotabato Manobo"] = "mta", ["Cotoname"] = "xcn", ["Tiếng Cowlitz"] = "cow", ["Coyaima"] = "coy", ["Coyotepec Popoloca"] = "pbf", ["Coyutla Totonac"] = "toc", ["Crimean Gothic"] = "gme-cgo", ["Croatian Sign Language"] = "csq", ["Cross River Mbembe"] = "mfn", ["Cruzeño"] = "crz", ["Cuban Sign Language"] = "csf", ["Cubeo"] = "cub", ["Cueva"] = "sai-cva", ["Cuiba"] = "cui", ["Cuitlatec"] = "cuy", ["Culina"] = "cul", ["Culli"] = "sai-cul", ["Cumanagoto"] = "cuo", ["Cumbric"] = "xcb", ["Cun"] = "cuq", ["Cung"] = "cug", ["Curonian"] = "xcu", ["Curripaco"] = "kpc", ["Cutchi-Swahili"] = "ccl", ["Cuvok"] = "cuv", ["Cuyamecalco Mixtec"] = "xtu", ["Tiếng Cuyunon"] = "cyo", ["Cwi Bwamu"] = "bwy", ["Czech Sign Language"] = "cse", ["Tiếng Cống"] = "cnc", ["Da'a Kaili"] = "kzf", ["Daai Chin"] = "dao", ["Daantanai'"] = "lni", ["Daba"] = "dbq", ["Dabe"] = "dbe", ["Dadanitic"] = "sem-dad", ["Dadi Dadi"] = "dda", ["Dadiya"] = "dbd", ["Daga"] = "dgz", ["Dagaari Dioula"] = "dgd", ["Dagba"] = "dgk", ["Dagik"] = "dec", ["Dagoman"] = "dgn", ["Daho-Doo"] = "das", ["Dai"] = "dij", ["Dair"] = "drb", ["Dairi Batak"] = "btd", ["Dakaka"] = "bpa", ["Dakka"] = "dkk", ["Dakpa"] = "dka", ["Daloa Bété"] = "bev", ["Dama (Nigeria)"] = "dmm", ["Dama (Sierra Leone)"] = "dmn-dam", ["Damakawa"] = "dam", ["Damal"] = "uhn", ["Dameli"] = "dml", ["Dampelas"] = "dms", ["Danaru"] = "dnr", ["Dandami Maria"] = "daq", ["Dangaura Tharu"] = "thl", ["Danish Sign Language"] = "dsl", ["Dano"] = "aso", ["Dao"] = "daz", ["Daonda"] = "dnd", ["Dar Daju Daju"] = "djc", ["Dar Fur Daju"] = "daj", ["Dar Sila Daju"] = "dau", ["Darai"] = "dry", ["Darkinjung"] = "xda", ["Darlong"] = "dln", ["Darmiya"] = "drd", ["Daro-Matu Melanau"] = "dro", ["Darumbal"] = "xgm", ["Dass"] = "dot", ["Datooga"] = "tcc", ["Daungwurrung"] = "dgw", ["Davawenyo"] = "daw", ["Dawawa"] = "dww", ["Dawera-Daweloor"] = "ddw", ["Day"] = "dai", ["Dayi"] = "dax", ["Dazaga"] = "dzg", ["Deccani"] = "dcc", ["Dedua"] = "ded", ["Defaka"] = "afn", ["Defi Gbe"] = "gbh", ["Deg"] = "mzw", ["Tiếng Deg Xinag"] = "ing", ["Degenan"] = "dge", ["Dehwari"] = "deh", ["Dek"] = "dek", ["Dela-Oenale"] = "row", ["Delo"] = "ntr", ["Delta Yokuts"] = "nai-dly", ["Dem"] = "dem", ["Dema"] = "dmx", ["Demisa"] = "dei", ["Demta"] = "dmy", ["Dena'ina"] = "tfn", ["Dendi"] = "ddn", ["Dengese"] = "dez", ["Dengka"] = "dnk", ["Deno"] = "dbb", ["Denya"] = "anv", ["Dení"] = "dny", ["Deori"] = "der", ["Desano"] = "des", ["Dewas Rai"] = "dwz", ["Dewoin"] = "dee", ["Dezfuli"] = "def", ["Dghwede"] = "dgh", ["Dhaiso"] = "dhs", ["Dhalandji"] = "dhl", ["Dhangu"] = "dhg", ["Dhao"] = "nfa", ["Tiếng Dharug"] = "xdk", ["Dhatki"] = "mki", ["Dhimal"] = "dhi", ["Dhofari Arabic"] = "adf", ["Dhudhuroa"] = "ddr", ["Dhungaloo"] = "dhx", ["Dhurga"] = "dhu", ["Dhuwal"] = "dwu", ["Dhuwaya"] = "dwy", ["Dia"] = "dia", ["Dibiyaso"] = "dby", ["Dibo"] = "dio", ["Dicamay Agta"] = "duy", ["Didinga"] = "did", ["Tiếng Dieri"] = "dif", ["Digo"] = "dig", ["Dii"] = "dur", ["Dijim-Bwilim"] = "cfa", ["Dilling"] = "dil", ["Dima"] = "jma", ["Tiếng Dimasa"] = "dis", ["Dimbong"] = "dii", ["Dime"] = "dim", ["Dinapigue Agta"] = "phi-din", ["Dineor"] = "mrx", ["Ding"] = "diz", ["Diodio"] = "ddi", ["Diri"] = "dwa", ["Dirim"] = "dir", ["Disa"] = "dsi", ["Diuwe"] = "diy", ["Diuxi-Tilantongo Mixtec"] = "xtd", ["Dixon Reef"] = "dix", ["Djadjawurrung"] = "dja", ["Djambarrpuyngu"] = "djr", ["Djangun"] = "djf", ["Djauan"] = "djn", ["Djawi"] = "djw", ["Djimini"] = "dyi", ["Djinang"] = "dji", ["Djinba"] = "djb", ["Djiwarli"] = "djl", ["Dobel"] = "kvo", ["Dobu"] = "dob", ["Doe"] = "doe", ["Doga"] = "dgg", ["Doghoro"] = "dgx", ["Dogoso"] = "dgs", ["Dogosé"] = "dos", ["Dogul Dom"] = "dbg", ["Doka"] = "dbi", ["Doko-Uyanga"] = "uya", ["Dom"] = "doa", ["Domaaki"] = "dmk", ["Dominican Sign Language"] = "doq", ["Dompo"] = "doy", ["Domu"] = "dof", ["Domung"] = "dev", ["Dondo"] = "dok", ["Dong"] = "doh", ["Dongo"] = "doo", ["Dongotono"] = "ddd", ["Dongshanba Lalo"] = "yik", ["Donno So Dogon"] = "dds", ["Doondo"] = "dde", ["Dorasque"] = "cba-dor", ["Dori'o"] = "dor", ["Dorig"] = "wwo", ["Doromu-Koki"] = "kqc", ["Dorze"] = "doz", ["Doso"] = "dol", ["Tiếng Doteli"] = "dty", ["Dothraki"] = "art-dtk", ["Doura"] = "don", ["Doutai"] = "tds", ["Doyayo"] = "dow", ["Drehu"] = "dhv", ["Duala"] = "dua", ["Duano"] = "dup", ["Duau"] = "dva", ["Dubu"] = "dmu", ["Dugun"] = "ndu", ["Duguri"] = "dbm", ["Dugwor"] = "dme", ["Duhwa"] = "kbz", ["Duit"] = "cba-dui", ["Duke"] = "nke", ["Dulbu"] = "dbo", ["Duli"] = "duz", ["Duma"] = "dma", ["Dumaitic"] = "sem-dum", ["Dumbea"] = "duf", ["Dumi"] = "dus", ["Dumpas"] = "dmv", ["Dumun"] = "dui", ["Duna"] = "duc", ["Dungmali"] = "raa", ["Dungu"] = "dbv", ["Tiếng Agta Dupaningan"] = "duo", ["Dura"] = "drq", ["Duri"] = "mvp", ["Duriankere"] = "dbn", ["Tiếng Duruwa"] = "pci", ["Dusner"] = "dsn", ["Dusun Deyah"] = "dun", ["Dusun Malang"] = "duq", ["Tiếng Dusun Witu"] = "duw", ["Tiếng Hạ Saxon Hà Lan"] = "nds-nl", ["Dutch Sign Language"] = "dse", ["Duupa"] = "dae", ["Duvle"] = "duv", ["Duwai"] = "dbp", ["Duwet"] = "gve", ["Dwang"] = "nnu", ["Dyaabugay"] = "dyy", ["Dyaberdyaber"] = "dyb", ["Dyan"] = "dya", ["Dyangadi"] = "dyn", ["Dyugun"] = "dyd", ["Tiếng Dyula"] = "dyu", ["Dza"] = "jen", ["Dzala"] = "dzl", ["Dzando"] = "dzn", ["Dzao Min"] = "bpn", ["Dzodinka"] = "add", ["Dâw"] = "kwa", ["Tiếng Ai"] = "eee", ["E'ma Buyang"] = "yzg", ["Tiếng Assam cận đại"] = "inc-oas", ["Early Modern Korean"] = "ko-ear", ["Early Tripuri"] = "xtr", ["East Damar"] = "dmr", ["East Franconian"] = "vmf", ["East Kewa"] = "kjs", ["East Limba"] = "lma", ["East Makian"] = "mky", ["East Masela"] = "vme", ["East Nyala"] = "nle", ["East Tarangan"] = "tre", ["Eastern Acipa"] = "acp", ["Tiếng Arrernte Đông"] = "aer", ["Eastern Bolivian Guaraní"] = "gui", ["Eastern Canadian Inuktitut"] = "ike", ["Eastern Durango Nahuatl"] = "azd", ["Eastern Gurung"] = "ggn", ["Eastern Highland Chatino"] = "cly", ["Eastern Highland Otomi"] = "otm", ["Eastern Huasteca Nahuatl"] = "nhe", ["Eastern Huishui Hmong"] = "hme", ["Eastern Karaboro"] = "xrb", ["Eastern Kayah"] = "eky", ["Eastern Keres"] = "kee", ["Eastern Krahn"] = "kqo", ["Eastern Lalu"] = "yit", ["Eastern Maninkakan"] = "emk", ["Eastern Meohang"] = "emg", ["Eastern Muria"] = "emu", ["Eastern Ngad'a"] = "nea", ["Eastern Nisu"] = "nos", ["Eastern Ojibwa"] = "ojg", ["Eastern Penan"] = "pez", ["Eastern Pomo"] = "peb", ["Eastern Qiandong Miao"] = "hmq", ["Eastern Subanun"] = "sfe", ["Eastern Tawbuid"] = "bnj", ["Eastern Xiangxi Miao"] = "muq", ["Eastern Xwla Gbe"] = "gbx", ["Ebira"] = "igb", ["Ecuadorian Sign Language"] = "ecs", ["Ede Cabe"] = "cbj", ["Ede Ica"] = "ica", ["Ede Ije"] = "ijj", ["Edera Awyu"] = "awy", ["Edolo"] = "etr", ["Edomite"] = "xdm", ["Edopi"] = "dbf", ["Efutop"] = "ofu", ["Egyptian Sign Language"] = "esl", ["Ejamat"] = "eja", ["Ekajuk"] = "eka", ["Ekari"] = "ekg", ["Ekele"] = "khy", ["Eki"] = "eki", ["Ekit"] = "eke", ["Ekpeye"] = "ekp", ["El Alto Zapotec"] = "zpp", ["El Hugeirat"] = "elh", ["Eleme"] = "elm", ["Elepi"] = "ele", ["Elip"] = "ekm", ["Elkei"] = "elk", ["Eloi"] = "art-elo", ["Elotepec Zapotec"] = "zte", ["Eloyi"] = "afo", ["Elseng"] = "mrf", ["Elu"] = "elu", ["Emae"] = "mmw", ["Emai"] = "ema", ["Eman"] = "emn", ["Embaloh"] = "emb", ["Emberá-Baudó"] = "bdc", ["Emberá-Catío"] = "cto", ["Emem"] = "enr", ["Emerillon"] = "eme", ["Emplawas"] = "emw", ["Enawené-Nawé"] = "unk", ["Ende"] = "end", ["Enga"] = "enq", ["Enggano"] = "eno", ["Enlhet"] = "enl", ["Enrekang"] = "ptt", ["Enu"] = "enu", ["Enwan"] = "env", ["Enwang"] = "enw", ["Enxet"] = "enx", ["Enya"] = "gey", ["Epena"] = "sja", ["Epi-Olmec"] = "xep", ["Epigraphic Mayan"] = "emy", ["Eravallan"] = "era", ["Erave"] = "kjy", ["Ere"] = "twp", ["Erie"] = "iro-ere", ["Eritai"] = "ert", ["Erokwanas"] = "erw", ["Erre"] = "err", ["Erromintxela"] = "emx", ["Eruwa"] = "erh", ["Ese Ejja"] = "ese", ["Eshtehardi"] = "esh", ["Eskayan"] = "esy", ["Esmeralda"] = "sai-esm", ["Esselen"] = "esq", ["Estado de México Otomi"] = "ots", ["Estonian Sign Language"] = "eso", ["Esuma"] = "esm", ["Etchemin"] = "etc", ["Etebi"] = "etb", ["Eten"] = "etx", ["Eteocypriot"] = "ecy", ["Ethiopian Sign Language"] = "eth", ["Etkywan"] = "ich", ["Eton (Cameroon)"] = "eto", ["Eton (Vanuatu)"] = "etn", ["Etulo"] = "utr", ["Evant"] = "bzz", ["Ewage-Notu"] = "nou", ["Ewarhuyana"] = "sai-ewa", ["Ewondo"] = "ewo", ["Extremaduran"] = "ext", ["Eyak"] = "eya", ["Ezaa"] = "eza", ["Fagani"] = "faf", ["Faire Atta"] = "azt", ["Faita"] = "faj", ["Faiwol"] = "fai", ["Fakkanci"] = "gel", ["Falam Chin"] = "cfm", ["Fali"] = "fli", ["Fam"] = "fam", ["Tiếng Fanagalo"] = "fng", ["Fanamaket"] = "bjp", ["Fang (Bantu)"] = "fan", ["Fang (Beboid)"] = "fak", ["Fania"] = "fni", ["Far Western Muria"] = "fmu", ["Fas"] = "fqs", ["Fasu"] = "faa", ["Fataleka"] = "far", ["Fataluku"] = "ddg", ["Fayu"] = "fau", ["Fedan"] = "pdn", ["Fembe"] = "agl", ["Fer"] = "kah", ["Feroge"] = "fer", ["Filomena Mata-Coahuitlán Totonac"] = "tlp", ["Finisterre Yau"] = "yuw", ["Finnish Sign Language"] = "fse", ["Finnish-Swedish Sign Language"] = "fss", ["Finongan"] = "fag", ["Fipa"] = "fip", ["Firan"] = "fir", ["Fiwaga"] = "fiw", ["Flemish Sign Language"] = "vgt", ["Flinders Island"] = "fln", ["Foau"] = "flh", ["Tiếng Foi"] = "foi", ["Foia Foia"] = "ffi", ["Folopa"] = "ppo", ["Foma"] = "fom", ["Fongoro"] = "fgr", ["Foodo"] = "fod", ["Forak"] = "frq", ["Fordata"] = "frd", ["Fore"] = "for", ["Forest Nenets"] = "syd-fne", ["Fortsenal"] = "frt", ["Franc-Comtois"] = "roa-fcm", ["Francisco León Zoque"] = "zos", ["French Belgian Sign Language"] = "sfb", ["French Sign Language"] = "fsl", ["Fuliiru"] = "flr", ["Fulniô"] = "fun", ["Fum"] = "fum", ["Fungwa"] = "ula", ["Furu"] = "fuu", ["Futuna-Aniwa"] = "fut", ["Fuyug"] = "fuy", ["Fwe"] = "fwe", ["Fwâi"] = "fwa", ["Fyam"] = "pym", ["Fyer"] = "fie", ["Ga'anda"] = "gqa", ["Ga'dang"] = "gdg", ["Gaa"] = "ttb", ["Gaam"] = "tbi", ["Gabadi"] = "kbt", ["Gabi"] = "gbw", ["Gabrielino-Fernandeño"] = "xgf", ["Gadang"] = "gdk", ["Gaddi"] = "gbk", ["Gade"] = "ged", ["Gadjerawang"] = "gdh", ["Gadsup"] = "gaj", ["Gafat"] = "gft", ["Gagadu"] = "gbu", ["Gagnoa Bété"] = "btg", ["Gahri"] = "bfu", ["Gaikundi"] = "gbf", ["Gaina"] = "gcn", ["Gal"] = "gap", ["Galambu"] = "glo", ["Galela"] = "gbi", ["Galeya"] = "gar", ["Galice"] = "gce", ["Galindian"] = "xgl", ["Gallaecian"] = "cel-gal", ["Tiếng Gallo"] = "roa-gal", ["Tiếng Gallura"] = "sdn", ["Tiếng Galo"] = "adl", ["Galoli"] = "gal", ["Gambera"] = "gma", ["Gamela"] = "sai-gam", ["Tiếng Gamilaraay"] = "kld", ["Gamkonora"] = "gak", ["Gamo-Ningi"] = "bte", ["Gana"] = "gnq", ["Ganang"] = "gne", ["Gane"] = "gzn", ["Ganggalida"] = "gcd", ["Ganglau"] = "ggl", ["Gangte"] = "gnb", ["Gangulu"] = "gnl", ["Gants"] = "gao", ["Ganzi"] = "gnz", ["Gao"] = "gga", ["Gapapaiwa"] = "pwg", ["Garawa"] = "wrk", ["Garhwali"] = "gbm", ["Tiếng Garifuna"] = "cab", ["Garingbal"] = "xgi", ["Garus"] = "gyb", ["Garza"] = "xgr", ["Gashowu"] = "nai-gsy", ["Gaulish"] = "cel-gau", ["Gavak"] = "dmc", ["Gavar"] = "gou", ["Gavião do Jiparaná"] = "gvo", ["Tiếng Gawwada"] = "gwd", ["Tiếng Gayil"] = "gyl", ["Gayo"] = "gay", ["Gayón"] = "sai-gay", ["Gbagyi"] = "gbr", ["Gban"] = "ggu", ["Gbanu"] = "gbv", ["Gbanziri"] = "gbg", ["Gbari"] = "gby", ["Gbaya"] = "gba", ["Gbaya-Bossangoa"] = "gbp", ["Gbaya-Bozoum"] = "gbq", ["Gbaya-Mbodomo"] = "gmm", ["Gbayi"] = "gyg", ["Gbesi Gbe"] = "gbs", ["Gbii"] = "ggb", ["Gbin"] = "xgb", ["Tiếng Gbiri-Niragu"] = "grh", ["Gboloo Grebo"] = "gec", ["Gciriku"] = "diu", ["Gcwi"] = "gwj", ["Ge"] = "hmj", ["Gebe"] = "gei", ["Gedaged"] = "gdd", ["Geji"] = "gji", ["Gela"] = "nlg", ["Gelao"] = "gio", ["Gele'"] = "sbc", ["Geme"] = "geq", ["Gen"] = "gej", ["Gende"] = "gaf", ["Gengle"] = "geg", ["Gepo"] = "ygp", ["Gera"] = "gew", ["German Sign Language"] = "gsg", ["Geruma"] = "gea", ["Geser-Gorom"] = "ges", ["Gey"] = "guv", ["Ghanaian Sign Language"] = "gse", ["Ghandruk Sign Language"] = "gds", ["Ghanongga"] = "ghn", ["Ghari"] = "gri", ["Ghayavi"] = "bmk", ["Ghera"] = "ghr", ["Ghomara"] = "gho", ["Tiếng Ghotuo"] = "aaa", ["Ghulfan"] = "ghl", ["Giangan"] = "bgi", ["Gibanawa"] = "gib", ["Gidar"] = "gid", ["Gikyode"] = "acd", ["Gilima"] = "gix", ["Gimi (Austronesian)"] = "gip", ["Gimme"] = "kmp", ["Gimnime"] = "gmn", ["Ginuman"] = "gnm", ["Girawa"] = "bbr", ["Giryama"] = "nyf", ["Githabul"] = "gih", ["Gitua"] = "ggt", ["Gitxsan"] = "git", ["Giyug"] = "giy", ["Gizrra"] = "tof", ["Glaro-Twabo"] = "glr", ["Glavda"] = "glw", ["Glio-Oubi"] = "oub", ["Gnau"] = "gnu", ["Goa'uld"] = "art-gld", ["Goaria"] = "gig", ["Gobasi"] = "goi", ["Gobu"] = "gox", ["Godié"] = "god", ["Godwari"] = "gdx", ["Goemai"] = "ank", ["Gogo"] = "gog", ["Gogodala"] = "ggw", ["Gojri"] = "gju", ["Gokana"] = "gkn", ["Gokhy"] = "sit-gkh", ["Gola"] = "gol", ["Golin"] = "gvf", ["Golpa"] = "lja", ["Gondi"] = "gon", ["Gongduk"] = "goe", ["Gonja"] = "gjn", ["Goo"] = "gov", ["Tiếng Gooniyandi"] = "gni", ["Gor"] = "gqr", ["Gorakor"] = "goc", ["Gorap"] = "goq", ["Goreng"] = "xgg", ["Tiếng Gorontalo"] = "gor", ["Gorovu"] = "grq", ["Gottscheerish"] = "gmw-gts", ["Goundo"] = "goy", ["Gourmanchéma"] = "gux", ["Gowlan"] = "goj", ["Gowro"] = "gwf", ["Gozarkhani"] = "goz", ["Grangali"] = "nli", ["Grass Koiari"] = "kbk", ["Grebo"] = "grb", ["Greek Sign Language"] = "gss", ["Green Gelao"] = "giq", ["Green Hmong"] = "hnj", ["Grenadian Creole English"] = "gcl", ["Gresi"] = "grs", ["Groma"] = "gro", ["Gros Ventre"] = "ats", ["Gua"] = "gwx", ["Guahibo"] = "guh", ["Guambiano"] = "gum", ["Guamo"] = "sai-gmo", ["Guanano"] = "gvc", ["Guatemalan Sign Language"] = "gsm", ["Guató"] = "gta", ["Guayabero"] = "guo", ["Guazacapán"] = "nai-guz", ["Gudang"] = "xgd", ["Gudanji"] = "nji", ["Gude"] = "gde", ["Gudu"] = "gdu", ["Guduf-Gava"] = "gdf", ["Guerrero Nahuatl"] = "ngu", ["Guevea de Humboldt Zapotec"] = "zpg", ["Gugadj"] = "ggd", ["Gugu Badhun"] = "gdc", ["Gugu Warra"] = "wrw", ["Guhu-Samane"] = "ghs", ["Guianese Creole"] = "gcr", ["Guiberoua Bété"] = "bet", ["Guinau"] = "awd-gnu", ["Guinea Kpelle"] = "gkp", ["Guinea-Bissau Creole"] = "pov", ["Guinea-Bissau Sign Language"] = "lgs", ["Guinean Sign Language"] = "gus", ["Guiqiong"] = "gqi", ["Gula"] = "glu", ["Gula'alaa"] = "gmb", ["Gule"] = "gly", ["Gullah"] = "gul", ["Gumalu"] = "gmu", ["Gumatj"] = "gnn", ["Gumawana"] = "gvs", ["Gundi"] = "gdi", ["Gunditjmara"] = "gjm", ["Gundungurra"] = "xrd", ["Gungabula"] = "gyf", ["Gungu"] = "rub", ["Guntai"] = "gnt", ["Gunu"] = "yas", ["Gunwinggu"] = "gup", ["Gunya"] = "gyy", ["Gupa-Abawa"] = "gpa", ["Gupapuyngu"] = "guf", ["Gur Lama"] = "las", ["Guragone"] = "gge", ["Guramalum"] = "grz", ["Tiếng Goran"] = "hac", ["Gureng Gureng"] = "gnr", ["Gurgula"] = "ggg", ["Guriaso"] = "grx", ["Gurindji"] = "gue", ["Gurjar Apabhramsa"] = "inc-gup", ["Gurmana"] = "gvm", ["Guro"] = "goa", ["Guruntum"] = "grd", ["Gusan"] = "gsn", ["Gusii"] = "guz", ["Gusilay"] = "gsl", ["Gutnish"] = "gmq-gut", ["Guwa"] = "xgw", ["Guwamu"] = "gwu", ["Guwar"] = "aus-guw", ["Guya"] = "gka", ["Guyanese Creole English"] = "gyn", ["Guyani"] = "gvy", ["Guébie"] = "gie", ["Gvoko"] = "ngs", ["Gwa"] = "gwb", ["Gwahatike"] = "dah", ["Gwak"] = "jgk", ["Gwamhi-Wuri"] = "bga", ["Gwandara"] = "gwn", ["Gwara"] = "alv-gwa", ["Gweda"] = "grw", ["Gweno"] = "gwe", ["Gwere"] = "gwr", ["Gyalsumdo"] = "gyo", ["Gyele"] = "gyi", ["Gyem"] = "gye", ["Güenoa"] = "sai-gue", ["Habu"] = "hbu", ["Hadothi"] = "hoj", ["Hadrami"] = "xhd", ["Hadza"] = "hts", ["Haeke"] = "aek", ["Hahon"] = "hah", ["Haigwai"] = "hgw", ["Hainyaxo Bozo"] = "bzx", ["Haiphong Sign Language"] = "haf", ["Haisla"] = "has", ["Haitian Vodoun Culture Language"] = "hvc", ["Haiǁom"] = "hgm", ["Haji"] = "hji", ["Hakö"] = "hao", ["Halang Doan"] = "hld", ["Halia"] = "hla", ["Hamap"] = "hmu", ["Hamba"] = "hba", ["Hamtai"] = "hmt", ["Hanga"] = "hag", ["Hanga Hundi"] = "wos", ["Hanoi Sign Language"] = "hab", ["Harami"] = "xha", ["Haraza"] = "nub-har", ["Harijan Kinnauri"] = "kjo", ["Tiếng Harsusi"] = "hss", ["Haruai"] = "tmd", ["Haruku"] = "hrk", ["Haryanvi"] = "bgc", ["Harzani"] = "hrz", ["Hasaitic"] = "sem-has", ["Hasha"] = "ybj", ["Hassaniya Arabic"] = "mey", ["Hatam"] = "had", ["Hausa Sign Language"] = "hsl", ["Haveke"] = "hvk", ["Havu"] = "hav", ["Hawai'i Pidgin Sign Language"] = "hps", ["Hawaiian Creole"] = "hwc", ["Haya"] = "hay", ["Hdi"] = "xed", ["Hehe"] = "heh", ["Heiban"] = "hbn", ["Helong"] = "heg", ["Helu"] = "elu-prk", ["Hema"] = "nix", ["Hemba"] = "hem", ["Herdé"] = "hed", ["Hermit"] = "llf", ["Tiếng Hernici"] = "xhr", ["Hewa"] = "ham", ["Heyo"] = "auk", ["Hibito"] = "hib", ["Hidatsa"] = "hid", ["Highland Konjo"] = "kjk", ["Highland Oaxaca Chontal"] = "chd", ["Highland Puebla Nahuatl"] = "azz", ["Tiếng Totonac cao nguyên"] = "tos", ["Hijuk"] = "hij", ["Hill Maria"] = "mrr", ["Himarimã"] = "hir", ["Himyaritic"] = "sem-him", ["Hindi Dogri"] = "dgo", ["Hinduri"] = "hii", ["Hinukh"] = "gin", ["Hismaic"] = "sem-his", ["Hitchiti"] = "nai-hit", ["Hitu"] = "htu", ["Hiw"] = "hiw", ["Hixkaryana"] = "hix", ["Hlepho Phowa"] = "yhl", ["Hlersu"] = "hle", ["Hmar"] = "hmr", ["Hmong Dô"] = "hmv", ["Hmong Shua"] = "hmz", ["Hmwaveke"] = "mrk", ["Ho Chi Minh City Sign Language"] = "hos", ["Hobyót"] = "hoh", ["Hoia Hoia"] = "hhi", ["Holikachuk"] = "hoi", ["Holiya"] = "hoy", ["Holma"] = "hod", ["Holoholo"] = "hoo", ["Holu"] = "hol", ["Homa"] = "hom", ["Honduran Lenca"] = "len", ["Honduras Sign Language"] = "hds", ["Hone"] = "juh", ["Hong Kong Sign Language"] = "hks", ["Honi"] = "how", ["Tiếng Hopi"] = "hop", ["Horned Miao"] = "hrm", ["Horo"] = "hor", ["Horom"] = "hoe", ["Hote"] = "hot", ["Hoti"] = "hti", ["Hovongan"] = "hov", ["Hoyahoya"] = "hhy", ["Hrangkhol"] = "hra", ["Hruso"] = "hru", ["Huachipaeri"] = "hug", ["Huambisa"] = "hub", ["Huaorani"] = "auc", ["Huarijio"] = "var", ["Huaulu"] = "hud", ["Huautla Mazatec"] = "mau", ["Huave"] = "huv", ["Huaxcaleca Nahuatl"] = "nhq", ["Huba"] = "hbb", ["Huehuetla Tepehua"] = "tee", ["Huetar"] = "cba-hue", ["Huichol"] = "hch", ["Huilliche"] = "huh", ["Huitepec Mixtec"] = "mxs", ["Hukumina"] = "huw", ["Hula"] = "hul", ["Huli"] = "hui", ["Hulung"] = "huk", ["Humburi Senni"] = "hmb", ["Humene"] = "huf", ["Hun"] = "uth", ["Hunde"] = "hke", ["Hungana"] = "hum", ["Hungarian Sign Language"] = "hsh", ["Hungworo"] = "nat", ["Hunjara-Kaina Ke"] = "hkk", ["Hunnic"] = "xhc", ["Hupdë"] = "jup", ["Hupla"] = "hap", ["Hutterisch"] = "geh", ["Hwana"] = "hwo", ["Hya"] = "hya", ["Hän"] = "haa", ["Hértevin"] = "hrt", ["I-Wak"] = "iwk", ["Iamalele"] = "yml", ["Iatmul"] = "ian", ["Iau"] = "tmu", ["Ibali Teke"] = "tek", ["Tiếng Ibanag"] = "ibg", ["Ibani"] = "iby", ["Iberian"] = "xib", ["Iboko"] = "bkp", ["Ibu"] = "ibu", ["Icelandic Sign Language"] = "icl", ["Iceve-Maci"] = "bec", ["Tiếng Ida'an"] = "dbj", ["Idakho-Isukha-Tiriki"] = "ida", ["Idaté"] = "idt", ["Idere"] = "ide", ["Idesa"] = "ids", ["Idi"] = "idi", ["Idoma"] = "idu", ["Idon"] = "idc", ["Tiếng Idu"] = "clk", ["Idun"] = "ldb", ["Iduna"] = "viv", ["Ifo"] = "iff", ["Igana"] = "igg", ["Igede"] = "ige", ["Ignaciano"] = "ign", ["Igo"] = "ahl", ["Iguta"] = "nar", ["Igwe"] = "igw", ["Iha"] = "ihp", ["Ihievbe"] = "ihi", ["Ija-Zuba"] = "vki", ["Ik"] = "ikx", ["Ika"] = "ikk", ["Ikaranggal"] = "ikr", ["Ikizu"] = "ikz", ["Iko"] = "iki", ["Ikobi-Mena"] = "meb", ["Ikoma"] = "ntk", ["Ikpeng"] = "txi", ["Ikpeshi"] = "ikp", ["Ikposo"] = "kpo", ["Iku-Gora-Ankwa"] = "ikv", ["Ikulu"] = "ikl", ["Ikwo"] = "iqw", ["Ila"] = "ilb", ["Ile Ape"] = "ila", ["Ilgar"] = "ilg", ["Ili'uun"] = "ilu", ["Ilianen Manobo"] = "mbi", ["Illyrian"] = "xil", ["Ilongot"] = "ilk", ["Ilue"] = "ilv", ["Ilwana"] = "mlk", ["Imbongu"] = "imo", ["Imonda"] = "imn", ["Imroing"] = "imr", ["Inabaknon"] = "abx", ["Inapang"] = "mzu", ["Indanga"] = "bnt-ind", ["Indian Sign Language"] = "ins", ["Indonesian Bajau"] = "bdl", ["Indonesian Sign Language"] = "inl", ["Indri"] = "idr", ["Indus Valley Language"] = "xiv", ["Inebu One"] = "oin", ["Ineseño"] = "inz", ["Inga"] = "inb", ["Inlaod Itneg"] = "iti", ["Inoke-Yate"] = "ino", ["Inonhan"] = "loc", ["Inpui Naga"] = "nkf", ["International Sign"] = "ils", ["Inuinnaqtun"] = "esx-inq", ["Inuit Sign Language"] = "iks", ["Inuktun"] = "esx-ink", ["Inuvialuktun"] = "ikt", ["Ipai"] = "nai-ipa", ["Ipalapa Amuzgo"] = "azm", ["Ipiko"] = "ipo", ["Ipili"] = "ipi", ["Ipulo"] = "ass", ["Iquito"] = "iqu", ["Ir"] = "irr", ["Irantxe"] = "irn", ["Iranun"] = "ill", ["Tiếng Ả Rập Iraq"] = "acm", ["Irarutu"] = "irh", ["Iraya"] = "iry", ["Iresim"] = "ire", ["Iriga Bicolano"] = "bto", ["Irish Sign Language"] = "isg", ["Tiếng Irula"] = "iru", ["Isabi"] = "isa", ["Isanzu"] = "isn", ["Isarog Agta"] = "agk", ["Isaurian"] = "und-isa", ["Isconahua"] = "isc", ["Isebe"] = "igo", ["Ishkashimi"] = "isk", ["Isinai"] = "inn", ["Isirawa"] = "srl", ["Islander Creole English"] = "icr", ["Israeli Sign Language"] = "isr", ["Isthmus Mixe"] = "mir", ["Tiếng Zapotec Isthmus"] = "zai", ["Isu"] = "isu", ["Isubu"] = "szv", ["Italian Sign Language"] = "ise", ["Itawit"] = "itv", ["Itene"] = "ite", ["Iteri"] = "itr", ["Itik"] = "itx", ["Ito"] = "itw", ["Itundujia Mixtec"] = "mce", ["Itzá"] = "itz", ["Iwal"] = "kbm", ["Iwam"] = "iwm", ["Iwur"] = "iwo", ["Ixcatec"] = "ixc", ["Ixcatlán Mazatec"] = "mzi", ["Ixtayutla Mixtec"] = "vmj", ["Ixtenco Otomi"] = "otz", ["Iyayu"] = "iya", ["Iyive"] = "uiv", ["Iyo"] = "nca", ["Iyo'wujwa Chorote"] = "crq", ["Iyojwa'ja Chorote"] = "crt", ["Izere"] = "izr", ["Izi"] = "izz", ["Izi-Ezaa-Ikwo-Mgbo"] = "izi", ["Tiếng Izon"] = "ijc", ["Izora"] = "cbo", ["Iñapari"] = "inp", ["Jabem"] = "jae", ["Jabutí"] = "jbt", ["Jad"] = "jda", ["Jadgali"] = "jdg", ["Jahanka"] = "jad", ["Jair Awyu"] = "awv", ["Jakati"] = "jat", ["Jalapa de Díaz Mazatec"] = "maj", ["Jalkunan"] = "bxl", ["Jamaican Country Sign Language"] = "jcs", ["Jamaican Sign Language"] = "jls", ["Jambi Malay"] = "jax", ["Jamiltepec Mixtec"] = "mxt", ["Jaminjung"] = "djd", ["Jamsay"] = "djm", ["Jamtish"] = "gmq-jmk", ["Jandavra"] = "jnd", ["Janday"] = "jan", ["Jangkang"] = "djo", ["Jangshung"] = "jna", ["Janji"] = "jni", ["Japanese Sign Language"] = "jsl", ["Japrería"] = "jru", ["Jara"] = "jaf", ["Jaru"] = "ddj", ["Jassic"] = "ysc", ["Jaunsari"] = "jns", ["Jawe"] = "jaz", ["Jaya"] = "jyy", ["Jebero"] = "jeb", ["Jeikó"] = "sai-jko", ["Tiếng Jemez"] = "tow", ["Jenaama Bozo"] = "bze", ["Jeng"] = "jeg", ["Jennu Kurumba"] = "xuj", ["Jere"] = "jer", ["Jeri Kuo"] = "jek", ["Jerung"] = "jee", ["Jhankot Sign Language"] = "jhs", ["Jiamao"] = "jio", ["Jiba"] = "juo", ["Jibu"] = "jib", ["Tiếng Jicarilla"] = "apj", ["Jilbe"] = "jie", ["Jili"] = "mgi", ["Jilim"] = "jil", ["Jimi"] = "jmi", ["Jimjimen"] = "jim", ["Tiếng Tấn"] = "cjy", ["Jina"] = "jia", ["Jingulu"] = "jig", ["Jiongnai Bunu"] = "pnu", ["Jirajara"] = "sai-jrj", ["Jirel"] = "jul", ["Jiru"] = "jrr", ["Jita"] = "jit", ["Jju"] = "kaj", ["Joba"] = "job", ["Jofotek-Bromnya"] = "jbr", ["Jola-Fonyi"] = "dyo", ["Jola-Kasa"] = "csk", ["Jonkor Bourmataguil"] = "jeu", ["Jordanian Sign Language"] = "jos", ["Jorá"] = "jor", ["Jowulu"] = "jow", ["Ju"] = "juu", ["Jukun Takum"] = "jbu", ["Tiếng Jumaytepeque"] = "nai-jum", ["Jumla Sign Language"] = "jus", ["Jumli"] = "jml", ["Jungle Inga"] = "inj", ["Juquila Mixe"] = "mxq", ["Jur Modo"] = "bex", ["Tiếng Juray"] = "juy", ["Jurúna"] = "jur", ["Jutiapa"] = "nai-jtp", ["Juwal"] = "mwb", ["Juxtlahuaca Mixtec"] = "vmc", ["Jwira-Pepesa"] = "jwi", ["Júma"] = "jua", ["Kaamba"] = "xku", ["Kaan"] = "ldl", ["Kaang Chin"] = "ckn", ["Kaansa"] = "gna", ["Kaapor Sign Language"] = "uks", ["Kaba"] = "ksp", ["Kabalai"] = "kvf", ["Kabatei"] = "xkp", ["Kabba-Laka"] = "lap", ["Kabishiana"] = "tup-kab", ["Kabola"] = "klz", ["Kabore One"] = "onk", ["Kabras"] = "lkb", ["Kaburi"] = "uka", ["Kabutra"] = "kbu", ["Tiếng Kabuverdianu"] = "kea", ["Kabwa"] = "cwa", ["Kabwari"] = "kcw", ["Tiếng Kachama-Ganjule"] = "kcx", ["Kachari"] = "xac", ["Kachi Koli"] = "gjk", ["Kacipo-Balesi"] = "koe", ["Kaco'"] = "xkk", ["Kadai"] = "kzd", ["Kadar"] = "kej", ["Kadara"] = "kad", ["Kadaru"] = "kdu", ["Kadiwéu"] = "kbc", ["Kado"] = "kdv", ["Kadugli"] = "xtc", ["Kaduo"] = "ktp", ["Kaera"] = "jka", ["Kafoa"] = "kpu", ["Kagan Kalagan"] = "kll", ["Kagate"] = "syw", ["Tiếng Kagayanen"] = "cgc", ["Kagoma"] = "kdm", ["Kagoro"] = "xkg", ["Kagulu"] = "kki", ["Kahe"] = "hka", ["Kahua"] = "agw", ["Kaian"] = "kct", ["Kaibobo"] = "kzb", ["Kaidipang"] = "kzp", ["Kaiep"] = "kbw", ["Kaikadi"] = "kep", ["Kaike"] = "kzq", ["Kaiku"] = "kkq", ["Kaimbulawa"] = "zka", ["Kaimbé"] = "xai", ["Kairak"] = "ckr", ["Kairiru"] = "kxa", ["Kairui-Midiki"] = "krd", ["Kais"] = "kzm", ["Kaivi"] = "kce", ["Kaiwá"] = "kgk", ["Kaiy"] = "tcq", ["Kajakse"] = "ckq", ["Kajali"] = "xkj", ["Kajaman"] = "kag", ["Kakabe"] = "kke", ["Kakanda"] = "kka", ["Tiếng Kaki Ae"] = "tbd", ["Kakihum"] = "kxe", ["Kako"] = "kkj", ["Kakwa"] = "keo", ["Kala"] = "kcl", ["Kala Lagaw Ya"] = "mwp", ["Kalaamaya"] = "lkm", ["Kalabakan"] = "kve", ["Kalabari"] = "ijn", ["Kalabra"] = "kzz", ["Kalagan"] = "kqe", ["Kalaktang Monpa"] = "kkf", ["Kalam"] = "kmh", ["Kalamsé"] = "knz", ["Kalanadi"] = "wkl", ["Kalanga"] = "kck", ["Kalapuya"] = "kyl", ["Kalarko"] = "kba", ["Kalasuri"] = "xme-kls", ["Kalenjin"] = "kln", ["Kalinago"] = "crb", ["Kalkatungu"] = "ktg", ["Kalkoti"] = "xka", ["Kalou"] = "ywa", ["Kaluli"] = "bco", ["Kalumpang"] = "kli", ["Kam"] = "kdx", ["Kamakan"] = "vkm", ["Kamang"] = "woi", ["Kamano"] = "kbq", ["Kamantan"] = "kci", ["Kamar"] = "keq", ["Kamara"] = "jmr", ["Kamarian"] = "kzx", ["Kamaru"] = "kgx", ["Kamarupi Prakrit"] = "inc-kam", ["Kamasa"] = "klp", ["Kamasau"] = "kms", ["Tiếng Kamayo"] = "kyk", ["Kamayurá"] = "kay", ["Kamba"] = "kam", ["Kambaira"] = "kyy", ["Tiếng Kambera"] = "xbr", ["Kamberataro"] = "kbv", ["Kamberau"] = "irx", ["Kambiwá"] = "xbw", ["Kami"] = "kmi", ["Kamkata-viri"] = "bsh", ["Kamo"] = "kcq", ["Kamoro"] = "kgq", ["Kamu"] = "xmu", ["Tiếng Kamula"] = "xla", ["Kamwe"] = "hig", ["Kanakuru"] = "kna", ["Kanamari"] = "knm", ["Kanashi"] = "xns", ["Kanasi"] = "soq", ["Kandas"] = "kqw", ["Kandawo"] = "gam", ["Kande"] = "kbs", ["Kang"] = "kyp", ["Kanga"] = "kcp", ["Kanggape"] = "igm", ["Kango"] = "kty", ["Kango-Sua"] = "kzy", ["Kangri"] = "xnr", ["Kaniet"] = "ktk", ["Kanikkaran"] = "kev", ["Kaningdon-Nindem"] = "kdp", ["Kaningi"] = "kzo", ["Kaningra"] = "knr", ["Kaninuwa"] = "wat", ["Kanite"] = "kmu", ["Kanjari"] = "kft", ["Kanju"] = "kbe", ["Tiếng Kankanaey"] = "kne", ["Kannada Kurumba"] = "kfi", ["Kanowit"] = "kxn", ["Kanoé"] = "kxo", ["Kansa"] = "ksk", ["Kantosi"] = "xkt", ["Kanu"] = "khx", ["Kanufi"] = "kni", ["Kanyok"] = "kny", ["Kao"] = "kax", ["Kaonde"] = "kqn", ["Kap"] = "ykm", ["Kapauri"] = "khp", ["Kapin"] = "tbx", ["Kapinawá"] = "xpn", ["Kapriman"] = "dju", ["Kaptiau"] = "kbi", ["Kapya"] = "klo", ["Tiếng Kaqchikel"] = "cak", ["Kara (New Guinea)"] = "leu", ["Kara (Tanzania)"] = "reg", ["Karadjeri"] = "gbd", ["Karaga Mandaya"] = "mry", ["Karami"] = "xar", ["Karamojong"] = "kdj", ["Karang"] = "kzr", ["Karanga"] = "kth", ["Karankawa"] = "zkk", ["Karas"] = "kgv", ["Karawa"] = "xrw", ["Kare (Africa)"] = "kbn", ["Kare (New Guinea)"] = "kmf", ["Tiếng Karekare"] = "kai", ["Karey"] = "kyd", ["Kari"] = "kbj", ["Karingani"] = "kgn", ["Karipuna"] = "kuq", ["Karipúna"] = "kgm", ["Karipúna Creole French"] = "kmv", ["Tiếng Kariri"] = "kzw", ["Tiếng Karitiâna"] = "ktn", ["Kariya"] = "kil", ["Kariyarra"] = "vka", ["Karkar-Yuri"] = "yuj", ["Karkin"] = "krb", ["Karko"] = "kko", ["Karnai"] = "bbv", ["Karo"] = "kxh", ["Karo Batak"] = "btx", ["Karok"] = "kyh", ["Karolanos"] = "kyn", ["Karon"] = "krx", ["Karon Dori"] = "kgw", ["Karore"] = "xkx", ["Karranga"] = "xrq", ["Karuwali"] = "rxw", ["Kasanga"] = "ccj", ["Kasem"] = "xsm", ["Kasiguranin"] = "ksn", ["Kaska"] = "kkz", ["Kaskean"] = "zsk", ["Kaskihá"] = "gva", ["Kassite"] = "und-kas", ["Kassonke"] = "kao", ["Kasua"] = "khs", ["Kataang"] = "kgd", ["Katabaga"] = "ktq", ["Katawixi"] = "xat", ["Katembri"] = "sai-kat", ["Kathlamet"] = "nai-kat", ["Kathoriya Tharu"] = "tkt", ["Kathu"] = "ykt", ["Katkari"] = "kfu", ["Katla"] = "kcr", ["Kato"] = "ktw", ["Katso"] = "kaf", ["Katukina"] = "knt", ["Kaulong"] = "pss", ["Kaur"] = "vkk", ["Kaure"] = "bpp", ["Tiếng Kaurna"] = "zku", ["Kauwera"] = "xau", ["Kawacha"] = "kcb", ["Kawaiisu"] = "xaw", ["Kawe"] = "kgb", ["Kawishana"] = "awd-kaw", ["Kaxararí"] = "ktx", ["Kaxuyana"] = "kbb", ["Kaya"] = "zra", ["Kayabí"] = "kyz", ["Kayagar"] = "kyt", ["Kayan"] = "pdu", ["Kayan Mahakam"] = "xay", ["Kayan River Kayan"] = "xkn", ["Tiếng Kalanguya"] = "kak", ["Kayardild"] = "gyd", ["Kayeli"] = "kzl", ["Kaytetye"] = "gbb", ["Kayupulau"] = "kzu", ["Kazukuru"] = "kzk", ["Ke'o"] = "xxk", ["Keak"] = "keh", ["Keapara"] = "khz", ["Kedah Malay"] = "meo", ["Kedang"] = "ksx", ["Keder"] = "kdy", ["Kehu"] = "khh", ["Kei"] = "kei", ["Keiga"] = "kec", ["Kein"] = "bmh", ["Keiyo"] = "eyo", ["Kela-Yela"] = "kel", ["Kelabit"] = "kzi", ["Keley-I Kallahan"] = "ify", ["Keliko"] = "kbo", ["Kelo"] = "xel", ["Kelon"] = "kyo", ["Kemak"] = "kem", ["Kembayan"] = "xem", ["Kemberano"] = "bzp", ["Kembra"] = "xkw", ["Kemezung"] = "dmo", ["Kemi Sami"] = "sjk", ["Kemiehua"] = "kfj", ["Kemtuik"] = "kmt", ["Kenaboi"] = "xbn", ["Kenati"] = "gat", ["Kendayan"] = "knx", ["Kendeje"] = "klf", ["Kendem"] = "kvm", ["Kenga"] = "kyq", ["Keningau Murut"] = "kxi", ["Keninjal"] = "knl", ["Kenswei Nsei"] = "ndb", ["Kenyan Sign Language"] = "xki", ["Kenyang"] = "ken", ["Kenyi"] = "lke", ["Keoru-Ahia"] = "xeu", ["Kepkiriwát"] = "kpn", ["Kepo'"] = "kuk", ["Kera"] = "ker", ["Kerak"] = "hhr", ["Kereho"] = "xke", ["Kerek"] = "krk", ["Kerewe"] = "ked", ["Kerewo"] = "kxz", ["Kerinci"] = "kvr", ["Tiếng Kerman"] = "xme-ker", ["Kesawai"] = "xes", ["Ketangalan"] = "kae", ["Kete"] = "kcv", ["Ketengban"] = "xte", ["Ketum"] = "ktt", ["Kewa"] = "kew", ["Keyagana"] = "kyg", ["Kgalagadi"] = "xkv", ["Khana"] = "ogo", ["Khandeshi"] = "khn", ["Khao"] = "xao", ["Kharam Naga"] = "kfw", ["Kharia Thar"] = "ksy", ["Khayo"] = "lko", ["Khe"] = "kqg", ["Khehek"] = "tlx", ["Khetrani"] = "xhe", ["Khezha Naga"] = "nkh", ["Khirwar"] = "kwx", ["Khisa"] = "kqm", ["Khlor"] = "llo", ["Khlula"] = "ykl", ["Khoibu Naga"] = "nkb", ["Khoini"] = "xkc", ["Kholok"] = "ktc", ["Tiếng Kholosi"] = "inc-kho", ["Khotanese"] = "kho", ["Khroskyabs"] = "jiq", ["Khumi Chin"] = "cnk", ["Khwe"] = "xuu", ["Kibala"] = "blv", ["Kibena"] = "bez", ["Kibet"] = "kie", ["Kibiri"] = "prm", ["Kichwa"] = "qwe-kch", ["Kikami"] = "kcu", ["Kilit"] = "xme-klt", ["Kilivila"] = "kij", ["Kiliwa"] = "klb", ["Kilmeri"] = "kih", ["Kim"] = "kia", ["Kimaama"] = "kig", ["Kimaragang"] = "kqr", ["Kimbu"] = "kiv", ["Kimki"] = "sbt", ["Kimré"] = "kqp", ["Kinabalian"] = "cbw", ["Kinalakna"] = "kco", ["Tiếng Kinaray-a"] = "krj", ["Kinga"] = "zga", ["Kings River Yokuts"] = "nai-kry", ["Kinikinao"] = "gqn", ["Tiếng Kinnaur"] = "kfk", ["Kinuku"] = "kkd", ["Kioko"] = "ues", ["Kiong"] = "kkm", ["Kiorr"] = "xko", ["Kipfokomo"] = "pkb", ["Kipsigis"] = "sgc", ["Kiput"] = "kyi", ["Kir-Balar"] = "kkr", ["Kire"] = "geb", ["Kirfi"] = "kks", ["Kirikiri"] = "kiy", ["Kirya-Konzel"] = "fkk", ["Kis"] = "kis", ["Kisa"] = "lks", ["Kisankasa"] = "kqh", ["Kisar"] = "kje", ["Kisi"] = "kiz", ["Kita Maninkakan"] = "mwk", ["Kitanemuk"] = "azc-ktn", ["Kitembo"] = "tbt", ["Kitja"] = "gia", ["Kitsai"] = "kii", ["Kiunum"] = "wei", ["Kla"] = "lda", ["Klamath-Modoc"] = "kla", ["Klao"] = "klu", ["Klias River Kadazan"] = "kqt", ["Ko"] = "fuj", ["Tiếng Koalib"] = "kib", ["Koasati"] = "cku", ["Koba"] = "kpd", ["Kobiana"] = "kcj", ["Kobol"] = "kgu", ["Kochila Tharu"] = "thq", ["Kodaku"] = "ksz", ["Kodeoha"] = "vko", ["Kodi"] = "kod", ["Kodia"] = "kwp", ["Koenoem"] = "kcs", ["Kofa"] = "kso", ["Kofei"] = "kpi", ["Kofyar"] = "kwl", ["Kohin"] = "kkx", ["Kohumono"] = "bcs", ["Koi"] = "kkt", ["Koireng"] = "nkd", ["Koitabu"] = "kqi", ["Koiwat"] = "kxt", ["Kui (Ấn Độ)"] = "kxu", ["Kok-Nar"] = "gko", ["Kok-Paponk"] = "okg", ["Kokata"] = "ktd", ["Koke"] = "kou", ["Koko-Bera"] = "kkp", ["Kokoda"] = "xod", ["Kokola"] = "kzn", ["Kokota"] = "kkk", ["Kol (Cameroon)"] = "biw", ["Kol (New Guinea)"] = "kol", ["Kola"] = "kvv", ["Kolbila"] = "klc", ["Kolibugan Subanon"] = "skn", ["Kolom"] = "klm", ["Koluwawa"] = "klx", ["Kom (India)"] = "kmm", ["Koma"] = "kmy", ["Komba"] = "kpf", ["Kombai"] = "tyn", ["Kombio"] = "xbi", ["Komering"] = "kge", ["Tiếng Komi-Yazva"] = "urj-kya", ["Kominimung"] = "xoi", ["Komo"] = "xom", ["Tiếng Komodo"] = "kvh", ["Kompane"] = "kvp", ["Komyandaret"] = "kzv", ["Kon Keu"] = "kkn", ["Konabéré"] = "bbo", ["Konai"] = "kxw", ["Konda"] = "knd", ["Konda-Dora"] = "kfc", ["Kondekor"] = "gau", ["Koneraw"] = "kdw", ["Konkomba"] = "xon", ["Konni"] = "kma", ["Kono (Guinea)"] = "knu", ["Kono (Nigeria)"] = "klk", ["Kono (Sierra Leone)"] = "kno", ["Konomala"] = "koa", ["Konomihu"] = "nai-knm", ["Konongo"] = "kcz", ["Konyak Naga"] = "nbe", ["Konyanka Maninka"] = "mku", ["Konzo"] = "koo", ["Kopar"] = "xop", ["Kopkaka"] = "opk", ["Korafe-Yegha"] = "kpr", ["Korak"] = "koz", ["Korana"] = "kqz", ["Korandje"] = "kcy", ["Korean Sign Language"] = "kvk", ["Koreguaje"] = "coe", ["Koresh-e Rostam"] = "okh", ["Korlai Creole Portuguese"] = "vkp", ["Koro (India)"] = "jkr", ["Koro (New Guinea)"] = "kxr", ["Koro (Vanuatu)"] = "krf", ["Koro (West Africa)"] = "kfo", ["Koromfé"] = "kfz", ["Koromira"] = "kqj", ["Koronadal Blaan"] = "bpr", ["Koroni"] = "xkq", ["Korop"] = "krp", ["Koropó"] = "xxr", ["Koroshi"] = "ktl", ["Korowai"] = "khe", ["Korubo"] = "xor", ["Korupun-Sela"] = "kpq", ["Tiếng Korwa"] = "kfp", ["Kosadle"] = "kiq", ["Kosarek Yale"] = "kkl", ["Kosena"] = "kze", ["Koshin"] = "kid", ["Kota (Gabon)"] = "koq", ["Kota (India)"] = "kfe", ["Kota Bangun Kutai Malay"] = "mqg", ["Kota Marudu Talantang"] = "grm", ["Kota Marudu Tinagas"] = "ktr", ["Kotafon Gbe"] = "kqk", ["Koti"] = "eko", ["Tiếng Kott"] = "zko", ["Kou"] = "snz", ["Kouya"] = "kyf", ["Kovai"] = "kqb", ["Kove"] = "kvc", ["Kowaki"] = "xow", ["Kowiai"] = "kwh", ["Koy Sanjaq Surat"] = "kqd", ["Koya"] = "kff", ["Koyaga"] = "kga", ["Koyo"] = "koh", ["Koyra Chiini"] = "khq", ["Koyukon"] = "koy", ["Kpagua"] = "kuw", ["Kpala"] = "kpl", ["Kpan"] = "kpk", ["Kpasam"] = "pbn", ["Kpati"] = "koc", ["Kpatili"] = "kym", ["Kpee"] = "cpo", ["Kpelle"] = "kpe", ["Kpessi"] = "kef", ["Kplang"] = "kph", ["Krache"] = "kye", ["Krahô"] = "xra", ["Krenak"] = "kqq", ["Kresh"] = "krs", ["Krevinian"] = "zkv", ["Kreye"] = "xre", ["Krikati-Timbira"] = "xri", ["Krim"] = "krm", ["Tiếng Kriol Úc"] = "rop", ["Krisa"] = "ksi", ["Kristang"] = "mcm", ["Krobu"] = "kxb", ["Krongo"] = "kgo", ["Kua"] = "tyu", ["Kua-nsi"] = "ykn", ["Kuamasi"] = "yku", ["Kuan"] = "uan", ["Kuanhua"] = "xnh", ["Kube"] = "kgf", ["Kubi"] = "kof", ["Kubo"] = "jko", ["Kubu"] = "kvb", ["Kucong"] = "lkc", ["Tiếng Kudiya"] = "kfg", ["Kudu-Camo"] = "kov", ["Kugama"] = "kow", ["Kugbo"] = "kes", ["Kugu-Muminh"] = "xmh", ["Kui (India)"] = "kxu", ["Kui (Indonesia)"] = "kvd", ["Kuijau"] = "dkr", ["Kuikúro"] = "kui", ["Kujarge"] = "vkj", ["Kuk"] = "kfn", ["Kukatja"] = "kux", ["Kukele"] = "kez", ["Kukkuzi"] = "urj-kuk", ["Kuku-Mangk"] = "xmq", ["Kuku-Mu'inh"] = "xmp", ["Kuku-Thaypan"] = "typ", ["Kuku-Ugbanh"] = "ugb", ["Kuku-Uwanh"] = "uwa", ["Kuku-Yalanji"] = "gvn", ["Kula"] = "tpg", ["Kulaal"] = "glj", ["Kulere"] = "kul", ["Kulfa"] = "kxj", ["Kulina"] = "xpk", ["Kulisusu"] = "vkl", ["Kulon"] = "uon", ["Kulung"] = "kle", ["Kumak"] = "nee", ["Kumalu"] = "ksl", ["Kumam"] = "kdi", ["Kuman"] = "kue", ["Kumaoni"] = "kfy", ["Kumba"] = "ksm", ["Kumbainggar"] = "kgs", ["Kumbaran"] = "wkb", ["Tiếng Kumeyaay"] = "nai-kum", ["Kumhali"] = "kra", ["Kumu"] = "kmw", ["Kumukio"] = "kuo", ["Tiếng Kuna"] = "cuk", ["Kunama"] = "kun", ["Kunbarlang"] = "wlg", ["Kunda"] = "kdn", ["Kunduvadi"] = "wku", ["Kung"] = "kfl", ["Kungarakany"] = "ggk", ["Kungardutyi"] = "gdt", ["Kunggari"] = "kgl", ["Kungkari"] = "lku", ["Kuni"] = "kse", ["Kuni-Boazi"] = "kvg", ["Kunimaipa"] = "kup", ["Kunja"] = "pep", ["Kunjen"] = "kjn", ["Kunyi"] = "njx", ["Kunza"] = "kuz", ["Kuo"] = "xuo", ["Kuot"] = "kto", ["Kupa"] = "kug", ["Kupang Malay"] = "mkn", ["Kupia"] = "key", ["Kupsabiny"] = "kpz", ["Kur"] = "kuv", ["Kura Ede Nago"] = "nqk", ["Kurama"] = "krh", ["Kuranko"] = "knk", ["Kuri"] = "nbn", ["Kuria"] = "kuj", ["Kurichiya"] = "kfh", ["Kurmukar"] = "kfv", ["Kurnai"] = "unn", ["Kurrama"] = "vku", ["Kurti"] = "ktm", ["Kurtjar"] = "gdj", ["Kurudu"] = "kjr", ["Kurukh"] = "kru", ["Kuruáya"] = "kyr", ["Kusaal"] = "kus", ["Kusaghe"] = "ksg", ["Kushi"] = "kuh", ["Kustenau"] = "awd-kus", ["Kusu"] = "ksv", ["Kusunda"] = "kgg", ["Kutang Ghale"] = "ght", ["Tiếng Ktunaxa"] = "kut", ["Kutep"] = "kub", ["Kuthant"] = "xut", ["Kutto"] = "kpa", ["Kutu"] = "kdc", ["Kuturmi"] = "khj", ["Kuuk Thaayorre"] = "thd", ["Kuuk Yak"] = "uky", ["Kuuku-Ya'u"] = "kuy", ["Kuvale"] = "olu", ["Kuwaa"] = "blh", ["Kuwaataay"] = "cwt", ["Kuwani"] = "paa-kwn", ["Tiếng Kven"] = "fkv", ["Kwa'"] = "bko", ["Kwaami"] = "ksq", ["Kwadi"] = "kwz", ["Kwaio"] = "kwd", ["Kwaja"] = "kdz", ["Kwak"] = "kwq", ["Kwakum"] = "kwu", ["Kwalhioqua-Tlatskanai"] = "qwt", ["Kwama"] = "kmq", ["Kwambi"] = "kwm", ["Kwamera"] = "tnk", ["Kwami"] = "ktf", ["Kwamtim One"] = "okk", ["Kwang"] = "kvi", ["Kwanga"] = "kwj", ["Kwangali"] = "kwn", ["Kwanja"] = "knp", ["Kwanka"] = "bij", ["Kwara'ae"] = "kwf", ["Kwasio"] = "nmg", ["Kwaya"] = "kya", ["Kwaza"] = "xwa", ["Kwegu"] = "xwg", ["Kwer"] = "kwr", ["Kwerba"] = "kwe", ["Kwerba Mamberamo"] = "xwr", ["Kwere"] = "cwe", ["Kwerisa"] = "kkb", ["Kwese"] = "kws", ["Kwesten"] = "kwt", ["Kwini"] = "gww", ["Kwinsu"] = "kuc", ["Tiếng Kwinti"] = "kww", ["Kwoma"] = "kmo", ["Kwomtari"] = "kwo", ["Kyak"] = "bka", ["Kyaka"] = "kyc", ["Kyan-Karyaw Naga"] = "nqq", ["Kyenele"] = "kql", ["Kyenga"] = "tye", ["Kyerung"] = "kgy", ["Kélé"] = "keb", ["Kómnzo"] = "paa-kom", ["La'bi"] = "lbi", ["Laal"] = "gdm", ["Tiếng Laalaa"] = "cae", ["Laba"] = "lau", ["Label"] = "lbb", ["Labir"] = "jku", ["Labo"] = "mwi", ["Labo Phowa"] = "ypb", ["Labu"] = "lbu", ["Labuk-Kinabatangan Kadazan"] = "dtb", ["Lacandon"] = "lac", ["Lachi"] = "lbt", ["Lachiguiri Zapotec"] = "zpa", ["Lachixío Zapotec"] = "zpl", ["Ladji-Ladji"] = "llj", ["Laeko-Libuat"] = "lkl", ["Lafofa"] = "laf", ["Laghu"] = "lgb", ["Laghuu"] = "lgh", ["Lagwan"] = "kot", ["Laha (Indonesia)"] = "lhh", ["Laha (Vietnam)"] = "lha", ["Lahanan"] = "lhn", ["Lahta Karen"] = "kvt", ["Lahu Shi"] = "lhi", ["Lahul Lohar"] = "lhl", ["Lai"] = "cnh", ["Laimbue"] = "lmx", ["Laitu Chin"] = "clj", ["Laiyolo"] = "lji", ["Laka"] = "lak", ["Tiếng Lakalei"] = "lka", ["Lake Miwok"] = "lmw", ["Lakha"] = "lkh", ["Laki"] = "lki", ["Lakkia"] = "lbc", ["Lakon"] = "lkn", ["Lakondê"] = "lkd", ["Lakota Dida"] = "dic", ["Lala (New Guinea)"] = "nrz", ["Lala (South Africa)"] = "bnt-lal", ["Lala-Bisa"] = "leb", ["Lala-Roba"] = "lla", ["Lalana Chinantec"] = "cnl", ["Tiếng Bạch Lạp Mã"] = "lay", ["Lamaholot"] = "slp", ["Lamalera"] = "lmr", ["Lamang"] = "hia", ["Lamatuka"] = "lmq", ["Lamba"] = "lam", ["Lambichhong"] = "lmh", ["Lambya"] = "lai", ["Lame"] = "bma", ["Lamenu"] = "lmu", ["Lamet"] = "lbn", ["Lamja-Dengsa-Tola"] = "ldh", ["Lamkang"] = "lmk", ["Lamma"] = "lev", ["Lamnso'"] = "lns", ["Lamogai"] = "lmg", ["Lampung Api"] = "ljp", ["Lamu"] = "llh", ["Lamu-Lamu"] = "lby", ["Lanas Lobu"] = "ruu", ["Landoma"] = "ldm", ["Lang'e"] = "yne", ["Langam"] = "lnm", ["Langbashe"] = "lna", ["Langi"] = "lag", ["Langnian Buyang"] = "yln", ["Lango (Sudan)"] = "lno", ["Lango (Uganda)"] = "laj", ["Lanima"] = "lnw", ["Lao Naga"] = "nlq", ["Laopang"] = "lbg", ["Laos Sign Language"] = "lso", ["Lapaguía-Guivini Zapotec"] = "ztl", ["Lapine"] = "art-lap", ["Lapuyan Subanun"] = "laa", ["Laragia"] = "lrg", ["Larantuka Malay"] = "lrt", ["Lardil"] = "lbz", ["Larevat"] = "lrv", ["Larike-Wakasihu"] = "alo", ["Laro"] = "lro", ["Larteh"] = "lar", ["Laru"] = "lan", ["Lasgerdi"] = "lsa", ["Lasi"] = "lss", ["Latu"] = "ltu", ["Latvian Sign Language"] = "lsl", ["Lau"] = "llu", ["Laua"] = "luf", ["Lauan"] = "llx", ["Lauje"] = "law", ["Laura"] = "lur", ["Laurentian"] = "lre", ["Tiếng Lutuv"] = "clt", ["Lavatbura-Lamusong"] = "lbv", ["Lawangan"] = "lbx", ["Tiếng Lawi"] = "lvi", ["Lawu"] = "lwu", ["Lawunuia"] = "tgi", ["Layakha"] = "lya", ["Laze"] = "tbq-laz", ["Lealao Chinantec"] = "cle", ["Leco"] = "lec", ["Ledo Kaili"] = "lew", ["Leelau"] = "ldk", ["Lefa"] = "lfa", ["Lega-Mwenga"] = "lgm", ["Lega-Shabunda"] = "lea", ["Legbo"] = "agb", ["Legenyem"] = "lcc", ["Lehali"] = "tql", ["Lehalurup"] = "urr", ["Leinong Naga"] = "lzn", ["Leipon"] = "lek", ["Lela"] = "dri", ["Lelak"] = "llk", ["Lele (Chad)"] = "lln", ["Lele (Congo)"] = "lel", ["Lele (Guinea)"] = "llc", ["Lele (New Guinea)"] = "lle", ["Lelemi"] = "lef", ["Lelepa"] = "lpa", ["Lembena"] = "leq", ["Lemerig"] = "lrz", ["Lemio"] = "lei", ["Lemolang"] = "ley", ["Lemoro"] = "ldj", ["Lenakel"] = "tnl", ["Lendu"] = "led", ["Lengilu"] = "lgi", ["Lengo"] = "lgr", ["Lengola"] = "lej", ["Lenje"] = "leh", ["Lenkau"] = "ler", ["Lenyima"] = "ldg", ["Tiếng León"] = "roa-leo", ["Lepki"] = "lpe", ["Lere"] = "gnh", ["Lese"] = "les", ["Lesing-Gelimi"] = "let", ["Letemboi"] = "nms", ["Leti (Cameroon)"] = "leo", ["Leti (Indonesia)"] = "lti", ["Levuka"] = "lvu", ["Lewo"] = "lww", ["Lewo Eleng"] = "lwe", ["Lewotobi"] = "lwt", ["Leyigha"] = "ayi", ["Lhokpu"] = "lhp", ["Li'o"] = "ljl", ["Liana-Seti"] = "ste", ["Liangmai Naga"] = "njn", ["Liberia Kpelle"] = "xpe", ["Liberian Kreyol"] = "lir", ["Libinza"] = "liz", ["Libon Bikol"] = "lbl", ["Liburnian"] = "xli", ["Libyan Sign Language"] = "lbs", ["Ligbi"] = "lig", ["Ligenza"] = "lgz", ["Lihir"] = "lih", ["Lika"] = "lik", ["Liki"] = "lio", ["Likila"] = "lie", ["Likuba"] = "kxx", ["Likum"] = "lib", ["Likwala"] = "kwc", ["Lilau"] = "lll", ["Limassa"] = "bme", ["Limbu"] = "lif", ["Limbum"] = "lmp", ["Limi"] = "ylm", ["Limilngan"] = "lmc", ["Tiếng Lindu"] = "klw", ["Linear A"] = "lab", ["Tiếng Lâm Cao"] = "onb", ["Lingkhim"] = "lii", ["Lingua Franca Nova"] = "lfn", ["Linngithigh"] = "lnj", ["Tiếng Lipan"] = "apl", ["Lipo"] = "lpo", ["Lisabata-Nuniali"] = "lcs", ["Lisela"] = "lcl", ["Lish"] = "lsh", ["Lishán Didán"] = "trg", ["Literary Chinese"] = "lzh", ["Lithuanian Sign Language"] = "lls", ["Little Swanport"] = "aus-lsw", ["Litzlitz"] = "lzl", ["Lizu"] = "sit-liz", ["Lo-Toga"] = "lht", ["Loarki"] = "lrk", ["Lobala"] = "loq", ["Lobi"] = "lob", ["Lodhi"] = "lbm", ["Logba"] = "lgq", ["Logo"] = "log", ["Logol"] = "lof", ["Logooli"] = "rag", ["Logorik"] = "liu", ["Lokaa"] = "yaz", ["Loko"] = "lok", ["Lokoya"] = "lky", ["Lola"] = "lcd", ["Lolak"] = "llq", ["Lole"] = "llg", ["Lolo"] = "llb", ["Loloda"] = "loa", ["Lolopo"] = "ycl", ["Loma"] = "lom", ["Lomaiviti"] = "lmv", ["Lomakka"] = "loi", ["Lomavren"] = "rmi", ["Lombi"] = "lmi", ["Lombo"] = "loo", ["Lomwe"] = "ngl", ["Loncong"] = "lce", ["Long Phuri Naga"] = "lpn", ["Long Wat"] = "ttw", ["Longgu"] = "lgu", ["Longto"] = "wok", ["Longuda"] = "lnu", ["Loniu"] = "los", ["Lonwolwol"] = "crc", ["Loo"] = "ldo", ["Lopa"] = "lop", ["Lope"] = "yiu", ["Lopi"] = "lov", ["Lopit"] = "lpx", ["Lorang"] = "lrn", ["Lorediakarkar"] = "lnn", ["Tiếng Lorrain"] = "roa-lor", ["Lote"] = "uvl", ["Lotha Naga"] = "njh", ["Lotud"] = "dtr", ["Lotuko"] = "lot", ["Loun"] = "lox", ["Loup A"] = "xlo", ["Loup B"] = "xlb", ["Lovono"] = "vnk", ["Lower Burdekin"] = "xbb", ["Lower Chehalis"] = "cea", ["Lower Grand Valley Dani"] = "dni", ["Lower Nossob"] = "nsb", ["Lower Southern Aranda"] = "axl", ["Lower Ta'oih"] = "tto", ["Tiếng Hạ Tanana"] = "taa", ["Lowland Oaxaca Chontal"] = "clo", ["Lowland Tarahumara"] = "tac", ["Loxicha Zapotec"] = "ztp", ["Lozi"] = "loz", ["Luang"] = "lex", ["Luba-Kasai"] = "lua", ["Lubila"] = "kcc", ["Lubu"] = "lcf", ["Lubuagan Kalinga"] = "knb", ["Luchazi"] = "lch", ["Tiếng Lucumí"] = "luq", ["Lufu"] = "ldq", ["Lugbara"] = "lgg", ["Luguru"] = "ruf", ["Luhu"] = "lcq", ["Tiếng Luhya"] = "luy", ["Luimbi"] = "lum", ["Luiseño"] = "lui", ["Lukpa"] = "dop", ["Lule"] = "ule", ["Lule Sami"] = "smj", ["Lumba-Yakkha"] = "luu", ["Lumbee"] = "lmz", ["Lumbu"] = "lup", ["Lumun"] = "lmd", ["Lun Bawang"] = "lnd", ["Luna"] = "luj", ["Lunanakha"] = "luk", ["Lunda"] = "lun", ["Lungga"] = "lga", ["Luo"] = "luo", ["Luopohe Hmong"] = "hml", ["Luri (Nigeria)"] = "ldd", ["Lusengo"] = "lse", ["Lusi"] = "khl", ["Lusitanian"] = "xls", ["Lutachoni"] = "lts", ["Lutos"] = "ndy", ["Luvale"] = "lue", ["Luwati"] = "luv", ["Luwo"] = "lwo", ["Luyana"] = "lyn", ["Lwalu"] = "lwa", ["Lwel"] = "bnt-lwl", ["Tiếng Lycia"] = "xlc", ["Lyélé"] = "lee", ["Láadan"] = "ldn", ["Láá Láá Bwamu"] = "bwj", ["Ma"] = "msj", ["Ma Manda"] = "skc", ["Ma'di"] = "mhi", ["Ma'ya"] = "slz", ["Tiếng Maay"] = "ymm", ["Maba"] = "mqa", ["Mabaale"] = "mmz", ["Tiếng Mabaan"] = "mfz", ["Mabaka Valley Kalinga"] = "kkg", ["Mabire"] = "muj", ["Maca"] = "mca", ["Macaguaje"] = "mcl", ["Macaguán"] = "mbn", ["Macanese"] = "mzs", ["Macau Pidgin Portuguese"] = "crp-mpp", ["Machame"] = "jmc", ["Machiguenga"] = "mcb", ["Machinere"] = "mpd", ["Machinga"] = "mvw", ["Macoris"] = "nai-mac", ["Macuna"] = "myy", ["Mada (Cameroon)"] = "mxu", ["Mada (Nigeria)"] = "mda", ["Madagascar Sign Language"] = "mzc", ["Madak"] = "mmx", ["Maden"] = "xmx", ["Madhi Madhi"] = "dmd", ["Madi"] = "grg", ["Madngele"] = "zml", ["Madukayang Kalinga"] = "kmd", ["Mae"] = "mme", ["Maek"] = "hmk", ["Maeng Itneg"] = "itt", ["Mafa"] = "maf", ["Mafea"] = "mkv", ["Mag-Anchi Ayta"] = "sgb", ["Mag-Indi Ayta"] = "blx", ["Magahat"] = "mtw", ["Tiếng Magaha"] = "mag", ["Magdalena Peñasco Mixtec"] = "xtm", ["Magiyi"] = "gmg", ["Magoma"] = "gmx", ["Magɨ"] = "gkd", ["Mahasu Pahari"] = "bfz", ["Mahican"] = "mjy", ["Mahongwe"] = "mhb", ["Mahou"] = "mxx", ["Maia"] = "sks", ["Maiadomu"] = "mzz", ["Maiani"] = "tnh", ["Maii"] = "mmm", ["Mailu"] = "mgu", ["Maindo"] = "cwb", ["Mairasi"] = "zrs", ["Maisin"] = "mbq", ["Maiwa (Indonesia)"] = "wmm", ["Maiwa (New Guinea)"] = "mti", ["Maiwala"] = "mum", ["Majang"] = "mpe", ["Majera"] = "xmj", ["Tiếng Majhi"] = "mjz", ["Majhwar"] = "mmj", ["Mak (China)"] = "mkg", ["Mak (Nigeria)"] = "pbl", ["Makaa"] = "mcp", ["Makah"] = "myh", ["Makalero"] = "mjb", ["Makasae"] = "mkz", ["Tiếng Makassar"] = "mak", ["Makassar Malay"] = "mfp", ["Makayam"] = "aup", ["Makhuwa"] = "vmw", ["Makhuwa-Marrevone"] = "xmc", ["Makhuwa-Meetto"] = "mgh", ["Makhuwa-Moniga"] = "mhm", ["Makhuwa-Saka"] = "xsq", ["Makhuwa-Shirima"] = "vmk", ["Maklew"] = "mgf", ["Makolkol"] = "zmh", ["Makonde"] = "kde", ["Maku"] = "xak", ["Maku'a"] = "lva", ["Makuri Naga"] = "jmn", ["Makuráp"] = "mpu", ["Makwe"] = "ymk", ["Makyan Naga"] = "umn", ["Mal"] = "mlf", ["Mal Paharia"] = "mkb", ["Mala (New Guinea)"] = "ped", ["Mala (Nigeria)"] = "ruy", ["Mala Malasar"] = "ima", ["Malaccan Creole Malay"] = "ccm", ["Malalamai"] = "mmt", ["Malalí"] = "sai-mal", ["Malango"] = "mln", ["Malankuravan"] = "mjo", ["Malapandaram"] = "mjp", ["Malaryan"] = "mjq", ["Malas"] = "mkr", ["Malasanga"] = "mqz", ["Malasar"] = "ymr", ["Malavedan"] = "mjr", ["Malawi Lomwe"] = "lon", ["Malawian Sign Language"] = "lws", ["Malayic Dayak"] = "xdy", ["Malaynon"] = "mlz", ["Malaysian Sign Language"] = "xml", ["Malba Birifor"] = "bfo", ["Male"] = "mdc", ["Tiếng Malecite-Passamaquoddy"] = "pqm", ["Maleu-Kilenge"] = "mgl", ["Malfaxal"] = "mlx", ["Malgana"] = "vml", ["Malgbe"] = "mxf", ["Mali"] = "gcc", ["Malibu"] = "sai-mlb", ["Malila"] = "mgq", ["Malimba"] = "mzd", ["Malimpung"] = "mli", ["Malinaltepec Tlapanec"] = "tcf", ["Malol"] = "mbk", ["Maltese Sign Language"] = "mdl", ["Malua Bay"] = "mll", ["Malvi"] = "mup", ["Maléku Jaíka"] = "gut", ["Mam"] = "mam", ["Mama"] = "mma", ["Mamaa"] = "mhf", ["Mamaindé"] = "wmd", ["Mamanwa"] = "mmn", ["Mamara Senoufo"] = "myk", ["Mamasa"] = "mqj", ["Mambae"] = "mgm", ["Mambai"] = "mcs", ["Mamboru"] = "mvd", ["Mambwe-Lungu"] = "mgr", ["Mamuju"] = "mqx", ["Mamulique"] = "emm", ["Mamusi"] = "kdf", ["Mamvu"] = "mdi", ["Man Met"] = "mml", ["Manado Malay"] = "xmm", ["Manam"] = "mva", ["Manambu"] = "mle", ["Manangba"] = "nmm", ["Manangkari"] = "znk", ["Manao"] = "awd-man", ["Manda (Australia)"] = "zma", ["Manda (Tanzania)"] = "mgs", ["Tiếng Mandahuaca"] = "mht", ["Mandaic"] = "mid", ["Mandailing Batak"] = "btm", ["Mandalorian"] = "art-man", ["Mandan"] = "mhq", ["Mandandanyi"] = "zmk", ["Mandar"] = "mdr", ["Mandari"] = "mqu", ["Mandeali"] = "mjl", ["Mander"] = "mqr", ["Mandingo"] = "man", ["Mandjak"] = "mfv", ["Mandobo Atas"] = "aax", ["Mandobo Bawah"] = "bwp", ["Manem"] = "jet", ["Mangala"] = "mem", ["Mangarayi"] = "mpc", ["Mangarevan"] = "mrv", ["Mangayat"] = "myj", ["Mangbetu"] = "mdj", ["Mangbutu"] = "mdk", ["Mangerr"] = "zme", ["Mangga Buang"] = "mmo", ["Mango"] = "mge", ["Mangole"] = "mqc", ["Mangseng"] = "mbh", ["Manigri-Kambolé Ede Nago"] = "xkb", ["Manikion"] = "mnx", ["Manipa"] = "mqp", ["Mankiyali"] = "nlm", ["Manna-Dora"] = "mju", ["Tiếng Mannan"] = "mjv", ["Manombai"] = "woo", ["Tiếng Mansaka"] = "msk", ["Mansoanka"] = "msw", ["Manta"] = "myg", ["Mantsi"] = "nty", ["Manusela"] = "wha", ["Manya"] = "mzj", ["Manyawa"] = "mny", ["Manza"] = "mzv", ["Mao Naga"] = "nbi", ["Mape"] = "mlh", ["Mapena"] = "mnm", ["Mapia"] = "mpy", ["Mapidian"] = "mpw", ["Mapos Buang"] = "bzh", ["Mapoyo"] = "mcg", ["Mapun"] = "sjm", ["Mara"] = "mec", ["Mara Chin"] = "mrh", ["Marachi"] = "lri", ["Maraghei"] = "vmh", ["Maragus"] = "mrs", ["Maram Naga"] = "nma", ["Marama"] = "lrm", ["Tiếng Maranao"] = "mrw", ["Maranungku"] = "zmr", ["Mararit"] = "mgb", ["Maratino"] = "sai-mar", ["Marau"] = "mvr", ["Marawan"] = "awd-mar", ["Marba"] = "mpg", ["Marenje"] = "vmr", ["Marfa"] = "mvu", ["Margany"] = "zmc", ["Marghi South"] = "mfm", ["Margi"] = "mrt", ["Maria"] = "mds", ["Mariaté"] = "awd-mrt", ["Tiếng Maricopa"] = "mrc", ["Maridan"] = "zmd", ["Maridjabin"] = "zmj", ["Marik"] = "dad", ["Marimanindji"] = "zmm", ["Marind"] = "mrz", ["Maring"] = "mbw", ["Maring Naga"] = "nng", ["Maringarr"] = "zmt", ["Marino"] = "mrb", ["Mariri"] = "mqi", ["Maritime Sign Language"] = "nsr", ["Maritsauá"] = "msp", ["Mariyedi"] = "zmy", ["Marka"] = "rkm", ["Markweeta"] = "enb", ["Maroon Spirit Language"] = "cpe-mar", ["Marovo"] = "mvo", ["Marrgu"] = "mhg", ["Marriammu"] = "xru", ["Marrithiyel"] = "mfr", ["Marrucinian"] = "umc", ["Marsian"] = "ims", ["Martha's Vineyard Sign Language"] = "mre", ["Marti Ke"] = "zmg", ["Martu Wangka"] = "mpj", ["Tiếng Martuthunira"] = "vma", ["Marúbo"] = "mzr", ["Masaba"] = "myx", ["Masadiit Itneg"] = "tis", ["Masakará"] = "sai-msk", ["Masalit"] = "mls", ["Masana"] = "mcn", ["Masbate Sorsogon"] = "bks", ["Tiếng Masbatenyo"] = "msb", ["Mashco Piro"] = "cuj", ["Mashi"] = "mho", ["Masimasi"] = "ism", ["Masiwang"] = "bnf", ["Maskelynes"] = "klv", ["Maslam"] = "msv", ["Masmaje"] = "mes", ["Massachusett"] = "wam", ["Massalat"] = "mdg", ["Massep"] = "mvs", ["Matagalpa"] = "mtn", ["Tiếng Matal"] = "mfh", ["Matanawi"] = "sai-mat", ["Matbat"] = "xmt", ["Matengo"] = "mgv", ["Matepi"] = "mqe", ["Matigsalug Manobo"] = "mbt", ["Matipuhy"] = "mzo", ["Matlatzinca"] = "mat", ["Mato"] = "met", ["Mato Grosso Arára"] = "axg", ["Matsés"] = "mcf", ["Mattole"] = "mvb", ["Matukar"] = "mjk", ["Matumbi"] = "mgw", ["Matya Samo"] = "stj", ["Matís"] = "mpq", ["Maung"] = "mph", ["Tiếng Creole Mauritius"] = "mfe", ["Mauritian Sign Language"] = "lsy", ["Mauwake"] = "mhl", ["Mawa"] = "mcw", ["Mawak"] = "mjj", ["Mawan"] = "mcz", ["Mawayana"] = "mzx", ["Mawchi"] = "mke", ["Mawes"] = "mgk", ["Maxakalí"] = "mbl", ["Maxi Gbe"] = "mxl", ["Maya Samo"] = "sym", ["Mayaguduna"] = "xmy", ["Mayangna"] = "yan", ["Mayawali"] = "yxa", ["Maybrat"] = "ayz", ["Mayeka"] = "myc", ["Mayi-Thakurti"] = "xyt", ["Maykulan"] = "mnt", ["Maynas"] = "sai-mys", ["Mayo"] = "mfy", ["Mayogo"] = "mdm", ["Mayoyao Ifugao"] = "ifu", ["Maypure"] = "awd-mpr", ["Mazagway"] = "dkx", ["Mazaltepec Zapotec"] = "zpy", ["Mazatlán Mazatec"] = "vmz", ["Mazatlán Mixe"] = "mzl", ["Mba"] = "mfc", ["Mbala"] = "mdp", ["Mbalanhu"] = "lnb", ["Mbandja"] = "zmz", ["Mbangala"] = "mxg", ["Mbangi"] = "mgn", ["Mbangwe"] = "zmn", ["Mbara (Australia)"] = "mvl", ["Mbara (Chad)"] = "mpk", ["Mbariman-Gudhinma"] = "zmv", ["Mbati"] = "mdn", ["Mbato"] = "gwa", ["Mbay"] = "myb", ["Mbe"] = "mfo", ["Mbe'"] = "mtk", ["Mbelime"] = "mql", ["Mbere"] = "mdt", ["Mbesa"] = "zms", ["Mbiywom"] = "aus-mbi", ["Mbo (Cameroon)"] = "mbo", ["Mbo (Congo)"] = "zmw", ["Mboi"] = "moi", ["Mboko"] = "mdu", ["Mbole"] = "mdq", ["Mbonga"] = "xmb", ["Mbongno"] = "bgu", ["Mbosi"] = "mdw", ["Mbowe"] = "mxo", ["Mbre"] = "mka", ["Mbu'"] = "muc", ["Mbudum"] = "xmd", ["Mbugu"] = "mhd", ["Mbugwe"] = "mgz", ["Mbuko"] = "mqb", ["Mbukushu"] = "mhw", ["Mbula"] = "mna", ["Mbula-Bwazza"] = "mbu", ["Mbule"] = "mlb", ["Mbulungish"] = "mbv", ["Mbum"] = "mdd", ["Mbunda"] = "mck", ["Mbunga"] = "mgy", ["Mburku"] = "bbt", ["Mbuun"] = "zmp", ["Mbwela"] = "mfu", ["Mea"] = "meg", ["Mebu"] = "mjn", ["Mecayapan Nahuatl"] = "nhx", ["Medebur"] = "mjm", ["Medefaidrin"] = "dmf", ["Media Lengua"] = "mue", ["Mednyj Aleut"] = "mud", ["Mefele"] = "mfj", ["Megam"] = "mef", ["Mehek"] = "nux", ["Mehináku"] = "mmh", ["Mekeo"] = "mek", ["Mekmek"] = "mvk", ["Mekwei"] = "msf", ["Mekéns"] = "skf", ["Mel-Khaonh"] = "hkn", ["Mele-Fila"] = "mxe", ["Tiếng Melo"] = "mfx", ["Melpa"] = "med", ["Mendalam Kayan"] = "xkd", ["Mendankwe-Nkwen"] = "mfd", ["Mengaka"] = "xmg", ["Mengen"] = "mee", ["Menien"] = "sai-men", ["Menka"] = "mea", ["Tiếng Menominee"] = "mez", ["Tiếng Mentawai"] = "mwv", ["Menya"] = "mcr", ["Meoswar"] = "mvx", ["Mer"] = "mnu", ["Meramera"] = "mxm", ["Merei"] = "lmb", ["Merey"] = "meq", ["Merlav"] = "mrm", ["Meroitic"] = "xmr", ["Meru"] = "mer", ["Tiếng Mesaka"] = "iyo", ["Mese"] = "mci", ["Mesme"] = "zim", ["Mesmes"] = "mys", ["Mesqan"] = "mvz", ["Messapic"] = "cms", ["Meta'"] = "mgo", ["Metlatónoc Mixtec"] = "mxv", ["Mewari"] = "mtr", ["Mewati"] = "wtm", ["Mexican Sign Language"] = "mfs", ["Meyah"] = "mej", ["Mezontla Popoloca"] = "pbe", ["Tiếng Meänkieli"] = "fit", ["Mfinu"] = "zmf", ["Mfumte"] = "nfu", ["Mgbo"] = "gmz", ["Mian"] = "mpt", ["Miani"] = "pla", ["Micha"] = "yiq", ["Michif"] = "crg", ["Michigamea"] = "cmm", ["Michoacán Nahuatl"] = "ncl", ["Mid Grand Valley Dani"] = "dnt", ["Mid-Southern Banda"] = "bjo", ["Middle Assamese"] = "inc-mas", ["Middle Bengali"] = "inc-mbn", ["Middle Cornish"] = "cnx", ["Middle Gujarati"] = "inc-mgu", ["Middle Kannada"] = "dra-mkn", ["Middle Median"] = "xme-mid", ["Middle Newar"] = "nwx", ["Middle Norwegian"] = "gmq-mno", ["Middle Oriya"] = "inc-mor", ["Middle Watut"] = "mpl", ["Tiếng Wales trung đại"] = "wlm", ["Midob"] = "mei", ["Migaama"] = "mmy", ["Migabac"] = "mpp", ["Miji"] = "sjl", ["Miju"] = "mxj", ["Mikasuki"] = "mik", ["Milang"] = "und-mil", ["Mili"] = "ymh", ["Millcayac"] = "sai-mil", ["Miltu"] = "mlj", ["Miluk"] = "iml", ["Milyan"] = "imy", ["Mimi of Decorse"] = "und-mmd", ["Mimi of Nachtigal"] = "und-mmn", ["Mina"] = "hna", ["Minaean"] = "inm", ["Minang"] = "xrg", ["Tiếng Minangkabau"] = "min", ["Minanibai"] = "mcv", ["Minaveha"] = "mvn", ["Minderico"] = "drc", ["Mindiri"] = "mpn", ["Mingang Doso"] = "mko", ["Mingo"] = "iro-min", ["Minica Huitoto"] = "hto", ["Minidien"] = "wii", ["Minigir"] = "vmg", ["Minjungbal"] = "xjb", ["Minkin"] = "xxm", ["Minoan"] = "omn", ["Minokok"] = "mqq", ["Miraya Bikol"] = "rbl", ["Mire"] = "mvh", ["Mirgan"] = "zrg", ["Miriti"] = "mmv", ["Miriwoong Sign Language"] = "rsm", ["Miriwung"] = "mep", ["Mirpur Panjabi"] = "pmu", ["Misantla Totonac"] = "tlc", ["Miship"] = "mjs", ["Misima-Paneati"] = "mpx", ["Mising"] = "mrg", ["Tiếng Miskito"] = "miq", ["Mitla Zapotec"] = "zaw", ["Mitlatongo Mixtec"] = "vmm", ["Mittu"] = "mwu", ["Mituku"] = "zmq", ["Miu"] = "mpo", ["Miwa"] = "vmi", ["Mixed Great Andamanese"] = "gac", ["Mixifore"] = "mfg", ["Mixtepec Mixtec"] = "mix", ["Mixtepec Zapotec"] = "zpm", ["Miya"] = "mkf", ["Miyobe"] = "soy", ["Mlahsö"] = "lhs", ["Mlap"] = "kja", ["Mlomp"] = "mlo", ["Mmaala"] = "mmu", ["Mmani"] = "buy", ["Mmen"] = "bfm", ["Mo"] = "wkd", ["Mo'da"] = "gbn", ["Moabite"] = "obm", ["Moba"] = "mfq", ["Mobilian"] = "mod", ["Mobumrin Aizi"] = "ahm", ["Mocana"] = "sai-mcn", ["Mochi"] = "old", ["Mochica"] = "omc", ["Mocho"] = "mhc", ["Mocoví"] = "moc", ["Modang"] = "mxd", ["Modole"] = "mqo", ["Moere"] = "mvq", ["Mofu-Gudur"] = "mif", ["Mogum"] = "mou", ["Mohegan-Pequot"] = "xpq", ["Moi (Congo)"] = "mow", ["Moi (Indonesia)"] = "mxn", ["Moikodi"] = "mkp", ["Moingi"] = "mwz", ["Mojave"] = "mov", ["Moji"] = "ymi", ["Mok"] = "mqt", ["Mokerang"] = "mft", ["Mokole"] = "mkl", ["Mokpwe"] = "bri", ["Molale"] = "mbe", ["Tiếng Molbog"] = "pwm", ["Moldova Sign Language"] = "vsi", ["Molengue"] = "bxc", ["Molima"] = "mox", ["Molmo One"] = "aun", ["Molo"] = "zmo", ["Molof"] = "msl", ["Moloko"] = "mlw", ["Mom Jango"] = "ver", ["Moma"] = "myl", ["Momare"] = "msz", ["Mombo Dogon"] = "dmb", ["Mombum"] = "mso", ["Momina"] = "mmb", ["Momuna"] = "mqf", ["Monastic Sign Language"] = "mzg", ["Mondropolon"] = "npn", ["Mondé"] = "mnd", ["Tiếng Mongo"] = "lol", ["Mongol"] = "mgt", ["Mongolian Sign Language"] = "msr", ["Tiếng Mongondow"] = "mog", ["Moni"] = "mnz", ["Monimbo"] = "mom", ["Mono (California)"] = "mnr", ["Mono (Cameroon)"] = "mru", ["Mono (Congo)"] = "mnh", ["Monsang Naga"] = "nmh", ["Montagnais"] = "moe", ["Montana Salish"] = "fla", ["Montol"] = "mtl", ["Monumbo"] = "mxk", ["Monzombo"] = "moj", ["Moo"] = "gwg", ["Moose Cree"] = "crm", ["Mopan Maya"] = "mop", ["Mor (Austronesian)"] = "mhz", ["Mor (Papuan)"] = "moq", ["Moraid"] = "msg", ["Moran"] = "sit-mor", ["Morawa"] = "mze", ["Morelos Nahuatl"] = "nhm", ["Morerebi"] = "xmo", ["Moresada"] = "msx", ["Mori Atas"] = "mzq", ["Mori Bawah"] = "xmz", ["Morigi"] = "mdb", ["Moro"] = "mor", ["Moroccan Amazigh"] = "zgh", ["Moroccan Sign Language"] = "xms", ["Morom"] = "bdo", ["Moronene"] = "mqn", ["Morori"] = "mok", ["Morouas"] = "mrp", ["Mortlockese"] = "mrl", ["Moru"] = "mgd", ["Mosimo"] = "mqv", ["Moskona"] = "mtj", ["Mota"] = "mtt", ["Motembo"] = "tmv", ["Mouk-Aria"] = "mwh", ["Mount Iraya Agta"] = "atl", ["Mount Iriga Agta"] = "agz", ["Mountain Koiari"] = "kpx", ["Mouwase"] = "jmw", ["Movima"] = "mzp", ["Moyadan Itneg"] = "ity", ["Moyon Naga"] = "nmo", ["Mozambican Sign Language"] = "mzy", ["Mpade"] = "mpi", ["Mpalitjanh"] = "xpj", ["Mpi"] = "mpz", ["Mpiemo"] = "mcx", ["Mpiin"] = "bnt-mpi", ["Mpinda"] = "pnd", ["Mpongmpong"] = "mgg", ["Mpoto"] = "mpa", ["Mpotovoro"] = "mvt", ["Mpuono"] = "bnt-mpu", ["Mpur"] = "akc", ["Mro Chin"] = "cmr", ["Mru"] = "mro", ["Mser"] = "kqx", ["Mualang"] = "mtd", ["Mubami"] = "tsx", ["Mubi"] = "mub", ["Mucuchí"] = "sai-muc", ["Muda"] = "ymd", ["Tiếng Mudburra"] = "dmw", ["Muduapa"] = "wiv", ["Muduga"] = "udg", ["Muellama"] = "sai-mue", ["Mufian"] = "aoj", ["Muher"] = "sem-mhr", ["Muinane"] = "bmr", ["Mukha-Dora"] = "mmk", ["Mukulu"] = "moz", ["Mulaha"] = "mfw", ["Mulam"] = "mlm", ["Mulao"] = "giu", ["Mullu Kurumba"] = "kpb", ["Mullukmulluk"] = "mpb", ["Muluridyi"] = "vmu", ["Mum"] = "kqa", ["Mumuye"] = "mzm", ["Tiếng Muna"] = "mnb", ["Munda"] = "unx", ["Tiếng Mundabli"] = "boe", ["Mundang"] = "mua", ["Mundani"] = "mnf", ["Mundat"] = "mmf", ["Mundolinco"] = "art-mun", ["Mundurukú"] = "myu", ["Mungaka"] = "mhk", ["Mungbam"] = "mij", ["Munggui"] = "mth", ["Mungkip"] = "mpv", ["Muniche"] = "myr", ["Munit"] = "mtc", ["Tiếng Munsee"] = "umu", ["Mur Pano"] = "tkv", ["Muratayak"] = "asx", ["Murik (Malaysia)"] = "mxr", ["Murik (New Guinea)"] = "mtf", ["Murkim"] = "rmh", ["Murle"] = "mur", ["Murrinh-Patha"] = "mwf", ["Murui Huitoto"] = "huu", ["Murupi"] = "mqw", ["Muruwari"] = "zmu", ["Musan"] = "mmp", ["Musar"] = "mmi", ["Musasa"] = "smm", ["Musey"] = "mse", ["Musgu"] = "mug", ["Musi"] = "mui", ["Muskum"] = "mje", ["Musom"] = "msu", ["Mussau-Emira"] = "emi", ["Muthuvan"] = "muv", ["Mutu"] = "tuc", ["Muya"] = "mvm", ["Muyang"] = "muy", ["Muyuw"] = "myw", ["Muzi"] = "ymz", ["Muzo"] = "sai-muz", ["Mvanip"] = "mcj", ["Mvuba"] = "mxh", ["Mwaghavul"] = "sur", ["Mwali Comorian"] = "wlc", ["Tiếng Mwan"] = "moa", ["Mwani"] = "wmw", ["Mwatebu"] = "mwa", ["Mwera"] = "mwe", ["Mwimbi-Muthambi"] = "mws", ["Mycenaean Greek"] = "gmy", ["Myene"] = "mye", ["Mysian"] = "yms", ["Mzieme Naga"] = "nme", ["Mághdì"] = "gmd", ["Tiếng Mòcheno"] = "mhn", ["Mün Chin"] = "mwq", ["Mündü"] = "muh", ["N'Ko"] = "nqo", ["Na"] = "nbt", ["Na'vi"] = "art-nav", ["Naaba"] = "nao", ["Naba"] = "mne", ["Nabak"] = "naf", ["Nabi"] = "mty", ["Nachering"] = "ncd", ["Nadruvian"] = "ndf", ["Nadëb"] = "mbj", ["Tiếng Nafaanra"] = "nfr", ["Nafi"] = "srf", ["Nafri"] = "nxx", ["Naga Pidgin"] = "nag", ["Nagarchal"] = "nbg", ["Nage"] = "nxe", ["Nagtipunan Agta"] = "phi-nag", ["Nagu"] = "ngr", ["Nagumi"] = "ngv", ["Nahali"] = "nlx", ["Nahari"] = "nhh", ["Nahavaq"] = "sns", ["Nai"] = "bio", ["Najdi Arabic"] = "ars", ["Naka'ela"] = "nae", ["Nakai"] = "nkj", ["Nakame"] = "nib", ["Nakanai"] = "nak", ["Nakara"] = "nck", ["Nake"] = "nbk", ["Naki"] = "mff", ["Nakwi"] = "nax", ["Nalca"] = "nlc", ["Nali"] = "nss", ["Nalik"] = "nal", ["Nalu"] = "naj", ["Nalögo"] = "nlz", ["Namakura"] = "nmk", ["Namat"] = "nkm", ["Tiếng Nambikwara"] = "nab", ["Nambo"] = "ncm", ["Nambya"] = "nmq", ["Namia"] = "nnm", ["Namiae"] = "nvm", ["Namibian Sign Language"] = "nbs", ["Namla"] = "naa", ["Namo"] = "mxw", ["Namonuito"] = "nmt", ["Namosi-Naitasiri-Serua"] = "bwb", ["Namuyi"] = "nmy", ["Nancere"] = "nnc", ["Nande"] = "nnb", ["Nandi"] = "niq", ["Nanerigé Sénoufo"] = "sen", ["Nanga Dama Dogon"] = "nzz", ["Nankina"] = "nnk", ["Nanti"] = "cox", ["Nanticoke"] = "nnt", ["Nanubae"] = "afk", ["Naolan"] = "nai-nao", ["Napu"] = "npy", ["Nar Phu"] = "npa", ["Nara"] = "nrb", ["Narak"] = "nac", ["Narango"] = "nrg", ["Narau"] = "nxu", ["Narim"] = "loh", ["Naro"] = "nhr", ["Narom"] = "nrm", ["Narragansett"] = "xnt", ["Narungga"] = "nnr", ["Naruo"] = "ylo", ["Nasal"] = "nsy", ["Nasarian"] = "nvh", ["Nasioi"] = "nas", ["Naskapi"] = "nsk", ["Nasu"] = "ywq", ["Natagaimas"] = "nts", ["Natchez"] = "ncz", ["Nateni"] = "ntm", ["Nathembo"] = "nte", ["Natioro"] = "nti", ["Natú"] = "sai-nat", ["Natügu"] = "ntu", ["Nauete"] = "nxa", ["Naukanski"] = "ynk", ["Nauna"] = "ncn", ["Nauo"] = "nwo", ["Navarro-Aragonese"] = "roa-oan", ["Navut"] = "nsw", ["Nawaru"] = "nwr", ["Nawathinehena"] = "nwa", ["Nawdm"] = "nmz", ["Nawuri"] = "naw", ["Nayi"] = "noz", ["Ncane"] = "ncr", ["Nchumbulu"] = "nlu", ["Nda'nda'"] = "nnz", ["Ndai"] = "gke", ["Ndaka"] = "ndk", ["Ndali"] = "ndh", ["Ndam"] = "ndm", ["Ndamba"] = "ndj", ["Ndambomo"] = "nxo", ["Ndasa"] = "nda", ["Ndau"] = "ndc", ["Nde-Gbite"] = "ned", ["Nde-Nsele-Nta"] = "ndd", ["Ndemli"] = "nml", ["Ndendeule"] = "dne", ["Ndengereko"] = "ndg", ["Nding"] = "eli", ["Ndjébbana"] = "djj", ["Ndo"] = "ndp", ["Ndobo"] = "ndw", ["Ndoe"] = "nbb", ["Ndolo"] = "ndl", ["Ndom"] = "nqm", ["Ndombe"] = "ndq", ["Ndoola"] = "ndr", ["Ndrulo"] = "dno", ["Nduga"] = "ndx", ["Ndumu"] = "nmd", ["Ndunda"] = "nuh", ["Ndunga"] = "ndt", ["Ndut"] = "ndv", ["Ndyuka-Trio Pidgin"] = "njt", ["Ndzwani Comorian"] = "wni", ["Nedebang"] = "nec", ["Nefamese"] = "nef", ["Negeri Sembilan Malay"] = "zmi", ["Nehan"] = "nsn", ["Nek"] = "nif", ["Nekgini"] = "nkg", ["Neko"] = "nej", ["Neku"] = "nek", ["Neme"] = "nex", ["Nemi"] = "nem", ["Nen"] = "nqn", ["Nend"] = "anh", ["Nengone"] = "nen", ["Neo"] = "neu", ["Nepalese Sign Language"] = "nsp", ["Nepali Kurux"] = "kxl", ["Nete"] = "net", ["Neve'ei"] = "vnm", ["Neverver"] = "lgk", ["New Caledonian Javanese"] = "jas", ["New River Shasta"] = "nai-nrs", ["New Zealand Sign Language"] = "nzs", ["Neyo"] = "ney", ["Nez Perce"] = "nez", ["Nga La"] = "hlt", ["Ngaanyatjarra"] = "ntj", ["Tiếng Ngadha"] = "nxg", ["Ngadjunmaya"] = "nju", ["Ngadjuri"] = "jui", ["Ngaing"] = "nnf", ["Ngaju"] = "nij", ["Ngala"] = "nud", ["Ngalakan"] = "nig", ["Ngalkbun"] = "ngk", ["Ngam"] = "nmc", ["Ngamambo"] = "nbv", ["Ngambay"] = "sba", ["Ngamini"] = "nmv", ["Ngamo"] = "nbh", ["Ngan'gityemerri"] = "nam", ["Nganakarti"] = "xnk", ["Ngandi"] = "nid", ["Ngando (Central African Republic)"] = "ngd", ["Ngando (Congo)"] = "nxd", ["Ngandyera"] = "nne", ["Ngangam"] = "gng", ["Ngantangarra"] = "ntg", ["Nganyaywana"] = "nyx", ["Ngardi"] = "rxd", ["Ngarigu"] = "xni", ["Ngarinman"] = "nbj", ["Ngarinyin"] = "ung", ["Ngarla"] = "nrk", ["Ngarluma"] = "nrl", ["Ngarrindjeri"] = "nay", ["Ngasa"] = "nsg", ["Ngatik Men's Creole"] = "ngm", ["Ngawn Chin"] = "cnw", ["Ngawun"] = "nxn", ["Ngazidja Comorian"] = "zdj", ["Ngbaka"] = "nga", ["Ngbaka Ma'bo"] = "nbm", ["Ngbaka Manza"] = "ngg", ["Ngbee"] = "jgb", ["Ngbinda"] = "nbd", ["Ngbundu"] = "nuu", ["Ngelima"] = "agh", ["Ngemba"] = "nge", ["Ngen"] = "gnj", ["Ngendelengo"] = "nql", ["Ngeq"] = "ngt", ["Ngete"] = "nnn", ["Nggem"] = "nbq", ["Nggwahyi"] = "ngx", ["Ngie"] = "ngj", ["Ngile"] = "jle", ["Ngindo"] = "nnq", ["Ngiti"] = "niy", ["Tiếng Ngiyambaa"] = "wyb", ["Ngizim"] = "ngi", ["Ngkoth"] = "aus-ngk", ["Ngkâlmpw Kanum"] = "kcd", ["Ngochang"] = "tbq-ngo", ["Ngom"] = "nra", ["Ngombale"] = "nla", ["Ngombe (Central African Republic)"] = "nmj", ["Tiếng Ngombe (Congo)"] = "ngc", ["Ngong"] = "nnx", ["Ngongo"] = "noq", ["Ngoni"] = "ngo", ["Ngoreme"] = "ngq", ["Ngoshie"] = "nsh", ["Ngul"] = "nlo", ["Ngulu"] = "ngp", ["Nguluwan"] = "nuw", ["Ngumbi"] = "nui", ["Ngunawal"] = "xul", ["Ngundi"] = "ndn", ["Ngundu"] = "nue", ["Ngungwel"] = "ngz", ["Ngurmbur"] = "nrx", ["Ngwaba"] = "ngw", ["Ngwe"] = "nwe", ["Ngwo"] = "ngn", ["Ngäbere"] = "gym", ["Nhanda"] = "nha", ["Nhirrpi"] = "hrp", ["Nhuwala"] = "nhf", ["Nicaraguan Creole"] = "bzk", ["Nicaraguan Sign Language"] = "ncs", ["Nicola"] = "ath-nic", ["Niellim"] = "nie", ["Nigeria Mambila"] = "mzk", ["Nigerian Pidgin"] = "pcm", ["Nigerian Sign Language"] = "nsi", ["Nihali"] = "nll", ["Nii"] = "nii", ["Niksek"] = "gbe", ["Nila"] = "nil", ["Nilamba"] = "nim", ["Nimadi"] = "noe", ["Nimanbur"] = "nmp", ["Nimbari"] = "nmr", ["Nimboran"] = "nir", ["Nimi"] = "nis", ["Nimo"] = "niw", ["Nimoa"] = "nmw", ["Ninam"] = "shb", ["Nindi"] = "nxi", ["Ningera"] = "nby", ["Ninggerum"] = "nxr", ["Ningil"] = "niz", ["Ninia Yali"] = "nlk", ["Ninzo"] = "nin", ["Nipsan"] = "nps", ["Nisa"] = "njs", ["Nisenan"] = "nsz", ["Nisga'a"] = "ncg", ["Nisi"] = "yso", ["Niuafo'ou"] = "num", ["Niuatoputapu"] = "nkp", ["Tiếng Nivaclé"] = "cag", ["Niwer Mil"] = "hrc", ["Njalgulgule"] = "njl", ["Njebi"] = "nzb", ["Njen"] = "njj", ["Njerep"] = "njr", ["Njyem"] = "njy", ["Nkami"] = "nkq", ["Nkangala"] = "nkn", ["Nkem-Nkum"] = "isi", ["Nkhumbi"] = "khu", ["Nkongho"] = "nkc", ["Nkoroo"] = "nkx", ["Nkoya"] = "nka", ["Nkukoli"] = "nbo", ["Nkutu"] = "nkw", ["Nnam"] = "nbp", ["Nobonob"] = "gaw", ["Nocamán"] = "nom", ["Nocte Naga"] = "njb", ["Noiri"] = "noi", ["Nokuku"] = "nkk", ["Nomaande"] = "lem", ["Nomane"] = "nof", ["Nomatsiguenga"] = "not", ["Nomlaki"] = "nol", ["Nomu"] = "noh", ["Nonuya"] = "noj", ["Nooksack"] = "nok", ["Noon"] = "snf", ["Noone"] = "nhu", ["Nopala Chatino"] = "cya", ["Norn"] = "nrn", ["Norra"] = "nrr", ["North Ambrym"] = "mmg", ["North Asmat"] = "nks", ["North Awyu"] = "yir", ["North Babar"] = "bcd", ["North Boma"] = "boh", ["North Central Mixe"] = "neq", ["North Efate"] = "llp", ["North Fali"] = "fll", ["North Giziga"] = "gis", ["North Marquesan"] = "mrq", ["North Mesopotamian Arabic"] = "ayp", ["North Mofu"] = "mfk", ["North Muyu"] = "kti", ["North Nuaulu"] = "nni", ["North Picene"] = "nrp", ["North Tairora"] = "tbg", ["North Tanna"] = "tnn", ["North Wahgi"] = "whg", ["North Watut"] = "una", ["Northeast Kiwai"] = "kiw", ["Northeast Maidu"] = "nmu", ["Northeast Pashayi"] = "aee", ["Northeastern Dinka"] = "dip", ["Northeastern Pomo"] = "pef", ["Northern Alta"] = "aqn", ["Northern Bontoc"] = "rbk", ["Tiếng Bắc Catanduanes Bikol"] = "cts", ["Northern Dagara"] = "dgi", ["Northern East Cree"] = "crl", ["Northern Ghale"] = "ghh", ["Northern Grebo"] = "gbo", ["Northern Guiyang Hmong"] = "huj", ["Northern Haida"] = "hdn", ["Northern Huishui Hmong"] = "hmi", ["Northern Kalapuya"] = "nrt", ["Northern Kam"] = "doc", ["Northern Kankanay"] = "xnn", ["Northern Khanty"] = "kca-nor", ["Northern Kissi"] = "kqs", ["Northern Lorung"] = "lbr", ["Northern Mashan Hmong"] = "hmp", ["Northern Muji"] = "ymx", ["Northern Ngbandi"] = "ngb", ["Northern Nuni"] = "nuv", ["Northern Oaxaca Nahuatl"] = "nhy", ["Northern Ohlone"] = "cst", ["Northern One"] = "onr", ["Tiếng Bắc Paiute"] = "pao", ["Northern Pame"] = "pmq", ["Northern Pinghua"] = "cnp", ["Northern Pomo"] = "pej", ["Northern Puebla Nahuatl"] = "ncj", ["Northern Pumi"] = "pmi", ["Northern Qiandong Miao"] = "hea", ["Northern Rengma Naga"] = "nnl", ["Northern Sierra Miwok"] = "nsq", ["Northern Subanen"] = "stb", ["Northern Tarahumara"] = "thh", ["Northern Tepehuan"] = "ntp", ["Northern Tidong"] = "ntd", ["Northern Tlaxiaco Mixtec"] = "xtn", ["Northern Toussian"] = "tsp", ["Northern Tutchone"] = "ttm", ["Northern Valley Yokuts"] = "nai-nvy", ["Tiếng Tây Bắc Gbaya"] = "gya", ["Northwest Maidu"] = "mjd", ["Northwest Oaxaca Mixtec"] = "mxa", ["Northwest Pashayi"] = "glh", ["Northwestern Dinka"] = "diw", ["Northwestern Fars"] = "faz", ["Northwestern Ojibwa"] = "ojb", ["Northwestern Tamang"] = "tmk", ["Norwegian Sign Language"] = "nsl", ["Notre"] = "bly", ["Notsi"] = "ncf", ["Nottoway"] = "ntw", ["Nottoway-Meherrin"] = "nwy", ["Noxilo"] = "art-nox", ["Noy"] = "noy", ["Nsari"] = "asj", ["Nsenga"] = "nse", ["Nshi"] = "nsc", ["Nsong"] = "soo", ["Nsongo"] = "nsx", ["Ntcham"] = "bud", ["Ntomba"] = "nto", ["Ntra'ngith"] = "dgt", ["Nuguria"] = "nur", ["Nuk"] = "noc", ["Nukak Makú"] = "mbr", ["Nukna"] = "klt", ["Nukuini"] = "nuc", ["Nukumanu"] = "nuq", ["Nukunu"] = "nnv", ["Nukunul"] = "xnu", ["Nukuoro"] = "nkr", ["Numana"] = "nbr", ["Numanggang"] = "nop", ["Numbami"] = "sij", ["Nume"] = "tgs", ["Numee"] = "kdk", ["Numidian"] = "nxm", ["Nungali"] = "nug", ["Nunggubuyu"] = "nuy", ["Nungon"] = "paa-nun", ["Nungu"] = "rin", ["Nupbikha"] = "npb", ["Tiếng Nupe"] = "nup", ["Nusa Laut"] = "nul", ["Nusu"] = "nuf", ["Nutabe"] = "cba-nut", ["Nyabwa"] = "nwb", ["Nyaheun"] = "nev", ["Nyakyusa"] = "nyy", ["Nyali"] = "nlj", ["Nyam"] = "nmi", ["Nyamal"] = "nly", ["Nyambo"] = "now", ["Nyamusa-Molo"] = "nwm", ["Nyamwanga"] = "mwn", ["Nyamwezi"] = "nym", ["Nyaneka"] = "nyk", ["Nyang'i"] = "nyp", ["Nyanga (Congo)"] = "nyj", ["Nyanga (Togo)"] = "ayg", ["Nyanga-li"] = "nyc", ["Nyangatom"] = "nnj", ["Nyangbo"] = "nyb", ["Nyangga"] = "nny", ["Nyangumarta"] = "nna", ["Nyankole"] = "nyn", ["Nyaturu"] = "rim", ["Nyawaygi"] = "nyt", ["Nyemba"] = "nba", ["Nyengo"] = "nye", ["Nyenkha"] = "neh", ["Nyigina"] = "nyh", ["Nyiha"] = "nih", ["Nyika"] = "nkt", ["Nyimang"] = "nyi", ["Nyindrou"] = "lid", ["Nyindu"] = "nyg", ["Nyishi"] = "njz", ["Nyiyaparli"] = "xny", ["Nyokon"] = "nvo", ["Nyole (Kenya)"] = "nyd", ["Nyole (Uganda)"] = "nuj", ["Nyong"] = "muo", ["Nyoro"] = "nyo", ["Nyulnyul"] = "nyv", ["Tiếng Nyunga"] = "nys", ["Nyungwe"] = "nyu", ["Nyâlayu"] = "yly", ["Tiếng Nzadi"] = "nzd", ["Nzakambay"] = "nzy", ["Nzakara"] = "nzk", ["Nzanyi"] = "nja", ["Nzima"] = "nzi", ["Nüpode Huitoto"] = "hux", ["Tiếng Nǀuu"] = "ngh", ["O'chi'chi'"] = "xoc", ["Obanliku"] = "bzy", ["Obispeño"] = "obi", ["Oblo"] = "obl", ["Obo Manobo"] = "obo", ["Obokuitai"] = "afz", ["Obolo"] = "ann", ["Obulom"] = "obu", ["Ocotepec Mixtec"] = "mie", ["Ocotlán Zapotec"] = "zac", ["Od"] = "odk", ["Odiai"] = "bhf", ["Odoodee"] = "kkc", ["Odual"] = "odu", ["Odut"] = "oda", ["Ofayé"] = "opy", ["Ofo"] = "ofo", ["Ogbah"] = "ogc", ["Ogbia"] = "ogb", ["Ogbogolo"] = "ogg", ["Ogea"] = "eri", ["Oirata"] = "oia", ["Okiek"] = "oki", ["Oko-Eni-Osayen"] = "oks", ["Oko-Juwoi"] = "okj", ["Okobo"] = "okb", ["Okodia"] = "okd", ["Okolod"] = "kqv", ["Okpamheri"] = "opa", ["Okpe (Northwestern Edo)"] = "okx", ["Okpe (Southwestern Edo)"] = "oke", ["Okpela"] = "atg", ["Oksapmin"] = "opm", ["Oku"] = "oku", ["Okwanuchu"] = "nai-okw", ["Old Avar"] = "oav", ["Old Bengali"] = "inc-obn", ["Tiếng Catalan cổ"] = "roa-oca", ["Tiếng Cornwall cổ"] = "oco", ["Old Gujarati"] = "inc-ogu", ["Old Hindi"] = "inc-ohi", ["Tiếng Hungary cổ"] = "ohu", ["Old Kamta"] = "inc-ork", ["Tiếng Kannada cổ"] = "dra-okn", ["Tiếng Telugu cổ"] = "dra-ote", ["Old Kentish Sign Language"] = "okl", ["Old Leonese"] = "roa-ole", ["Tiếng Navarro-Aragon"] = "roa-ona", ["Tiếng Litva cổ"] = "olt", ["Old Manipuri"] = "omp", ["Old Marathi"] = "omr", ["Old Nubian"] = "onw", ["Old Oriya"] = "inc-oor", ["Tiếng Punjab cổ"] = "inc-opa", ["Tiếng Nam Ả Rập cổ"] = "sem-srb", ["Old Tati"] = "xme-ott", ["Tiếng Tây Tạng cổ"] = "otb", ["Old Welsh"] = "owl", ["Olekha"] = "ole", ["Ollari"] = "gdb", ["Olo"] = "ong", ["Oloma"] = "olm", ["Olrat"] = "olr", ["Olu'bo"] = "lul", ["Olulumo-Ikom"] = "iko", ["Oluta Popoluca"] = "plo", ["Olutsotso"] = "lto", ["Omagua"] = "omg", ["Omba"] = "omb", ["Ombamba"] = "mbm", ["Ombo"] = "oml", ["Ometepec Nahuatl"] = "nht", ["Omi"] = "omi", ["Omotik"] = "omt", ["Omurano"] = "omu", ["Oneida"] = "one", ["Ong"] = "oog", ["Ongota"] = "bxe", ["Onin"] = "oni", ["Onjob"] = "onj", ["Ono"] = "ons", ["Onobasulu"] = "onn", ["Onondaga"] = "ono", ["Ontenu"] = "ont", ["Ontong Java"] = "ojv", ["Oorlams"] = "oor", ["Opao"] = "opo", ["Opata"] = "opt", ["Opuuo"] = "lgn", ["Opón"] = "sai-opo", ["Oraon Sadri"] = "sdr", ["Orejón"] = "ore", ["Oring"] = "org", ["Orizaba Nahuatl"] = "nlv", ["Orléanais"] = "roa-orl", ["Oro"] = "orx", ["Oro Win"] = "orw", ["Oroha"] = "ora", ["Orokaiva"] = "okv", ["Oroko"] = "bdu", ["Orokolo"] = "oro", ["Orowe"] = "bpk", ["Oruma"] = "orr", ["Orya"] = "ury", ["Osamayi"] = "syx", ["Osing"] = "osi", ["Ososo"] = "oso", ["Ot Danum"] = "otd", ["Otank"] = "uta", ["Oti"] = "oti", ["Otomaco"] = "sai-oto", ["Otoro"] = "otr", ["Ottawa"] = "otw", ["Ouma"] = "oum", ["Oune"] = "oue", ["Owa"] = "stn", ["Owenia"] = "wsr", ["Owiniga"] = "owi", ["Oy"] = "oyb", ["Oya'oya"] = "oyy", ["Tiếng Oyda"] = "oyd", ["Ozolotepec Zapotec"] = "zao", ["Pa"] = "ppt", ["Pa Di"] = "pdi", ["Pa'a"] = "pqa", ["Paama"] = "pma", ["Paasaal"] = "sig", ["Pacahuara"] = "pcp", ["Padoe"] = "pdo", ["Paelignian"] = "pgn", ["Paeonian"] = "ine-pae", ["Pagi"] = "pgi", ["Pagibete"] = "pae", ["Tiếng Pagu"] = "pgu", ["Pahanan Agta"] = "apf", ["Tiếng Pothohar"] = "phr", ["Pahi"] = "lgt", ["Pahlavani"] = "phv", ["Pai Tavytera"] = "pta", ["Pai-lang"] = "tbq-plg", ["Paicî"] = "pri", ["Paikoneka"] = "awd-pai", ["Paipai"] = "ppi", ["Pajapan Nahuatl"] = "nhp", ["Pak-Tong"] = "pkg", ["Pakanha"] = "pkn", ["Pakistan Sign Language"] = "pks", ["Tiếng Paku"] = "pku", ["Paku Karen"] = "kpp", ["Pal"] = "abw", ["Palaka Senoufo"] = "plr", ["Palantla Chinantec"] = "cpa", ["Palawan Batak"] = "bya", ["Paleni"] = "pnl", ["Palenquero"] = "pln", ["Palewyami"] = "nai-ply", ["Palikur"] = "plu", ["Paliyan"] = "pcf", ["Pallanganmiddang"] = "pmd", ["Palor"] = "fap", ["Palta"] = "sai-pal", ["Palu'e"] = "ple", ["Paluan"] = "plz", ["Palya Bareli"] = "bpx", ["Pam"] = "pmn", ["Pambia"] = "pmb", ["Pamigua"] = "sai-pam", ["Pamlico"] = "pmk", ["Pamona"] = "pmf", ["Pamosu"] = "hih", ["Pamplona Atta"] = "att", ["Pana (Central Africa)"] = "pnz", ["Pana (West Africa)"] = "pnq", ["Panamanian Sign Language"] = "lsp", ["Panamint"] = "par", ["Panare"] = "pbh", ["Panará"] = "kre", ["Panasuan"] = "psn", ["Panawa"] = "pwb", ["Pande"] = "bkj", ["Pangseng"] = "pgs", ["Pangutaran Sama"] = "slm", ["Pangwa"] = "pbr", ["Panim"] = "pnr", ["Paniya"] = "pcg", ["Pankararé"] = "pax", ["Pankararú"] = "paz", ["Pankhu"] = "pkh", ["Pannei"] = "pnc", ["Panobo"] = "pno", ["Panyi Bai"] = "bfc", ["Panyjima"] = "pnw", ["Panzaleo"] = "sai-pnz", ["Pao"] = "ppa", ["Tiếng Totonac Papantla"] = "top", ["Papapana"] = "ppn", ["Papar"] = "dpp", ["Papasena"] = "pas", ["Papel"] = "pbo", ["Papi"] = "ppe", ["Papitalai"] = "pat", ["Papora"] = "ppu", ["Papua New Guinean Sign Language"] = "pgz", ["Papuan Malay"] = "pmy", ["Papuma"] = "ppm", ["Para Naga"] = "pzn", ["Parachi"] = "prc", ["Tiếng Guarani Paraguay"] = "gug", ["Paraguayan Sign Language"] = "pys", ["Parakanã"] = "pak", ["Paranan"] = "prf", ["Paranawát"] = "paf", ["Paratió"] = "sai-par", ["Tiếng Paraujano"] = "pbg", ["Parawen"] = "prw", ["Pardhan"] = "pch", ["Pardhi"] = "pcl", ["Pare"] = "asa", ["Tiếng Pareci"] = "pab", ["Paredarerme"] = "xpd", ["Parenga"] = "pcj", ["Parya"] = "paq", ["Pará Arára"] = "aap", ["Pará Gavião"] = "gvp", ["Pasi"] = "psq", ["Pass Valley Yali"] = "yac", ["Passé"] = "awd-pas", ["Patagón"] = "sai-ptg", ["Patamona"] = "pbc", ["Patani"] = "ptn", ["Pataxó Hã-Ha-Hãe"] = "pth", ["Patep"] = "ptp", ["Pathiya"] = "pty", ["Patpatar"] = "gfk", ["Pattani"] = "lae", ["Tiếng Mã Lai Pattani"] = "mfa", ["Pattapu"] = "ptq", ["Patwin"] = "pwi", ["Paulohi"] = "plh", ["Paumarí"] = "pad", ["Pauri Bareli"] = "bfb", ["Pauserna"] = "psm", ["Pawaia"] = "pwa", ["Payaguá"] = "sai-pyg", ["Paynamar"] = "pmr", ["Pe"] = "pai", ["Pech"] = "pay", ["Peerapper"] = "xpw", ["Peere"] = "pfe", ["Pei"] = "ppq", ["Pekal"] = "pel", ["Pele-Ata"] = "ata", ["Penang Sign Language"] = "psg", ["Penchal"] = "pek", ["Pendau"] = "ums", ["Pennsylvania German"] = "pdc", ["Penrhyn"] = "pnh", ["Pentlatch"] = "ptw", ["Perai"] = "wet", ["Perema"] = "wom", ["Pericú"] = "nai-per", ["Pero"] = "pip", ["Persian Sign Language"] = "psc", ["Peruvian Sign Language"] = "prl", ["Petapa Zapotec"] = "zpe", ["Petats"] = "pex", ["Peñoles Mixtec"] = "mil", ["Phala"] = "ypa", ["Phana'"] = "phq", ["Phangduwali"] = "phw", ["Phende"] = "pem", ["Philippine Sign Language"] = "psp", ["Philistine"] = "und-phi", ["Phimbi"] = "phm", ["Phola"] = "ypg", ["Pholo"] = "yip", ["Phom"] = "nph", ["Phudagi"] = "phd", ["Phuie"] = "pug", ["Phukha"] = "phh", ["Phuma"] = "ypm", ["Phunoi"] = "pho", ["Phupa"] = "ypp", ["Phupha"] = "yph", ["Phuthi"] = "bnt-phu", ["Phuza"] = "ypz", ["Piamatsina"] = "ptr", ["Piame"] = "pin", ["Piapoco"] = "pio", ["Piaroa"] = "pid", ["Pichinglis"] = "fpe", ["Pichis Ashéninka"] = "cpu", ["Pictish"] = "xpi", ["Picuris"] = "nai-pic", ["Pidgin Delaware"] = "dep", ["Pidgin Iha"] = "ihb", ["Pidgin Onin"] = "onx", ["Pijao"] = "pij", ["Pije"] = "piz", ["Pijin"] = "pis", ["Pileni"] = "piv", ["Pima Bajo"] = "pia", ["Pimbwe"] = "piw", ["Pinai-Hagahai"] = "pnn", ["Pingelapese"] = "pif", ["Pini"] = "pii", ["Pinigura"] = "pnv", ["Pinjarup"] = "pnj", ["Pinji"] = "pic", ["Pinotepa Nacional Mixtec"] = "mio", ["Pintiini"] = "pti", ["Pintupi-Luritja"] = "piu", ["Pirahã"] = "myp", ["Piratapuyo"] = "pir", ["Pirlatapa"] = "bxi", ["Piro"] = "pie", ["Pirriya"] = "xpa", ["Pisabo"] = "pig", ["Pisaflores Tepehua"] = "tpp", ["Piscataway"] = "psy", ["Pisidian"] = "xps", ["Pitcairn-Norfolk"] = "pih", ["Pite Sami"] = "sje", ["Piti"] = "pcn", ["Pitjantjatjara"] = "pjt", ["Pitta-Pitta"] = "pit", ["Piu"] = "pix", ["Piya-Kwonci"] = "piy", ["Tiếng Apache đồng bằng"] = "apk", ["Plains Indian Sign Language"] = "psd", ["Plains Miwok"] = "pmw", ["Plapo Krumen"] = "ktj", ["Playero"] = "gob", ["Pochuri Naga"] = "npo", ["Pochutec"] = "xpo", ["Podoko"] = "pbi", ["Pogali"] = "hkh", ["Pogolo"] = "poy", ["Poitevin-Saintongeais"] = "roa-poi", ["Pokangá"] = "pok", ["Poke"] = "pof", ["Pol"] = "pmm", ["Polci"] = "plj", ["Polish Sign Language"] = "pso", ["Polonombauk"] = "plb", ["Pom"] = "pmo", ["Ponam"] = "ncc", ["Pongu"] = "png", ["Ponyo"] = "npg", ["Poqomam"] = "poc", ["Poqomchi'"] = "poh", ["Porohanon"] = "prh", ["Port Sandwich"] = "psw", ["Port Sorell"] = "xpl", ["Port Vato"] = "ptv", ["Portuguese Sign Language"] = "psr", ["Potiguára"] = "pog", ["Poumei Naga"] = "pmx", ["Pouye"] = "bye", ["Powari"] = "pwr", ["Powhatan"] = "pim", ["Poyanáwa"] = "pyn", ["Primitive Irish"] = "pgl", ["Principense"] = "pre", ["Tiếng Algic nguyên thủy"] = "aql-pro", ["Proto-Amuesha-Chamicuro"] = "awd-amc-pro", ["Proto-Anatolian"] = "ine-ana-pro", ["Proto-Apachean"] = "apa-pro", ["Proto-Arawa"] = "auf-pro", ["Tiếng Arawak nguyên thủy"] = "awd-pro", ["Proto-Armenian"] = "hyx-pro", ["Proto-Arnhem"] = "aus-arn-pro", ["Tiếng Aari nguyên thủy"] = "omv-aro-pro", ["Proto-Atayalic"] = "map-ata-pro", ["Proto-Athabaskan"] = "ath-pro", ["Proto-Atlantic-Congo"] = "alv-pro", ["Tiếng Avar-Andic nguyên thủy"] = "cau-ava-pro", ["Proto-Bantoid"] = "nic-bod-pro", ["Proto-Batak"] = "btk-pro", ["Tiếng Bối-Thái nguyên thủy"] = "qfa-bet-pro", ["Proto-Benue-Congo"] = "nic-bco-pro", ["Proto-Bongo-Bagirmi"] = "csu-bba-pro", ["Proto-Boran"] = "sai-bor-pro", ["Proto-Bua"] = "alv-bua-pro", ["Proto-Bungku-Tolaki"] = "poz-btk-pro", ["Proto-Caddoan"] = "cdd-pro", ["Proto-Cangin"] = "alv-cng-pro", ["Proto-Central Chadic"] = "cdc-cbm-pro", ["Proto-Central Indo-Aryan"] = "inc-cen-pro", ["Proto-Central Jê"] = "sai-cje-pro", ["Proto-Central New South Wales"] = "aus-cww-pro", ["Proto-Central Sudanic"] = "csu-pro", ["Proto-Central Togo"] = "alv-gtm-pro", ["Proto-Chadic"] = "cdc-pro", ["Proto-Chatino"] = "omq-cha-pro", ["Proto-Chibchan"] = "cba-pro", ["Proto-Chimakuan"] = "chi-pro", ["Proto-Chinookan"] = "nai-ckn-pro", ["Proto-Chukotko-Kamchatkan"] = "qfa-cka-pro", ["Proto-Chumash"] = "nai-chu-pro", ["Proto-Cupan"] = "azc-cup-pro", ["Proto-Daju"] = "sdv-daj-pro", ["Proto-Daly"] = "aus-dal-pro", ["Tiếng Dizi nguyên thủy"] = "omv-diz-pro", ["Proto-Eastern Jebel"] = "sdv-eje-pro", ["Proto-Eastern Oti-Volta"] = "nic-eov-pro", ["Proto-Edoid"] = "alv-edo-pro", ["Tiếng Eskimo-Aleut nguyên thủy"] = "esx-pro", ["Proto-Fali"] = "alv-fli-pro", ["Proto-Grassfields"] = "nic-grf-pro", ["Proto-Great Andamanese"] = "qfa-adm-pro", ["Proto-Guang"] = "alv-gng-pro", ["Proto-Gur"] = "nic-gur-pro", ["Proto-Gurunsi"] = "nic-gns-pro", ["Proto-Halmahera-Cenderawasih"] = "poz-hce-pro", ["Proto-Heiban"] = "alv-hei-pro", ["Proto-Highland East Cushitic"] = "cus-hec-pro", ["Proto-Hmong"] = "hmn-pro", ["Proto-Hrusish"] = "sit-hrs-pro", ["Proto-Huitoto-Ocaina"] = "sai-hoc-pro", ["Proto-Hurro-Urartian"] = "qfa-hur-pro", ["Proto-Idomoid"] = "alv-ido-pro", ["Proto-Igboid"] = "alv-igb-pro", ["Proto-Ijoid"] = "ijo-pro", ["Proto-Iwaidjan"] = "aus-wdj-pro", ["Proto-Jukunoid"] = "nic-jkn-pro", ["Proto-Kadu"] = "qfa-kad-pro", ["Proto-Kalamian"] = "phi-kal-pro", ["Proto-Kalapuyan"] = "nai-klp-pro", ["Proto-Kam-Sui"] = "qfa-kms-pro", ["Proto-Kampa"] = "awd-kmp-pro", ["Proto-Kham"] = "sit-kha-pro", ["Proto-Khoe"] = "khi-kho-pro", ["Tiếng Koman nguyên thủy"] = "ssa-kom-pro", ["Proto-Komisenian"] = "ira-kms-pro", ["Tiếng Kra nguyên thủy"] = "qfa-kra-pro", ["Tiếng Kra-Dai nguyên thủy"] = "qfa-tak-pro", ["Proto-Kru"] = "kro-pro", ["Proto-Kuki-Chin"] = "tbq-kuk-pro", ["Proto-Kuliak"] = "ssa-klk-pro", ["Proto-Kurdish"] = "ku-pro", ["Proto-Kwa"] = "alv-kwa-pro", ["Proto-Lalo"] = "tbq-lal-pro", ["Proto-Lampungic"] = "poz-lgx-pro", ["Proto-Lolo-Burmese"] = "tbq-lob-pro", ["Proto-Loloish"] = "tbq-lol-pro", ["Proto-Lower Cross River"] = "nic-lcr-pro", ["Proto-Luish"] = "sit-luu-pro", ["Proto-Maidun"] = "nai-mdu-pro", ["Proto-Mande"] = "dmn-pro", ["Proto-Mangbetu"] = "csu-maa-pro", ["Tiếng Mari nguyên thủy"] = "chm-pro", ["Proto-Masa"] = "cdc-mas-pro", ["Proto-Mazatec"] = "omq-maz-pro", ["Proto-Medo-Parthian"] = "ira-mpr-pro", ["Tiếng Miền nguyên thủy"] = "hmx-mie-pro", ["Proto-Mixe-Zoque"] = "nai-miz-pro", ["Proto-Mixtec"] = "omq-mxt-pro", ["Proto-Mixtecan"] = "omq-mix-pro", ["Proto-Mumuye"] = "alv-mum-pro", ["Proto-Munji-Yidgha"] = "ira-mny-pro", ["Proto-Na-Dene"] = "xnd-pro", ["Proto-Nahuan"] = "azc-nah-pro", ["Proto-Nawiki"] = "awd-nwk-pro", ["Tiếng Nguni nguyên thủy"] = "bnt-ngu-pro", ["Tiếng Niger-Congo nguyên thủy"] = "nic-pro", ["Tiếng Nin-Sahara nguyên thủy"] = "ssa-pro", ["Proto-Nilotic"] = "sdv-nil-pro", ["Proto-Norse"] = "gmq-pro", ["Proto-North Caucasian"] = "ccn-pro", ["Proto-North Halmahera"] = "paa-nha-pro", ["Proto-North Sarawak"] = "poz-swa-pro", ["Proto-Nubian"] = "nub-pro", ["Proto-Numic"] = "azc-num-pro", ["Proto-Nupoid"] = "alv-nup-pro", ["Tiếng Nuristan nguyên thủy"] = "iir-nur-pro", ["Proto-Nyima"] = "sdv-nyi-pro", ["Proto-Nyulnyulan"] = "aus-nyu-pro", ["Proto-Ogoni"] = "nic-ogo-pro", ["Tiếng Omo nguyên thủy"] = "omv-pro", ["Tiếng Önge nguyên thủy"] = "qfa-ong-pro", ["Proto-Ossetic"] = "os-pro", ["Proto-Oti-Volta"] = "nic-ovo-pro", ["Proto-Oto-Manguean"] = "omq-pro", ["Proto-Oto-Pamean"] = "omq-otp-pro", ["Proto-Otomi"] = "oto-otm-pro", ["Proto-Otomian"] = "oto-pro", ["Proto-Paresi-Waura"] = "awd-prw-pro", ["Proto-Plateau"] = "nic-plt-pro", ["Proto-Plateau Penutian"] = "nai-plp-pro", ["Proto-Pnar-Khasi-Lyngngam"] = "aav-pkl-pro", ["Proto-Pomeranian"] = "zlw-pom-pro", ["Proto-Pomo"] = "nai-pom-pro", ["Tiếng Rukai nguyên thủy"] = "dru-pro", ["Tiếng Lưu Cầu nguyên thủy"] = "jpx-ryu-pro", ["Proto-Saka"] = "xsc-sak-pro", ["Proto-Saka-Wakhi"] = "xsc-skw-pro", ["Proto-Sanglechi-Ishkashimi"] = "ira-sgi-pro", ["Proto-Sara"] = "csu-sar-pro", ["Proto-Scythian"] = "xsc-pro", ["Proto-Shughni-Roshani"] = "ira-shr-pro", ["Proto-Shughni-Yazghulami"] = "ira-shy-pro", ["Proto-Shughni-Yazghulami-Munji"] = "ira-sym-pro", ["Proto-Siouan-Catawban"] = "nai-sca-pro", ["Proto-Songhay"] = "son-pro", ["Proto-Sotho-Tswana"] = "bnt-sts-pro", ["Proto-South Sulawesi"] = "poz-ssw-pro", ["Proto-Southern Jê"] = "sai-sje-pro", ["Proto-Sunda-Sulawesi"] = "poz-sus-pro", ["Proto-Ta-Arawak"] = "awd-taa-pro", ["Proto-Takic"] = "azc-tak-pro", ["Proto-Taman"] = "sdv-tmn-pro", ["Proto-Tani"] = "sit-tan-pro", ["Proto-Taranoan"] = "sai-tar-pro", ["Proto-Tatic"] = "xme-ttc-pro", ["Proto-Totozoquean"] = "nai-tot-pro", ["Proto-Trans-New Guinea"] = "ngf-pro", ["Proto-Trique"] = "omq-tri-pro", ["Proto-Tsezian"] = "cau-tsz-pro", ["Proto-Tsimshianic"] = "nai-tsi-pro", ["Tiếng Tupi nguyên thủy"] = "tup-pro", ["Proto-Ubangian"] = "nic-ubg-pro", ["Proto-Upper Cross River"] = "nic-ucr-pro", ["Proto-Utian"] = "nai-utn-pro", ["Tiếng Ute-Aztec nguyên thủy"] = "azc-pro", ["Proto-Volta-Congo"] = "nic-vco-pro", ["Proto-Volta-Niger"] = "alv-von-pro", ["Tiếng Semit Tây nguyên thủy"] = "sem-wes-pro", ["Proto-Western Mande"] = "dmn-mdw-pro", ["Proto-Witotoan"] = "sai-wit-pro", ["Proto-Yeniseian"] = "qfa-yen-pro", ["Proto-Yupik"] = "ypk-pro", ["Proto-Zapotec"] = "omq-zpc-pro", ["Proto-Zapotecan"] = "omq-zap-pro", ["Proto-Zaza-Gorani"] = "ira-zgr-pro", ["Providencia Sign Language"] = "prz", ["Psikye"] = "kvj", ["Puare"] = "pux", ["Pudtol Atta"] = "atp", ["Puebla Mazatec"] = "pbm", ["Puelche"] = "pue", ["Puerto Rican Sign Language"] = "psl", ["Puimei Naga"] = "npu", ["Puinave"] = "pui", ["Puiron"] = "sit-prn", ["Pukapukan"] = "pkp", ["Pulabu"] = "pup", ["Puluwat"] = "puw", ["Puma"] = "pum", ["Tiếng Pumpokol"] = "xpm", ["Pumé"] = "yae", ["Punan Aput"] = "pud", ["Punan Bah-Biau"] = "pna", ["Punan Batu"] = "pnm", ["Punan Merah"] = "puf", ["Punan Merap"] = "puc", ["Punan Tubu"] = "puj", ["Punu"] = "puu", ["Puquina"] = "puq", ["Puragi"] = "pru", ["Purari"] = "iar", ["Purepecha"] = "pua", ["Puri"] = "prr", ["Purik"] = "prx", ["Purisimeño"] = "puy", ["Puruborá"] = "pur", ["Puruhá"] = "sai-prh", ["Purukotó"] = "sai-pur", ["Purum"] = "pub", ["Putai"] = "mfl", ["Putoh"] = "put", ["Putukwam"] = "afe", ["Puyo-Paekche"] = "xpp", ["Pwaamei"] = "pme", ["Pwapwa"] = "pop", ["Pyapun"] = "pcw", ["Pye Krumen"] = "pye", ["Pyemmairre"] = "xpb", ["Pyen"] = "pyy", ["Pykobjê"] = "sai-pyk", ["Pyu"] = "pby", ["Páez"] = "pbb", ["Pááfang"] = "pfa", ["Päri"] = "lkr", ["Pémono"] = "pev", ["Pévé"] = "lme", ["Pökoot"] = "pko", ["Q'anjob'al"] = "kjb", ["Q'eqchi"] = "kek", ["Qabiao"] = "laq", ["Qaqet"] = "byx", ["Qatabanian"] = "xqt", ["Qau"] = "gqu", ["Qila Muji"] = "ymq", ["Tiếng Qimant"] = "ahg", ["Quebec Sign Language"] = "fcs", ["Querétaro Otomi"] = "otq", ["Quetzaltepec Mixe"] = "pxm", ["Queyu"] = "qvy", ["Quiavicuzas Zapotec"] = "zpj", ["Quileute"] = "qui", ["Quimbaya"] = "sai-qmb", ["Quinault"] = "qun", ["Quinigua"] = "nai-qng", ["Quinqui"] = "quq", ["Quioquitani-Quierí Zapotec"] = "ztq", ["Quiotepec Chinantec"] = "chq", ["Quitemo"] = "sai-qtm", ["Tiếng Quốc tế ngữ"] = "eo", ["Rabona"] = "sai-rab", ["Raga"] = "lml", ["Rahambuu"] = "raz", ["Rajah Kabunsuwan Manobo"] = "mqk", ["Raji"] = "rji", ["Rajong"] = "rjg", ["Rakahanga-Manihiki"] = "rkh", ["Ralte"] = "ral", ["Ramandi"] = "tks", ["Ramanos"] = "sai-ram", ["Ramoaaina"] = "rai", ["Ramopa"] = "kjx", ["Rampi"] = "lje", ["Rana Tharu"] = "thr", ["Rang"] = "rax", ["Rangkas"] = "rgk", ["Ranglong"] = "rnl", ["Rao"] = "rao", ["Rapa"] = "ray", ["Rapoisi"] = "kyx", ["Rapting"] = "rpt", ["Rara Bakati'"] = "lra", ["Tiếng Ratagnon"] = "btn", ["Ratahan"] = "rth", ["Rathawi"] = "rtw", ["Rathwi Bareli"] = "bgd", ["Rawa"] = "rwo", ["Rawat"] = "jnl", ["Rawo"] = "rwa", ["Rayón Zoque"] = "zor", ["Razajerdi"] = "rat", ["Razihi"] = "rzh", ["Reang"] = "ria", ["Red Gelao"] = "gir", ["Reel"] = "atu", ["Rejang Kayan"] = "ree", ["Reli"] = "rei", ["Rema"] = "bow", ["Rembarunga"] = "rmb", ["Rembong"] = "reb", ["Remo"] = "rem", ["Remontado Agta"] = "agv", ["Rempi"] = "rmp", ["Remun"] = "lkj", ["Rennellese"] = "mnv", ["Repanbitip"] = "rpn", ["Rer Bare"] = "rer", ["Rerau"] = "rea", ["Rerep"] = "pgk", ["Reshe"] = "res", ["Resígaro"] = "rgr", ["Retta"] = "ret", ["Reyesano"] = "rey", ["Rhine Franconian"] = "gmw-rfr", ["Riang"] = "ril", ["Riantana"] = "ran", ["Ribun"] = "rir", ["Rigwe"] = "iri", ["Rikbaktsa"] = "rkb", ["Rincón Zapotec"] = "zar", ["Ringgou"] = "rgu", ["Ririo"] = "rri", ["Ritarungo"] = "rit", ["Riung"] = "riu", ["Riverain Sango"] = "snj", ["Rogo"] = "rod", ["Roma"] = "rmm", ["Romani Greek"] = "rge", ["Romanian Sign Language"] = "rms", ["Romano-Serbian"] = "rsb", ["Romanova"] = "rmv", ["Romblomanon"] = "rol", ["Rombo"] = "rof", ["Romkun"] = "rmk", ["Ron"] = "cla", ["Ronga"] = "rng", ["Rongga"] = "ror", ["Rongmei Naga"] = "nbu", ["Rongpo"] = "rnp", ["Ronji"] = "roe", ["Roon"] = "rnn", ["Roria"] = "rga", ["Roro"] = "rro", ["Rotokas"] = "roo", ["Tiếng Rotuman"] = "rtm", ["Roviana"] = "rug", ["Rudbari"] = "rdb", ["Rufiji"] = "rui", ["Ruga"] = "ruh", ["Rukiga"] = "cgg", ["Ruma"] = "ruz", ["Rumu"] = "klq", ["Runga"] = "rou", ["Rungtu"] = "rtc", ["Rungwa"] = "rnw", ["Russenorsk"] = "crp-rsn", ["Russian Sign Language"] = "rsl", ["Ruuli"] = "ruc", ["Ruwund"] = "rnd", ["Rwa"] = "rwk", ["Rwanda-Rundi"] = "rw", ["Réunion Creole French"] = "rcf", ["Sa"] = "sax", ["Sa'a"] = "apb", ["Sa'ban"] = "snv", ["Sa'och"] = "scq", ["Saafi-Saafi"] = "sav", ["Saam"] = "raq", ["Saamia"] = "lsm", ["Saare"] = "uss", ["Saba"] = "saa", ["Tiếng Bisaya Sabah"] = "bsy", ["Sabah Malay"] = "msi", ["Sabanê"] = "sae", ["Sabaot"] = "spy", ["Sabine"] = "sbv", ["Sabir"] = "pml", ["Sabu"] = "hvn", ["Sacapulteco"] = "quv", ["Saep"] = "spd", ["Safaitic"] = "sem-saf", ["Safaliba"] = "saf", ["Safeyoka"] = "apz", ["Safwa"] = "sbk", ["Sagala"] = "sbm", ["Sagalla"] = "tga", ["Sahaptin"] = "nai-spt", ["Sahu"] = "saj", ["Sajau Basap"] = "sjb", ["Sakachep"] = "sch", ["Sakam"] = "skm", ["Sakao"] = "sku", ["Sakata"] = "skt", ["Sake"] = "sak", ["Sala"] = "shq", ["Salampasu"] = "slx", ["Salas"] = "sgu", ["Salchuq"] = "slq", ["Saleman"] = "sau", ["Saliba (Colombia)"] = "slc", ["Saliba (New Guinea)"] = "sbe", ["Salinan"] = "sln", ["Salt-Yui"] = "sll", ["Saluan"] = "loe", ["Salumá"] = "slj", ["Salvadoran Lenca"] = "nai-sln", ["Salvadoran Sign Language"] = "esn", ["Sam"] = "snx", ["Sama"] = "smd", ["Samaritan Aramaic"] = "sam", ["Samaritan Hebrew"] = "smp", ["Samarokena"] = "tmj", ["Samatao"] = "ysd", ["Samba"] = "smx", ["Tiếng Sambali"] = "xsb", ["Sambalpuri"] = "spv", ["Sambe"] = "xab", ["Samberigi"] = "ssx", ["Samburu"] = "saq", ["Tiếng Thát Mai"] = "smh", ["Tiếng Samo"] = "smq", ["Samoan Plantation Pidgin"] = "cpe-spp", ["Samosa"] = "swm", ["Sampang"] = "rav", ["Samre"] = "sxm", ["Samvedi"] = "smv", ["San Agustín Mixtepec Zapotec"] = "ztm", ["San Baltazar Loxicha Zapotec"] = "zpx", ["San Felipe Otlaltepec Popoloca"] = "pow", ["San Jerónimo Tecóatl Mazatec"] = "maa", ["San Juan Atzingo Popoloca"] = "poe", ["San Juan Colorado Mixtec"] = "mjc", ["Tiếng Zapotec San Juan Guelavía"] = "zab", ["San Juan Quiahije Chatino"] = "ctp-san", ["San Juan Teita Mixtec"] = "xtj", ["San Luís Temalacayuca Popoloca"] = "pps", ["San Marcos Tlalcoyalco Popoloca"] = "pls", ["Tiếng Triqui San Martín Itunyoso"] = "trq", ["San Miguel Creole French"] = "scf", ["San Miguel Piedras Mixtec"] = "xtp", ["San Miguel el Grande Mixtec"] = "mig", ["San Pablo Güilá Zapotec"] = "ztu", ["San Pedro Amuzgos Amuzgo"] = "azg", ["San Pedro Quiatoni Zapotec"] = "zpf", ["San Vicente Coatlán Zapotec"] = "zpt", ["Sanapaná"] = "spn", ["Sanaviron"] = "sai-san", ["Sandawe"] = "sad", ["Sanga (Congo)"] = "sng", ["Sanga (Nigeria)"] = "xsn", ["Sanggau"] = "scg", ["Sangil"] = "snl", ["Tiếng Sangir"] = "sxn", ["Sangisari"] = "sgr", ["Sangkong"] = "sgk", ["Sanglechi"] = "sgy", ["Sangtam Naga"] = "nsa", ["Sangu (Gabon)"] = "snq", ["Sangu (Tanzania)"] = "sbp", ["Sani"] = "ysn", ["Sanie"] = "ysy", ["Saniyo-Hiyewe"] = "sny", ["Sankaran Maninka"] = "msc", ["Sansi"] = "ssi", ["Santa Catarina Albarradas Zapotec"] = "ztn", ["Santa Inés Ahuatempan Popoloca"] = "pca", ["Santa Inés Yatzechi Zapotec"] = "zpn", ["Santa Lucía Monteverde Mixtec"] = "mdv", ["Santa María La Alta Nahuatl"] = "nhz", ["Santa María Quiegolani Zapotec"] = "zpi", ["Santa María Zacatepec Mixtec"] = "mza", ["Santa Teresa Cora"] = "cok", ["Santiago Xanica Zapotec"] = "zpr", ["Santo Domingo Albarradas Zapotec"] = "zas", ["Sanumá"] = "xsu", ["Saparua"] = "spr", ["Sapará"] = "sai-sap", ["Sapo"] = "krn", ["Saponi"] = "spi", ["Sapuan"] = "spu", ["Sapé"] = "spc", ["Sar"] = "mwm", ["Sara"] = "sre", ["Sara Kaba"] = "sbz", ["Sara Kaba Deme"] = "kwg", ["Sara Kaba Náà"] = "kwv", ["Sarangani Blaan"] = "bps", ["Sarangani Manobo"] = "mbs", ["Sarasira"] = "zsa", ["Saraveca"] = "sar", ["Tiếng Sarikol"] = "srh", ["Sarli"] = "sdf", ["Sartang"] = "onp", ["Sarua"] = "swy", ["Sarudu"] = "sdu", ["Saruga"] = "sra", ["Tiếng Sasak"] = "sas", ["Sasaru"] = "sxs", ["Sassarese"] = "sdc", ["Satawalese"] = "stw", ["Sateré-Mawé"] = "mav", ["Sathmar Swabian"] = "gmw-stm", ["Saudi Arabian Sign Language"] = "sdl", ["Sauraseni Apabhramsa"] = "inc-sap", ["Saurashtra"] = "saz", ["Sauri"] = "srt", ["Sause"] = "sao", ["Sausi"] = "ssj", ["Savi"] = "sdg", ["Savosavo"] = "svs", ["Sawai"] = "szw", ["Saweru"] = "swr", ["Sawi"] = "saw", ["Sawila"] = "swt", ["Saya"] = "say", ["Sayula Popoluca"] = "pos", ["Scanian"] = "gmq-scy", ["Seba"] = "kdg", ["Seberuang"] = "sbx", ["Sebop"] = "sib", ["Sebuyau"] = "snb", ["Sechelt"] = "sec", ["Sechura"] = "sai-sec", ["Secoya"] = "sey", ["Sedoa"] = "tvw", ["Seenku"] = "sos", ["Segai"] = "sge", ["Segeju"] = "seg", ["Seget"] = "sbg", ["Sehwi"] = "sfw", ["Seim"] = "sim", ["Seimat"] = "ssg", ["Seit-Kaitetu"] = "hik", ["Sekani"] = "sek", ["Sekapan"] = "skp", ["Sekar"] = "skz", ["Seke"] = "skj", ["Sekele"] = "vaj", ["Seki"] = "syi", ["Seko Padang"] = "skx", ["Seko Tengah"] = "sko", ["Sekpele"] = "lip", ["Selangor Sign Language"] = "kgi", ["Selaru"] = "slu", ["Selayar"] = "sly", ["Selee"] = "snw", ["Selepet"] = "spl", ["Selk'nam"] = "ona", ["Selonian"] = "sxl", ["Selungai Murut"] = "slg", ["Seluwasan"] = "sws", ["Sema"] = "nsm", ["Semandang"] = "sdm", ["Sembakung Murut"] = "sbr", ["Semimi"] = "etz", ["Semnani"] = "smy", ["Sempan"] = "xse", ["Tiếng Sena"] = "seh", ["Senara Sénoufo"] = "seq", ["Senaya"] = "syn", ["Sene"] = "sej", ["Sengele"] = "szg", ["Senggi"] = "snu", ["Sengo"] = "spk", ["Sengseng"] = "ssz", ["Tiếng Senhaja de Srair"] = "sjs", ["Sensi"] = "sni", ["Sentani"] = "set", ["Senthang Chin"] = "sez", ["Sentinelese"] = "std", ["Sepa (Indonesia)"] = "spb", ["Sepa (New Guinea)"] = "spe", ["Sepen"] = "spm", ["Sepik Iwam"] = "iws", ["Sepik Mari"] = "mbx", ["Sera"] = "sry", ["Sere"] = "swf", ["Serer"] = "srr", ["Serili"] = "sve", ["Seroa"] = "kqu", ["Serrano"] = "ser", ["Seru"] = "szd", ["Serua"] = "srw", ["Serudung Murut"] = "srk", ["Serui-Laut"] = "seu", ["Seta"] = "stf", ["Setaman"] = "stm", ["Seti"] = "sbi", ["Severn Ojibwa"] = "ojs", ["Sewa Bay"] = "sew", ["Seychellois Creole"] = "crs", ["Sha"] = "scw", ["Shabak"] = "sdb", ["Shabo"] = "sbf", ["Shahmirzadi"] = "srz", ["Shahrudi"] = "shm", ["Shall-Zwall"] = "sha", ["Shama-Sambuga"] = "sqa", ["Shamang"] = "xsh", ["Shambala"] = "ksb", ["Shanenawa"] = "swo", ["Shanga"] = "sho", ["Shangzhai"] = "jih", ["Shaozhou Tuhua"] = "zhx-sht", ["Sharanahua"] = "mcd", ["Shark Bay"] = "ssv", ["Sharwa"] = "swq", ["Shasta"] = "sht", ["Shatt"] = "shj", ["Shau"] = "sqh", ["Shawnee"] = "sjw", ["She"] = "shx", ["Tiếng Shebayo"] = "awd-she", ["Shehri"] = "shv", ["Shekkacho"] = "moy", ["Sheko"] = "she", ["Shelta"] = "sth", ["Shendu"] = "shl", ["Sheni"] = "scv", ["Sherbro"] = "bun", ["Sherdukpen"] = "sdp", ["Tiếng Kham Sheshi"] = "kip", ["Shi"] = "shr", ["Shihhi Arabic"] = "ssh", ["Shiki"] = "gua", ["Shilluk"] = "shk", ["Tiếng Shinasha"] = "bwo", ["Shipibo-Conibo"] = "shp", ["Shixing"] = "sxg", ["Shoo-Minda-Nye"] = "bcv", ["Shoshone"] = "shh", ["Shua"] = "shg", ["Shuar"] = "jiv", ["Shuba"] = "cbq", ["Tiếng Shughnan"] = "sgh", ["Shumashti"] = "sts", ["Shumcho"] = "scu", ["Shuwa-Zamani"] = "ksa", ["Shwai"] = "shw", ["Sialum"] = "slw", ["Siamou"] = "sif", ["Sian"] = "spg", ["Siane"] = "snp", ["Siang"] = "sya", ["Siar-Lak"] = "sjr", ["Sibe"] = "nco", ["Sibu Melanau"] = "sdx", ["Sicanian"] = "sxc", ["Siculo-Arabic"] = "sqr", ["Sidetic"] = "xsd", ["Sie"] = "erg", ["Sierra Leone Sign Language"] = "sgx", ["Sierra Negra Nahuatl"] = "nsu", ["Sierra de Juárez Zapotec"] = "zaa", ["Sighu"] = "sxe", ["Sihan"] = "snr", ["Sika"] = "ski", ["Sikaiana"] = "sky", ["Sikaritai"] = "tty", ["Sikiana"] = "sik", ["Sikule"] = "skh", ["Sila"] = "slt", ["Silacayoapan Mixtec"] = "mks", ["Sileibi"] = "sbq", ["Silimo"] = "wul", ["Siliput"] = "mkc", ["Silopi"] = "xsp", ["Simaa"] = "sie", ["Simba"] = "sbw", ["Simbali"] = "smg", ["Simbari"] = "smb", ["Simbo"] = "sbb", ["Simeku"] = "smz", ["Simeulue"] = "smr", ["Simte"] = "smt", ["Sinacantán"] = "nai-sin", ["Sinagen"] = "siu", ["Sinasina"] = "sst", ["Sinaugoro"] = "snc", ["Sindarin"] = "sjn", ["Sindhi Bhil"] = "sbn", ["Sindihui Mixtec"] = "xts", ["Singa"] = "sgm", ["Singapore Sign Language"] = "sls", ["Singpho"] = "sgp", ["Sinicahua Mixtec"] = "xti", ["Sininkere"] = "skq", ["Sinte Romani"] = "rmo", ["Sinyar"] = "sys", ["Sinúfana"] = "sai-sin", ["Sio"] = "xsi", ["Siona"] = "snn", ["Sipakapense"] = "qum", ["Sira"] = "swj", ["Sirenik"] = "ysr", ["Siri"] = "sir", ["Siriano"] = "sri", ["Sirionó"] = "srq", ["Sirmauri"] = "srx", ["Siroi"] = "ssd", ["Sissala"] = "sld", ["Tiếng Tứ Thổ"] = "sit-sit", ["Siuslaw"] = "sis", ["Sivandi"] = "siy", ["Siwai"] = "siw", ["Siwu"] = "akp", ["Siyin Chin"] = "csy", ["Skagit"] = "ska", ["Skalvian"] = "svx", ["Ske"] = "ske", ["Skou"] = "skv", ["Slavomolisano"] = "svm", ["Slovakian Sign Language"] = "svk", ["Small Flowery Miao"] = "sfm", ["Smärky Kanum"] = "kxq", ["Snohomish"] = "sno", ["So'a"] = "ssq", ["Sobei"] = "sob", ["Sochiapam Chinantec"] = "cso", ["Soga"] = "xog", ["Sok"] = "skk", ["Soko"] = "soc", ["Sokoro"] = "sok", ["Solano"] = "xso", ["Soli"] = "sby", ["Solos"] = "sol", ["Som"] = "smc", ["Somba-Siawari"] = "bmu", ["Somra"] = "ntx", ["Somrai"] = "sor", ["Somray"] = "smu", ["Somyev"] = "kgt", ["Sonaga"] = "ysg", ["Sonde"] = "shc", ["Songe"] = "sop", ["Songlai Chin"] = "csj", ["Songomeno"] = "soe", ["Songoora"] = "sod", ["Sonha"] = "soi", ["Sonia"] = "siq", ["Soninke"] = "snk", ["Soo"] = "teu", ["Sop"] = "urw", ["Sori-Harengan"] = "sbh", ["Sorkhei"] = "sqo", ["Sorothaptic"] = "sxo", ["Sorsogon Ayta"] = "ays", ["Sos Kundi"] = "sdk", ["Sota Kanum"] = "krz", ["Sou"] = "sqq", ["South African Sign Language"] = "sfs", ["South Awyu"] = "aws", ["South Boma"] = "bnt-sbo", ["South Central Banda"] = "lnl", ["South Central Dinka"] = "dib", ["South Efate"] = "erk", ["South Fali"] = "fal", ["South Giziga"] = "giz", ["South Lembata"] = "lmf", ["South Marquesan"] = "mqm", ["South Muyu"] = "kts", ["South Nuaulu"] = "nxl", ["South Tairora"] = "omw", ["South Ucayali Ashéninka"] = "cpy", ["South Watut"] = "mcy", ["Southeast Ambrym"] = "tvk", ["Southeast Babar"] = "vbb", ["Southeast Ijo"] = "ijs", ["Southeast Pashayi"] = "psi", ["Southeast Tasmanian"] = "xpf", ["Southeastern Dinka"] = "dks", ["Southeastern Ixtlán Zapotec"] = "zpd", ["Southeastern Nochixtlán Mixtec"] = "mxy", ["Southeastern Pomo"] = "pom", ["Southeastern Puebla Nahuatl"] = "npl", ["Southeastern Tarahumara"] = "tcu", ["Southern Alta"] = "agy", ["Tiếng Bạch Nam"] = "bfs", ["Southern Birifor"] = "biv", ["Southern Bobo"] = "bwq", ["Southern Bontoc"] = "obk", ["Southern Carrier"] = "caf", ["Southern Catanduanes Bicolano"] = "bln", ["Southern Dagaare"] = "dga", ["Southern East Cree"] = "crj", ["Southern Ghale"] = "ghe", ["Southern Grebo"] = "grj", ["Southern Guiyang Hmong"] = "hmy", ["Southern Haida"] = "hax", ["Southern Hindko"] = "hnd", ["Southern Kalapuya"] = "sxk", ["Southern Kalinga"] = "ksc", ["Southern Khanty"] = "kca-sou", ["Southern Kissi"] = "kss", ["Southern Kiwai"] = "kjd", ["Southern Kurdish"] = "sdh", ["Southern Lolopo"] = "ysp", ["Southern Lorung"] = "lrr", ["Southern Ma'di"] = "snm", ["Southern Mashan Hmong"] = "hma", ["Southern Muji"] = "ymc", ["Southern Ngbandi"] = "nbw", ["Southern Nisu"] = "nsd", ["Southern Nuni"] = "nnw", ["Southern Ohlone"] = "css", ["Southern One"] = "osu", ["Southern Pame"] = "pmz", ["Southern Pinghua"] = "csp", ["Southern Pomo"] = "peq", ["Southern Puebla Mixtec"] = "mit", ["Southern Puget Sound Salish"] = "slh", ["Southern Pumi"] = "pmj", ["Southern Qiandong Miao"] = "hms", ["Tiếng Khương Nam"] = "qxs", ["Southern Rengma Naga"] = "nre", ["Southern Rincon Zapotec"] = "zsr", ["Southern Sama"] = "ssb", ["Southern Samo"] = "sbd", ["Southern Sierra Miwok"] = "skd", ["Southern Tidong"] = "itd", ["Southern Tiwa"] = "tix", ["Southern Toussian"] = "wib", ["Southern Tutchone"] = "tce", ["Southern Valley Yokuts"] = "nai-svy", ["Southwest Gbaya"] = "gso", ["Southwest Palawano"] = "plv", ["Southwest Pashayi"] = "psh", ["Southwest Tanna"] = "nwi", ["Southwestern Bontoc"] = "vbk", ["Southwestern Dinka"] = "dik", ["Southwestern Fars"] = "fay", ["Southwestern Guiyang Hmong"] = "hmg", ["Southwestern Huishui Hmong"] = "hmh", ["Southwestern Nisu"] = "nsv", ["Southwestern Tamang"] = "tsf", ["Southwestern Tarahumara"] = "twr", ["Southwestern Tepehuan"] = "tla", ["Southwestern Tlaxiaco Mixtec"] = "meh", ["Sowa"] = "sww", ["Sowanda"] = "sow", ["Soyaltepec Mazatec"] = "vmp", ["Soyaltepec Mixtec"] = "vmq", ["Spanish Sign Language"] = "ssp", ["Spiti Bhoti"] = "spt", ["Spokane"] = "spo", ["Squamish"] = "squ", ["Sri Lankan Creole Malay"] = "sci", ["Sri Lankan Sign Language"] = "sqs", ["Stod Bhoti"] = "sbu", ["Stoney"] = "sto", ["Suabo"] = "szp", ["Suarmin"] = "seo", ["Suau"] = "swp", ["Suba"] = "sxb", ["Suba-Simbiti"] = "ssc", ["Subi"] = "xsj", ["Subiya"] = "sbs", ["Subtiaba"] = "sut", ["Sudest"] = "tgo", ["Sudovian"] = "xsv", ["Suena"] = "sue", ["Suga"] = "sgi", ["Suganga"] = "sug", ["Sugut Dusun"] = "kzs", ["Suki"] = "sui", ["Suku"] = "sub", ["Sukuma"] = "suk", ["Sukur"] = "syk", ["Sukurum"] = "zsu", ["Sula"] = "szn", ["Sulka"] = "sua", ["Sulod"] = "srg", ["Sulung"] = "suv", ["Suma"] = "sqm", ["Sumariup"] = "siv", ["Sumau"] = "six", ["Sumbawa"] = "smw", ["Sumbwa"] = "suw", ["Sumtu Chin"] = "csv", ["Sunam"] = "ssk", ["Sunum"] = "ymn", ["Sunwar"] = "suz", ["Suoy"] = "syo", ["Supyire"] = "spp", ["Sur"] = "tdl", ["Surbakhal"] = "sbj", ["Surigaonon"] = "sgd", ["Sursurunga"] = "sgz", ["Suruahá"] = "swx", ["Surubu"] = "sde", ["Suruí"] = "sru", ["Suruí Do Pará"] = "mdz", ["Susquehannock"] = "sqn", ["Susu"] = "sus", ["Susuami"] = "ssu", ["Suundi"] = "sdj", ["Suwawa"] = "swu", ["Suyá"] = "suy", ["Swabian"] = "swg", ["Swampy Cree"] = "csw", ["Swedish Sign Language"] = "swl", ["Swiss-French Sign Language"] = "ssr", ["Swiss-German Sign Language"] = "sgg", ["Swiss-Italian Sign Language"] = "slf", ["Swo"] = "sox", ["Syenara Senoufo"] = "shz", ["Sácata"] = "sai-sac", ["São Paulo Kaingáng"] = "zkp", ["Sãotomense"] = "cri", ["Sìcìté Sénoufo"] = "sep", ["T'en"] = "tct", ["Tabaa Zapotec"] = "zat", ["Tabancale"] = "sai-tab", ["Tabaru"] = "tby", ["Tabasco Chontal"] = "chf", ["Tabasco Nahuatl"] = "nhc", ["Tabasco Zoque"] = "zoq", ["Tabla"] = "tnm", ["Tabo"] = "knv", ["Tabriak"] = "tzx", ["Tacahua Mixtec"] = "xtt", ["Tacana"] = "tna", ["Tadaksahak"] = "dsq", ["Tiếng Tadyawan"] = "tdy", ["Tae'"] = "rob", ["Tafi"] = "tcd", ["Tafreshi"] = "xme-taf", ["Tagabawa"] = "bgs", ["Tagakaulu Kalagan"] = "klg", ["Tagbanwa"] = "tbw", ["Tagbu"] = "tbm", ["Tagdal"] = "tda", ["Tagish"] = "tgx", ["Tagwana Senoufo"] = "tgw", ["Tahltan"] = "tht", ["Tai"] = "taw", ["Tai Hang Tong"] = "thc", ["Tai Hongjin"] = "tiz", ["Tai Long"] = "thi", ["Tai Thanh"] = "tmm", ["Tai Ya"] = "cuu", ["Taiap"] = "gpn", ["Taikat"] = "aos", ["Tiếng Nga bồi Taimyr"] = "crp-tpr", ["Tainae"] = "ago", ["Tairuma"] = "uar", ["Taita"] = "dav", ["Tiếng Taivoan"] = "tvx", ["Taiwan Sign Language"] = "tss", ["Taje"] = "pee", ["Tajio"] = "tdj", ["Tajuasohn"] = "tja", ["Takelma"] = "tkm", ["Takia"] = "tbc", ["Takka Apabhramsa"] = "inc-tak", ["Takua"] = "tkz", ["Takuu"] = "nho", ["Takwane"] = "tke", ["Talaud"] = "tld", ["Taliabu"] = "tlv", ["Talieng"] = "tdf", ["Talinga-Bwisi"] = "tlj", ["Talise"] = "tlr", ["Tallán"] = "sai-tal", ["Talodi"] = "tlo", ["Taloki"] = "tlk", ["Talondo'"] = "tln", ["Talu"] = "yta", ["Tama (Chad)"] = "tma", ["Tama (Colombia)"] = "ten", ["Tamagario"] = "tcg", ["Tamambo"] = "mla", ["Taman (Indonesia)"] = "tmn", ["Taman (Myanmar)"] = "tcl", ["Tamanaku"] = "tmz", ["Tamazola Mixtec"] = "vmx", ["Tambas"] = "tdk", ["Tambora"] = "xxt", ["Tambotalo"] = "tls", ["Tambunan Dusun"] = "kzt", ["Tami"] = "tmy", ["Tamnim Citak"] = "tml", ["Tampias Lobu"] = "low", ["Tampulma"] = "tpm", ["Tanacross"] = "tcb", ["Tanahmerah"] = "tcm", ["Tanapag"] = "tpv", ["Tandaganon"] = "tgn", ["Tandia"] = "tni", ["Tanema"] = "tnx", ["Tangale"] = "tan", ["Tangam"] = "sit-tgm", ["Tanggu"] = "tgu", ["Tangko"] = "tkx", ["Tangoa"] = "tgp", ["Tangsa"] = "nst", ["Tanguat"] = "tbs", ["Tanimuca-Retuarã"] = "tnc", ["Tanjijili"] = "uji", ["Tanudan Kalinga"] = "kml", ["Tanzanian Sign Language"] = "tza", ["Tapachultec"] = "nai-tap", ["Taparita"] = "sai-tpr", ["Tapayuna"] = "sai-tap", ["Tapeba"] = "tbb", ["Tapei"] = "afp", ["Tapieté"] = "tpj", ["Tar Gula"] = "kcm", ["Tarairiú"] = "sai-trr", ["Tiếng Tarantino"] = "roa-tar", ["Tarao"] = "tro", ["Taraon"] = "mhu", ["Tareng"] = "tgr", ["Tarjumo"] = "txj", ["Tarok"] = "yer", ["Tarpia"] = "tpf", ["Tartessian"] = "txr", ["Taruma"] = "tdm", ["Tasawaq"] = "twq", ["Tasmate"] = "tmt", ["Tiếng Tat"] = "ttt", ["Tataltepec Chatino"] = "cta", ["Tatana"] = "txx", ["Tataviam"] = "azc-tat", ["Tauade"] = "ttd", ["Taulil"] = "tuh", ["Taupota"] = "tpa", ["Taushiro"] = "trr", ["Tauya"] = "tya", ["Taveta"] = "tvs", ["Tawala"] = "tbo", ["Tawandê"] = "xtw", ["Tawang Monpa"] = "twm", ["Tawasa"] = "nai-taw", ["Taworta"] = "tbp", ["Tawoyan"] = "twy", ["Tawr Chin"] = "tcp", ["Tay Khang"] = "tnu", ["Tayabas Ayta"] = "ayy", ["Tiếng Tayma"] = "sem-tay", ["Tayo"] = "cks", ["Tiếng Taíno"] = "tnq", ["Tboli"] = "tbl", ["Tchitchege"] = "tck", ["Tchumbuli"] = "bqa", ["Te'un"] = "tve", ["Teanu"] = "tkw", ["Tebul Sign Language"] = "tsy", ["Tebul Ure Dogon"] = "dtu", ["Tecpatlán Totonac"] = "tcw", ["Tedaga"] = "tuq", ["Tedim Chin"] = "ctd", ["Tee"] = "tkq", ["Tefaro"] = "tfo", ["Tegali"] = "ras", ["Tehit"] = "kps", ["Tehuelche"] = "teh", ["Teiwa"] = "twe", ["Tejalapan Zapotec"] = "ztt", ["Teke-Fuumu"] = "ifm", ["Teke-Kukuya"] = "kkw", ["Teke-Laali"] = "lli", ["Teke-Tege"] = "teg", ["Teke-Tsaayi"] = "tyi", ["Teke-Tyee"] = "tyx", ["Tektiteko"] = "ttc", ["Tela-Masbuar"] = "tvm", ["Telefol"] = "tlf", ["Teluti"] = "tlt", ["Tembé"] = "tqb", ["Teme"] = "tdo", ["Temein"] = "teq", ["Temi"] = "soz", ["Temne"] = "tem", ["Temoaya Otomi"] = "ott", ["Tempasuk Dusun"] = "tdu", ["Tenango Otomi"] = "otn", ["Tene Kan Dogon"] = "dtk", ["Tenggarong Kutai Malay"] = "vkt", ["Tengger"] = "tes", ["Tenino"] = "tqn", ["Tenis"] = "tns", ["Tennet"] = "tex", ["Teojomulco Chatino"] = "omq-teo", ["Teop"] = "tio", ["Teor"] = "tev", ["Tepecano"] = "tep", ["Tepetotutla Chinantec"] = "cnt", ["Tepeuxila Cuicatec"] = "cux", ["Tepo Krumen"] = "ted", ["Teposcolula Mixtec"] = "omq-tel", ["Tequistlatec"] = "nai-teq", ["Ter Sami"] = "sjt", ["Tera"] = "ttr", ["Terebu"] = "trb", ["Terei"] = "buo", ["Tereno"] = "ter", ["Tereweng"] = "twg", ["Tiếng Teribe"] = "tfr", ["Terik"] = "tec", ["Termanu"] = "twu", ["Ternateño"] = "tmg", ["Tese"] = "keg", ["Teshenawa"] = "twc", ["Tetela"] = "tll", ["Tetelcingo Nahuatl"] = "nhg", ["Tetete"] = "teb", ["Tetserret"] = "tez", ["Tetun Dili"] = "tdt", ["Teushen"] = "sai-teu", ["Teutila Cuicatec"] = "cut", ["Tewa"] = "tew", ["Texcatepec Otomi"] = "otx", ["Texistepec Popoluca"] = "poq", ["Texmelucan Zapotec"] = "zpz", ["Tezoatlán Mixtec"] = "mxb", ["Tha"] = "thy", ["Thachanadan"] = "thn", ["Thado Chin"] = "tcz", ["Thai Sign Language"] = "tsq", ["Thaiphum Chin"] = "cth", ["Thakali"] = "ths", ["Thamudic"] = "sem-tha", ["Thangal Naga"] = "nki", ["Thangmi"] = "thf", ["Thao"] = "ssf", ["Tharaka"] = "thk", ["Tharrgari"] = "dhr", ["Thawa"] = "xtv", ["Thompson"] = "thp", ["Thopho"] = "ytp", ["Thu Lao"] = "tyl", ["Thulung"] = "tdh", ["Thurawal"] = "tbh", ["Thuri"] = "thu", ["Tiagbamrin Aizi"] = "ahi", ["Tiale"] = "mnl", ["Tibea"] = "ngy", ["Ticuna"] = "tca", ["Tidaá Mixtec"] = "mtx", ["Tidore"] = "tvo", ["Tiemacèwè Bozo"] = "boo", ["Tiene"] = "tii", ["Tifal"] = "tif", ["Tigak"] = "tgc", ["Tigon Mbembe"] = "nza", ["Tii"] = "txq", ["Tijaltepec Mixtec"] = "xtl", ["Tikar"] = "tik", ["Tikopia"] = "tkp", ["Tilapa Otomi"] = "otl", ["Tillamook"] = "til", ["Tilquiapan Zapotec"] = "zts", ["Tilung"] = "tij", ["Tima"] = "tms", ["Timbe"] = "tim", ["Timor Pidgin"] = "tvy", ["Timote"] = "sai-tim", ["Timucua"] = "tjm", ["Timugon Murut"] = "tih", ["Tinani"] = "lbf", ["Tingui-Boto"] = "tgv", ["Tinigua"] = "tit", ["Tinoc Kallahan"] = "tne", ["Tinputz"] = "tpz", ["Tiếng Tipai"] = "nai-tip", ["Tippera"] = "tpe", ["Tira"] = "tic", ["Tirahi"] = "tra", ["Tiranige Diga Dogon"] = "tde", ["Tircul"] = "pyx", ["Tiri"] = "cir", ["Tita"] = "tdq", ["Titan"] = "ttv", ["Tiv"] = "tiv", ["Tiwa"] = "lax", ["Tiếng Tiwi"] = "tiw", ["Tiéfo"] = "tiq", ["Tiéyaxo Bozo"] = "boz", ["Tjurruru"] = "tju", ["Tiếng Tepehua Tlachichilco"] = "tpt", ["Tiếng Me'phaa Tlacoapa"] = "tpl", ["Tlacoatzintepec Chinantec"] = "ctl", ["Tlacolulita Zapotec"] = "zpk", ["Tlahuica"] = "ocu", ["Tlahuitoltepec Mixe"] = "mxp", ["Tlamacazapa Nahuatl"] = "nuz", ["Tlazoyaltepec Mixtec"] = "mqh", ["To"] = "toz", ["To'abaita"] = "mlu", ["Toaripi"] = "tqo", ["Toba"] = "tob", ["Toba Batak"] = "bbc", ["Toba-Maskoy"] = "tmf", ["Tobagonian Creole English"] = "tgh", ["Tobanga"] = "tng", ["Tobati"] = "tti", ["Tobelo"] = "tlb", ["Tobilung"] = "tgb", ["Tobo"] = "tbv", ["Tocantins Asurini"] = "asu", ["Tofanma"] = "tlg", ["Tofin Gbe"] = "tfi", ["Togbo-Vara Banda"] = "tor", ["Togoyo"] = "tgy", ["Tojolabal"] = "toj", ["Toka-Leya"] = "dov", ["Tokano"] = "zuh", ["Tol"] = "jic", ["Tolai"] = "ksd", ["Tolaki"] = "lbw", ["Tolomako"] = "tlm", ["Tolowa"] = "tol", ["Toloza"] = "ytl", ["Toma"] = "tod", ["Tomadino"] = "tdi", ["Tombelala"] = "ttp", ["Tombonuo"] = "txa", ["Tombulu"] = "tom", ["Tomini"] = "txm", ["Tommeginne"] = "xpv", ["Tommo So"] = "dto", ["Tomo Kan Dogon"] = "dtm", ["Tomoip"] = "tqp", ["Tondano"] = "tdn", ["Tonga (Malawi)"] = "tog", ["Tonga (Mozambique)"] = "toh", ["Tonga (Zambia)"] = "toi", ["Tongwe"] = "tny", ["Tonjon"] = "tjn", ["Tiếng Tonkawa"] = "tqw", ["Tonsawang"] = "tnw", ["Tonsea"] = "txs", ["Tontemboan"] = "tnt", ["Toogee"] = "xpx", ["Topoiyo"] = "toy", ["Toposa"] = "toq", ["Toraja-Sa'dan"] = "sda", ["Toram"] = "trj", ["Torau"] = "ttu", ["Toro"] = "tdv", ["Toro So Dogon"] = "dts", ["Toro Tegu Dogon"] = "dtt", ["Toromono"] = "tno", ["Torona"] = "tqr", ["Torres Strait Creole"] = "tcs", ["Torricelli"] = "tei", ["Torricelli Yau"] = "yyu", ["Torá"] = "trz", ["Tosu"] = "sit-tos", ["Totela"] = "ttl", ["Totoli"] = "txe", ["Totomachapan Zapotec"] = "zph", ["Totontepec Mixe"] = "mto", ["Totoro"] = "ttk", ["Touo"] = "tqu", ["Toura"] = "neb", ["Tourangeau"] = "roa-tou", ["Towei"] = "ttn", ["Transylvanian Saxon"] = "gmw-tsx", ["Traveller Danish"] = "rmd", ["Traveller Norwegian"] = "rmg", ["Traveller Scottish"] = "trl", ["Tregami"] = "trm", ["Tremembé"] = "tme", ["Trieng"] = "stg", ["Trimuris"] = "tip", ["Tring"] = "tgq", ["Tringgus"] = "trx", ["Trinidad and Tobago Sign Language"] = "lst", ["Trinidadian Creole English"] = "trf", ["Trinitario"] = "trn", ["Truká"] = "tka", ["Trumai"] = "tpy", ["Ts'ün-Lao"] = "tsl", ["Tsaangi"] = "tsa", ["Tsafiki"] = "cof", ["Tsakwambo"] = "kvz", ["Tsetsaut"] = "txc", ["Tsez"] = "ddo", ["Tshobdun"] = "sit-tsh", ["Tshwa"] = "hio", ["Tsikimba"] = "kdl", ["Tsimané"] = "cas", ["Tsishingini"] = "tsw", ["Tso"] = "ldp", ["Tsogo"] = "tsv", ["Tsotsitaal"] = "fly", ["Tsum"] = "ttz", ["Tsuvadi"] = "tvd", ["Tsuvan"] = "tsh", ["Tswa"] = "tsc", ["Tswapong"] = "two", ["Tubar"] = "tbu", ["Tucano"] = "tuo", ["Tugen"] = "tuy", ["Tugun"] = "tzn", ["Tugutil"] = "tuj", ["Tukpa"] = "tpq", ["Tukudede"] = "tkd", ["Tukumanféd"] = "tkf", ["Tula"] = "tul", ["Tule-Kaweah Yokuts"] = "nai-tky", ["Tulehu"] = "tlu", ["Tulishi"] = "tey", ["Tulu-Bohuai"] = "rak", ["Tulua"] = "aus-tul", ["Tuma-Irumu"] = "iou", ["Tumak"] = "tmc", ["Tumi"] = "kku", ["Tumleo"] = "tmq", ["Tumshuqese"] = "xtq", ["Tumtum"] = "tbr", ["Tumulung Sisaala"] = "sil", ["Tunen"] = "tvu", ["Tungag"] = "lcm", ["Tunggare"] = "trt", ["Tunia"] = "tug", ["Tiếng Tunica"] = "tun", ["Tunisian Arabic"] = "aeb", ["Tiếng Berber Tunisia"] = "sds", ["Tunisian Sign Language"] = "tse", ["Tunjung"] = "tjg", ["Tunumiisut"] = "esx-tut", ["Tunzu"] = "dza", ["Tuotomb"] = "ttf", ["Tuparí"] = "tpr", ["Tupinikin"] = "tpk", ["Tupuri"] = "tui", ["Turaka"] = "trh", ["Turi"] = "trd", ["Turiwára"] = "twt", ["Turka"] = "tuz", ["Turkana"] = "tuv", ["Turkish Sign Language"] = "tsm", ["Turks and Caicos Creole English"] = "tch", ["Tiếng Turoyo"] = "tru", ["Turumsa"] = "tqm", ["Turung"] = "try", ["Tuscarora"] = "tus", ["Tutelo"] = "tta", ["Tutong"] = "ttg", ["Tutsa Naga"] = "tvt", ["Tutuba"] = "tmi", ["Tututepec Mixtec"] = "mtu", ["Tututni"] = "tuu", ["Tuwali Ifugao"] = "ifk", ["Tuwari"] = "tww", ["Tuwuli"] = "bov", ["Tuxináwa"] = "tux", ["Tuxá"] = "tud", ["Tuyuca"] = "tue", ["Twana"] = "twa", ["Twendi"] = "twn", ["Tiếng Tyap"] = "kcg", ["Tyaraity"] = "woa", ["Tyerrernotepanner"] = "xph", ["Tz'utujil"] = "tzj", ["Tzeltal"] = "tzh", ["Tiếng Tzotzil"] = "tzo", ["Tày Tac"] = "tyt", ["Tiếng Tây Bồi"] = "tas", ["Téén"] = "lor", ["Tübatulabal"] = "tub", ["Tiếng U"] = "uuu", ["Uab Meto"] = "aoz", ["Uamué"] = "uam", ["Uare"] = "ksj", ["Ubaghara"] = "byc", ["Ubang"] = "uba", ["Ubi"] = "ubi", ["Ubir"] = "ubr", ["Ucayali-Yurúa Ashéninka"] = "cpb", ["Uda"] = "uda", ["Tiếng Uduk"] = "udu", ["Ufim"] = "ufi", ["Ugandan Sign Language"] = "ugn", ["Ughele"] = "uge", ["Uhami"] = "uha", ["Uisai"] = "uis", ["Ujir"] = "udj", ["Ukaan"] = "kcf", ["Ukhwejo"] = "ukh", ["Ukit"] = "umi", ["Ukpe-Bayobiri"] = "ukp", ["Ukpet-Ehom"] = "akd", ["Ukrainian Sign Language"] = "ukl", ["Ukue"] = "uku", ["Ukuriguma"] = "ukg", ["Ukwa"] = "ukq", ["Ukwuani-Aboh-Ndoni"] = "ukw", ["Ulau-Suain"] = "svb", ["Tiếng Ulch"] = "ulc", ["Uldeme"] = "udl", ["Ulithian"] = "uli", ["Ullatan"] = "ull", ["Ulumanda'"] = "ulm", ["Ulwa"] = "ulw", ["Uma"] = "ppk", ["Uma' Lasan"] = "xky", ["Uma' Lung"] = "ulu", ["Umanakaina"] = "gdn", ["Umatilla"] = "uma", ["Umbindhamu"] = "umd", ["Umbu-Ungu"] = "ubu", ["Umbugarla"] = "umr", ["Tiếng Umbundu"] = "umb", ["Umbuygamu"] = "umg", ["Umeda"] = "upi", ["Umiida"] = "xud", ["Umiray Dumaget Agta"] = "due", ["Umon"] = "umm", ["Umotína"] = "umo", ["Umpila"] = "ump", ["Una"] = "mtg", ["Tiếng Unami"] = "unm", ["Unas"] = "art-una", ["Unde Kaili"] = "unz", ["Uneme"] = "une", ["Unggaranggu"] = "xun", ["Unggumi"] = "xgu", ["Unserdeutsch"] = "uln", ["Unua"] = "onu", ["Unubahe"] = "unu", ["Uokha"] = "uok", ["Upper Chehalis"] = "cjh", ["Upper Grand Valley Dani"] = "dna", ["Tiếng Thượng Kinabatangan"] = "dmg", ["Upper Kuskokwim"] = "kuu", ["Upper Necaxa Totonac"] = "tku", ["Upper Tanana"] = "tau", ["Upper Taromi"] = "tov", ["Upper Umpqua"] = "xup", ["Ura (New Guinea)"] = "uro", ["Ura (Vanuatu)"] = "uur", ["Uradhi"] = "urf", ["Urali"] = "url", ["Urapmin"] = "urm", ["Urarina"] = "ura", ["Urat"] = "urt", ["Urhobo"] = "urh", ["Uri"] = "uvh", ["Urigina"] = "urg", ["Urim"] = "uri", ["Urimo"] = "urx", ["Uripiv-Wala-Rano-Atchin"] = "upv", ["Urningangg"] = "urc", ["Uru"] = "ure", ["Uru-Eu-Wau-Wau"] = "urz", ["Uru-Pa-In"] = "urp", ["Uruangnirin"] = "urn", ["Uruava"] = "urv", ["Uruguayan Sign Language"] = "ugy", ["Urumi"] = "uru", ["Usaghade"] = "usk", ["Usan"] = "wnu", ["Usarufa"] = "usa", ["Usila Chinantec"] = "cuc", ["Uspanteco"] = "usp", ["Usui"] = "usi", ["Utarmbung"] = "omo", ["Ute"] = "ute", ["Utu"] = "utu", ["Tiếng Uvbie"] = "evh", ["Uwinymil"] = "aus-uwi", ["Uya"] = "usu", ["Uyajitaya"] = "duk", ["Uzekwe"] = "eze", ["Vaagri Booli"] = "vaa", ["Vaghua"] = "tva", ["Vagla"] = "vag", ["Vai"] = "vai", ["Vaiphei"] = "vap", ["Vale"] = "vae", ["Valencian Sign Language"] = "vsv", ["Valle Nacional Chinantec"] = "cvn", ["Valley Maidu"] = "vmv", ["Valman"] = "van", ["Valpei"] = "vlp", ["Vamale"] = "mkt", ["Vame"] = "mlr", ["Vandalic"] = "xvn", ["Vangunu"] = "mpr", ["Vanimo"] = "vam", ["Vanji"] = "ira-wnj", ["Vanuma"] = "vau", ["Vao"] = "vao", ["Varhadi"] = "vah", ["Varisi"] = "vrs", ["Vayu"] = "vay", ["Veddah"] = "ved", ["Vehes"] = "val", ["Vemgo-Mabas"] = "vem", ["Venezuelan Sign Language"] = "vsl", ["Ventureño"] = "veo", ["Vera'a"] = "vra", ["Vestinian"] = "xvs", ["Vidunda"] = "vid", ["Viemo"] = "vig", ["Vilela"] = "vil", ["Vili"] = "vif", ["Villa Viciosa Agta"] = "dyg", ["Vincentian Creole English"] = "svc", ["Virgin Islands Creole"] = "vic", ["Vishavan"] = "vis", ["Viti"] = "vit", ["Vitou"] = "vto", ["Viya"] = "gev", ["Vlax Romani"] = "rmy", ["Volga German"] = "gmw-vog", ["Vono"] = "kch", ["Voro"] = "vor", ["Vracada Apabhramsa"] = "inc-vra", ["Vumbu"] = "vum", ["Vunapu"] = "vnp", ["Vunjo"] = "vun", ["Vute"] = "vut", ["Tiếng Võro"] = "vro", ["Wa"] = "wbm", ["Wa'ema"] = "wag", ["Waama"] = "wwa", ["Waamwang"] = "wmn", ["Wab"] = "wab", ["Wabo"] = "wbb", ["Waboda"] = "kmx", ["Waci Gbe"] = "wci", ["Wadaginam"] = "wdg", ["Waddar"] = "wbq", ["Wadi Wadi"] = "xwd", ["Wadjabangayi"] = "wdy", ["Wadjiginy"] = "wdj", ["Wadjigu"] = "wdu", ["Wae Rana"] = "wrx", ["Waffa"] = "waj", ["Wagawaga"] = "wgb", ["Wagaya"] = "wga", ["Wagdi"] = "wbr", ["Wageman"] = "waq", ["Wagi"] = "fad", ["Wahau Kayan"] = "whu", ["Wahau Kenyah"] = "whk", ["Tiếng Wahgi"] = "wgi", ["Waigali"] = "wbk", ["Waigeo"] = "wgo", ["Waikuri"] = "nai-wai", ["Wailaki"] = "wlk", ["Wailapa"] = "wlr", ["Waima'a"] = "wmh", ["Waimiri-Atroari"] = "atr", ["Wainumá"] = "awd-wai", ["Waioli"] = "wli", ["Waitaká"] = "sai-wai", ["Waja"] = "wja", ["Wajarri"] = "wbv", ["Wajuk"] = "xwj", ["Waka"] = "wav", ["Wakawaka"] = "wkw", ["Wakoná"] = "waf", ["Wala"] = "lgl", ["Walak"] = "wlw", ["Walangama"] = "nlw", ["Wali (Ghana)"] = "wlx", ["Wali (Sudan)"] = "wll", ["Waling"] = "wly", ["Walio"] = "wla", ["Walla Walla"] = "waa", ["Walmajarri"] = "wmt", ["Wam"] = "wmo", ["Wamas"] = "wmc", ["Wambaya"] = "wmb", ["Wambon"] = "wms", ["Wamey"] = "cou", ["Wamin"] = "wmi", ["Wampar"] = "lbq", ["Wampur"] = "waz", ["Wan"] = "wan", ["Wanambre"] = "wnb", ["Wanap"] = "wnp", ["Wancho"] = "nnp", ["Wanda"] = "wbh", ["Wandala"] = "mfi", ["Wandamen"] = "wad", ["Wandarang"] = "wnd", ["Wandji"] = "wdd", ["Wanga"] = "lwg", ["Wanggamala"] = "wnm", ["Wangganguru"] = "wgg", ["Wanggom"] = "wng", ["Wangkayutyuru"] = "wky", ["Wangkumara"] = "xwk", ["Wanham"] = "sai-wnm", ["Wanji"] = "wbi", ["Wanman"] = "wbt", ["Wannu"] = "jub", ["Wano"] = "wno", ["Wantoat"] = "wnc", ["Wanukaka"] = "wnk", ["Wanyi"] = "wny", ["Wané"] = "hwa", ["Wapan"] = "juk", ["Wapishana"] = "wap", ["Wappo"] = "wao", ["Wara"] = "wbf", ["Warao"] = "wba", ["Warapu"] = "wra", ["Waray Sorsogon"] = "srv", ["Tiếng Wardaman"] = "wrr", ["Wardandi"] = "wxw", ["Warembori"] = "wsa", ["Wari'"] = "pav", ["Waris"] = "wrs", ["Waritai"] = "wbe", ["Wariyangga"] = "wri", ["Warkay-Bipim"] = "bgv", ["Warlmanpa"] = "wrl", ["Warlpiri"] = "wbp", ["Warluwara"] = "wrb", ["Warnang"] = "wrn", ["Waropen"] = "wrp", ["Warray"] = "wrz", ["Warrgamay"] = "wgy", ["Warrwa"] = "wwr", ["Waru"] = "wru", ["Warumungu"] = "wrm", ["Waruna"] = "wrv", ["Warungu"] = "wrg", ["Warwar Feni"] = "hrw", ["Wasa"] = "wss", ["Wasco-Wishram"] = "wac", ["Wasembo"] = "gsp", ["Washo"] = "was", ["Waskia"] = "wsk", ["Tiếng Wastek"] = "hus", ["Wasu"] = "wsu", ["Watakataui"] = "wtk", ["Watam"] = "wax", ["Wathaurong"] = "wth", ["Watiwa"] = "wtf", ["Watubela"] = "wah", ["Waube"] = "kop", ["Wauja"] = "wau", ["Wauyai"] = "wuy", ["Wawa"] = "www", ["Wawonii"] = "wow", ["Waxiang"] = "wxa", ["Wayanad Chetti"] = "ctt", ["Wayoró"] = "wyr", ["Wayumará"] = "sai-way", ["Wedau"] = "wed", ["Weh"] = "weh", ["Welaung"] = "weu", ["Weliki"] = "klh", ["Welsh Romani"] = "rmw", ["Wemale"] = "weo", ["Tiếng Wemba-Wemba"] = "xww", ["Weme Gbe"] = "wem", ["Wendat"] = "wdt", ["Weri"] = "wer", ["Wersing"] = "kvw", ["West Albay Bikol"] = "fbl", ["West Ambae"] = "nnd", ["West Central Banda"] = "bbp", ["Tiếng Tây Duyên hải Bajau"] = "bdr", ["West Damar"] = "drn", ["West Greenlandic Pidgin"] = "crp-gep", ["West Lembata"] = "lmj", ["West Masela"] = "mss", ["West Tarangan"] = "txn", ["West Uvean"] = "uve", ["West-Central Limba"] = "lia", ["Western Arrernte"] = "are", ["Western Bolivian Guaraní"] = "gnw", ["Western Bukidnon Manobo"] = "mbb", ["Western Dani"] = "dnw", ["Western Durango Nahuatl"] = "azn", ["Western Fijian"] = "wyy", ["Western Gurung"] = "gvr", ["Western Jicaque"] = "und-wji", ["Western Juxtlahuaca Mixtec"] = "jmx", ["Western Karaboro"] = "kza", ["Western Keres"] = "kjq", ["Western Krahn"] = "krw", ["Western Lalu"] = "ywl", ["Western Maninkakan"] = "mlq", ["Tiếng Mari Tây"] = "mrj", ["Western Mashan Hmong"] = "hmw", ["Western Meohang"] = "raf", ["Western Muria"] = "mut", ["Tiếng Tân Aram Tây"] = "amw", ["Western Ojibwa"] = "ojw", ["Western Panjabi"] = "pnb", ["Western Penan"] = "pne", ["Western Sisaala"] = "ssl", ["Western Subanon"] = "suc", ["Western Tawbuid"] = "twb", ["Western Totonac"] = "tqt", ["Western Tunebo"] = "tnb", ["Western Xwla Gbe"] = "xwl", ["Westrobothnian"] = "gmq-bot", ["Weyewa"] = "wew", ["White Lachi"] = "lwh", ["Whitesands"] = "tnp", ["Wiarumus"] = "tua", ["Wichita"] = "wic", ["Wichí Lhamtés Güisnay"] = "mzh", ["Wichí Lhamtés Nocten"] = "mtp", ["Wichí Lhamtés Vejoz"] = "wlv", ["Wik-Epa"] = "wie", ["Wik-Iiyanh"] = "wij", ["Wik-Keyangan"] = "wif", ["Wik-Me'anha"] = "wih", ["Wik-Mungkan"] = "wim", ["Wik-Ngathana"] = "wig", ["Wikalkan"] = "wik", ["Wikngenchera"] = "wua", ["Wilawila"] = "wil", ["Wintu"] = "wnw", ["Winyé"] = "kst", ["Wipi"] = "gdr", ["Tiếng Wiradjuri"] = "wrh", ["Wiraféd"] = "wir", ["Wirangu"] = "wgu", ["Wiru"] = "wiu", ["Wirö"] = "wpc", ["Wiwa"] = "mbp", ["Tiếng Wiyot"] = "wiy", ["Woccon"] = "xwc", ["Wogamusin"] = "wog", ["Wogeo"] = "woc", ["Woi"] = "wbw", ["Tiếng Woiwurrung"] = "wyi", ["Wojenaka"] = "jod", ["Wolane"] = "wle", ["Wolani"] = "wod", ["Woleaian"] = "woe", ["Womo"] = "wmx", ["Wong-gie"] = "aus-won", ["Wongo"] = "won", ["Woods Cree"] = "cwd", ["Woria"] = "wor", ["Worimi"] = "kda", ["Worodougou"] = "jud", ["Worora"] = "wro", ["Wotapuri-Katarqalai"] = "wsv", ["Woun Meu"] = "noa", ["Wudu"] = "wud", ["Wulguru"] = "aus-wul", ["Wuliwuli"] = "wlu", ["Wulna"] = "wux", ["Wumboko"] = "bqm", ["Wumbvu"] = "wum", ["Wumeng"] = "ywu", ["Wunai Bunu"] = "bwn", ["Wunambal"] = "wub", ["Wurrugu"] = "wur", ["Wusa"] = "yig", ["Wushi"] = "bse", ["Wusi"] = "wsi", ["Wutung"] = "wut", ["Wuvulu-Aua"] = "wuv", ["Wyandot"] = "wya", ["Wára"] = "tci", ["Wãpha"] = "juw", ["Wè Southern"] = "gxx", ["Wè Western"] = "wec", ["Xadani Zapotec"] = "zax", ["Xakriabá"] = "xkr", ["Xanaguía Zapotec"] = "ztg", ["Xaragure"] = "axx", ["Tiếng Xavante"] = "xav", ["Xerénte"] = "xer", ["Xetá"] = "xet", ["Xicotepec de Juárez Totonac"] = "too", ["Xinca"] = "xin", ["Xingú Asuriní"] = "asn", ["Xipaya"] = "xiy", ["Xiri"] = "xii", ["Xiriâna"] = "xir", ["Xishanba Lalo"] = "ywt", ["Xocó"] = "sai-xoc", ["Xokleng"] = "xok", ["Xukurú"] = "xoo", ["Xwela Gbe"] = "xwe", ["Yaa"] = "iyx", ["Tiếng Yaaku"] = "muu", ["Yabarana"] = "yar", ["Yabaâna"] = "ybn", ["Yaben"] = "ybm", ["Yabong"] = "ybo", ["Yabula Yabula"] = "yxy", ["Yace"] = "ekr", ["Yafi"] = "wfg", ["Yagara"] = "yxg", ["Yagaria"] = "ygr", ["Yagomi"] = "ygm", ["Yagua"] = "yad", ["Yagwoia"] = "ygw", ["Yahadian"] = "ner", ["Yahang"] = "rhp", ["Yahuna"] = "ynu", ["Yaka"] = "yaf", ["Yakaikeke"] = "ykk", ["Yakoma"] = "yky", ["Yala"] = "yba", ["Yalahatan"] = "jal", ["Yalakalore"] = "xyl", ["Yalarnnga"] = "ylr", ["Yale"] = "nce", ["Yaleba"] = "ylb", ["Yalunka"] = "yal", ["Yalálag Zapotec"] = "zpu", ["Yamap"] = "ymp", ["Yamba"] = "yam", ["Yambes"] = "ymb", ["Yambeta"] = "yat", ["Yamdena"] = "jmd", ["Yameo"] = "yme", ["Yaminahua"] = "yaa", ["Yamongeri"] = "ymg", ["Yamphu"] = "ybi", ["Yan-nhangu"] = "jay", ["Yana"] = "ynn", ["Yanda"] = "yda", ["Yanda Dogon"] = "dym", ["Yandjibara"] = "xyb", ["Yandruwandha"] = "ynd", ["Yanesha'"] = "ame", ["Yangben"] = "yav", ["Yangkaal"] = "aus-ynk", ["Yangkam"] = "bsx", ["Yangman"] = "jng", ["Yango"] = "yng", ["Yangulam"] = "ynl", ["Yangum Dey"] = "yde", ["Yangum Gel"] = "ygl", ["Yangum Mon"] = "ymo", ["Yankunytjatjara"] = "kdd", ["Yanomamö"] = "guu", ["Yanomámi"] = "wca", ["Yansi"] = "yns", ["Tiếng Yanyuwa"] = "jao", ["Tiếng Yao (châu Phi)"] = "yao", ["Yaosakor Asmat"] = "asy", ["Yaouré"] = "yre", ["Yaqay"] = "jaq", ["Yaqui"] = "yaq", ["Yarawata"] = "yrw", ["Yareba"] = "yrb", ["Yareni Zapotec"] = "zae", ["Yarli"] = "yxl", ["Yarluyandi"] = "yry", ["Yarumá"] = "sai-yar", ["Yarí"] = "yri", ["Yasa"] = "yko", ["Yatay"] = "yty", ["Yatee Zapotec"] = "zty", ["Tiếng Zapotec Yatzachi"] = "zav", ["Yaul"] = "yla", ["Yaur"] = "jau", ["Yautepec Zapotec"] = "zpb", ["Yavitero"] = "yvt", ["Yawa"] = "yva", ["Yawalapití"] = "yaw", ["Yawanawa"] = "ywn", ["Yawarawarga"] = "yww", ["Yaweyuha"] = "yby", ["Yawijibaya"] = "jbw", ["Yawiyo"] = "ybx", ["Yawuru"] = "ywr", ["Yaygir"] = "xya", ["Tiếng Yazghulom"] = "yah", ["Yei"] = "jei", ["Yekhee"] = "ets", ["Yekora"] = "ykr", ["Yelmek"] = "jel", ["Yelogu"] = "ylg", ["Yemba"] = "ybb", ["Yemeni Arabic"] = "ayn", ["Yendang"] = "yen", ["Yeni"] = "yei", ["Yeniche"] = "yec", ["Yerakai"] = "yra", ["Yeretuar"] = "gop", ["Yerukula"] = "yeu", ["Yeskwa"] = "yes", ["Yessan-Mayo"] = "yss", ["Yetfa"] = "yet", ["Yeyi"] = "yey", ["Yil"] = "yll", ["Tiếng Creole Nghi Lan"] = "ycr", ["Yimas"] = "yee", ["Yimchungru Naga"] = "yim", ["Yinbaw Karen"] = "kvu", ["Yinchia"] = "yin", ["Tiếng Yindjibarndi"] = "yij", ["Yindjilandji"] = "yil", ["Yine"] = "pib", ["Yinggarda"] = "yia", ["Yinhawangka"] = "ywg", ["Yiningayi"] = "ygi", ["Yintale Karen"] = "kvy", ["Yinwum"] = "yxm", ["Yir-Yoront"] = "yiy", ["Yirandali"] = "ljw", ["Yis"] = "yis", ["Yitha Yitha"] = "xth", ["Yoba"] = "yob", ["Yocoboué Dida"] = "gud", ["Yoidik"] = "ydk", ["Yoke"] = "yki", ["Yolmo"] = "scp", ["Yolngu Sign Language"] = "ygs", ["Yoloxochitl Mixtec"] = "xty", ["Yom"] = "pil", ["Yombe"] = "yom", ["Yopno"] = "yut", ["Yora"] = "mts", ["Yorta Yorta"] = "xyy", ["Tiếng Mixtec Yosondúa"] = "mpm", ["Younuo Bunu"] = "buh", ["Yout Wam"] = "ytw", ["Yuaga"] = "nua", ["Yucatec Maya Sign Language"] = "msd", ["Yuchi"] = "yuc", ["Yucuañe Mixtec"] = "mvg", ["Yucuna"] = "ycn", ["Yugambal"] = "yub", ["Yugoslavian Sign Language"] = "ysl", ["Yugul"] = "ygu", ["Yuhup"] = "yab", ["Yuki"] = "yuk", ["Yukpa"] = "yup", ["Yukuben"] = "ybl", ["Yulu"] = "yul", ["Yuma"] = "yum", ["Yumana"] = "awd-yum", ["Yupiltepeque"] = "nai-yup", ["Yupua"] = "sai-yup", ["Yuqui"] = "yuq", ["Yuracare"] = "yuz", ["Yuru"] = "ljx", ["Yurumanguí"] = "sai-yur", ["Yurutí"] = "yui", ["Yutanduchi Mixtec"] = "mab", ["Yuwana"] = "yau", ["Yuyu"] = "yxu", ["Yámana"] = "yag", ["Zaachila Zapotec"] = "ztx", ["Zabana"] = "kji", ["Zacatepec Chatino"] = "ctz", ["Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"] = "nhi", ["Zakhring"] = "zkr", ["Zambian Sign Language"] = "zsl", ["Zan Gula"] = "zna", ["Zanaki"] = "zak", ["Zande"] = "zne", ["Zangskari"] = "zau", ["Zangwal"] = "zah", ["Tiếng Zapotec Zaniza"] = "zpw", ["Tiếng Zapotec"] = "zap", ["Zaramo"] = "zaj", ["Zari"] = "zaz", ["Zauzou"] = "zal", ["Tiếng Karen Zayein"] = "kxk", ["Zazao"] = "jaj", ["Zbu"] = "sit-zbu", ["Zeem"] = "zua", ["Zemba"] = "dhm", ["Zeme Naga"] = "nzm", ["Zemgalian"] = "xzm", ["Zenag"] = "zeg", ["Zenzontepec Chatino"] = "czn", ["Zhang-Zhung"] = "xzh", ["Zhire"] = "zhi", ["Zhoa"] = "zhw", ["Zhár"] = "jjr", ["Zia"] = "zia", ["Zialo"] = "zil", ["Zigula"] = "ziw", ["Zimakani"] = "zik", ["Zimba"] = "zmb", ["Zimbabwe Sign Language"] = "zib", ["Zinza"] = "zin", ["Zipser German"] = "gmw-zps", ["Zire"] = "sih", ["Ziriya"] = "zir", ["Zizilivakan"] = "ziz", ["Zo'é"] = "pto", ["Zokhuo"] = "yzk", ["Tiếng Zapotec Zoogocho"] = "zpq", ["Zotung Chin"] = "czt", ["Zou"] = "zom", ["Zulgo-Gemzek"] = "gnd", ["Zumaya"] = "zuy", ["Zuni"] = "zun", ["Zuwara"] = "ber-zuw", ["Zyphe"] = "zyp", ["Záparo"] = "zro", ["biệt ngữ Chinook"] = "chn", ["không xác định ngôn ngữ"] = "und", ["ngôn ngữ ký hiệu Mỹ"] = "ase", ["Tiếng 'Are'are"] = "alu", ["Tiếng A Xương"] = "acn", ["Tiếng A-Hmao"] = "hmd", ["Tiếng Aari"] = "aiw", ["Tiếng Aasax"] = "aas", ["Tiếng Abaga"] = "abg", ["Tiếng Abai"] = "poz-abi", ["Tiếng Abau"] = "aau", ["Tiếng Abaza"] = "abq", ["Tiếng Abidji"] = "abi", ["Tiếng Abinomn"] = "bsa", ["Tiếng Abkhaz"] = "ab", ["Tiếng Abkhaz-Abaza nguyên thủy"] = "cau-abz-pro", ["Tiếng Aceh"] = "ace", ["Tiếng Achawa"] = "aca", ["Tiếng Acheron"] = "acz", ["Tiếng Acholi"] = "ach", ["Tiếng Adangme"] = "ada", ["Tiếng Adja"] = "ajg", ["Tiếng Adygea"] = "ady", ["Tiếng Adzera"] = "adz", ["Tiếng Afar"] = "aa", ["Tiếng Afrikaans"] = "af", ["Tiếng Agawam"] = "alg-aga", ["Tiếng Aghem"] = "agq", ["Tiếng Aghul"] = "agx", ["Tiếng Aghwan"] = "xag", ["Tiếng Ahom"] = "aho", ["Tiếng Ahtna"] = "aht", ["Tiếng Ai Cập"] = "egy", ["Tiếng Ai Cập bình dân"] = "egx-dem", ["Tiếng Aimol"] = "aim", ["Tiếng Ainu"] = "ain", ["Tiếng Aiton"] = "aio", ["Tiếng Ajië"] = "aji", ["Tiếng Aka-Bo"] = "akm", ["Tiếng Aka-Jeru"] = "akj", ["Tiếng Akan"] = "ak", ["Tiếng Akawaio"] = "ake", ["Tiếng Akha"] = "ahk", ["Tiếng Akhvakh"] = "akv", ["Tiếng Akkad"] = "akk", ["Tiếng Aklanon"] = "akl", ["Tiếng Alaba-K’abeena"] = "alw", ["Tiếng Alabama"] = "akz", ["Tiếng Alagwa"] = "wbj", ["Tiếng Alak"] = "alk", ["Tiếng Alawa"] = "alh", ["Tiếng Albani"] = "sq", ["Tiếng Albani nguyên thủy"] = "sqj-pro", ["Tiếng Alchuka"] = "tuw-alk", ["Tiếng Alekano"] = "gah", ["Tiếng Aleut"] = "ale", ["Tiếng Algonquin"] = "alq", ["Tiếng Algonquin nguyên thủy"] = "alg-pro", ["Tiếng Alsea"] = "aes", ["Tiếng Alutor"] = "alr", ["Tiếng Ama"] = "amm", ["Tiếng Amahuaca"] = "amc", ["Tiếng Amaimon"] = "ali", ["Tiếng Amarasi"] = "aaz", ["Tiếng Ambrak"] = "aag", ["Tiếng Amdang"] = "amj", ["Tiếng Amhara"] = "am", ["Tiếng Amis"] = "ami", ["Tiếng Amurdag"] = "amg", ["Tiếng Amuzgo"] = "amu", ["Tiếng Anal"] = "anm", ["Tiếng Andi"] = "ani", ["Tiếng Angika"] = "anp", ["Tiếng Angola"] = "aoa", ["Tiếng Anh"] = "en", ["Tiếng Anh Solombala"] = "crp-slb", ["Tiếng Anh cổ"] = "ang", ["Tiếng Anh trung đại"] = "enm", ["Tiếng Anii"] = "blo", ["Tiếng Ankave"] = "aak", ["Tiếng Anuki"] = "aui", ["Tiếng Anyi"] = "any", ["Tiếng Apache Tây"] = "apw", ["Tiếng Aparaí"] = "apy", ["Tiếng Apinayé"] = "apn", ["Tiếng Aputai"] = "apx", ["Tiếng Aquitani"] = "xaq", ["Tiếng Aragon"] = "an", ["Tiếng Araki"] = "akr", ["Tiếng Arakwal"] = "rkw", ["Tiếng Aram"] = "arc", ["Tiếng Aranadan"] = "aaf", ["Tiếng Araweté"] = "awt", ["Tiếng Archi"] = "aqc", ["Tiếng Arem"] = "aem", ["Tiếng Argobba"] = "agj", ["Tiếng Armenia"] = "hy", ["Tiếng Armenia cổ"] = "xcl", ["Tiếng Armenia trung đại"] = "axm", ["Tiếng Aromania"] = "rup", ["Tiếng Ashraaf"] = "cus-ash", ["Tiếng Askopan"] = "eiv", ["Tiếng Asli nguyên thủy"] = "mkh-asl-pro", ["Tiếng Assam"] = "as", ["Tiếng Assan"] = "xss", ["Tiếng Asturias"] = "ast", ["Tiếng Asur"] = "asr", ["Tiếng Atayal"] = "tay", ["Tiếng Athpariya"] = "aph", ["Tiếng Atikamekw"] = "atj", ["Tiếng Atong (Ấn Độ)"] = "aot", ["Tiếng Auhelawa"] = "kud", ["Tiếng Aukan"] = "djk", ["Tiếng Avar"] = "av", ["Tiếng Avesta"] = "ae", ["Tiếng Avokaya"] = "avu", ["Tiếng Awadh"] = "awa", ["Tiếng Awing"] = "azo", ["Tiếng Awngi"] = "awn", ["Tiếng Axi"] = "yix", ["Tiếng Ayere"] = "aye", ["Tiếng Aymara"] = "ay", ["Tiếng Azerbaijan"] = "az", ["Tiếng Ba Lan"] = "pl", ["Tiếng Ba Lan cổ"] = "zlw-opl", ["Tiếng Ba Na"] = "bdq", ["Tiếng Ba Tư"] = "fa", ["Tiếng Ba Tư cổ"] = "peo", ["Tiếng Ba Tư trung đại"] = "pal", ["Tiếng Ba Tư-Do Thái"] = "jpr", ["Tiếng Babatana"] = "baa", ["Tiếng Babungo"] = "bav", ["Tiếng Babuza"] = "bzg", ["Tiếng Bactria"] = "xbc", ["Tiếng Badaga"] = "bfq", ["Tiếng Badanchi"] = "bau", ["Tiếng Badui"] = "bac", ["Tiếng Bagvalal"] = "kva", ["Tiếng Bahing"] = "bhj", ["Tiếng Bahnar nguyên thủy"] = "mkh-ban-pro", ["Tiếng Bainouk-Gunyuño"] = "bab", ["Tiếng Baiso"] = "bsw", ["Tiếng Bakhtiari"] = "bqi", ["Tiếng Bala"] = "tuw-bal", ["Tiếng Balanta-Ganja"] = "bjt", ["Tiếng Balanta-Kentohe"] = "ble", ["Tiếng Bali"] = "ban", ["Tiếng Baloch"] = "bal", ["Tiếng Balt-Slav nguyên thủy"] = "ine-bsl-pro", ["Tiếng Balti"] = "bft", ["Tiếng Bambara"] = "bm", ["Tiếng Bambassi"] = "myf", ["Tiếng Banjar"] = "bjn", ["Tiếng Bantawa"] = "bap", ["Tiếng Bantu nguyên thủy"] = "bnt-pro", ["Tiếng Baoule"] = "bci", ["Tiếng Barai"] = "bbb", ["Tiếng Barakai"] = "baj", ["Tiếng Bari"] = "bfa", ["Tiếng Baré"] = "bae", ["Tiếng Basaa"] = "bas", ["Tiếng Basay"] = "byq", ["Tiếng Bashkir"] = "ba", ["Tiếng Basketo"] = "bst", ["Tiếng Basque"] = "eu", ["Tiếng Basque nguyên thủy"] = "euq-pro", ["Tiếng Bassa"] = "bsq", ["Tiếng Batak Simalungun"] = "bts", ["Tiếng Batek"] = "btq", ["Tiếng Bats"] = "bbl", ["Tiếng Batuley"] = "bay", ["Tiếng Bayern"] = "bar", ["Tiếng Beja"] = "bej", ["Tiếng Belarus"] = "be", ["Tiếng Belhariya"] = "byw", ["Tiếng Beli"] = "blm", ["Tiếng Bella Coola"] = "blc", ["Tiếng Bellara"] = "brw", ["Tiếng Belnəng"] = "glb", ["Tiếng Bemba"] = "bem", ["Tiếng Bench"] = "bcq", ["Tiếng Bengal"] = "bn", ["Tiếng Berber Bắc Sahara"] = "mzb", ["Tiếng Berber nguyên thủy"] = "ber-pro", ["Tiếng Berber-Do Thái"] = "jbe", ["Tiếng Berik"] = "bkl", ["Tiếng Betawi"] = "bew", ["Tiếng Bezhta"] = "kap", ["Tiếng Bhil"] = "bhb", ["Tiếng Bhil Dungra"] = "duh", ["Tiếng Bhnong"] = "mkh-bhn", ["Tiếng Bhojpur"] = "bho", ["Tiếng Bhumij"] = "aav-bhu", ["Tiếng Bidayuh Biatah"] = "bth", ["Tiếng Bih"] = "ibh", ["Tiếng Bihari"] = "bh", ["Tiếng Bilaspur"] = "kfs", ["Tiếng Bilen"] = "byn", ["Tiếng Birao"] = "brr", ["Tiếng Birhor"] = "biy", ["Tiếng Birjia"] = "bix", ["Tiếng Bishnupriya"] = "bpy", ["Tiếng Bislama"] = "bi", ["Tiếng Bisu"] = "bzi", ["Tiếng Bit"] = "bgk", ["Tiếng Blackfoot"] = "bla", ["Tiếng Blagar"] = "beu", ["Tiếng Blang"] = "blr", ["Tiếng Bodo (Ấn Độ)"] = "brx", ["Tiếng Bodo-Garo nguyên thủy"] = "tbq-bdg-pro", ["Tiếng Boghom"] = "bux", ["Tiếng Bokar"] = "sit-bok", ["Tiếng Bokobaru"] = "bus", ["Tiếng Bondo"] = "bfw", ["Tiếng Boon"] = "bnl", ["Tiếng Borôro"] = "bor", ["Tiếng Botlikh"] = "bph", ["Tiếng Brahui"] = "brh", ["Tiếng Braj"] = "bra", ["Tiếng Breri"] = "brq", ["Tiếng Breton"] = "br", ["Tiếng Breton cổ"] = "obt", ["Tiếng Breton trung đại"] = "xbm", ["Tiếng Britton nguyên thủy"] = "cel-bry-pro", ["Tiếng Bru"] = "bru", ["Tiếng Bru Tây"] = "brv", ["Tiếng Brâu"] = "brb", ["Tiếng Budukh"] = "bdk", ["Tiếng Bughotu"] = "bgt", ["Tiếng Bugis"] = "bug", ["Tiếng Bukhara"] = "bhh", ["Tiếng Bulgar"] = "xbo", ["Tiếng Bulgari"] = "bg", ["Tiếng Bunun"] = "bnn", ["Tiếng Burji"] = "bji", ["Tiếng Burunge"] = "bds", ["Tiếng Burushaski"] = "bsk", ["Tiếng Buryat"] = "bua", ["Tiếng Busa"] = "bqp", ["Tiếng Bushi"] = "buc", ["Tiếng Bách Tế"] = "pkc", ["Tiếng Bảo An"] = "peh", ["Tiếng Bắc Altai"] = "atv", ["Tiếng Bắc Amami Ōshima"] = "ryn", ["Tiếng Bắc Emberá"] = "emp", ["Tiếng Bắc Friesland"] = "frr", ["Tiếng Bắc Iroquois nguyên thủy"] = "iro-nor-pro", ["Tiếng Bắc Mansi"] = "mns-nor", ["Tiếng Bắc Ndebele"] = "nd", ["Tiếng Bắc Nisu"] = "yiv", ["Tiếng Bắc Sami"] = "se", ["Tiếng Bắc Slavey"] = "scs", ["Tiếng Bắc Thái"] = "nod", ["Tiếng Bắc Yukaghir"] = "ykg", ["Tiếng Bắc Âu cổ"] = "non", ["Tiếng Bố Cam"] = "bbh", ["Tiếng Bố Lưu"] = "ply", ["Tiếng Bố Mang"] = "bvp", ["Tiếng Bố Y"] = "pcc", ["Tiếng Bồ Đào Nha"] = "pt", ["Tiếng Bổ trợ Quốc tế"] = "ia", ["Tiếng Ca Dong"] = "kxy", ["Tiếng Ca Tua"] = "kta", ["Tiếng Cahuilla"] = "chl", ["Tiếng Camling"] = "rab", ["Tiếng Canela"] = "ram", ["Tiếng Cao Câu Ly"] = "zkg", ["Tiếng Carib nguyên thủy"] = "sai-car-pro", ["Tiếng Carrier"] = "crx", ["Tiếng Catalan"] = "ca", ["Tiếng Cayuga"] = "cay", ["Tiếng Cebu"] = "ceb", ["Tiếng Celt nguyên thủy"] = "cel-pro", ["Tiếng Celtiberi"] = "xce", ["Tiếng Cerrado nguyên thủy"] = "sai-cer-pro", ["Tiếng Ch'orti'"] = "caa", ["Tiếng Chachi"] = "cbi", ["Tiếng Chagatai"] = "chg", ["Tiếng Chakma"] = "ccp", ["Tiếng Chăm cổ"] = "ocm", ["Tiếng Chamalal"] = "cji", ["Tiếng Chamba"] = "cdh", ["Tiếng Chamicuro"] = "ccc", ["Tiếng Chamorro"] = "ch", ["Tiếng Chatino cao nguyên Tây"] = "ctp", ["Tiếng Chaura"] = "crv", ["Tiếng Chavacano"] = "cbk", ["Tiếng Chechen"] = "ce", ["Tiếng Chepang"] = "cdm", ["Tiếng Cherokee"] = "chr", ["Tiếng Chewong"] = "cwg", ["Tiếng Cheyenne"] = "chy", ["Tiếng Chhattisgarh"] = "hne", ["Tiếng Chibcha"] = "chb", ["Tiếng Chichewa"] = "ny", ["Tiếng Chickasaw"] = "cic", ["Tiếng Chinantec Ojitlán"] = "chj", ["Tiếng Chinantec Ozumacín"] = "chz", ["Tiếng Chinantec Tepinapa"] = "cte", ["Tiếng Chinook"] = "chh", ["Tiếng Chiru"] = "cdf", ["Tiếng Chittagong"] = "ctg", ["Tiếng Chiwere"] = "iow", ["Tiếng Chocangacakha"] = "cgk", ["Tiếng Choctaw"] = "cho", ["Tiếng Chodri"] = "cdi", ["Tiếng Chong"] = "cog", ["Tiếng Chu Ru"] = "cje", ["Tiếng Chukot"] = "ckt", ["Tiếng Chulym"] = "clw", ["Tiếng Chuuk"] = "chk", ["Tiếng Chuvan"] = "xcv", ["Tiếng Chuvash"] = "cv", ["Tiếng Châu Đại Dương nguyên thủy"] = "poz-oce-pro", ["Tiếng Chăm Tây"] = "cja", ["Tiếng Chăm nguyên thủy"] = "cmc-pro", ["Tiếng Chăm Đông"] = "cjm", ["Tiếng Chơ Ro"] = "crw", ["Tiếng Chứt"] = "scb", ["Tiếng Cia-Cia"] = "cia", ["Tiếng Cimbri"] = "cim", ["Tiếng Circassia nguyên thủy"] = "cau-cir-pro", ["Tiếng Co"] = "cua", ["Tiếng Cofán"] = "con", ["Tiếng Comanche"] = "com", ["Tiếng Comoros Maore"] = "swb", ["Tiếng Comox"] = "coo", ["Tiếng Copt"] = "cop", ["Tiếng Cornwall"] = "kw", ["Tiếng Corse"] = "co", ["Tiếng Cree"] = "cr", ["Tiếng Cree đồng bằng"] = "crk", ["Tiếng Creole Hà Lan Berbice"] = "brc", ["Tiếng Creole Jamaica"] = "jam", ["Tiếng Creole Louisiana"] = "lou", ["Tiếng Crow"] = "cro", ["Tiếng Cuman"] = "qwm", ["Tiếng Cupeño"] = "cup", ["Tiếng Cushit nguyên thủy"] = "cus-pro", ["Tiếng Càn-đà-la"] = "pgd", ["Tiếng Cơ Nặc Du Lạc"] = "jiu", ["Tiếng Cơ Tu"] = "ktv", ["Tiếng Cơ Tu Phương"] = "phg", ["Tiếng Cơ Tu Tây"] = "kuf", ["Tiếng Cơ Tu nguyên thủy"] = "mkh-kat-pro", ["Tiếng Cám"] = "gan", ["Tiếng Cờ Lao Trắng"] = "giw", ["Tiếng Daasanach"] = "dsh", ["Tiếng Dabarre"] = "dbr", ["Tiếng Dacia"] = "xdc", ["Tiếng Dadibi"] = "mps", ["Tiếng Dagbani"] = "dag", ["Tiếng Dahalik"] = "dlk", ["Tiếng Dahalo"] = "dal", ["Tiếng Dakota"] = "dak", ["Tiếng Dalmatia"] = "dlm", ["Tiếng Dambi"] = "dac", ["Tiếng Dan"] = "dnj", ["Tiếng Danau"] = "dnu", ["Tiếng Dangaléat"] = "daa", ["Tiếng Danu"] = "dnv", ["Tiếng Danuwar"] = "dhw", ["Tiếng Dargwa"] = "dar", ["Tiếng Dargwa nguyên thủy"] = "cau-drg-pro", ["Tiếng Daur"] = "dta", ["Tiếng Dawro"] = "dwr", ["Tiếng Degema"] = "deg", ["Tiếng Denesuline"] = "chp", ["Tiếng Desiya"] = "dso", ["Tiếng Dhanka"] = "dhn", ["Tiếng Dhivehi"] = "dv", ["Tiếng Dhodia"] = "dho", ["Tiếng Dibabawon"] = "mbd", ["Tiếng Digan"] = "rom", ["Tiếng Digan Tavringer"] = "rmu", ["Tiếng Dinka"] = "din", ["Tiếng Dirasha"] = "gdl", ["Tiếng Ditidaht"] = "dtd", ["Tiếng Dizi"] = "mdx", ["Tiếng Do Thái"] = "he", ["Tiếng Dogri"] = "doi", ["Tiếng Dogrib"] = "dgr", ["Tiếng Dolgan"] = "dlg", ["Tiếng Domari"] = "rmt", ["Tiếng Dongolawi"] = "kzh", ["Tiếng Dravida nguyên thủy"] = "dra-pro", ["Tiếng Dubla"] = "dub", ["Tiếng Dukha"] = "trk-dkh", ["Tiếng Duun"] = "dux", ["Tiếng Duy Ngô Nhĩ"] = "ug", ["Tiếng Duy Ngô Nhĩ cổ"] = "oui", ["Tiếng Dyirbal"] = "dbl", ["Tiếng Dzongkha"] = "dz", ["Tiếng Dzuun"] = "dnn", ["Tiếng Ebla"] = "xeb", ["Tiếng Ebrié"] = "ebr", ["Tiếng Ebughu"] = "ebg", ["Tiếng Ede Idaca"] = "idd", ["Tiếng Ede Nago"] = "nqg", ["Tiếng Edekiri nguyên thủy"] = "alv-edk-pro", ["Tiếng Edo"] = "bin", ["Tiếng Efai"] = "efa", ["Tiếng Efe"] = "efe", ["Tiếng Efik"] = "efi", ["Tiếng Ega"] = "ega", ["Tiếng Eggon"] = "ego", ["Tiếng Ehueun"] = "ehu", ["Tiếng Eipomek"] = "eip", ["Tiếng Eitiep"] = "eit", ["Tiếng Ejagham"] = "etu", ["Tiếng El Molo"] = "elo", ["Tiếng Elam"] = "elx", ["Tiếng Elymi"] = "xly", ["Tiếng Emberá-Chamí"] = "cmi", ["Tiếng Emberá-Tadó"] = "tdc", ["Tiếng Embu"] = "ebu", ["Tiếng Emilia"] = "egl", ["Tiếng Enets lãnh nguyên"] = "enh", ["Tiếng Enets rừng"] = "enf", ["Tiếng Engenni"] = "enn", ["Tiếng Eotile"] = "eot", ["Tiếng Epie"] = "epi", ["Tiếng Erzya"] = "myv", ["Tiếng Esan"] = "ish", ["Tiếng Ese"] = "mcq", ["Tiếng Esimbi"] = "ags", ["Tiếng Eskimo nguyên thủy"] = "esx-esk-pro", ["Tiếng Estonia"] = "et", ["Tiếng Eteocrete"] = "ecr", ["Tiếng Etrusca"] = "ett", ["Tiếng Even"] = "eve", ["Tiếng Evenk"] = "evn", ["Tiếng Ewe"] = "ee", ["Tiếng Fala"] = "fax", ["Tiếng Falisci"] = "xfa", ["Tiếng Faroe"] = "fo", ["Tiếng Fe'fe'"] = "fmp", ["Tiếng Fiji"] = "fj", ["Tiếng Finn nguyên thủy"] = "urj-fin-pro", ["Tiếng Flemish Tây"] = "vls", ["Tiếng Fogaha"] = "ber-fog", ["Tiếng Fon"] = "fon", ["Tiếng Fox"] = "sac", ["Tiếng Franco-Provençal"] = "frp", ["Tiếng Franken Trung"] = "gmw-cfr", ["Tiếng Frisia Saterland"] = "stq", ["Tiếng Frisia cổ"] = "ofs", ["Tiếng Friuli"] = "fur", ["Tiếng Fula"] = "ff", ["Tiếng Fur"] = "fvr", ["Tiếng Ga"] = "gaa", ["Tiếng Gabri"] = "gab", ["Tiếng Gaddang"] = "gad", ["Tiếng Gael Scotland"] = "gd", ["Tiếng Gagauz"] = "gag", ["Tiếng Galati"] = "xga", ["Tiếng Galicia"] = "gl", ["Tiếng Galicia-Bồ Đào Nha"] = "roa-opt", ["Tiếng Gamit"] = "gbl", ["Tiếng Gamo"] = "gmv", ["Tiếng Ganza"] = "gza", ["Tiếng Garasia Adiwasi"] = "gas", ["Tiếng Garasia Rajput"] = "gra", ["Tiếng Garo"] = "grt", ["Tiếng Garre"] = "gex", ["Tiếng Gata'"] = "gaq", ["Tiếng Gawar-Bati"] = "gwt", ["Tiếng Gbe Saxwe"] = "sxw", ["Tiếng Gbe nguyên thủy"] = "alv-gbe-pro", ["Tiếng Gedeo"] = "drs", ["Tiếng German Tây nguyên thủy"] = "gmw-pro", ["Tiếng Scots trung đại"] = "gmw-msc", ["Tiếng German nguyên thủy"] = "gem-pro", ["Tiếng Geʽez"] = "gez", ["Tiếng Ghadames"] = "gha", ["Tiếng Ghomala'"] = "bbj", ["Tiếng Gia Rai"] = "jra", ["Tiếng Gikuyu"] = "ki", ["Tiếng Gilak"] = "glk", ["Tiếng Gimi (Goroka)"] = "gim", ["Tiếng Girirra"] = "gii", ["Tiếng Giẻ"] = "jeh", ["Tiếng Glosa"] = "igs", ["Tiếng Godoberi"] = "gdo", ["Tiếng Gofa"] = "gof", ["Tiếng Gone Dau"] = "goo", ["Tiếng Gorowa"] = "gow", ["Tiếng Goth"] = "got", ["Tiếng Greenland"] = "kl", ["Tiếng Gruzia"] = "ka", ["Tiếng Gruzia cổ"] = "oge", ["Tiếng Gruzia-Do Thái"] = "jge", ["Tiếng Gruzia-Zan nguyên thủy"] = "ccs-gzn-pro", ["Tiếng Guajajára"] = "gub", ["Tiếng Guajá"] = "gvj", ["Tiếng Guanche"] = "gnc", ["Tiếng Guaraní"] = "gn", ["Tiếng Guarani Mbya"] = "gun", ["Tiếng Guarayu"] = "gyr", ["Tiếng Gujarat"] = "gu", ["Tiếng Gulay"] = "gvl", ["Tiếng Gumuz"] = "guk", ["Tiếng Gun"] = "guw", ["Tiếng Gurenne"] = "gur", ["Tiếng Guugu Yimidhirr"] = "kky", ["Tiếng Gwichʼin"] = "gwi", ["Tiếng H'Mông Tương Tây Tây"] = "mmr", ["Tiếng H'Mông-Miền nguyên thủy"] = "hmx-pro", ["Tiếng H'roi"] = "hro", ["Tiếng Hachijō"] = "jpx-hcj", ["Tiếng Hadiyya"] = "hdy", ["Tiếng Haida"] = "hai", ["Tiếng Creole Haiti"] = "ht", ["Tiếng Hajong"] = "haj", ["Tiếng Halba"] = "hlb", ["Tiếng Halkomelem"] = "hur", ["Tiếng Hamer-Banna"] = "amf", ["Tiếng Hanunoo"] = "hnn", ["Tiếng Harari"] = "har", ["Tiếng Hatti"] = "xht", ["Tiếng Hausa"] = "ha", ["Tiếng Haush"] = "sai-hau", ["Tiếng Havasupai-Walapai-Yavapai"] = "yuf", ["Tiếng Hawaii"] = "haw", ["Tiếng Hazara"] = "haz", ["Tiếng Heiltsuk"] = "hei", ["Tiếng Hellen nguyên thủy"] = "grk-pro", ["Tiếng Herero"] = "hz", ["Tiếng Higaonon"] = "mba", ["Tiếng Hiligaynon"] = "hil", ["Tiếng Hindi"] = "hi", ["Tiếng Hindi Fiji"] = "hif", ["Tiếng Hindko Bắc"] = "hno", ["Tiếng Hindustan Caribe"] = "hns", ["Tiếng Hiri Motu"] = "ho", ["Tiếng Hitti"] = "hit", ["Tiếng Hlai"] = "lic", ["Tiếng Hlai nguyên thủy"] = "qfa-lic-pro", ["Tiếng Ho"] = "hoc", ["Tiếng Hoava"] = "hoa", ["Tiếng Hocak"] = "win", ["Tiếng Horpa"] = "ero", ["Tiếng Hozo"] = "hoz", ["Tiếng Hpon"] = "hpo", ["Tiếng Hrê"] = "hre", ["Tiếng Hu"] = "huo", ["Tiếng Hulaulá"] = "huy", ["Tiếng Hungary"] = "hu", ["Tiếng Hunsrik"] = "hrx", ["Tiếng Hunzib"] = "huz", ["Tiếng Hupa"] = "hup", ["Tiếng Hurri"] = "xhu", ["Tiếng Huy"] = "czh", ["Tiếng Hy Lạp"] = "el", ["Tiếng Hy Lạp Cappadocia"] = "cpg", ["Tiếng Hy Lạp Italiot"] = "grk-ita", ["Tiếng Hy Lạp Mariupol"] = "grk-mar", ["Tiếng Hy Lạp Pontos"] = "pnt", ["Tiếng Hy Lạp cổ"] = "grc", ["Tiếng Hyam"] = "jab", ["Tiếng Hà Lan"] = "nl", ["Tiếng Hà Lan Jersey"] = "gmw-jdt", ["Tiếng Hà Lan cổ"] = "odt", ["Tiếng Hà Lan trung đại"] = "dum", ["Tiếng Hà Lăng"] = "hal", ["Tiếng Hà Nhì"] = "hni", ["Tiếng Hán thượng cổ"] = "och", ["Tiếng Hán trung cổ"] = "ltc", ["Tiếng Hán-Tạng nguyên thủy"] = "sit-pro", ["Tiếng Hạ Sorb"] = "dsb", ["Tiếng Hạ Đức"] = "nds", ["Tiếng Hạ Đức Mennonite"] = "pdt", ["Tiếng Hạ Đức trung đại"] = "gml", ["Tiếng Hạ Đức tại Đức"] = "nds-de", ["Tiếng Iaai"] = "iai", ["Tiếng Ibaloi"] = "ibl", ["Tiếng Iban"] = "iba", ["Tiếng Ibatan"] = "ivb", ["Tiếng Ibibio"] = "ibb", ["Tiếng Ibino"] = "ibn", ["Tiếng Ibuoro"] = "ibr", ["Tiếng Iceland"] = "is", ["Tiếng Ido"] = "io", ["Tiếng Ifè"] = "ife", ["Tiếng Igala"] = "igl", ["Tiếng Igbo"] = "ig", ["Tiếng Ikwere"] = "ikw", ["Tiếng Ili Turki"] = "ili", ["Tiếng Ilokano"] = "ilo", ["Tiếng Indo-Bồ Đào Nha"] = "idb", ["Tiếng Indonesia"] = "id", ["Tiếng Indonesia Peranakan"] = "pea", ["Tiếng Ingria"] = "izh", ["Tiếng Ingush"] = "inh", ["Tiếng Inor"] = "ior", ["Tiếng Interlingue"] = "ie", ["Tiếng Intha"] = "int", ["Tiếng Inuit nguyên thủy"] = "esx-inu-pro", ["Tiếng Inuktitut"] = "iu", ["Tiếng Inupiaq"] = "ik", ["Tiếng Iran nguyên thủy"] = "ira-pro", ["Tiếng Iraqw"] = "irk", ["Tiếng Ireland"] = "ga", ["Tiếng Ireland cổ"] = "sga", ["Tiếng Ireland trung đại"] = "mga", ["Tiếng Iroquois nguyên thủy"] = "iro-pro", ["Tiếng Isan"] = "tts", ["Tiếng Isnag"] = "isd", ["Tiếng Isoko"] = "iso", ["Tiếng Istria"] = "ist", ["Tiếng Istria Rumani"] = "ruo", ["Tiếng Italic nguyên thủy"] = "itc-pro", ["Tiếng Itaŋikom"] = "bkm", ["Tiếng Itelmen"] = "itl", ["Tiếng Itonama"] = "ito", ["Tiếng Itsekiri"] = "its", ["Tiếng Itu Mbon Uzo"] = "itm", ["Tiếng Ivatan"] = "ivv", ["Tiếng Iwaidja"] = "ibd", ["Tiếng Ixil"] = "ixl", ["Tiếng Jacaltec"] = "jac", ["Tiếng Jah Hut"] = "jah", ["Tiếng Jamamadí"] = "jaa", ["Tiếng Japhug"] = "sit-jap", ["Tiếng Jaqaru"] = "jqr", ["Tiếng Jarawa"] = "anq", ["Tiếng Java"] = "jv", ["Tiếng Java Caribe"] = "jvn", ["Tiếng Java cổ"] = "kaw", ["Tiếng Javindo"] = "jvd", ["Tiếng Jehai"] = "jhi", ["Tiếng Jeju"] = "jje", ["Tiếng Jiiddu"] = "jii", ["Tiếng Jru'"] = "lbo", ["Tiếng Juang"] = "jun", ["Tiếng Jumjum"] = "jum", ["Tiếng Juǀ'hoan"] = "ktz", ["Tiếng Jylland"] = "jut", ["Tiếng Jê Bắc nguyên thủy"] = "sai-nje-pro", ["Tiếng Jê nguyên thủy"] = "sai-jee-pro", ["Tiếng K'Ho"] = "kpm", ["Tiếng K'iche'"] = "quc", ["Tiếng Kabardia"] = "kbd", ["Tiếng Kabiye"] = "kbp", ["Tiếng Kabyle"] = "kab", ["Tiếng Kachin"] = "kac", ["Tiếng Kadu"] = "zkd", ["Tiếng Kafa"] = "kbr", ["Tiếng Kaingang"] = "kgp", ["Tiếng Kakabai"] = "kqf", ["Tiếng Kalam"] = "gwc", ["Tiếng Kalao"] = "kly", ["Tiếng Kalash"] = "kls", ["Tiếng Kalinga Limos"] = "kmk", ["Tiếng Kalmyk"] = "xal", ["Tiếng Kalo Phần Lan"] = "rmf", ["Tiếng Kamassia"] = "xas", ["Tiếng Kambaata"] = "ktb", ["Tiếng Kanakanavu"] = "xnb", ["Tiếng Kangean"] = "kkv", ["Tiếng Kannada"] = "kn", ["Tiếng Kannauj"] = "bjj", ["Tiếng Kanuri"] = "kr", ["Tiếng Kapampangan"] = "pam", ["Tiếng Kapingamarangi"] = "kpg", ["Tiếng Karachay-Balkar"] = "krc", ["Tiếng Karaim"] = "kdr", ["Tiếng Karajá"] = "kpj", ["Tiếng Karakalpak"] = "kaa", ["Tiếng Karakhanid"] = "xqa", ["Tiếng Karao"] = "kyj", ["Tiếng Karata"] = "kpt", ["Tiếng Karbi"] = "mjw", ["Tiếng Karelia"] = "krl", ["Tiếng Karen Bwe"] = "bwe", ["Tiếng Karen Geba"] = "kvq", ["Tiếng Karen Geko"] = "ghk", ["Tiếng Karen Mobwa"] = "jkm", ["Tiếng Karen Paku"] = "jkp", ["Tiếng Karen S'gaw"] = "ksw", ["Tiếng Karen nguyên thủy"] = "kar-pro", ["Tiếng Kari'na"] = "car", ["Tiếng Kartvelia nguyên thủy"] = "ccs-pro", ["Tiếng Kashaya"] = "kju", ["Tiếng Kashmir"] = "ks", ["Tiếng Kaszëb"] = "csb", ["Tiếng Katang Bắc"] = "ncq", ["Tiếng Kavalan"] = "ckv", ["Tiếng Kavet"] = "krv", ["Tiếng Kawésqar"] = "alc", ["Tiếng Kayapó"] = "txu", ["Tiếng Kayort"] = "kyv", ["Tiếng Kazakh"] = "kk", ["Tiếng Kensiu"] = "kns", ["Tiếng Ket"] = "ket", ["Tiếng Khakas"] = "kjh", ["Tiếng Khalaj"] = "klj", ["Tiếng Khaling"] = "klr", ["Tiếng Kham Gamale"] = "kgj", ["Tiếng Kham Parbate Tây"] = "kjl", ["Tiếng Kham Parbate Đông"] = "kif", ["Tiếng Khamti"] = "kht", ["Tiếng Khamyang"] = "ksu", ["Tiếng Khang Gia"] = "kxs", ["Tiếng Khanty"] = "kca", ["Tiếng Kharia"] = "khr", ["Tiếng Khasa Prakrit"] = "inc-kha", ["Tiếng Khasi"] = "kha", ["Tiếng Khasi nguyên thủy"] = "aav-khs-pro", ["Tiếng Khazar"] = "zkz", ["Tiếng Khengkha"] = "xkf", ["Tiếng Khiamniungan"] = "kix", ["Tiếng Khinalug"] = "kjj", ["Tiếng Khiết Đan"] = "zkt", ["Tiếng Khmer"] = "km", ["Tiếng Khmer Surin"] = "kxm", ["Tiếng Khmer cổ"] = "okz", ["Tiếng Khmer nguyên thủy"] = "mkh-kmr-pro", ["Tiếng Khmer trung đại"] = "xhm", ["Tiếng Khoekhoe"] = "naq", ["Tiếng Khowar"] = "khw", ["Tiếng Khuen"] = "khf", ["Tiếng Khvarshi"] = "khv", ["Tiếng Khwarezm"] = "xco", ["Tiếng Khách Gia"] = "hak", ["Tiếng Kháng"] = "kjm", ["Tiếng Khün"] = "kkh", ["Tiếng Khùa"] = "xhv", ["Tiếng Khơ Mú"] = "kjg", ["Tiếng Khơ Mú nguyên thủy"] = "mkh-khm-pro", ["Tiếng Khương Bắc"] = "cng", ["Tiếng Kickapoo"] = "kic", ["Tiếng Kikai"] = "kzg", ["Tiếng Kili"] = "tuw-kil", ["Tiếng Kim Môn"] = "mji", ["Tiếng Kimbundu"] = "kmb", ["Tiếng Kintaq"] = "knq", ["Tiếng Kiowa"] = "kio", ["Tiếng Kiribati"] = "gil", ["Tiếng Kirike"] = "okr", ["Tiếng Kisan"] = "xis", ["Tiếng Kistane"] = "gru", ["Tiếng Kituba"] = "ktu", ["Tiếng Klallam"] = "clm", ["Tiếng Klingon"] = "tlh", ["Tiếng Knaan"] = "czk", ["Tiếng Kobon"] = "kpw", ["Tiếng Koch"] = "kdq", ["Tiếng Koda"] = "cdz", ["Tiếng Kodava"] = "kfa", ["Tiếng Kohistan"] = "mvy", ["Tiếng Koibal"] = "zkb", ["Tiếng Kok Borok"] = "trp", ["Tiếng Kolami"] = "kfb", ["Tiếng Kolhe"] = "ekl", ["Tiếng Koli Parkar"] = "kvx", ["Tiếng Koli Wadiyara"] = "kxp", ["Tiếng Komi cổ"] = "urj-koo", ["Tiếng Komi-Permyak"] = "koi", ["Tiếng Komi-Zyrian"] = "kpv", ["Tiếng Kongo"] = "kg", ["Tiếng Konkan"] = "kok", ["Tiếng Konso"] = "kxc", ["Tiếng Koonzime"] = "ozm", ["Tiếng Koore"] = "kqy", ["Tiếng Koraga Korra"] = "kfd", ["Tiếng Koraga Mudu"] = "vmd", ["Tiếng Korku"] = "kfq", ["Tiếng Koryak"] = "kpy", ["Tiếng Kosrae"] = "kos", ["Tiếng Kotava"] = "avk", ["Tiếng Kraol"] = "rka", ["Tiếng Krio"] = "kri", ["Tiếng Krung"] = "krr", ["Tiếng Krymchak"] = "jct", ["Tiếng Kryts"] = "kry", ["Tiếng Kudmal"] = "kyw", ["Tiếng Kui Dawik"] = "dwk", ["Tiếng Kukna"] = "kex", ["Tiếng Kullu"] = "kfx", ["Tiếng Kulon-Pazeh"] = "uun", ["Tiếng Kumbewaha"] = "xks", ["Tiếng Kumyk"] = "kum", ["Tiếng Kumzar"] = "zum", ["Tiếng Kundal Shahi"] = "shd", ["Tiếng Kunigami"] = "xug", ["Tiếng Kurmanji"] = "kmr", ["Tiếng Kurtokha"] = "xkz", ["Tiếng Kurumba Attapady"] = "pkr", ["Tiếng Kutch"] = "kfr", ["Tiếng Kuvi"] = "kxv", ["Tiếng Kuy"] = "kdt", ["Tiếng Kw'adza"] = "wka", ["Tiếng Kwak'wala"] = "kwk", ["Tiếng Kwanyama"] = "kj", ["Tiếng Kyakala"] = "tuw-kkl", ["Tiếng Kyrgyz"] = "ky", ["Tiếng Kyrgyz Phú Dụ"] = "trk-fyk", ["Tiếng Kâte"] = "kmg", ["Tiếng La Hủ"] = "lhu", ["Tiếng Ladakh"] = "lbj", ["Tiếng Ladin"] = "lld", ["Tiếng Ladino"] = "lad", ["Tiếng Lahnda"] = "lah", ["Tiếng Lak"] = "lbe", ["Tiếng Lakota"] = "lkt", ["Tiếng Lambadi"] = "lmn", ["Tiếng Lamboya"] = "lmy", ["Tiếng Lanoh"] = "lnh", ["Tiếng Laomian"] = "lwm", ["Tiếng Lar"] = "lrl", ["Tiếng Lasalimu"] = "llm", ["Tiếng Lashi"] = "lsi", ["Tiếng Latgale"] = "ltg", ["Tiếng Latinh"] = "la", ["Tiếng Latundê"] = "ltn", ["Tiếng Latvia"] = "lv", ["Tiếng Lavukaleve"] = "lvk", ["Tiếng Lawa Tây"] = "lcp", ["Tiếng Lawa Đông"] = "lwl", ["Tiếng Laz"] = "lzz", ["Tiếng Lemnos"] = "xle", ["Tiếng Lepcha"] = "lep", ["Tiếng Leponti"] = "xlp", ["Tiếng Lezghi nguyên thủy"] = "cau-lzg-pro", ["Tiếng Lezgi"] = "lez", ["Tiếng Lhao Vo"] = "mhx", ["Tiếng Liabuku"] = "lix", ["Tiếng Libido"] = "liq", ["Tiếng Liguria"] = "lij", ["Tiếng Lillooet"] = "lil", ["Tiếng Limburg"] = "li", ["Tiếng Lingala"] = "ln", ["Tiếng Lishana Deni"] = "lsd", ["Tiếng Lishanid Noshan"] = "aij", ["Tiếng Lisu"] = "lis", ["Tiếng Litva"] = "lt", ["Tiếng Livonia"] = "liv", ["Tiếng Livvi"] = "olo", ["Tiếng Lojban"] = "jbo", ["Tiếng Lokono"] = "arw", ["Tiếng Lombard"] = "lmo", ["Tiếng Lou"] = "loj", ["Tiếng Luba-Katanga"] = "lu", ["Tiếng Luganda"] = "lg", ["Tiếng Lur Bắc"] = "lrc", ["Tiếng Lur Nam"] = "luz", ["Tiếng Lushootseed"] = "lut", ["Tiếng Luwi"] = "xlu", ["Tiếng Luxembourg"] = "lb", ["Tiếng Lydia"] = "xld", ["Tiếng Lyngngam"] = "lyg", ["Tiếng Lyydi"] = "lud", ["Tiếng Lào"] = "lo", ["Tiếng Lô Lô"] = "ii", ["Tiếng Lư Nhân"] = "sit-lrn", ["Tiếng Lự"] = "khb", ["Tiếng M'Nông Nam"] = "mnn", ["Tiếng M'Nông Trung"] = "cmo", ["Tiếng M'Nông Đông"] = "mng", ["Tiếng Ma Thoa"] = "nru", ["Tiếng Ma'anyan"] = "mhy", ["Tiếng Maaka"] = "mew", ["Tiếng Maale"] = "mdy", ["Tiếng Maasai"] = "mas", ["Tiếng Mabang"] = "mde", ["Tiếng Macedoni"] = "mk", ["Tiếng Macedoni cổ đại"] = "xmk", ["Tiếng Macushi"] = "mbc", ["Tiếng Madura"] = "mad", ["Tiếng Magar Tây"] = "mrd", ["Tiếng Magar Đông"] = "mgp", ["Tiếng Magori"] = "zgr", ["Tiếng Maguindanao"] = "mdh", ["Tiếng Mah Meri"] = "mhe", ["Tiếng Mahal"] = "mjx", ["Tiếng Maithil"] = "mai", ["Tiếng Malagasy"] = "mg", ["Tiếng Malayalam"] = "ml", ["Tiếng Malta"] = "mt", ["Tiếng Mampruli"] = "maw", ["Tiếng Man"] = "gv", ["Tiếng Manda (Ấn Độ)"] = "mha", ["Tiếng Mandara"] = "tbf", ["Tiếng Mandinka"] = "mnk", ["Tiếng Mangas"] = "zns", ["Tiếng Manggarai"] = "mqy", ["Tiếng Mangghuer"] = "xgn-mgr", ["Tiếng Manipur"] = "mni", ["Tiếng Mankanya"] = "knf", ["Tiếng Mano"] = "mev", ["Tiếng Mansi nguyên thủy"] = "mns-pro", ["Tiếng Manumanaw"] = "kxf", ["Tiếng Mao Nam"] = "mmd", ["Tiếng Maori"] = "mi", ["Tiếng Mapuche"] = "arn", ["Tiếng Marathi"] = "mr", ["Tiếng Mari Đông"] = "mhr", ["Tiếng Marma"] = "rmz", ["Tiếng Marshall"] = "mh", ["Tiếng Marwar"] = "mwr", ["Tiếng Mator"] = "mtm", ["Tiếng Maya Yucatán"] = "yua", ["Tiếng Maya nguyên thủy"] = "myn-pro", ["Tiếng Mazahua Michoacán"] = "mmc", ["Tiếng Mazahua Trung"] = "maz", ["Tiếng Mazandaran"] = "mzn", ["Tiếng Mbabaram"] = "vmb", ["Tiếng Me'en"] = "mym", ["Tiếng Media cổ"] = "xme-old", ["Tiếng Medumba"] = "byv", ["Tiếng Mehri"] = "gdq", ["Tiếng Memon"] = "mby", ["Tiếng Mende"] = "men", ["Tiếng Meriam"] = "ulk", ["Tiếng Mi'kmaq"] = "mic", ["Tiếng Miami"] = "mia", ["Tiếng Mingrelia"] = "xmf", ["Tiếng Minriq"] = "mnq", ["Tiếng Mintil"] = "mzt", ["Tiếng Miranda"] = "mwl", ["Tiếng Mixtec Chayuco"] = "mih", ["Tiếng Miyako"] = "mvi", ["Tiếng Mizo"] = "lus", ["Tiếng Miến Điện"] = "my", ["Tiếng Miến Điện cổ"] = "obr", ["Tiếng Mlabri"] = "mra", ["Tiếng Mogholi"] = "mhj", ["Tiếng Moglena-Rumani"] = "ruq", ["Tiếng Mohawk"] = "moh", ["Tiếng Moken"] = "mwt", ["Tiếng Mokil"] = "mkj", ["Tiếng Moklen"] = "mkm", ["Tiếng Moksha"] = "mdf", ["Tiếng Mongghul"] = "xgn-mgl", ["Tiếng Mooré"] = "mos", ["Tiếng Mordvin nguyên thủy"] = "urj-mdv-pro", ["Tiếng Morokodo"] = "mgc", ["Tiếng Motu"] = "meu", ["Tiếng Mozarab"] = "mxi", ["Tiếng Muak Sa-aak"] = "ukk", ["Tiếng Munda nguyên thủy"] = "mun-pro", ["Tiếng Mundari"] = "unr", ["Tiếng Munji"] = "mnj", ["Tiếng Mursi"] = "muz", ["Tiếng Muscogee"] = "mus", ["Tiếng Muskogee nguyên thủy"] = "nai-mus-pro", ["Tiếng Mwotlap"] = "mlv", ["Tiếng Mân Bắc"] = "mnp", ["Tiếng Mân Nam"] = "nan", ["Tiếng Mân Trung"] = "czo", ["Tiếng Mân Tuyền Chương"] = "nan-hbl", ["Tiếng Mân nguyên thủy"] = "zhx-min-pro", ["Tiếng Mân Đông"] = "cdo", ["Tiếng Mã Lai"] = "ms", ["Tiếng Mã Lai Ambon"] = "abs", ["Tiếng Mã Lai Baba"] = "mbf", ["Tiếng Mã Lai Brunei"] = "kxd", ["Tiếng Mã Lai Bắc Maluku"] = "max", ["Tiếng Mã Lai cổ"] = "omy", ["Tiếng Mã Lai nguyên thủy"] = "poz-mly-pro", ["Tiếng Mã Lai-Chăm nguyên thủy"] = "poz-mcm-pro", ["Tiếng Mã Lai-Sumbawa nguyên thủy"] = "poz-msa-pro", ["Tiếng Mã Lai-Đa Đảo Trung Đông nguyên thủy"] = "poz-cet-pro", ["Tiếng Mã Lai-Đa Đảo nguyên thủy"] = "poz-pro", ["Tiếng Mã Lai-Đa Đảo Đông nguyên thủy"] = "pqe-pro", ["Tiếng Mã Liềng"] = "pkt", ["Tiếng Mãn Châu"] = "mnc", ["Tiếng Môn"] = "mnw", ["Tiếng Môn Thái"] = "mnw-tha", ["Tiếng Môn cổ"] = "omx", ["Tiếng Môn nguyên thủy"] = "mkh-mnc-pro", ["Tiếng Môn trung đại"] = "mkh-mmn", ["Tiếng Môn-Khmer nguyên thủy"] = "mkh-pro", ["Tiếng Mông"] = "hmf", ["Tiếng Mông Cổ"] = "mn", ["Tiếng Mông Cổ Khamnigan"] = "ykh", ["Tiếng Mông Cổ cổ điển"] = "cmg", ["Tiếng Mông Cổ nguyên thủy"] = "xgn-pro", ["Tiếng Mông Cổ trung đại"] = "xng", ["Tiếng Mông Trắng"] = "mww", ["Tiếng Mơ Nâm"] = "moo", ["Tiếng Mường"] = "mtq", ["Tiếng Mạ"] = "cma", ["Tiếng Mảng"] = "zng", ["Tiếng Na Miểu"] = "neo", ["Tiếng Na Uy"] = "no", ["Tiếng Na Uy (Bokmål)"] = "nb", ["Tiếng Na Uy (Nynorsk)"] = "nn", ["Tiếng Naga Chothe"] = "nct", ["Tiếng Nahuatl"] = "nah", ["Tiếng Nahuatl Temascaltepec"] = "nhv", ["Tiếng Nahuatl cổ điển"] = "nci", ["Tiếng Nakh nguyên thủy"] = "cau-nkh-pro", ["Tiếng Nam Altai"] = "alt", ["Tiếng Nam Amami Ōshima"] = "ams", ["Tiếng Nam Kolami"] = "nit", ["Tiếng Nam Mansi"] = "mns-sou", ["Tiếng Nam Ndebele"] = "nr", ["Tiếng Nam Sami"] = "sma", ["Tiếng Nam Slavey"] = "xsl", ["Tiếng Nam Thái"] = "sou", ["Tiếng Nam Uzbek"] = "uzs", ["Tiếng Nam Yukaghir"] = "yux", ["Tiếng Nam Á nguyên thủy"] = "aav-pro", ["Tiếng Nam Đảo nguyên thủy"] = "map-pro", ["Tiếng Nam Động"] = "kmc", ["Tiếng Nanai"] = "gld", ["Tiếng Napoli"] = "nap", ["Tiếng Nauru"] = "na", ["Tiếng Navajo"] = "nv", ["Tiếng Ndogo"] = "ndz", ["Tiếng Ndonga"] = "ng", ["Tiếng Nefusa"] = "jbn", ["Tiếng Negerhollands"] = "dcr", ["Tiếng Negidal"] = "neg", ["Tiếng Nenets lãnh nguyên"] = "yrk", ["Tiếng Nepal"] = "ne", ["Tiếng Newa"] = "new", ["Tiếng Nga"] = "ru", ["Tiếng Ngalum"] = "szb", ["Tiếng Nganasan"] = "nio", ["Tiếng Ngas"] = "anc", ["Tiếng Ngiemboon"] = "nnh", ["Tiếng Ngomba"] = "jgo", ["Tiếng Nguồn"] = "nuo", ["Tiếng Ngô"] = "wuu", ["Tiếng Ngũ Đồn"] = "wuh", ["Tiếng Nha Lang"] = "yrn", ["Tiếng Nheengatu"] = "yrl", ["Tiếng Nhu Nhiên"] = "qfa-xgx-rou", ["Tiếng Nhĩ Tô"] = "ers", ["Tiếng Nhật"] = "ja", ["Tiếng Nhật Bản nguyên thủy"] = "jpx-pro", ["Tiếng Nhật cổ"] = "ojp", ["Tiếng Nias"] = "nia", ["Tiếng Nicobar Car"] = "caq", ["Tiếng Nicobar Nam"] = "nik", ["Tiếng Nicobar Trung"] = "ncb", ["Tiếng Nicobar nguyên thủy"] = "aav-nic-pro", ["Tiếng Niue"] = "niu", ["Tiếng Nivkh"] = "niv", ["Tiếng Nkari"] = "nkz", ["Tiếng Nkonya"] = "nko", ["Tiếng Nobiin"] = "fia", ["Tiếng Nogai"] = "nog", ["Tiếng Noreia"] = "nrc", ["Tiếng Norman"] = "nrf", ["Tiếng Novgorod cổ"] = "zle-ono", ["Tiếng Novial"] = "nov", ["Tiếng Nubaca"] = "baf", ["Tiếng Nubi"] = "kcn", ["Tiếng Nuer"] = "nus", ["Tiếng Nuu-chah-nulth"] = "nuk", ["Tiếng Nyah Kur"] = "cbn", ["Tiếng Nyaw"] = "nyw", ["Tiếng Nyeu"] = "nyl", ["Tiếng Nùng"] = "nut", ["Tiếng Nùng Vẻn"] = "enc", ["Tiếng Nạp Tây"] = "nxq", ["Tiếng Nữ Chân"] = "juc", ["Tiếng O'odham"] = "ood", ["Tiếng Ocaina"] = "oca", ["Tiếng Occitan"] = "oc", ["Tiếng Occitan cổ"] = "pro", ["Tiếng Ogbronuagum"] = "ogu", ["Tiếng Oirat"] = "xwo", ["Tiếng Ojibwe"] = "oj", ["Tiếng Okanagan"] = "oka", ["Tiếng Okinawa"] = "ryu", ["Tiếng Okinoerabu"] = "okn", ["Tiếng Olukumi"] = "ulb", ["Tiếng Omaha-Ponca"] = "oma", ["Tiếng Omok"] = "omk", ["Tiếng Oriya"] = "or", ["Tiếng Oriya Adiwasi"] = "ort", ["Tiếng Orma"] = "orc", ["Tiếng Ormu"] = "orz", ["Tiếng Ormur"] = "oru", ["Tiếng Oroch"] = "oac", ["Tiếng Orok"] = "oaa", ["Tiếng Oromo"] = "om", ["Tiếng Oromo Nam"] = "gax", ["Tiếng Oromo Đông"] = "hae", ["Tiếng Oroqen"] = "orh", ["Tiếng Osage"] = "osa", ["Tiếng Osatu"] = "ost", ["Tiếng Osci"] = "osc", ["Tiếng Ossetia"] = "os", ["Tiếng Ossetia cổ"] = "oos", ["Tiếng Otomi Mezquital"] = "ote", ["Tiếng Otuke"] = "otu", ["Tiếng Pa Kô"] = "pac", ["Tiếng Pa'O"] = "blk", ["Tiếng Paharia Kumarbhag"] = "kmj", ["Tiếng Paharia Sauria"] = "mjt", ["Tiếng Paite"] = "pck", ["Tiếng Paiwan"] = "pwn", ["Tiếng Pakan nguyên thủy"] = "mkh-pkn-pro", ["Tiếng Pala"] = "plq", ["Tiếng Palau"] = "pau", ["Tiếng Palaung Ruching"] = "pce", ["Tiếng Palaung Rumai"] = "rbb", ["Tiếng Palaung Shwe"] = "pll", ["Tiếng Palaung nguyên thủy"] = "mkh-pal-pro", ["Tiếng Palawano Brooke's Point"] = "plw", ["Tiếng Pali"] = "pi", ["Tiếng Pama-Nyungar nguyên thủy"] = "aus-pam-pro", ["Tiếng Pancana"] = "pnp", ["Tiếng Panchpargania"] = "tdb", ["Tiếng Pangasinan"] = "pag", ["Tiếng Pangwala"] = "pgg", ["Tiếng Papiamento"] = "pap", ["Tiếng Parauk"] = "prk", ["Tiếng Parthia"] = "xpr", ["Tiếng Pashtun"] = "ps", ["Tiếng Pathan nguyên thủy"] = "ira-pat-pro", ["Tiếng Pauna"] = "pnk", ["Tiếng Pawnee"] = "paw", ["Tiếng Pazeh"] = "pzh", ["Tiếng Pear"] = "pcb", ["Tiếng Pear nguyên thủy"] = "mkh-pea-pro", ["Tiếng Pecheneg"] = "xpc", ["Tiếng Pela"] = "bxd", ["Tiếng Pemon"] = "aoc", ["Tiếng Pengo"] = "peg", ["Tiếng Perm nguyên thủy"] = "urj-prm-pro", ["Tiếng Petjo"] = "pey", ["Tiếng Phai"] = "prt", ["Tiếng Phake"] = "phk", ["Tiếng Phalura"] = "phl", ["Tiếng Phi-Á nguyên thủy"] = "afa-pro", ["Tiếng Philippines nguyên thủy"] = "phi-pro", ["Tiếng Phoenicia"] = "phn", ["Tiếng Phong-Kniang"] = "pnx", ["Tiếng Phrygia"] = "xpg", ["Tiếng Phu Thái"] = "pht", ["Tiếng Phuan"] = "phu", ["Tiếng Pháp"] = "fr", ["Tiếng Pháp cổ"] = "fro", ["Tiếng Pháp trung đại"] = "frm", ["Tiếng Phạn"] = "sa", ["Tiếng Phần Lan"] = "fi", ["Tiếng Phổ Hiền"] = "cpx", ["Tiếng Phổ cổ"] = "prg", ["Tiếng Picard"] = "pcd", ["Tiếng Piceni Nam"] = "spx", ["Tiếng Piemonte"] = "pms", ["Tiếng Pilagá"] = "plg", ["Tiếng Pinyin"] = "pny", ["Tiếng Pipil"] = "ppl", ["Tiếng Pnar"] = "pbv", ["Tiếng Pohnpei"] = "pon", ["Tiếng Polabia"] = "pox", ["Tiếng Ponosakan"] = "pns", ["Tiếng Popoluca cao nguyên"] = "poi", ["Tiếng Potawatomi"] = "pot", ["Tiếng Prakrit"] = "pra", ["Tiếng Prakrit Ashoka"] = "inc-ash", ["Tiếng Prakrit Niya"] = "pra-niy", ["Tiếng Prakrit Paisaci"] = "inc-psc", ["Tiếng Prakrit Saurasen"] = "psu", ["Tiếng Prasuni"] = "prn", ["Tiếng Pucikwar"] = "apq", ["Tiếng Punic"] = "xpu", ["Tiếng Punjab"] = "pa", ["Tiếng Puyuma"] = "pyu", ["Tiếng Pwo Bắc"] = "pww", ["Tiếng Pwo Phrae"] = "kjt", ["Tiếng Pwo Tây"] = "pwo", ["Tiếng Pwo Đông"] = "kjp", ["Tiếng Pà Thẻn"] = "pha", ["Tiếng Pọng"] = "hnu", ["Tiếng Qashqai"] = "qxq", ["Tiếng Quan Thoại"] = "cmn", ["Tiếng Quapaw"] = "qua", ["Tiếng Quechua"] = "qu", ["Tiếng Quenya"] = "qya", ["Tiếng Quiripi"] = "qyp", ["Tiếng Quảng Đông"] = "yue", ["Tiếng Ra Glai Bắc"] = "rog", ["Tiếng Ra Glai Cát Gia"] = "roc", ["Tiếng Ra Glai Nam"] = "rgs", ["Tiếng Rabha"] = "rah", ["Tiếng Raetia"] = "xrr", ["Tiếng Rajasthan"] = "raj", ["Tiếng Rajbanshi"] = "rjs", ["Tiếng Rakhine"] = "rki", ["Tiếng Rama"] = "rma", ["Tiếng Rangpur"] = "rkt", ["Tiếng Rapa Nui"] = "rap", ["Tiếng Rarotonga"] = "rar", ["Tiếng Rasawa"] = "rac", ["Tiếng Raute"] = "rau", ["Tiếng Ravula"] = "yea", ["Tiếng Rawang"] = "raw", ["Tiếng Rejang"] = "rej", ["Tiếng Rendille"] = "rel", ["Tiếng Rohingya"] = "rhg", ["Tiếng Romagnol"] = "rgn", ["Tiếng Romansh"] = "rm", ["Tiếng Rukai"] = "dru", ["Tiếng Rumani"] = "ro", ["Tiếng Rungus"] = "drg", ["Tiếng Rusnak"] = "rsk", ["Tiếng Rusyn"] = "rue", ["Tiếng Ruthenia cổ"] = "zle-ort", ["Tiếng Rutul"] = "rut", ["Tiếng Rơ Măm"] = "rmx", ["Tiếng Rơ Ngao"] = "ren", ["Tiếng Saanich"] = "str", ["Tiếng Saaroa"] = "sxr", ["Tiếng Saba"] = "xsa", ["Tiếng Sabüm"] = "sbo", ["Tiếng Sadri"] = "sck", ["Tiếng Saek"] = "skb", ["Tiếng Saho"] = "ssy", ["Tiếng Saisiyat"] = "xsy", ["Tiếng Sakizaya"] = "szy", ["Tiếng Salar"] = "slr", ["Tiếng Salish nguyên thủy"] = "sal-pro", ["Tiếng Sami Akkala"] = "sia", ["Tiếng Sami Inari"] = "smn", ["Tiếng Sami Kildin"] = "sjd", ["Tiếng Sami Skolt"] = "sms", ["Tiếng Sami Ume"] = "sju", ["Tiếng Sami nguyên thủy"] = "smi-pro", ["Tiếng Samoa"] = "sm", ["Tiếng Samogitia"] = "sgs", ["Tiếng Samoyed nguyên thủy"] = "syd-pro", ["Tiếng Samtao"] = "stu", ["Tiếng Sango"] = "sg", ["Tiếng Santal"] = "sat", ["Tiếng Saposa"] = "sps", ["Tiếng Saraiki"] = "skr", ["Tiếng Saramacca"] = "srm", ["Tiếng Sardegna"] = "sc", ["Tiếng Saxon cổ"] = "osx", ["Tiếng Scots"] = "sco", ["Tiếng Sebat Bet Gurage"] = "sgw", ["Tiếng Selkup"] = "sel", ["Tiếng Semai"] = "sea", ["Tiếng Semaq Beri"] = "szc", ["Tiếng Semelai"] = "sza", ["Tiếng Semit nguyên thủy"] = "sem-pro", ["Tiếng Semnam"] = "ssm", ["Tiếng Seneca"] = "see", ["Tiếng Senni Koyraboro"] = "ses", ["Tiếng Senoufo Nyarafolo"] = "sev", ["Tiếng Serbia-Croatia"] = "sh", ["Tiếng Seri"] = "sei", ["Tiếng Seze"] = "sze", ["Tiếng Shan"] = "shn", ["Tiếng Sherpa"] = "xsr", ["Tiếng Shina"] = "scl", ["Tiếng Shina Kohistan"] = "plk", ["Tiếng Sholaga"] = "sle", ["Tiếng Shompen"] = "sii", ["Tiếng Shona"] = "sn", ["Tiếng Shor"] = "cjs", ["Tiếng Shuswap"] = "shs", ["Tiếng Sicel"] = "scx", ["Tiếng Sicily"] = "scn", ["Tiếng Sidamo"] = "sid", ["Tiếng Sikkim"] = "sip", ["Tiếng Silesia"] = "szl", ["Tiếng Siltʼe"] = "stv", ["Tiếng Sindh"] = "sd", ["Tiếng Bidayuh Bau"] = "sne", ["Tiếng Sinhala"] = "si", ["Tiếng Sioux nguyên thủy"] = "sio-pro", ["Tiếng Siraya"] = "fos", ["Tiếng Sissano"] = "sso", ["Tiếng Siwi"] = "siz", ["Tiếng Skepi"] = "skw", ["Tiếng Slav Giáo hội"] = "zls-chs", ["Tiếng Slav Giáo hội cổ"] = "cu", ["Tiếng Slav nguyên thủy"] = "sla-pro", ["Tiếng Slav Đông cổ"] = "orv", ["Tiếng Slovak"] = "sk", ["Tiếng Slovene"] = "sl", ["Tiếng Slovincia"] = "zlw-slv", ["Tiếng Socotra"] = "sqt", ["Tiếng Sogdia"] = "sog", ["Tiếng Sogdia nguyên thủy"] = "ira-sgc-pro", ["Tiếng Sokna"] = "swn", ["Tiếng Solon"] = "tuw-sol", ["Tiếng Solong"] = "aaw", ["Tiếng Somali"] = "so", ["Tiếng Sonsorol"] = "sov", ["Tiếng Sora"] = "srb", ["Tiếng Soran"] = "ckb", ["Tiếng Sotho"] = "st", ["Tiếng Sotho Bắc"] = "nso", ["Tiếng Soyot"] = "trk-soy", ["Tiếng Sranan Tongo"] = "srn", ["Tiếng Sumer"] = "sux", ["Tiếng Sunda"] = "su", ["Tiếng Sunda cổ"] = "osn", ["Tiếng Suri"] = "suq", ["Tiếng Surjapur"] = "sjp", ["Tiếng Svan"] = "sva", ["Tiếng Swahili"] = "sw", ["Tiếng Swazi"] = "ss", ["Tiếng Sylhet"] = "syl", ["Tiếng Syriac cổ điển"] = "syc", ["Tiếng Sán Chay"] = "mlc", ["Tiếng Séc"] = "cs", ["Tiếng Séc cổ"] = "zlw-ocs", ["Tiếng Sô"] = "sss", ["Tiếng Taabwa"] = "tap", ["Tiếng Tabasaran"] = "tab", ["Tiếng Tachawit"] = "shy", ["Tiếng Tagal Murut"] = "mvv", ["Tiếng Tagalog"] = "tl", ["Tiếng Tagoi"] = "tag", ["Tiếng Tahiti"] = "ty", ["Tiếng Tai Loi"] = "tlq", ["Tiếng Tai Tây Nam nguyên thủy"] = "tai-swe-pro", ["Tiếng Tajik"] = "tg", ["Tiếng Tal"] = "tal", ["Tiếng Tala"] = "tak", ["Tiếng Talossa"] = "tzl", ["Tiếng Talysh"] = "tly", ["Tiếng Tamang Gorkha Đông"] = "tge", ["Tiếng Tamang Tây"] = "tdg", ["Tiếng Tamang Đông"] = "taj", ["Tiếng Tamazight Trung Atlas"] = "tzm", ["Tiếng Tamil"] = "ta", ["Tiếng Tamil cổ"] = "oty", ["Tiếng Tamki"] = "tax", ["Tiếng Tammari"] = "tbz", ["Tiếng Tampuan"] = "tpu", ["Tiếng Tanchangya"] = "tnv", ["Tiếng Tangkhul Naga"] = "nmf", ["Tiếng Tangut"] = "txg", ["Tiếng Tanimbili"] = "tbe", ["Tiếng Taos"] = "twf", ["Tiếng Tapirapé"] = "taf", ["Tiếng Tara Baka"] = "bdh", ["Tiếng Tariana"] = "tae", ["Tiếng Tarifit"] = "rif", ["Tiếng Tashelhit"] = "shi", ["Tiếng Tat-Do Thái"] = "jdt", ["Tiếng Tatar"] = "tt", ["Tiếng Tatar Crưm"] = "crh", ["Tiếng Tatar Siberia"] = "sty", ["Tiếng Tatuyo"] = "tav", ["Tiếng Taungyo"] = "tco", ["Tiếng Tause"] = "tad", ["Tiếng Tausug"] = "tsg", ["Tiếng Tavoy"] = "tvn", ["Tiếng Tay Dọ"] = "tyj", ["Tiếng Taz"] = "zhx-taz", ["Tiếng Telugu"] = "te", ["Tiếng Tem"] = "kdh", ["Tiếng Temiar"] = "tea", ["Tiếng Temoq"] = "tmo", ["Tiếng Ten'edn"] = "tnz", ["Tiếng Tenharim"] = "pah", ["Tiếng Tepehuan Đông Nam"] = "stp", ["Tiếng Teressa"] = "tef", ["Tiếng Ternate"] = "tft", ["Tiếng Tetum"] = "tet", ["Tiếng Thavưng"] = "thm", ["Tiếng Thracia"] = "txh", ["Tiếng Thác Bạt"] = "qfa-xgx-tuo", ["Tiếng Thái"] = "th", ["Tiếng Thái Hàng Tổng"] = "tpo", ["Tiếng Thái Lai"] = "tjl", ["Tiếng Thái Na"] = "tdd", ["Tiếng Thái Trắng"] = "twh", ["Tiếng Thái Song"] = "soa", ["Tiếng Thái nguyên thủy"] = "tai-pro", ["Tiếng Thái Đen"] = "blt", ["Tiếng Thái Đỏ"] = "tyr", ["Tiếng Thượng Sorb"] = "hsb", ["Tiếng Thổ"] = "tou", ["Tiếng Thổ Dục Hồn"] = "qfa-xgx-tuh", ["Tiếng Thổ Gia Bắc"] = "tji", ["Tiếng Thổ Gia Nam"] = "tjs", ["Tiếng Thổ Nhĩ Kỳ"] = "tr", ["Tiếng Thổ Nhĩ Kỳ Anatolia cổ"] = "trk-oat", ["Tiếng Thổ Nhĩ Kỳ Gagauz Balkan"] = "bgx", ["Tiếng Thổ Nhĩ Kỳ Ottoman"] = "ota", ["Tiếng Thụy Điển"] = "sv", ["Tiếng Thụy Điển cổ"] = "gmq-osw", ["Tiếng Thủy"] = "swi", ["Tiếng Tiang"] = "tbj", ["Tiếng Tigre"] = "tig", ["Tiếng Tigrinya"] = "ti", ["Tiếng Tindi"] = "tin", ["Tiếng Tiruray"] = "tiy", ["Tiếng Tiên Ti"] = "qfa-xgx-xbi", ["Tiếng Tlingit"] = "tli", ["Tiếng Tobi"] = "tox", ["Tiếng Tochari A"] = "xto", ["Tiếng Tochari B"] = "txb", ["Tiếng Tochari nguyên thủy"] = "ine-toc-pro", ["Tiếng Tocho"] = "taz", ["Tiếng Toda"] = "tcx", ["Tiếng Tofa"] = "kim", ["Tiếng Tok Pisin"] = "tpi", ["Tiếng Tokelau"] = "tkl", ["Tiếng Toki Pona"] = "tok", ["Tiếng Tokunoshima"] = "tkn", ["Tiếng Tonga"] = "to", ["Tiếng Tooro"] = "ttj", ["Tiếng Torwali"] = "trw", ["Tiếng Toto"] = "txo", ["Tiếng Tráng Tả Giang"] = "zzj", ["Tiếng Trió"] = "tri", ["Tiếng Triều Châu"] = "nan-tws", ["Tiếng Triều Tiên"] = "ko", ["Tiếng Triều Tiên cổ"] = "oko", ["Tiếng Triều Tiên nguyên thủy"] = "qfa-kor-pro", ["Tiếng Triều Tiên trung đại"] = "okm", ["Tiếng Truku"] = "trv", ["Tiếng Trung Bikol"] = "bcl", ["Tiếng Trung Mansi"] = "mns-cen", ["Tiếng Trung Nahuatl"] = "nhn", ["Tiếng Trung Nahuatl Huasteca"] = "nch", ["Tiếng Trung Quốc"] = "zh", ["Tiếng Trà Động"] = "cdy", ["Tiếng Trác Ni"] = "cda", ["Tiếng Tráng"] = "za", ["Tiếng Tráng Nông"] = "zhn", ["Tiếng Tráng Đức Tĩnh"] = "zyg", ["Tiếng Trát Bá"] = "zhb", ["Tiếng Tsakhur"] = "tkr", ["Tiếng Tsakonia"] = "tsd", ["Tiếng Tsamai"] = "tsb", ["Tiếng Tsat"] = "huq", ["Tiếng Tshangla"] = "tsj", ["Tiếng Tsimshian"] = "tsi", ["Tiếng Tsonga"] = "ts", ["Tiếng Tsou"] = "tsu", ["Tiếng Tsuut'ina"] = "srs", ["Tiếng Tswana"] = "tn", ["Tiếng Tuamotu"] = "pmt", ["Tiếng Tuareg"] = "tmh", ["Tiếng Tukang Besi Bắc"] = "khc", ["Tiếng Tukang Besi Nam"] = "bhq", ["Tiếng Tuki"] = "bag", ["Tiếng Tulu"] = "tcy", ["Tiếng Tumbuka"] = "tum", ["Tiếng Tungus nguyên thủy"] = "tuw-pro", ["Tiếng Tunni"] = "tqq", ["Tiếng Tupi"] = "tpn", ["Tiếng Tupi cổ"] = "tpw", ["Tiếng Tupi-Guarani nguyên thủy"] = "tup-gua-pro", ["Tiếng Turk Khorasan"] = "kmz", ["Tiếng Turk Khorezm"] = "zkh", ["Tiếng Turk cổ"] = "otk", ["Tiếng Turk nguyên thủy"] = "trk-pro", ["Tiếng Turkmen"] = "tk", ["Tiếng Tuva"] = "tyv", ["Tiếng Tuvalu"] = "tvl", ["Tiếng Tà Mun"] = "aav-tam", ["Tiếng Tà Ôi Thượng"] = "tth", ["Tiếng Tày"] = "tyz", ["Tiếng Tày Sa Pa"] = "tys", ["Tiếng Tân Aram Assyria"] = "aii", ["Tiếng Tân Aram Do Thái Barzani"] = "bjf", ["Tiếng Tây Abenaki"] = "abe", ["Tiếng Tây Ban Nha"] = "es", ["Tiếng Tây Ban Nha cổ"] = "osp", ["Tiếng Tây Bắc Kavkaz nguyên thủy"] = "cau-nwc-pro", ["Tiếng Tây Frisia"] = "fy", ["Tiếng Tây Huasteca Nahuatl"] = "nhw", ["Tiếng Tây Kayah"] = "kyu", ["Tiếng Tây Makian"] = "mqs", ["Tiếng Tây Tạng"] = "bo", ["Tiếng Tây Tạng cổ điển"] = "xct", ["Tiếng Tây Yugur"] = "ybe", ["Tiếng Tích Bá"] = "sjo", ["Tiếng Tơ Đrá"] = "tdr", ["Tiếng Tương"] = "hsn", ["Tiếng Chaima"] = "ciy", ["Tiếng Ubykh"] = "uby", ["Tiếng Udi"] = "udi", ["Tiếng Udihe"] = "ude", ["Tiếng Udmurt"] = "udm", ["Tiếng Ugarit"] = "uga", ["Tiếng Ugong"] = "ugo", ["Tiếng Ugria nguyên thủy"] = "urj-ugr-pro", ["Tiếng Ukraina"] = "uk", ["Tiếng Umbria"] = "xum", ["Tiếng Uneapa"] = "bbn", ["Tiếng Urak Lawoi'"] = "urk", ["Tiếng Ural nguyên thủy"] = "urj-pro", ["Tiếng Urartu"] = "xur", ["Tiếng Urdu"] = "ur", ["Tiếng Urubú-Kaapor"] = "urb", ["Tiếng Urum"] = "uum", ["Tiếng Ushojo"] = "ush", ["Tiếng Uzbek"] = "uz", ["Tiếng Vaghri"] = "vgr", ["Tiếng Varli"] = "vav", ["Tiếng Vasavi"] = "vas", ["Tiếng Venda"] = "ve", ["Tiếng Veneti"] = "xve", ["Tiếng Veneto"] = "vec", ["Tiếng Veps"] = "vep", ["Tiếng Việt"] = "vi", ["Tiếng Việt trung cổ"] = "mkh-mvi", ["Tiếng Việt-Mường nguyên thủy"] = "mkh-vie-pro", ["Tiếng Volapük"] = "vo", ["Tiếng Volsci"] = "xvo", ["Tiếng Vot"] = "vot", ["Tiếng Vurës"] = "msn", ["Tiếng Waata"] = "ssn", ["Tiếng Waimaha"] = "bao", ["Tiếng Waiwai"] = "waw", ["Tiếng Wakhi"] = "wbl", ["Tiếng Wales"] = "cy", ["Tiếng Wallis"] = "wls", ["Tiếng Wallon"] = "wa", ["Tiếng Wambule"] = "wme", ["Tiếng Waneci"] = "wne", ["Tiếng War-Jaintia"] = "aml", ["Tiếng Waray"] = "war", ["Tiếng Warekena"] = "gae", ["Tiếng Warji"] = "wji", ["Tiếng Wayampi"] = "oym", ["Tiếng Wayana"] = "way", ["Tiếng Wayuu"] = "guc", ["Tiếng Wewaw"] = "wea", ["Tiếng Wobé"] = "wob", ["Tiếng Wolaytta"] = "wal", ["Tiếng Wolio"] = "wlo", ["Tiếng Wolof"] = "wo", ["Tiếng Wotu"] = "wtw", ["Tiếng Wymysorys"] = "wym", ["Tiếng Xamtanga"] = "xan", ["Tiếng Xhosa"] = "xh", ["Tiếng Xinh Mun"] = "puo", ["Tiếng Xtiêng"] = "sti", ["Tiếng Xtiêng Bù Đeh"] = "stt", ["Tiếng Xârâcùù"] = "ane", ["Tiếng Xơ Đăng"] = "sed", ["Tiếng Yaeyama"] = "rys", ["Tiếng Yaghnob"] = "yai", ["Tiếng Yakan"] = "yka", ["Tiếng Yakima"] = "yak", ["Tiếng Yakkha"] = "ybh", ["Tiếng Yakut"] = "sah", ["Tiếng Yami"] = "tao", ["Tiếng Yao (Nam Mĩ)"] = "sai-yao", ["Tiếng Yap"] = "yap", ["Tiếng Yapunda"] = "yev", ["Tiếng Ye'kwana"] = "mch", ["Tiếng Yele"] = "yle", ["Tiếng Yemsa"] = "jnj", ["Tiếng Yevan"] = "yej", ["Tiếng Yiddish"] = "yi", ["Tiếng Yidgha"] = "ydg", ["Tiếng Yidiny"] = "yii", ["Tiếng Yiwom"] = "gek", ["Tiếng Yogad"] = "yog", ["Tiếng Yola"] = "yol", ["Tiếng Yonaguni"] = "yoi", ["Tiếng Yong"] = "yno", ["Tiếng Yongkom"] = "yon", ["Tiếng Yoron"] = "yox", ["Tiếng Yoruba"] = "yo", ["Tiếng Yoruba nguyên thủy"] = "alv-yor-pro", ["Tiếng Yoy"] = "yoy", ["Tiếng Yugh"] = "yug", ["Tiếng Yukaghir nguyên thủy"] = "qfa-yuk-pro", ["Tiếng Yup'ik"] = "esu", ["Tiếng Yuri"] = "sai-yri", ["Tiếng Yurok"] = "yur", ["Tiếng Zaghawa"] = "zag", ["Tiếng Zaiwa"] = "atb", ["Tiếng Zarma"] = "dje", ["Tiếng Zarphat"] = "zrp", ["Tiếng Zay"] = "zwa", ["Tiếng Zayse-Zergulla"] = "zay", ["Tiếng Zaza"] = "zza", ["Tiếng Zeeland"] = "zea", ["Tiếng Zenaga"] = "zen", ["Tiếng Zirenkel"] = "zrn", ["Tiếng Zulu"] = "zu", ["Tiếng Zumbun"] = "jmb", ["Tiếng Äynu"] = "aib", ["Tiếng Ê Đê"] = "rad", ["Tiếng Ông Bối nguyên thủy"] = "qfa-onb-pro", ["Tiếng Övdal"] = "ovd", ["Tiếng Ý"] = "it", ["Tiếng Ý-Do Thái"] = "itk", ["Tiếng Đa Đảo hạt nhân nguyên thủy"] = "poz-pnp-pro", ["Tiếng Đa Đảo nguyên thủy"] = "poz-pol-pro", ["Tiếng Đa Đảo Đông nguyên thủy"] = "poz-pep-pro", ["Tiếng Đan Mạch"] = "da", ["Tiếng Đan Mạch cổ"] = "gmq-oda", ["Tiếng Đài Sơn"] = "zhx-tai", ["Tiếng Đông Abenaki"] = "aaq", ["Tiếng Đông Bontoc"] = "ebk", ["Tiếng Đông Bắc Kavkaz nguyên thủy"] = "cau-nec-pro", ["Tiếng Đông Can"] = "dng", ["Tiếng Đông Futuna"] = "fud", ["Tiếng Đông Hương"] = "sce", ["Tiếng Đông Khanty"] = "kca-eas", ["Tiếng Đông Yugur"] = "yuy", ["Tiếng Đường Uông"] = "zhx-twa", ["Tiếng Độc Long"] = "duu", ["Tiếng Đức"] = "de", ["Tiếng Đức Alemanni"] = "gsw", ["Tiếng Đức cao địa cổ"] = "goh", ["Tiếng Đức cao địa trung đại"] = "gmh", ["Tiếng Đức Đông Trung"] = "gmw-ecg", ["Tiếng Ơ Đu"] = "tyh", ["Tiếng Ưu Miền"] = "ium", ["Tiếng ǃXóõ"] = "nmn", ["Tiếng Ả Rập"] = "ar", ["Tiếng Ả Rập Ai Cập"] = "arz", ["Tiếng Ả Rập Algérie"] = "arq", ["Tiếng Ả Rập Bắc Levant"] = "apc", ["Tiếng Ả Rập Hijazi"] = "acw", ["Tiếng Ả Rập Juba"] = "pga", ["Tiếng Ả Rập Libya"] = "ayl", ["Tiếng Ả Rập Maroc"] = "ary", ["Tiếng Ả Rập Nam Levant"] = "ajp", ["Tiếng Ả Rập Oman"] = "acx", ["Tiếng Ả Rập Sudan"] = "apd", ["Tiếng Ả Rập Síp"] = "acy", ["Tiếng Ả Rập Tajikistan"] = "abh", ["Tiếng Ả Rập Tchad"] = "shu", ["Tiếng Ả Rập Uzbekistan"] = "auz", ["Tiếng Ả Rập vùng Vịnh"] = "afb", ["Tiếng Ấn-Arya nguyên thủy"] = "inc-pro", ["Tiếng Ấn-Iran nguyên thủy"] = "iir-pro", ["Tiếng Ấn-Âu nguyên thủy"] = "ine-pro", ["Tiếng Ỹaroamë"] = "yro", ["Àhàn"] = "ahn", ["Áncá"] = "acb", ["Ömie"] = "aom", ["Tiếng Önge"] = "oon", ["Đa ngữ"] = "mul", ["ǀXam"] = "xam", ["ǁAni"] = "hnh", ["ǁGana"] = "gnk", ["ǁXegwi"] = "xeg", ["ǂHoan"] = "huc", ["ǃKung"] = "khi-kun", ["Tiếng Bắc Selkup"] = "sel-nor", ["Tiếng Nam Selkup"] = "sel-sou", ["Tiếng Selkup nguyên thủy"] = "sel-pro", ["Tiếng Slovak cổ"] = "zlw-osk", ["Proto-Central Naga"] = "sit-aao-pro", ["Tiếng Bạch nguyên thủy"] = "sit-bai-pro", ["Bangru"] = "sit-ban", ["Proto-Bodish"] = "sit-bdi-pro", ["Tiếng Tứ Xuyên"] = "zhx-sic", ["Tiếng Quảng Lâm"] = "aav-qal", } 5yfoy9rvqx50zu6jgy4bd51uxhvict6 kiểu hình 0 277290 2350788 2091250 2026-05-07T08:01:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350788 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # {{label|vi|Sinh học}} [[tổ hợp|Tổ hợp]] [[toàn bộ]] các [[tính trạng]] và [[đặc điểm]] của [[cơ thể]]. {{-trans-}} {{trans-top}} * {{ara}}: [[نمط ظاهري]] * {{afr}}: [[fenotipe]] * {{eng}}: [[phenotype]] * {{ast}}: [[fenotipu]] * {{aze}}: [[fenotip]] * {{pol}}: [[fenotyp]] * {{fas}}: [[فنوتیپ]] * {{por}}: [[fenótipo]] * {{bul}}: [[Фенотип]] * {{cat-2}}: [[fenotip]] * {{dan}}: [[fenotyp]] * {{deu}}: [[phänotyp]] * {{est}}: [[fenotüüp]] * {{hun}}: [[fenotípus]] * {{ell}}: [[Φαινότυπος]] * {{ind}}: [[fenotipe]] * {{rus}}: [[Фенотип]] * {{jpn}}: [[表現型]] * {{fra}}: [[phénotype]] * {{fin}}: [[fenotyyppi]] * {{yue}}: [[表現型]] * {{epo}}: [[fenotipo]] * {{ron}}: [[fenotip]] * {{ces}}: [[fenotyp]] * {{tam}}: [[தோற்றவமைப்பு]] * {{spa}}: [[fenotipo]] * {{tha}}: [[รูปแบบปรากฏ]] * {{swe}}: [[fenotyp]] * {{zho}}: [[表型]] * {{ita}}: [[fenotipo]] {{trans-bottom}} ai45zd9lmds5iu1wd6sg7h2pfywanvm 2351051 2350788 2026-05-07T10:47:09Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351051 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # {{label|vi|Sinh học}} [[tổ hợp|Tổ hợp]] [[toàn bộ]] các [[tính trạng]] và [[đặc điểm]] của [[cơ thể]]. {{-trans-}} {{trans-top}} * {{ara}}: [[نمط ظاهري]] * {{afr}}: [[fenotipe]] * {{eng}}: [[phenotype]] * {{ast}}: [[fenotipu]] * {{aze}}: [[fenotip]] * {{pol}}: [[fenotyp]] * {{fas}}: [[فنوتیپ]] * {{por}}: [[fenótipo]] * {{bul}}: [[Фенотип]] * {{cat-old}}: [[fenotip]] * {{dan}}: [[fenotyp]] * {{deu}}: [[phänotyp]] * {{est}}: [[fenotüüp]] * {{hun}}: [[fenotípus]] * {{ell}}: [[Φαινότυπος]] * {{ind}}: [[fenotipe]] * {{rus}}: [[Фенотип]] * {{jpn}}: [[表現型]] * {{fra}}: [[phénotype]] * {{fin}}: [[fenotyyppi]] * {{yue}}: [[表現型]] * {{epo}}: [[fenotipo]] * {{ron}}: [[fenotip]] * {{ces}}: [[fenotyp]] * {{tam}}: [[தோற்றவமைப்பு]] * {{spa}}: [[fenotipo]] * {{tha}}: [[รูปแบบปรากฏ]] * {{swe}}: [[fenotyp]] * {{zho}}: [[表型]] * {{ita}}: [[fenotipo]] {{trans-bottom}} 42mixs1usqhq0egqeajidocp7ar5qw8 0 278449 2350789 2129540 2026-05-07T08:01:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350789 wikitext text/x-wiki {{-Latn-}} {{character info}} {{-desction-}} {{head-lite|mul|Chữ cái|chữ hoa|Ụ|langname=đa ngữ}} # [[chữ|Chữ]] [[u]] viết thường với dấu nặng [[◌̣]] (dấu chấm dưới). {{-see also-}} {{Latn-script}} {{-vie-}} {{vie-prefix}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[塢]]: {{l|vi|ọ}}, {{l|vi|ổ}}, {{l|vi|ủ}}, {{pn}} {{bottom}} {{-paro-}} {{đầu}} * {{l|vi|u}} * {{l|vi|ù}} * {{l|vi|ú}} * {{l|vi|ủ}} * {{l|vi|ũ}} * {{l|vi|ư}} * {{l|vi|ừ}} * {{l|vi|ứ}} * {{l|vi|ử}} * {{l|vi|ữ}} * {{l|vi|ự}} {{cuối}} {{-noun-}} {{pn}} # [[mô|Mô]] [[đất]] [[cao]]. #:{{ux2|vi|'''Ụ''' pháo.}} #{{term|Phương ngữ}} Bãi sông thoải để kéo tàu vào sửa. #:{{ux2|vi|Chống thuyền vô '''ụ'''.}} #Nơi đậu tàu thuyền, hãng sửa tàu {{-adv-}} {{pn}} #[[lắm|Lắm]], [[quá mức]] [[bình thường]]. #:{{ux2|vi|Bát cơm đầy '''ụ'''.}} {{-desction-}} {{pn}} # Ký tự [[u]] viết thường với dấu nặng [[◌̣]] trong văn bản tiếng Việt. #:{{ux2|vi|[[dụng cụ|D'''ụ'''ng c'''ụ''']].}} {{-see also-}} *{{list:Latin script letters/vi}} {{-trans-}} {{trans-top|mô đất cao}} {{đầu}} * {{afr}}: {{t+|ar|تل}} * {{afr}}: {{t+|af|heuwel}} * {{amh}}: {{t+|am|ጉብታ}} * {{eng}}: {{t+|en|mound}} * {{hye}}: {{t+|hy|հողաթմբ}} * {{aym}}: {{t+|ay|montículo}} * {{aze}}: {{t+|az|kurqan}} * {{pol}}: {{t+|pl|kopiec}} * {{fas}}: {{t+|fa|تپه}} * {{eus}}: {{t+|eu|tumula}} * {{isl}}: {{t+|is|haugur}} * {{bel}}: {{t+|be|курган}} * {{bos}}: {{t+|bs|humka}} * {{por}}: {{t+|pt|montículo}} * {{bul}}: {{t+|bg|могила}} {{f}} * {{cat-2}}: {{t+|ca|monticle}}, {{t+|ca|túmul}} * {{hrv}}:{{t+|hr|humak}} * {{heb}}:{{t+|he|עֲרֵמָה}} * {{uig}}:{{t+|ug|دۆڭ}} * {{dan}}: {{t+|da|haug}} * {{deu}}: {{t+|de|Hügel}} {{m}} * {{est}}: {{t+|et|küngas}} * {{fry}}: {{t+|fy|terp}} * {{gla}}: {{t+|gd|tom}} * {{glg}}: {{t+|gl|monte}} * {{kat}}: {{t+|ka|ბორცვი}} * {{grn}}: {{t+|gn|montículo}} * {{guj}}: {{t+|gu|મણ}} * {{nld}}: {{t+|nl|terp}} * {{hau}}: {{t+|ha|tudu}} * {{hin}}: {{t+|hi|टीले}} * {{hun}}: {{t+|hu|halom}} * {{ind}}: {{t+|id|gundukan}} * {{gle}}: {{t+|ga|dumha}} * {{jav}}: {{t+|jv|gundukan}} * {{kan}}: {{t+|kn|ದಿಬ್ಬ}} * {{kaz}}: {{t+|kz|қорған}} * {{khm}}: {{t+|km|ពំនូក}} * {{kur}}: {{t+|ku|گرد}} * {{kir}}: {{t+|ky|дөң}} * {{lao}}: {{t+|lo|ພູ}} * {{lat}}: {{t+|la|tumulus}} * {{lav}}: {{t+|lv|pilskalns}} * {{lit}}: {{t+|lt|piliakalnį}} * {{ltz}}: {{t+|lb|Higel}} * {{msa}}: {{t+|ms|busut}} * {{mkd}}: {{t+|mk|хумка}} * {{mlg}}: {{t+|mg|dongona}} * {{mal}}: {{t+|ml|കുന്ന്}} * {{mlt}}: {{t+|mt|munzuna}} * {{mri}}: {{t+|mi|puranga}} * {{mar}}: {{t+|mr|टेकडी}} * {{mya}}: {{t+|my|တောင်ပို့၊}} * {{mon}}: {{t+|mn|дов}} * {{nor}}: {{t+|no|haug}} * {{nep}}: {{t+|ne|ढिस्को}} * {{rus}}: {{t+|ru|насыпь}} {{f}} * {{ori}}: {{t+|or|ମାଉଣ୍ଡ}} * {{orm}}: {{t+|om|tuullaa}} * {{pus}}: {{t+|ps|غونډۍ}} * {{jpn}}: {{t+|ja|マウンド}}, {{t+|ja|塚}} * {{san}}: {{t+|sa|टीला}} * {{fra}}: {{t+|fr|mound}} * {{fin}}: {{t+|fi|röykkiö}} * {{pan}}: {{t+|pa|ਟੀਲਾ}} * {{que}}: {{t+|qu|montículo}} * {{epo}}: {{t+|eo|tumulo}} * {{ron}}: {{t+|ro|movilă}} * {{ces}}: {{t+|cs|mohyla}} * {{slk}}: {{t+|sk|mohyla}} * {{slv}}: {{t+|sv|gomila}} * {{srp}}: {{t+|sr|хумка}} * {{hbs}}: {{t+|sh|humka}} * {{snd}}: {{t+|sd|دڙو}} * {{sin}}: {{t+|si|ගොඩැල්ල}} * {{som}}: {{t+|so|tuulmo}} * {{sun}}: {{t+|su|gundukan}} * {{swa}}: {{t+|sw|kilima}} * {{tgk}}: {{t+|tg|теппа}} * {{tgl}}: {{t+|tl|punso}} * {{tam}}: {{t+|ta|குன்று}} * {{tat}}: {{t+|tt|тау}} * {{spa}}: {{t+|es|montículo}} * {{tel}}: {{t+|te|దిబ్బ}} * {{tha}}: {{t+|th|เนินดิน}} * {{tur}}: {{t+|tr|höyük}} * {{swe}}: {{t+|sv|kullen}} * {{tir}}: {{t+|ti|ጎቦ}} * {{kor}}: {{t+|ko|투수판}} * {{zho}}: {{t+|zh|丘}} * {{tuk}}: {{t+|tk|depe}} * {{ukr}}: {{t+|uk|курган}} * {{urd}}: {{t+|ur|ٹیلا}} * {{uzb}}: {{t+|uz|höyük}} * {{cym}}: {{t+|cy|twmpath}} * {{ita}}: {{t+|it|mutulo}}, {{t+|it|monticello}} * {{yid}}: {{t+|yi|בערגל}} * {{yor}}: {{l|yo|òkìtì}} * {{zul}}: {{t+|zu|indunduma}} {{cuối}} {{trans-bottom}} {{-ref-}} #{{Chú thích sách|title=[http://www.namkyluctinh.com/eBooks/TuDien/Viet-Nam-Tu-Dien_Le-van-Duc_Le-ngoc-Tru_1970-2.pdf Việt Nam tự điển, quyển Hạ]|author=Lê Văn Đức|year=1970|page=1724|location=[[Sài Gòn]]|publisher=Nhà sách Khai Trí}} {{-ktv-}} {{-pron-}} *{{IPA4|ktv|/uʔ/}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Cơ Tu. #:{{ux2|ktv|[[đhi'lục|đhi'l'''ụ'''c]]|mây, sương mù|inline=1}} {{-ibo-}} {{-pron-}} *{{IPA4|ig|/ʊ̙/}} {{-letter-}} {{head-lite|ibo|Chữ cái|chữ hoa|Ụ|langname=tiếng Igbo}} # Chữ cái thứ 32 ở dạng viết thường trong bảng chữ cái Latinh tiếng Igbo. #:{{ux2|ig|'''ụ'''mụ̀|trẻ em, con cháu|inline=1}} {{-see also-}} *{{letters|lang=ig|sc=Latn|qual=Bảng chữ cái Latinh tiếng Igbo|Aa|Bb|Ch/ch|Dd|Ee|Ff|Gg|GB/gb|Gh/gh|Gw/gw|Hh|Ii|Ịị|Jj|Kk|Kp/kp|Kw/kw|Ll|Mm|Nn|Ṅṅ|Nw/nw|Ny/ny|Oo|Ọọ|Pp|Rr|Ss|Sh/sh|Tt|Uu|Ụụ|Vv|Ww|Yy|Zz}} {{-ref-}} #{{Chú thích sách|author=Nicholas Awde & Onyekachi Wambu|title=Igbo-English, English-Igbo dictionary and phrasebook|year=1999|location=New York|publisher=Hippocrene Books|page=[https://archive.org/details/igboenglishengli00nich/page/58 58]}} {{-nuo-}} {{-pron-}} *{{IPA4|nuo|/u⁴/}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] ghi lại tiếng Nguồn. #:{{ux2|nuo|[[pụng|p'''ụ'''ng]]|bụng|inline=1}} {{-nut-}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Nùng. #:{{ux2|nut|[[pụt#Tiếng_Nùng|p'''ụ'''t]]|một làn điệu dân ca Nùng|inline=1}} {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Tày. #:{{ux2|tyz|[[mục#Tiếng_Tày|m'''ụ'''c]]|nước mũi|inline=1}} {{-yor-}} {{-pron-}} *{{IPA4|yo|/ʊ̄./}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Yoruba . #:{{ux2|yo|'''ụ'''mụ́|cái mũi|inline=1}} {{-syn-}} * Chữ in hoa [[Ụ#Tiếng_Yoruba|Ụ]] [[Thể loại:Khối ký tự Latin Extended Additional|E5]] e7q78ztfnzpq8dtfepzqu2gtdxi7hhn 2351052 2350789 2026-05-07T10:47:12Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351052 wikitext text/x-wiki {{-Latn-}} {{character info}} {{-desction-}} {{head-lite|mul|Chữ cái|chữ hoa|Ụ|langname=đa ngữ}} # [[chữ|Chữ]] [[u]] viết thường với dấu nặng [[◌̣]] (dấu chấm dưới). {{-see also-}} {{Latn-script}} {{-vie-}} {{vie-prefix}} {{-pron-}} {{vie-pron}} {{-nôm-}} {{top}} *[[塢]]: {{l|vi|ọ}}, {{l|vi|ổ}}, {{l|vi|ủ}}, {{pn}} {{bottom}} {{-paro-}} {{đầu}} * {{l|vi|u}} * {{l|vi|ù}} * {{l|vi|ú}} * {{l|vi|ủ}} * {{l|vi|ũ}} * {{l|vi|ư}} * {{l|vi|ừ}} * {{l|vi|ứ}} * {{l|vi|ử}} * {{l|vi|ữ}} * {{l|vi|ự}} {{cuối}} {{-noun-}} {{pn}} # [[mô|Mô]] [[đất]] [[cao]]. #:{{ux2|vi|'''Ụ''' pháo.}} #{{term|Phương ngữ}} Bãi sông thoải để kéo tàu vào sửa. #:{{ux2|vi|Chống thuyền vô '''ụ'''.}} #Nơi đậu tàu thuyền, hãng sửa tàu {{-adv-}} {{pn}} #[[lắm|Lắm]], [[quá mức]] [[bình thường]]. #:{{ux2|vi|Bát cơm đầy '''ụ'''.}} {{-desction-}} {{pn}} # Ký tự [[u]] viết thường với dấu nặng [[◌̣]] trong văn bản tiếng Việt. #:{{ux2|vi|[[dụng cụ|D'''ụ'''ng c'''ụ''']].}} {{-see also-}} *{{list:Latin script letters/vi}} {{-trans-}} {{trans-top|mô đất cao}} {{đầu}} * {{afr}}: {{t+|ar|تل}} * {{afr}}: {{t+|af|heuwel}} * {{amh}}: {{t+|am|ጉብታ}} * {{eng}}: {{t+|en|mound}} * {{hye}}: {{t+|hy|հողաթմբ}} * {{aym}}: {{t+|ay|montículo}} * {{aze}}: {{t+|az|kurqan}} * {{pol}}: {{t+|pl|kopiec}} * {{fas}}: {{t+|fa|تپه}} * {{eus}}: {{t+|eu|tumula}} * {{isl}}: {{t+|is|haugur}} * {{bel}}: {{t+|be|курган}} * {{bos}}: {{t+|bs|humka}} * {{por}}: {{t+|pt|montículo}} * {{bul}}: {{t+|bg|могила}} {{f}} * {{cat-old}}: {{t+|ca|monticle}}, {{t+|ca|túmul}} * {{hrv}}:{{t+|hr|humak}} * {{heb}}:{{t+|he|עֲרֵמָה}} * {{uig}}:{{t+|ug|دۆڭ}} * {{dan}}: {{t+|da|haug}} * {{deu}}: {{t+|de|Hügel}} {{m}} * {{est}}: {{t+|et|küngas}} * {{fry}}: {{t+|fy|terp}} * {{gla}}: {{t+|gd|tom}} * {{glg}}: {{t+|gl|monte}} * {{kat}}: {{t+|ka|ბორცვი}} * {{grn}}: {{t+|gn|montículo}} * {{guj}}: {{t+|gu|મણ}} * {{nld}}: {{t+|nl|terp}} * {{hau}}: {{t+|ha|tudu}} * {{hin}}: {{t+|hi|टीले}} * {{hun}}: {{t+|hu|halom}} * {{ind}}: {{t+|id|gundukan}} * {{gle}}: {{t+|ga|dumha}} * {{jav}}: {{t+|jv|gundukan}} * {{kan}}: {{t+|kn|ದಿಬ್ಬ}} * {{kaz}}: {{t+|kz|қорған}} * {{khm}}: {{t+|km|ពំនូក}} * {{kur}}: {{t+|ku|گرد}} * {{kir}}: {{t+|ky|дөң}} * {{lao}}: {{t+|lo|ພູ}} * {{lat}}: {{t+|la|tumulus}} * {{lav}}: {{t+|lv|pilskalns}} * {{lit}}: {{t+|lt|piliakalnį}} * {{ltz}}: {{t+|lb|Higel}} * {{msa}}: {{t+|ms|busut}} * {{mkd}}: {{t+|mk|хумка}} * {{mlg}}: {{t+|mg|dongona}} * {{mal}}: {{t+|ml|കുന്ന്}} * {{mlt}}: {{t+|mt|munzuna}} * {{mri}}: {{t+|mi|puranga}} * {{mar}}: {{t+|mr|टेकडी}} * {{mya}}: {{t+|my|တောင်ပို့၊}} * {{mon}}: {{t+|mn|дов}} * {{nor}}: {{t+|no|haug}} * {{nep}}: {{t+|ne|ढिस्को}} * {{rus}}: {{t+|ru|насыпь}} {{f}} * {{ori}}: {{t+|or|ମାଉଣ୍ଡ}} * {{orm}}: {{t+|om|tuullaa}} * {{pus}}: {{t+|ps|غونډۍ}} * {{jpn}}: {{t+|ja|マウンド}}, {{t+|ja|塚}} * {{san}}: {{t+|sa|टीला}} * {{fra}}: {{t+|fr|mound}} * {{fin}}: {{t+|fi|röykkiö}} * {{pan}}: {{t+|pa|ਟੀਲਾ}} * {{que}}: {{t+|qu|montículo}} * {{epo}}: {{t+|eo|tumulo}} * {{ron}}: {{t+|ro|movilă}} * {{ces}}: {{t+|cs|mohyla}} * {{slk}}: {{t+|sk|mohyla}} * {{slv}}: {{t+|sv|gomila}} * {{srp}}: {{t+|sr|хумка}} * {{hbs}}: {{t+|sh|humka}} * {{snd}}: {{t+|sd|دڙو}} * {{sin}}: {{t+|si|ගොඩැල්ල}} * {{som}}: {{t+|so|tuulmo}} * {{sun}}: {{t+|su|gundukan}} * {{swa}}: {{t+|sw|kilima}} * {{tgk}}: {{t+|tg|теппа}} * {{tgl}}: {{t+|tl|punso}} * {{tam}}: {{t+|ta|குன்று}} * {{tat}}: {{t+|tt|тау}} * {{spa}}: {{t+|es|montículo}} * {{tel}}: {{t+|te|దిబ్బ}} * {{tha}}: {{t+|th|เนินดิน}} * {{tur}}: {{t+|tr|höyük}} * {{swe}}: {{t+|sv|kullen}} * {{tir}}: {{t+|ti|ጎቦ}} * {{kor}}: {{t+|ko|투수판}} * {{zho}}: {{t+|zh|丘}} * {{tuk}}: {{t+|tk|depe}} * {{ukr}}: {{t+|uk|курган}} * {{urd}}: {{t+|ur|ٹیلا}} * {{uzb}}: {{t+|uz|höyük}} * {{cym}}: {{t+|cy|twmpath}} * {{ita}}: {{t+|it|mutulo}}, {{t+|it|monticello}} * {{yid}}: {{t+|yi|בערגל}} * {{yor}}: {{l|yo|òkìtì}} * {{zul}}: {{t+|zu|indunduma}} {{cuối}} {{trans-bottom}} {{-ref-}} #{{Chú thích sách|title=[http://www.namkyluctinh.com/eBooks/TuDien/Viet-Nam-Tu-Dien_Le-van-Duc_Le-ngoc-Tru_1970-2.pdf Việt Nam tự điển, quyển Hạ]|author=Lê Văn Đức|year=1970|page=1724|location=[[Sài Gòn]]|publisher=Nhà sách Khai Trí}} {{-ktv-}} {{-pron-}} *{{IPA4|ktv|/uʔ/}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Cơ Tu. #:{{ux2|ktv|[[đhi'lục|đhi'l'''ụ'''c]]|mây, sương mù|inline=1}} {{-ibo-}} {{-pron-}} *{{IPA4|ig|/ʊ̙/}} {{-letter-}} {{head-lite|ibo|Chữ cái|chữ hoa|Ụ|langname=tiếng Igbo}} # Chữ cái thứ 32 ở dạng viết thường trong bảng chữ cái Latinh tiếng Igbo. #:{{ux2|ig|'''ụ'''mụ̀|trẻ em, con cháu|inline=1}} {{-see also-}} *{{letters|lang=ig|sc=Latn|qual=Bảng chữ cái Latinh tiếng Igbo|Aa|Bb|Ch/ch|Dd|Ee|Ff|Gg|GB/gb|Gh/gh|Gw/gw|Hh|Ii|Ịị|Jj|Kk|Kp/kp|Kw/kw|Ll|Mm|Nn|Ṅṅ|Nw/nw|Ny/ny|Oo|Ọọ|Pp|Rr|Ss|Sh/sh|Tt|Uu|Ụụ|Vv|Ww|Yy|Zz}} {{-ref-}} #{{Chú thích sách|author=Nicholas Awde & Onyekachi Wambu|title=Igbo-English, English-Igbo dictionary and phrasebook|year=1999|location=New York|publisher=Hippocrene Books|page=[https://archive.org/details/igboenglishengli00nich/page/58 58]}} {{-nuo-}} {{-pron-}} *{{IPA4|nuo|/u⁴/}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] ghi lại tiếng Nguồn. #:{{ux2|nuo|[[pụng|p'''ụ'''ng]]|bụng|inline=1}} {{-nut-}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Nùng. #:{{ux2|nut|[[pụt#Tiếng_Nùng|p'''ụ'''t]]|một làn điệu dân ca Nùng|inline=1}} {{-tyz-}} {{-pron-}} {{tyz-IPA}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Tày. #:{{ux2|tyz|[[mục#Tiếng_Tày|m'''ụ'''c]]|nước mũi|inline=1}} {{-yor-}} {{-pron-}} *{{IPA4|yo|/ʊ̄./}} {{-desction-}} {{pn}} # Ký tự ''[[u]]'' viết thường với dấu chấm dưới [[◌̣]] trong văn bản tiếng Yoruba . #:{{ux2|yo|'''ụ'''mụ́|cái mũi|inline=1}} {{-syn-}} * Chữ in hoa [[Ụ#Tiếng_Yoruba|Ụ]] [[Thể loại:Khối ký tự Latin Extended Additional|E5]] 75aedv74dvz7lssfc50u8nilbkmp2hb Mô đun:category tree/entry maintenance 828 279375 2350603 2347833 2026-05-07T06:17:46Z TheHighFighter2 42988 2350603 Scribunto text/plain local labels = {} local raw_categories = {} local raw_handlers = {} local functions_module = "Module:fun" local languages_module = "Module:languages" local scripts_module = "Module:scripts" local string_pattern_escape_module = "Module:string/patternEscape" local string_replacement_escape_module = "Module:string/replacementEscape" local table_module = "Module:table" local ConvertU = require('Module:ConvertU') -- Hàm chuyển đổi chữ hoa thường local lcfirst = require("Module:string utilities").lcfirst local extend = require(table_module).extend local is_callable = require(functions_module).is_callable local pattern_escape = require(string_pattern_escape_module) local replacement_escape = require(string_replacement_escape_module) local unpack = unpack or table.unpack -- Lua 5.2 compatibility ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["Bảo trì mục từ"] = { description = "Các mục từ trong {{{langname}}}, hoặc mục từ thuộc ngôn ngữ khác có chứa từ ngữ {{{langname}}}, đang được biên tập viên theo dõi để lưu ý và cải thiện.", parents = {{name = "{{{langcat}}}", raw = true}}, umbrella_parents = "Tất cả", } labels["Mục từ có đề mục ngôn ngữ không đúng"] = { description = "Trang này chứa các mục từ {{{langname}}} có đề mục ngôn ngữ không đúng.", additional = "Điều này có thể xảy ra một hoặc nhiều trường hợp dưới đây:\n" .. "* Kiểu.\n" .. "* [[Wiktionary:Phá hoại|Phá hoại]].\n" .. "* Sử dụng không đúng tên mã ngôn ngữ.\n" .. "* Sử dụng tên gọi thay thế của ngôn ngữ.\n" .. "* Sử dụng các ký tự đặc biệt trong khi tên lại không có hoặc không được nhắc đến trong mô đun dữ liệu ngôn ngữ.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["entries without References header"] = { description = "{{{langname}}} entries without a References header.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["Mục từ có cây từ nguyên"] = { description = "Các mục từ trong {{{langname}}} hiển thị sơ đồ cây từ nguyên do sử dụng bản mẫu {{tl|etymon}}.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["Mục từ có văn bản giải thích từ nguyên"] = { description = "Các mục từ trong {{{langname}}} hiển thị văn bản giải thích từ nguyên do sử dụng bản mẫu {{tl|etymon}}.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["Mục từ tham chiếu đến nguyên từ bị thiếu"] = { description = "Các mục từ sử dụng bản mẫu {{tl|etymon}} tham chiếu đến một nguyên từ không thể tìm thấy do trang đích không tồn tại (liên kết đỏ) hoặc không sử dụng {{tl|etymon}}.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } local function add_manual_param_category(label, desc, addl_intro, include_addl_continuation) labels[label] = { description = desc or "Trang này chứa " .. label .. " {{{langname}}}.", additional = addl_intro .. (not include_addl_continuation and "" or "\n\n" .. "Note that the pages in this category are not necessarily the same as the actual term in question. This " .. "frequently happens, for example, with English pages with translation sections, where the term that " .. "triggers the addition of the category is one of the translations."), parents = {"Bảo trì mục từ"}, -- Set catfix = false because the page will have a mixture of native-language and -- non-native-language pages, but include the normal native-language table of contents headers -- because most pages are in the native language. catfix = false, toc_template = "{{{langcode}}}-categoryTOC", toc_template_full = "{{{langcode}}}-categoryTOC/full", can_be_empty = true, hidden = true, } end add_manual_param_category("Mục từ có chuyển tự thủ công không thừa", nil, "Pages are placed here if they contain terms written in a script that isn't in the language's " .. "list of scripts in the language data. This may mean the script should be added to the list, or that the wrong language code has been used.", true) add_manual_param_category("terms with non-redundant manual transliterations", nil, "Pages are placed here if they contain terms whose transliteration has been specified manually using " .. "{{para|tr}} or a similar parameter and is different from the transliteration which is automatically generated.", true) add_manual_param_category("terms with redundant transliterations", nil, "Pages are placed here if they contain terms whose transliteration has been specified manually using " .. "{{para|tr}} or a similar parameter and is the same as the transliteration which is automatically generated.", true) add_manual_param_category("Mục từ có mã chữ viết thủ công không thừa", nil, "Pages are placed here if they contain terms whose script code has been specified manually using " .. "{{para|sc}} or a similar parameter and is different from the script code which is automatically generated.", true) add_manual_param_category("Mục từ có mã chữ viết thừa", nil, "Pages are placed here if they contain terms whose script code has been specified manually using " .. "{{para|sc}} or a similar parameter and is the same as the script code which is automatically generated.", true) add_manual_param_category("Mục từ có mã sắp xếp thủ công không thừa", "Mục từ có mã sắp xếp thủ công không thừa {{{langname}}}.", "Terms are placed here if they have been sorted using a sortkey other than the one which is automatically " .. "generated. This can happen for two reasons:\n# A different sortkey has been specified using the {{para|sort}} " .. "parameter.\n# One or more categories have been added using raw wikitext, which means the page's default " .. "sortkey is used for that category. If that default sortkey is different from the automatic sortkey, then the " .. "page will also be added here.") add_manual_param_category("Mục từ có mã sắp xếp thừa", "{{{langname}}} terms with redundant sortkeys.", "Terms are placed here if their sortkey has been specified using the {{para|sort}} parameter, and it the same " .. "as the one which is automatically generated.") add_manual_param_category("links with redundant target parameters", "Pages containing {{{langname}}} links where the alt text could replace the link target, instead of being given " .. "separately.", "This occurs when the only difference between the link target and the alt text is that the alt text contains " .. "diacritics (or other characters) which would have been ignored anyway had they been included in the link " .. "target. For example, {{tl|l|la|amo|amō}} ({{l|la|amo|amō}}) is exactly the same as {{tl|l|la|amō}} " .. "({{l|la|amō}}), because macrons are automatically stripped from Latin link targets, even though they're still " .. "displayed.") add_manual_param_category("links with ignored alt parameters", "Pages containing {{{langname}}} links where the {{para|alt}} parameter has been ignored.", "This occurs when the main linked text includes a wikilink.") add_manual_param_category("Liên kết mục từ có tham số alt thừa", "Pages containing {{{langname}}} links where the {{para|alt}} parameter is redundant.", "This occurs when the alt text makes no difference to the output. For example, {{tl|l|vi|foo|foo}} " .. "({{l|vi|foo|foo}}) is exactly the same as {{tl|l|vi|foo}} ({{l|vi|foo}}).") add_manual_param_category("links with ignored id parameters", "Pages containing {{{langname}}} links where the {{para|id}} parameter has been ignored.", "This occurs when the main linked text includes a wikilink.") add_manual_param_category("Liên kết mục từ có liên kết wiki thừa", "Pages containing {{{langname}}} links which contain a redundant wikilink.", "This occurs if link target consists of a single wikilink, which should instead be entered in the " .. "conventional manner without link brackets. For example, {{tl|l|en|<nowiki>[[foo]]</nowiki>}} " .. "is the same as {{tl|l|en|foo}}, and {{tl|l|en|<nowiki>[[foo|bar]]</nowiki>}} is the same as " .. "{{tl|l|en|foo|bar}}.\n\nThis also occurs when link templates are nested inside each other " .. "unnecessarily: e.g. {{tl|l|en|{{tl|l|en|foo}}}}") add_manual_param_category("Liên kết có phân mảnh thủ công", "Pages containing {{{langname}}} links where a manual link fragment has been given.", "This occurs when the link fragment has been specified using {{code|#}} after the term, " .. "which overrides the normal fragment generated by link templates that points to the relevant " .. "language section.\n\nLink fragments are used to point to a specific section on a target page, and " .. "it is preferable to use the {{para|id}} parameter to do this, since it is less likely to break if " .. "additional content is added to the target page: for example, the fragment {{code|#Adjective}} " .. "will start pointing to the wrong section if another language with an adjective section is added above " .. "the intended language.") labels["entries without References or Further reading header"] = { description = "{{{langname}}} entries without a References or Further reading header.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["entries that don't exist"] = { description = "{{{langname}}} terms that do not meet the [[Wiktionary:Criteria for inclusion|criteria for inclusion]] (CFI). They are added to the category with the template {{tl|no entry|{{{langcode}}}}}.", parents = {"Bảo trì mục từ"}, } labels["entries with language name categories using raw markup"] = { description = "{{{langname}}} entries that have been placed in a language name category using raw wiki markup (i.e. <code><nowiki>[[Category:{{{langname}}} ...]]</nowiki></code>). They should be added using {{tl|cln|{{{langcode}}}|...}} instead.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["entries with topic categories using raw markup"] = { description = "{{{langname}}} entries that have been placed in a topic category using raw wiki markup (i.e. <code><nowiki>[[Category:{{{langcode}}}:...]]</nowiki></code>). They should be added using {{tl|C|{{{langcode}}}|...}} instead.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["entries with outdated source"] = { description = "{{{langname}}} entries that have been partly or fully imported from an outdated source.", parents = {"Bảo trì mục từ"}, } labels["undefined derivations"] = { description = "{{{langname}}} etymologies using {{tl|undefined derivation}}, where a more specific template such as {{tl|borrowed}} or {{tl|inherited}} should be used instead.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["descendants to be fixed in desctree"] = { description = "Entries that use {{tl|desctree}} to link to {{{langname}}} entries with no Descendants section.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["Yêu cầu mục từ"] = { description = "Entries with [[Template:der]], [[Template:inh]], [[Template:m]] and similar templates lacking the parameter for linking to {{{langname}}} terms.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["Liên kết đỏ"] = { description = "Links to {{{langname}}} entries that have not been created yet.", parents = {"Bảo trì mục từ"}, catfix = false, can_be_empty = true, hidden = true, } labels["Mục từ có cách phát âm IPA"] = { description = "Các mục từ có cách phát âm IPA trong {{{langname}}}.", additional = "Đối với các yêu cầu liên quan đến thể loại này, hãy xem [[:Thể loại:Yêu cầu cách phát âm mục từ {{{langname}}}]].", parents = {"Bảo trì mục từ"}, } labels["terms with hyphenation"] = { description = "{{{langname}}} terms that include hyphenation.", parents = {"Bảo trì mục từ"}, } labels["Mục từ có liên kết âm thanh"] = { description = "Các từ {{{langname}}} có cách phát âm dưới dạng liên kết âm thanh.", parents = {"Bảo trì mục từ"}, } labels["descendant hubs"] = { description = "{{{langname}}} terms that do not mean more than the sum of their parts but exist for listing two or more inclusion-worthy descendants.", parents = {"Bảo trì mục từ"}, } labels["terms needing to be assigned to a sense"] = { description = "{{{langname}}} entries that have terms under headers such as \"Synonyms\" or \"Antonyms\" not assigned to a specific sense of the entry in which they appear. Use [[Template:syn]] or [[Template:ant]] to fix these.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } --[=[ labels["terms with inflection tables"] = { description = "{{{langname}}} entries that contain inflection tables.". additional = "For requests related to this category," see [[:Category:Requests for inflections in {{{langname}}} entries]].", parents = {"Bảo trì mục từ"}, } ]=] labels["Mục từ có kết ngôn"] = { description = "định nghĩa mục từ {{{langname}}} có kết ngôn khi sử dụng bản mẫu {{lkbm|collocation}}.", additional = "Để biết thể loại theo yêu cầu, xem [[:Thể loại:Yêu cầu định nghĩa mục từ có kết ngôn {{{langname}}}]]. Xem thêm [[:Thể loại:Định nghĩa mục từ yêu cầu trích dẫn {{{langname}}}]] và [[:Thể loại:Định nghĩa mục từ yêu cầu ví dụ {{{langname}}}]].", parents = {"Bảo trì mục từ"}, } labels["Mục từ có ví dụ cách sử dụng"] = { description = "{{{langname}}} entries that contain usage examples that were added using templates such as {{lkbm|ux}}.", additional = "For requests related to this category, see [[:Category:Requests for example sentences in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for quotations in {{{langname}}}]].", parents = {"Bảo trì mục từ"}, } labels["Mục từ có trích dẫn ngữ liệu"] = { description = "{{{langname}}} entries that contain quotes that were added using templates such as {{tl|quote}}, {{tl|quote-book}}, {{tl|quote-journal}}, etc.", additional = "For requests related to this category, see [[:Category:Requests for quotations in {{{langname}}}]]. See also [[:Category:Requests for collocations in {{{langname}}}]] and [[:Category:Requests for example sentences in {{{langname}}}]].", parents = {"Bảo trì mục từ"}, } labels["Mục từ có tham số head thừa"] = { description = "{{{langname}}} terms that contain a redundant head= parameter in their headword (called using {{tl|head}} or a language-specific equivalent).", additional = "Individual languages can prevent terms from being added to this category by setting `data.no_redundant_head_cat`.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } labels["terms with red links in their headword lines"] = { description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their headword lines.", parents = {"redlinks"}, can_be_empty = true, hidden = true, } labels["terms with red links in their inflection tables"] = { description = "{{{langname}}} terms that contain red links (i.e. uncreated forms) in their inflection tables.", parents = {"redlinks"}, can_be_empty = true, hidden = true, } labels["requests for English equivalent term"] = { description = "{{{langname}}} entries with definitions that have been tagged with {{tl|rfeq}}. Read the documentation of the template for more information.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } for _, quot_type in ipairs { "quotations", "usage examples" } do labels[quot_type .. " with omitted translation"] = { description = "{{{langname}}} " .. quot_type .. " where a translation would normally be required but the translation has explicitly been omitted by specifying <code>-</code>. The translation should be supplied instead.", parents = {"Bảo trì mục từ"}, can_be_empty = true, hidden = true, } end for _, pos in ipairs({"nouns", "proper nouns", "verbs", "adjectives", "adverbs", "participles", "determiners", "pronouns", "numerals", "suffixes", "contractions"}) do labels[pos .. " with red links in their headword lines"] = { description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their headword lines.", parents = {"terms with red links in their headword lines"}, breadcrumb = pos, can_be_empty = true, hidden = true, } labels[pos .. " with red links in their inflection tables"] = { description = "{{{langname}}} " .. pos .. " that contain red links (i.e. uncreated forms) in their inflection tables.", parents = {"terms with red links in their inflection tables"}, breadcrumb = pos, can_be_empty = true, hidden = true, } end for _, pos in ipairs { "Danh từ", "Danh từ riêng", "Đại từ" } do local label = pos .. " có số nhiều không rõ" labels[label] = { description = label .. " {{{langname}}}.", additional = "Terms are usually added to this category by specifying {{code|?}} as the plural. As much " .. "is possible, a plural should be added or, if the noun is uncountable, indicated appropriately (usually " .. "using {{code|-}} in place of the plural). Some languages support the value {{code|!}} to indicate " .. "that a plural cannot be attested but the noun is theoretically countable.", breadcrumb = "số nhiều không rõ", parents = { {name = pos, sort = "số nhiều không rõ"}, "Bảo trì mục từ", }, } end -- 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 bảo trì mục từ theo ngôn ngữ" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Thể loại con bảo trì mục từ theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to entry maintenance.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", "Category:Bảo trì mục từ theo ngôn ngữ", }, } raw_categories["Mục từ có bản dịch theo ngôn ngữ"] = { description = "Mục từ có bản dịch theo ngôn ngữ.", parents = {{name = "Thể loại con bảo trì mục từ theo ngôn ngữ", sort = "translations by language"}}, breadcrumb = "Bản dịch", } raw_categories["Mục từ có hộp bản dịch"] = { description = "Trang này chứa các trang có hộp bản dịch.", parents = { "Thể loại con bảo trì mục từ theo ngôn ngữ"}, hidden = true, } raw_categories["Yêu cầu"] = { topright = "{{shortcut|WT:CR|WT:RQ}}", description = "A parent category for the various request categories.", parents = {"Wiktionary"}, } raw_categories["Yêu cầu theo ngôn ngữ"] = { description = "Categories with requests in various specific languages.", additional = "{{{umbrella_msg}}}", parents = { {name = "Thể loại con yêu cầu theo ngôn ngữ", sort = " "}, {name = "Yêu cầu", sort = " "}, }, breadcrumb = "theo ngôn ngữ", } raw_categories["Thể loại con yêu cầu theo ngôn ngữ"] = { description = "Umbrella categories covering topics related to requests.", additional = "{{{umbrella_meta_msg}}}", parents = { "Siêu thể loại chung", {name = "Yêu cầu", sort = " "}, }, } raw_categories["Requests for quotations by source"] = { description = "Categories with requests for quotation, broken out by the source of the quotation.", additional = "Some abbreviated names of sources are explained at [[Wiktionary:Abbreviated Authorities in Webster]].", parents = {{name = "Requests for quotations", sort = "source"}}, breadcrumb = "By source", } raw_categories["Requests for quotations"] = { -- FIXME description = "Words are added to this category by the inclusion in their entries of {{tl|rfv-quote}}.", parents = {{name = "Requests", sort = "quotations"}}, breadcrumb = "Quotations", } raw_categories["Requests for date by source"] = { description = "Categories with requests for date, broken out by the source of the quotation whose date is sought.", parents = {{name = "Requests for date", sort = "source"}}, breadcrumb = "By source", } raw_categories["Requests for date"] = { description = "Requests for a date to be added to a quotation.", additional = "To add an article to this category, use {{tl|rfdate}} or {{tl|rfdatek}} to include the author. " .. "Please remove the template from the article once the date has been provided.", parents = {{name = "Requests", sort = "date"}}, breadcrumb = "Date", } raw_categories["Requests for translations in user-competency categories by number of users"] = { description = "Requests for translations to be added to user-competency categories, sorted by number of users with that competency.", parents = {{name = "Requests", sort = "translations"}}, breadcrumb = "Translations in user-competency categories by number of users", } raw_categories["Requests for translations in user-competency categories by language"] = { description = "Requests for translations to be added to user-competency categories, sorted by language.", parents = {{name = "Requests", sort = "translations"}}, breadcrumb = "Translations in user-competency categories by language", hidden = true, } raw_categories["Entries using missing taxonomic names"] = { description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.", additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name." .. "\n\nSee [[:Category:mul:Taxonomic names]].", parents = {{name = "Bảo trì mục từ", is_label = true, lang = "mul"}}, breadcrumb = "Missing taxonomic names", hidden = true, } ----------------------------------------------------------------------------- -- -- -- RAW HANDLERS -- -- -- ----------------------------------------------------------------------------- local function script_name_to_code(name) local sc = require("Module:scripts").getByCanonicalName(name) if not sc then error("Không tìm thấy tên kịch bản '" .. name .. "'") end return sc:getCode() end -- This array consists of category match specs. Each spec contains one or more properties, whose values are (a) strings -- that may contain references to other properties using the {{{PROPERTY}}} syntax; (b) functions of one argument, an -- `items` table of the same properties that are accessible using the {{{PROPERTY}} syntax. Each such spec should have -- at least a `regex` property that matches the name of the category. Capturing groups in this regex can be referenced -- in other properties using {{{1}}} for the first group, {{{2}}} for the second group, etc. (or using keys "1", "2", -- etc. in functions). Property expansion happens recursively if needed (i.e. a property can reference another property, -- which in turn references a third property). -- -- If there is a `language_name` propery, it specifies the language name (and will typically be a reference to a -- capturing group from the `regex` property); if not specified, it defaults to "{{{1}}}" unless the `nolang` property -- is set, in which case there is no language name derivable from the category name. The language name must be the -- canonical name of a recognized regular language, or an error is thrown; however, if the `etym_lang_only` -- property is set, the language name must be the canonical name of an etymology-only language, or the category spec -- entry will be skipped. Based on the language name, the `language_code` and `language_object` properties are -- automatically filled in. If `language_name` is an etymology-only language, additional properties -- `parent_language_name`, `parent_language_code` and `parent_language_object` are set for the parent regular language -- of the etymology-only language. -- -- If the `regex` values of multiple category specs match, the first one takes precedence. -- -- Recognized or predefined properties: -- -- `pagename`: Current pagename. -- `regex`: See above. -- `1`, `2`, `3`, ...: See above. -- `language_name`, `language_code`, `language_object`: See above. -- `parent_language_name`, `parent_language_code`, `parent_language_object`: See above. -- `nolang`: See above. -- `etym_lang_only`: Language names must be etymology-only languages. See above. -- `description`: Override the description (normally taken directly from the pagename). -- `template_name`: Name of template which generates this category. -- `template_sample_call`: Syntax for calling the template. Defaults to "{{{template_name}}}|{{{language_code}}}". -- Used to display an example template call and the output of this call. -- `template_actual_sample_call`: Syntax for calling the template. Takes precedence over `template_sample_call` when -- generating example template output (but not when displaying an example template call) and is intended for a -- template call that uses the |nocat=1 parameter. -- `template_example_output`: Override the text that displays example template output (see `template_sample_call`). -- `additional_template_description`: Extra text to be displayed after the example template output. -- `parents`: Parent categories. Should be a list of elements, each of which is an object containing at least a name= -- and sort= field (same format as parents= for regular raw categories, except that the name= and sort= field will -- have {{{PROPERTY}}} references expanded). If no parents are specified, and the pagename is of the form -- "Requests for FOO by language", the parent will be "Request subcategories by language" with FOO as the sort key. -- Otherwise, the `language_name` property must exist, and the parent will be "Requests concerning LANGNAME" with -- the pagename minus any initial "Requests for " as the sort key. -- `umbrella`: Parent all-language category. Sort key is based on the language name. -- `breadcrumb`: Specify the breadcrumb. If `parents` is given, there is no default (i.e. it will end up being the -- pagename). Otherwise, if the pagename is of the form "Requests for FOO by language", "Requests for FOO in BAR", -- or "Requests for FOO", it will be FOO. -- `not_hidden_category`: Don't hide the category. -- `catfix`: Same as `catfix` in regular labels and raw categories, except that request-specific {{{PROPERTY}}} syntax -- is expanded. -- `toc_template`, `toc_template_full`: Same as the corresponding fields in regular labels and raw categories, except -- that request-specific {{{PROPERTY}}} syntax is expanded. -- -- In general, properties can contain references to templates (e.g. {{tl}} and {{para}}), which will be appropriately -- expanded (this expansion happens in the poscatboiler code, not in this module). The major exception is in the -- `template_sample_call` and `template_actual_sample_call` properties, which are surrounded by <pre>...</pre> when -- inserted, so template references are not expanded. Triple-brace property references are still expanded in these -- properties; but beware that if any of those property references contain template references, they won't be expanded. -- (This actually happens in the handlers for 'Request for SCRIPT script for LANG terms'; the sample call references -- {{{script_code}}}, whose definition therefore cannot contain template references. The solution is to define this -- property using a function.) local requests_categories = { { -- This handles etymology languages. regex = "^Yêu cầu liên quan đến (.+)$", description = "Categories with {{{1}}} entries that need the attention of experienced editors.", etym_lang_only = true, parents = {{name = "Yêu cầu liên quan đến {{{parent_language_name}}}", sort = "{{{1}}}"}}, umbrella = false, breadcrumb = "{{{1}}}", not_hidden_category = true, }, { -- This handles regular languages. regex = "^Yêu cầu liên quan đến (.+)$", description = "Categories with {{{1}}} entries that need the attention of experienced editors.", parents = {{name = "Bảo trì mục từ", is_label = true, sort = "requests"}}, umbrella = "Yêu cầu theo ngôn ngữ", breadcrumb = "Yêu cầu", not_hidden_category = true, }, { regex = "^Yêu cầu từ nguyên mục từ (.+)$", umbrella = "Yêu cầu từ nguyên theo ngôn ngữ", template_name = "rfe", }, { regex = "^Requests for expansion of etymologies in (.+) entries$", umbrella = "Requests for expansion of etymologies by language", template_name = "etystub", }, { regex = "^Yêu cầu cách phát âm mục từ (.+)$", umbrella = "Yêu cầu cách phát âm theo ngôn ngữ", template_name = "rfp", }, { regex = "^Yêu cầu một đoạn ghi âm thanh cách phát âm mục từ (.+)$", umbrella = "Yêu cầu một đoạn ghi âm thanh cách phát âm theo ngôn ngữ", template_name = "rfap", }, { regex = "^Yêu cầu định nghĩa mục từ (.+)$", umbrella = "Yêu cầu định nghĩa theo ngôn ngữ", template_name = "rfdef", }, { regex = "^Requests for clarification of definitions in (.+) entries$", umbrella = "Requests for clarification of definitions by language", template_name = "rfclarify", }, { -- This is for part-of-speech-specific categories such as -- "Requests for inflections in Northern Ndebele noun entries" or -- "Requests for accents in Ukrainian proper noun entries". -- Here and below, we assume that the part of speech is begins with -- a lowercase letter, while the preceding language name ends in a -- capitalized word. Note that this entry comes before the -- following one and takes precedence over it. regex = "^Yêu cầu biến cách cho mục từ (.-) ([a-z]+[a-z ]*)$", parents = {{name = "Yêu cầu biến cách cho mục từ {{{language_name}}}", sort = "{{{2}}}"}}, umbrella = "Yêu cầu biến cách cho {{{2}}} theo ngôn ngữ", breadcrumb = "{{{2}}}", template_name = "rfinfl", template_sample_call = "{{rfinfl|{{{language_code}}}|{{{2}}}}}", }, { regex = "^Yêu cầu biến cách cho mục từ (.+)$", umbrella = "Yêu cầu biến cách theo ngôn ngữ", template_name = "rfinfl", }, { regex = "^Yêu cầu biến cách cho (.+) theo ngôn ngữ$", nolang = true, }, { regex = "^Requests for tone in (.-) ([a-z]+[a-z ]*) entries$", parents = {{name = "Requests for tone in {{{language_name}}} entries", sort = "{{{2}}}"}}, umbrella = "Requests for tone of {{{2}}}s by language", breadcrumb = "{{{2}}}", template_name = "rftone", template_sample_call = "{{rftone|{{{language_code}}}|{{{2}}}}}", }, { regex = "^Requests for tone in (.+) entries$", umbrella = "Requests for tone by language", template_name = "rftone", }, { regex = "^Requests for tone of (.+) by language$", nolang = true, }, { regex = "^Requests for accents in (.-) ([a-z]+[a-z ]*) entries$", parents = {{name = "Requests for accents in {{{language_name}}} entries", sort = "{{{2}}}"}}, umbrella = "Requests for accents of {{{2}}}s by language", breadcrumb = "{{{2}}}", template_name = "rfaccents", template_sample_call = "{{rfaccents|{{{language_code}}}|{{{2}}}}}", }, { regex = "^Requests for accents in (.+) entries$", umbrella = "Requests for accents by language", template_name = "rfaccents", }, { regex = "^Requests for accents of (.+) by language$", nolang = true, }, { regex = "^Requests for aspect in (.-) ([a-z]+[a-z ]*) entries$", parents = {{name = "Requests for aspect in {{{language_name}}} entries", sort = "{{{2}}}"}}, umbrella = "Requests for aspect of {{{2}}}s by language", breadcrumb = "{{{2}}}", template_name = "rfaspect", template_sample_call = "{{rfaspect|{{{language_code}}}|{{{2}}}}}", }, { regex = "^Requests for aspect in (.+) entries$", umbrella = "Requests for aspect by language", template_name = "rfaspect", }, { regex = "^Requests for aspect of (.+) by language$", nolang = true, }, { regex = "^Requests for gender in (.-) ([a-z]+[a-z ]*) entries$", parents = {{name = "Requests for gender in {{{language_name}}} entries", sort = "{{{2}}}"}}, umbrella = "Requests for gender of {{{2}}}s by language", breadcrumb = "{{{2}}}", template_name = "rfgender", template_sample_call = "{{rfgender|{{{language_code}}}|{{{2}}}}}", }, { regex = "^Requests for gender in (.+) entries$", umbrella = "Requests for gender by language", template_name = "rfgender", }, { regex = "^Requests for gender of (.+) by language$", nolang = true, }, { regex = "^Requests for example sentences in (.+)$", umbrella = "Requests for example sentences by language", template_name = "rfex", }, { regex = "^Requests for collocations in (.+)$", umbrella = "Requests for collocations by language", template_name = "rfcoll", }, { regex = "^Requests for quotations in (.+)$", umbrella = "Requests for quotations by language", template_name = "rfquote", }, { -- This handles etymology languages. regex = "^Requests for translations into (.+)$", etym_lang_only = true, parents = { {name = "Requests for translations into {{{parent_language_name}}}", sort = "{{{1}}}"}, {name = "Requests concerning {{{language_name}}}", sort = "translations"}, }, umbrella = false, breadcrumb = "{{{1}}}", template_name = "t-needed", catfix = "en", }, { -- This handles regular languages. regex = "^Requests for translations into (.+)$", umbrella = "Requests for translations by language", template_name = "t-needed", catfix = "en", }, { regex = "^Requests for translations of (.+) usage examples$", umbrella = "Requests for translations of usage examples by language", breadcrumb = "Translations of usage examples", template_name = "t-needed", template_sample_call = "{{t-needed|{{{language_code}}}|usex=1}}", template_actual_sample_call = "{{t-needed|{{{language_code}}}|usex=1|nocat=1}}", additional_template_description = "The {{tl|ux}}, {{tl|uxi}}, {{tl|ja-usex}} and {{tl|zh-x}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing." }, { regex = "^Requests for translations of (.+) quotations$", umbrella = "Requests for translations of quotations by language", breadcrumb = "Translations of quotations", template_name = "t-needed", template_sample_call = "{{t-needed|{{{language_code}}}|quote=1}}", template_actual_sample_call = "{{t-needed|{{{language_code}}}|quote=1|nocat=1}}", additional_template_description = "The {{tl|quote}}, {{tl|quote-*}} and {{tl|Q}} templates automatically add the page to this category if the example is in a foreign language and the translation is missing." }, { regex = "^Requests for review of (.+) translations$", umbrella = "Requests for review of translations by language", breadcrumb = "Review of translations", template_name = "t-check", template_sample_call = "{{t-check|{{{language_code}}}|example}}", template_example_output = "", catfix = "en", }, { regex = "^Yêu cầu chuyển tự mục từ (.+)$", umbrella = "Yêu cầu chuyển tự theo ngôn ngữ", template_name = "rftranslit", additional_template_description = "The {{tl|head}} template, and the large number of language-specific variants of it, automatically add " .. "the page to this category if the example is in a foreign language and no transliteration can be generated (particularly in languages without " .. "automated transliteration, such as Hebrew and Persian).", }, { regex = "^Requests for transliteration of (.+) usage examples$", umbrella = "Requests for transliteration of usage examples by language", template_name = "rftranslit", template_sample_call = "{{rftranslit|{{{language_code}}}|usex=1}}", template_actual_sample_call = "{{rftranslit|{{{language_code}}}|usex=1|nocat=1}}", catfix = false, additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example " .. "is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " .. "Hebrew and Persian).", }, { regex = "^Requests for transliteration of (.+) quotations$", umbrella = "Requests for transliteration of quotations by language", template_name = "rftranslit", template_sample_call = "{{rftranslit|{{{language_code}}}|quote=1}}", template_actual_sample_call = "{{rftranslit|{{{language_code}}}|quote=1|nocat=1}}", catfix = false, additional_template_description = "The {{tl|quote}} and {{tl|quote-*}} templates automatically add the page to this category if the quotation " .. "is in a foreign language and no transliteration can be generated (particularly in languages without automated transliteration, such as " .. "Hebrew and Persian).", }, { -- This handles etymology languages. regex = "^Requests for native script for (.+) terms$", etym_lang_only = true, parents = { {name = "Requests for native script for {{{parent_language_name}}} terms", sort = "{{{1}}}"}, {name = "Requests concerning {{{language_name}}}", sort = "native script"}, }, umbrella = false, breadcrumb = "{{{1}}}", template_name = "rfscript", template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}", catfix = false, additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration." }, { -- This handles regular languages. regex = "^Requests for native script for (.+) terms$", umbrella = "Requests for native script by language", template_name = "rfscript", template_actual_sample_call = "{{rfscript|{{{language_code}}}|nocat=1}}", catfix = false, additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration." }, { regex = "^Requests for native script in (.+) usage examples$", umbrella = "Requests for native script in usage examples by language", template_name = "rfscript", template_sample_call = "{{rfscript|{{{language_code}}}|usex=1}}", template_actual_sample_call = "{{rfscript|{{{language_code}}}|usex=1|nocat=1}}", catfix = false, additional_template_description = "The {{tl|ux}} and {{tl|uxi}} templates automatically add the page to this category if the example itself is missing but the translation is supplied." }, { regex = "^Requests for native script in (.+) quotations$", umbrella = "Requests for native script in quotations by language", template_name = "rfscript", template_sample_call = "{{rfscript|{{{language_code}}}|quote=1}}", template_actual_sample_call = "{{rfscript|{{{language_code}}}|quote=1|nocat=1}}", catfix = false, additional_template_description = "The {{tl|quote}} and {{tl|quote-*}} templates automatically add the page to this category if the quotation itself is missing but the translation is supplied." }, { -- This handles etymology languages. regex = "^Requests for (.+) script for (.+) terms$", language_name = "{{{2}}}", etym_lang_only = true, parents = { {name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}} script"}, {name = "Requests for {{{1}}} script for {{{parent_language_name}}} terms", sort = "{{{language_name}}}"}, {name = "Requests concerning {{{language_name}}}", sort = "{{{1}}} script"}, }, umbrella = false, breadcrumb = "{{{1}}} script", template_name = "rfscript", -- NOTE: The following is used in `template_sample_call` and `template_actual_sample_call`, meaning the -- conversion of script name to script code needs to be done using an inline function like this, instead of -- a {{#invoke:...}} template call. script_code = function(items) return script_name_to_code(items["1"]) end, template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}", template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}", catfix = false, additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration." }, { -- This handles regular languages. regex = "^Requests for (.+) script for (.+) terms$", language_name = "{{{2}}}", parents = {{name = "Requests for native script for {{{language_name}}} terms", sort = "{{{1}}} script"}}, umbrella = "Requests for {{{1}}} script by language", breadcrumb = "{{{1}}} script", template_name = "rfscript", -- See comment above about this definition. script_code = function(items) return script_name_to_code(items["1"]) end, template_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}}}", template_actual_sample_call = "{{rfscript|{{{language_code}}}|sc={{{script_code}}}|nocat=1}}", catfix = false, additional_template_description = "Many templates such as {{tl|l}}, {{tl|m}} and {{tl|t}} automatically place the page in this category when they are missing the term but have been provided with a transliteration." }, { regex = "^Requests for (.+) script by language$", parents = {{name = "Requests for script by language", sort = "{{{1}}} script"}}, nolang = true, }, { regex = "^Requests for script by language$", nolang = true, }, { regex = "^Requests for images in (.+) entries$", umbrella = "Requests for images by language", template_name = "rfi", }, { regex = "^Requests for references for (.+) terms$", umbrella = "Requests for references by language", template_name = "rfref", }, { regex = "^Requests for references for etymologies in (.+) entries$", parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "etymologies"}}, umbrella = "Requests for references for etymologies by language", breadcrumb = "Etymologies", template_name = "rfv-etym", }, { regex = "^Requests for references for pronunciations in (.+) entries$", parents = {{name = "Requests for references for {{{language_name}}} terms", sort = "pronunciations"}}, umbrella = "Requests for references for pronunciations by language", breadcrumb = "Pronunciations", template_name = "rfv-pron", }, { regex = "^Yêu cầu cần chú ý liên quan (.+)$", umbrella = "Yêu cầu cần chú ý theo ngôn ngữ", template_name = "attention", template_example_output = "This template does not generate any text in entries.", -- These pages typically contain a mixture of English and native-language entries, so disable catfix. catfix = false, -- Setting catfix = false will normally trigger the English table of contents template. -- We still want the native-language table of contents template, though. toc_template = "{{{language_code}}}-categoryTOC", toc_template_full = "{{{language_code}}}-categoryTOC/full", }, { regex = "^Requests for cleanup in (.+) entries$", umbrella = "Requests for cleanup by language", template_name = "rfc", template_actual_sample_call = "{{rfc|{{{language_code}}}|nocat=1}}", }, { regex = "^Requests for cleanup of Pronunciation N headers in (.+) entries$", umbrella = "Requests for cleanup of Pronunciation N headers by language", template_name = "rfc-pron-n", template_actual_sample_call = "{{rfc-pron-n|{{{language_code}}}|nocat=1}}", template_example_output = "This template does not generate any text in entries.", additional_template_description = [=[ The purpose of this category is to tag entries that use headers with "Pronunciation" and a number. While these headers and structure are sometimes used, they are not specifically prescribed by [[WT:ELE]]. No complete proposal has yet been made on how they should work, what the semantics are, or how they interact with multiple etymologies. As a result they should generally be avoided. Instead, merge the entries (possibly under multiple Etymology sections, if appropriate), and list all pronunciations, appropriately tagged, under a Pronunciation header. [[User:KassadBot|KassadBot]] tags these entries (or used to tag these entries, when the bot was operational). At some point if a proposal is made and adopted as policy, these entries should be reviewed. This category is hidden.]=], }, { regex = "^Requests for deletion in (.+) entries$", umbrella = "Requests for deletion by language", template_name = "rfd", template_actual_sample_call = "{{rfd|{{{language_code}}}|nocat=1}}", }, { regex = "^Requests for verification in (.+) entries$", umbrella = "Requests for verification by language", template_name = "rfv", }, { regex = "^Requests for attention in etymologies in (.+) entries$", umbrella = "Requests for attention in etymologies by language", }, { regex = "^Requests for quotations/(.+)$", description = "Requests for a quotation or for quotations from {{{1}}}.", parents = {{name = "Requests for quotations by source", sort = "{{{1}}}"}}, breadcrumb = "{{{1}}}", nolang = true, template_name = "rfquotek", template_sample_call = "{{rfquotek|LANGCODE|{{{1}}}}}", template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfquotek|und|{{{1}}}}}", }, { regex = "^Requests for date in (.+) entries$", umbrella = "Requests for date by language", template_name = "rfdate", additional_template_description = "The quotation templates, such as {{tl|quote-book}} and {{tl|quote-journal}}, " .. "automatically add the page to this category if neither {{para|date}} nor {{para|year}} is provided. Providing the " .. "parameter in each case on the page automatically removes the article from this category. See " .. "[[Wiktionary:Quotations]] for information about formatting dates and quotations.", }, { regex = "^Requests for date/(.+)$", description = "Requests for a date for a quotation or quotations from {{{1}}}.", parents = {{name = "Requests for date by source", sort = "{{{1}}}"}}, breadcrumb = "{{{1}}}", nolang = true, template_name = "rfdatek", template_sample_call = "{{rfdatek|LANGCODE|{{{1}}}}}", template_example_output = "\n(where LANGCODE is the language code of the entry)\n\nIt results in the message below:\n\n{{rfdatek|und|{{{1}}}}}", }, { regex = "^Requests for attestation of (.+) terms$", umbrella = "Requests for attestation of terms by language", breadcrumb = "Attestation", additional_template_description = "The {{tl|LDL}} template adds this category when a language code is supplied in {{para|1}} (as it should be)." }, } local user_competency_additional_template_description = "This is added by user-competency categories such as " .. "[[:Category:User fr-4]], which groups users who speak French at level 4 (near-native proficiency), when " .. "the native-language text indicating this fact is missing. The appropriate translation should mirror the " .. "English text also displayed (e.g. in this case \"These users speak French at a '''near native''' " .. "level.\"), and should be supplied to {{tl|auto cat}} using the {{para|text}} parameter. The mention of the " .. "language in the text should be surrounded by double angle brackets, e.g. \"&lt;&lt;français>>\", which " .. "causes it to be automatically linked to the appropriate parent category." local user_competency_parents = {{name = "Requests for translations in user-competency categories by number of users", sort = function(items) return " " .. ("%010d"):format(items["1"]) end, }} table.insert(requests_categories, { regex = "^Requests for translations in user%-competency categories with ([0-9]+)%-([0-9]+) users$", description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}}-{{{2}}} users.", additional_template_description = user_competency_additional_template_description, parents = user_competency_parents, breadcrumb = "{{{1}}}-{{{2}}}", nolang = true, } ) table.insert(requests_categories, { regex = "^Requests for translations in user%-competency categories with ([0-9]+) (users?)$", description = "Requests for translation of phrases indicating user competencies for specific languages and specific competency levels, for categories with {{{1}}} {{{2}}}.", additional_template_description = user_competency_additional_template_description, parents = user_competency_parents, breadcrumb = "{{{1}}}", nolang = true, } ) table.insert(raw_handlers, function(data) local items local function init_items() items = {pagename = data.category} end local function expand_value(item, val) if type(val) == "function" then return expand_value(item .. " ⇒ function", val(items)) end if not val then return val end if type(val) == "number" then val = tostring(val) end if type(val) ~= "string" then error(("The item '%s' on page %s is of type %s and can't be concatenated"):format( item, items.pagename, type(val))) end -- Replaces pseudo-template code {{{ }}} with the corresponding member of the "items" table. Has to be done -- recursively, since some of the items are nested: -- {{{template_sample_call_with_temp}}} -- ⇓ -- {{{{{template_name}}}|{{{language_code}}}}} -- ⇓ -- {{attention|en}} if val:find("{{{") then val = mw.ustring.gsub(val, "{{{([^%}%{]+)}}}", function(prop) local propval = items[prop] if not propval then error(("The item '%s' (expanded from property '%s' on page %s) was not found in the 'items' table"): format(prop, item, items.pagename)) end return expand_value(item .. " ⇒ " .. prop, propval) end ) end return val end local function expand_items_value(item) return expand_value(item, items[item]) end local function convert_items_to_category_data(items) if not items.nolang then items.language_name = items.language_name or "{{{1}}}" items.language_name = expand_items_value("language_name") -- Chuẩn hoá tên ngôn ngữ để nhận diện cả khi viết thường items.language_name2 = ConvertU.normalise_language_name(items.language_name) if items.etym_lang_only then items.language_object = require("Module:etymology languages").getByCanonicalName(items.language_name2) if not items.language_object then return nil end items.language_code = items.language_object:getCode() items.parent_language_object = items.language_object:getNonEtymological() -- Reject weird cases where etymology language has no parent. if not items.parent_language_object then return nil end items.parent_language_code = items.parent_language_object:getCode() items.parent_language_name = items.parent_language_object:getCanonicalName() -- Chuẩn hoá tên ngôn ngữ để nhận diện cả khi viết thường items.parent_language_name2 = ConvertU.normalise_language_name(items.parent_language_name) -- Reject weird cases where the parent language has the same name as the child etymology language. In -- that case, we'll get an infinite parent-category loop. This actually happens, e.g. with Rudbari and -- Bashkardi. if items.parent_language_name2 == items.language_name2 then return nil end else items.language_object = require("Module:languages").getByCanonicalName(items.language_name2, true) items.language_code = items.language_object:getCode() end end if items.template_name then items.template_sample_call = items.template_sample_call or "{{{{{template_name}}}|{{{language_code}}}}}" items.full_text_about_the_template = "To make this request, in this specific language, use this code in the entry (see also the documentation at [[Template:{{{template_name}}}]]):\n\n<pre>{{{template_sample_call}}}</pre>" if items.template_example_output then items.full_text_about_the_template = items.full_text_about_the_template .. " " .. items.template_example_output else items.template_actual_sample_call = items.template_actual_sample_call or items.template_sample_call items.full_text_about_the_template = items.full_text_about_the_template .. "\nIt results in the message below:\n\n{{{template_actual_sample_call}}}" end if items.additional_template_description then items.full_text_about_the_template = items.full_text_about_the_template .. "\n\n" .. items.additional_template_description end else items.full_text_about_the_template = items.additional_template_description end local parents = items.parents local breadcrumb = expand_items_value("breadcrumb") if parents then for _, parent in ipairs(parents) do parent.name = expand_value("parent.name", parent.name) parent.sort = expand_value("parent.sort", parent.sort) end else local umbrella_type = items.pagename:match("^Yêu cầu (.+) theo ngôn ngữ$") if umbrella_type then breadcrumb = breadcrumb or umbrella_type parents = {{name = "Thể loại con yêu cầu theo ngôn ngữ", sort = umbrella_type}} elseif not items.language_name then error("Internal error: Don't know how to compute parents for non-language-specific category '" .. items.pagename .. "'") else local default_breadcrumb = items.pagename:match("^Yêu cầu (.+) trong .*$") or items.pagename:match("^Yêu cầu (.+)$") --items.language_name = ConvertU.normalise_language_name(items.language_name) breadcrumb = breadcrumb or default_breadcrumb parents = {{name = "Yêu cầu liên quan đến " .. items.language_name, sort = default_breadcrumb}} end end if not items.nolang and items.umbrella ~= false then table.insert(parents, {name = expand_items_value("umbrella"), sort = items.language_name}) end local additional = expand_items_value("full_text_about_the_template") if items.pagename:find(" theo ngôn ngữ$") then additional = "{{{umbrella_msg}}}" .. (additional and "\n\n" .. additional or "") end return { description = expand_items_value("description") or items.pagename .. ".", lang = items.parent_language_code or items.language_code, additional = additional, parents = parents, -- If no breadcrumb=, it will default to the category name breadcrumb = breadcrumb, catfix = expand_items_value("catfix"), toc_template = expand_items_value("toc_template"), toc_template_full = expand_items_value("toc_template_full"), hidden = not items.not_hidden_category, can_be_empty = true, } end -- First look for a regular (usually language or script-specific) category. for i, category in ipairs(requests_categories) do local matchvals = {mw.ustring.match(data.category, category.regex)} if #matchvals > 0 then init_items() for key, value in pairs(category) do items[key] = value end for key, value in ipairs(matchvals) do items["" .. key] = value end local catdata = convert_items_to_category_data(items) if catdata then return catdata end end end -- Now look for umbrella categories. for i, category in ipairs(requests_categories) do if data.category == category.umbrella then init_items() items.nolang = true local catdata = convert_items_to_category_data(items) if catdata then return catdata end end end return nil end) table.insert(raw_handlers, function(data) local rawname = mw.ustring.match(data.category, "^Mục từ có bản dịch%s+(.+)$") if not rawname then return end local langname = ConvertU.normalise_name(rawname) -- Hàm chuyển đổi chữ hoa thường local languages = require(languages_module) local lang = languages.getByCanonicalName(langname, true, true) if lang then lang = lang:getCode() return { description = "Mục từ có chứa bản dịch sang " .. lcfirst(langname) .. ", được thêm vào bằng cách sử dụng một trong số các bản mẫu bản dịch, chẳng hạn như {{lkbm|t|" .. lang .. "|...}}, {{lkbm|t+|" .. lang .. "|...}}, v.v.", parents = { {name = "Bảo trì mục từ", is_label = true, lang = lang, sort = "Bản dịch"}, { name = "Mục từ có bản dịch theo ngôn ngữ", sort = {sort_base = langname, lang = "vi"} }, }, breadcrumb = "Bản dịch", catfix = false, can_be_empty = true, hidden = true, } end end) local recognized_taxtypes = require("Module:table/listToSet") { "ambiguous", "binomial", "branch", "clade", "cladus", "class", "cohort", "convariety", "cultivar group", "cultivar", "division", "empire", "epifamily", "epithet", "family", "form taxon", "form", "genus", "grade", "grandorder", "group", "hybrid", "informal group", "infraclass", "infracohort", "infrakingdom", "infraorder", "infraphylum", "infraspecies", "kingdom", "magnorder", "megacohort", "mirorder", "morph", "nothogenus", "nothospecies", "nothosubspecies", "nothovariety", "obsolete", "oofamily", "order", "parvclass", "parvorder", "phylum", "section", "series", "serovar", "species group", "species", "stem", "strain", "subclass", "subcohort", "subdivision", "subfamily", "subgenus", "subgroup", "subinfraorder", "subkingdom", "suborder", "subphylum", "subsection", "subspecies", "subterclass", "subtribe", "superclass", "supercohort", "superfamily", "supergroup", "superorder", "superphylum", "supertribe", "taxon", "tribe", "trinomial", "undescribed species", "unknown", "unranked group", "variety", "virus complex", } table.insert(raw_handlers, function(data) local taxtype = data.category:match("^Entries using missing taxonomic name %((.*)%)$") if taxtype and recognized_taxtypes[taxtype] then return { description = "Entries that link to wikispecies because there is no corresponding Wiktionary entry for the taxonomic name in the template {{tl|taxlink}}.", additional = "The missing name is one or more of those enclosed in {{tl|taxlink}}. The entries are sorted by the missing taxonomic name.", parents = {{name = "Entries using missing taxonomic names", sort = taxtype}}, breadcrumb = taxtype, hidden = true, } end end) return {LABELS = labels, RAW_CATEGORIES = raw_categories, RAW_HANDLERS = raw_handlers} hrbpymoccvwn1px04wdgkrvwliwfsa9 quốc tế hoá 0 282601 2350790 2103436 2026-05-07T08:01:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350790 wikitext text/x-wiki {{-vie-}} {{-alternative form-}} * {{alter|vi|quốc tế hóa}} {{-etymology-}} {{vie-etym-sino|國際|quốc tế|化|hoá, trở thành hoặc làm cho trở thành, trở nên hoặc làm cho trở nên có một tính chất nào đó|suffix=hoá}}. {{-pron-}} {{vie-pron}} {{-verb-}} {{vie-verb|head=[[quốc tế]] [[hoá]]}} # Làm cho có [[tính chất]] [[quốc tế]]. #: {{ux|vi|Có xu thế '''quốc tế hoá'''.}} #: {{ux|vi|'''Quốc tế hoá''' các thuật ngữ khoa học.}} {{-trans-}} {{trans-top|Làm cho có tính chất quốc tế}} * {{eng}}: {{t+|en|internationalize}}, {{t+|en|internationalise}} {{q|Anh}} * {{por}}: {{t+|pt|internacionalizar}} * {{cat-2}}: {{t+|ca|internacionalitzar}} * {{deu}}: {{t+|de|internationalisieren}} * {{kat}}: {{t|ka|ინტერნაციონალიზება}}, {{t|ka|გაინტერანციონალურება}}, {{t|ka|ინტერნაციონალიზაციის მოხდენა}} * {{ell}}: {{t+|el|διεθνοποιώ}} * {{fra}}: {{t+|fr|internationaliser}} * {{fin}}: {{t+|fi|kansainvälistää}} * {{spa}}: {{t+|es|internacionalizar}} * {{swe}}: {{t+|sv|internationalisera}} * {{zho}}: ** {{cmn}}: {{t+|cmn|國際化|tr=guójìhuà}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} kmsxsbunc61m8z72pm11tf5qxhtkm51 2351053 2350790 2026-05-07T10:47:15Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351053 wikitext text/x-wiki {{-vie-}} {{-alternative form-}} * {{alter|vi|quốc tế hóa}} {{-etymology-}} {{vie-etym-sino|國際|quốc tế|化|hoá, trở thành hoặc làm cho trở thành, trở nên hoặc làm cho trở nên có một tính chất nào đó|suffix=hoá}}. {{-pron-}} {{vie-pron}} {{-verb-}} {{vie-verb|head=[[quốc tế]] [[hoá]]}} # Làm cho có [[tính chất]] [[quốc tế]]. #: {{ux|vi|Có xu thế '''quốc tế hoá'''.}} #: {{ux|vi|'''Quốc tế hoá''' các thuật ngữ khoa học.}} {{-trans-}} {{trans-top|Làm cho có tính chất quốc tế}} * {{eng}}: {{t+|en|internationalize}}, {{t+|en|internationalise}} {{q|Anh}} * {{por}}: {{t+|pt|internacionalizar}} * {{cat-old}}: {{t+|ca|internacionalitzar}} * {{deu}}: {{t+|de|internationalisieren}} * {{kat}}: {{t|ka|ინტერნაციონალიზება}}, {{t|ka|გაინტერანციონალურება}}, {{t|ka|ინტერნაციონალიზაციის მოხდენა}} * {{ell}}: {{t+|el|διεθνοποιώ}} * {{fra}}: {{t+|fr|internationaliser}} * {{fin}}: {{t+|fi|kansainvälistää}} * {{spa}}: {{t+|es|internacionalizar}} * {{swe}}: {{t+|sv|internationalisera}} * {{zho}}: ** {{cmn}}: {{t+|cmn|國際化|tr=guójìhuà}} {{trans-bottom}} {{-ref-}} {{R:Tratu|vi|vi}} hh02dc5zn8938pg2ahlyy5qwiupnagc Mô đun:documentation2 828 282602 2350467 2348926 2026-05-06T13:54:21Z Hiyuune 50834 2350467 Scribunto text/plain local export = {} local array_module = "Module:array" local debug_track_module = "Module:debug/track" local frame_module = "Module:frame" local fun_is_callable_module = "Module:fun/isCallable" local languages_module = "Module:languages" local links_module = "Module:links" local load_module = "Module:load" local module_categorization_module = "Module:module categorization" local number_list_show_module = "Module:number list/show" local chemical_element_list_show_module = "Module:chemical element list/show" local pages_module = "Module:pages" local parameters_module = "Module:parameters" local scripts_module = "Module:scripts" local string_endswith_module = "Module:string/endswith" local string_gline_module = "Module:string/gline" local string_insert_module = "Module:string/insert" local string_startswith_module = "Module:string/startswith" local string_utilities_module = "Module:string utilities" local template_parser_module = "Module:template parser" local title_exists_module = "Module:title/exists" local title_new_title_module = "Module:title/newTitle" local concat = table.concat local error = error local full_url = mw.uri.fullUrl local get_current_title = mw.title.getCurrentTitle local insert = table.insert local ipairs = ipairs local list_to_text = mw.text.listToText local new_message = mw.message.new local pcall = pcall local require = require local tonumber = tonumber local tostring = tostring local type = type local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function Array(...) Array = require(array_module) return Array(...) end local function categorize_module(...) categorize_module = require(module_categorization_module).categorize return categorize_module(...) end local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function endswith(...) endswith = require(string_endswith_module) return endswith(...) end local function expand_template(...) expand_template = require(frame_module).expandTemplate return expand_template(...) end local function find_templates(...) find_templates = require(template_parser_module).find_templates return find_templates(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_lang(...) get_lang = require(languages_module).getByCode return get_lang(...) end local function get_pagetype(...) get_pagetype = require(pages_module).get_pagetype return get_pagetype(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function gline(...) gline = require(string_gline_module) return gline(...) end local function is_callable(...) is_callable = require(fun_is_callable_module) return is_callable(...) end local function is_documentation(...) is_documentation = require(pages_module).is_documentation return is_documentation(...) end local function is_sandbox(...) is_sandbox = require(pages_module).is_sandbox return is_sandbox(...) end local function new_title(...) new_title = require(title_new_title_module) return new_title(...) end local function number_list_show_table(...) number_list_show_table = require(number_list_show_module).table return number_list_show_table(...) end local function chemical_element_list_show_table(...) chemical_element_list_show_table = require(chemical_element_list_show_module).table return chemical_element_list_show_table(...) end local function preprocess(...) preprocess = require(frame_module).preprocess return preprocess(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function safe_load_data(...) safe_load_data = require(load_module).safe_load_data return safe_load_data(...) end local function split(...) split = require(string_utilities_module).split return split(...) end local function startswith(...) startswith = require(string_startswith_module) return startswith(...) end local function string_insert(...) string_insert = require(string_insert_module) return string_insert(...) end local function title_exists(...) title_exists = require(title_exists_module) return title_exists(...) end local function ugsub(...) ugsub = require(string_utilities_module).gsub return ugsub(...) end local function umatch(...) umatch = require(string_utilities_module).match return umatch(...) end local skins = { ["common" ] = ""; ["vector" ] = "Vector"; ["monobook" ] = "Monobook"; ["cologneblue"] = "Cologne Blue"; ["modern" ] = "Modern"; } local function track(page) debug_track("documentation/" .. page) return true end local function compare_pages(page1, page2, text) return "[" .. tostring( full_url("Special:ComparePages", {page1 = page1, page2 = page2})) .. " " .. text .. "]" end -- Avoid transcluding [[Module:languages/cache]] everywhere. local lang_cache = setmetatable({}, { __index = function (self, k) return require("Module:languages/cache")[k] end }) local function zh_link(word) return full_link{ lang = lang_cache.zh, term = word } end local function make_languages_data_documentation(title, cats, division) local doc_template, module_cat if endswith(division, "/extra") then division = division:sub(1, -7) doc_template = "language extradata documentation" module_cat = "Mô đun dữ liệu ngôn ngữ bổ sung" else doc_template = "language data documentation" module_cat = "Mô đun dữ liệu ngôn ngữ" end local sort_key if division == "exceptional" then sort_key = "x" else sort_key = division:gsub("/", "") end cats:insert(module_cat .. "|" .. sort_key) return { title = doc_template } end local function make_Unicode_data_documentation(title, cats) local subpage, first_three_of_code_point = title.fullText:match("^Module:Unicode data/([^/]+)/(%x%x%x)$") if subpage == "names" or subpage == "images" or subpage == "emoji images" then local low, high = tonumber(first_three_of_code_point .. "000", 16), tonumber(first_three_of_code_point .. "FFF", 16) local text, text_type if subpage == "names" then text_type = "dữ liệu hình ảnh" elseif subpage == "images" then text_type = "dữ liệu hình ảnh" elseif subpage == "emoji images" then text_type = "hình ảnh theo phong cách emoji" end text = string.format( "Mô đun dữ liệu này chứa " .. text_type .. " của " .. "các điểm mã [[Phụ lục:Unicode|Unicode]] trong phạm vi từ U+%04X đến U+%04X.", low, high) if subpage == "images" and safe_load_data("Module:Unicode data/emoji images/" .. first_three_of_code_point) then text = text .. " Danh sách này bao gồm các biến thể văn bản của emoji. Để biết danh sách các biến thể biểu tượng cảm xúc của những emoji đó, xem [[Module:Unicode data/emoji images/" .. first_three_of_code_point .. "]]." elseif subpage == "emoji images" then text = text .. " Đối với hình ảnh theo phong cách văn bản, xem [[Module:Unicode data/images/" .. first_three_of_code_point .. "]]." end return text end end local function insert_lang_data_module_cats(cats, langcode, overall_data_module_cat) local lang = lang_cache[langcode] if lang then local langname if lang._fullCode then langname = lang_cache[lang._fullCode]:getCanonicalName() else langname = lang:getCanonicalName() end cats:insert(overall_data_module_cat .. "|" .. langname) cats:insert("Mô đun " .. langname) cats:insert("Mô đun dữ liệu " ..langname) return lang, langname end end --[=[ This provides categories and documentation for various data modules, so that [[Category:Uncategorized modules]] isn't unnecessarily cluttered. It is a list of tables, each of which have the following possible fields: `regex` (required): A Lua pattern to match the module's title. If it matches, the data in this entry will be used. Any captures in the pattern can by referenced in the `cat` field using %1 for the first capture, %2 for the second, etc. (often used for creating the sortkey for the category). In addition, the captures are passed to the `process` function as the third and subsequent parameters. `process` (optional): This may be a function or a string. If it is a function, it is called as follows: `process(TITLE, CATS, CAPTURE1, CAPTURE2, ...)` where: * TITLE is a title object describing the module's title; see [https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Title_objects]. * CATS is an array object (see [[Module:array]]) of categories that the module will be added to. * CAPTURE1, CAPTURE2, ... contain any captures in the `regex` field. The return value of `process` should either be a string (which will be used as the module's documentation), or a table specifying the name of a template to expand to get the documentation, along with the arguments to that template. In the latter format, the template name (bare, without the "Template:" prefix) should be in the `title` field, and any arguments should be in `args; in this case, the template name will be listed above the generated documentation as the source of the documentation, along with an edit button to edit the template's contents. If, however, the return value of the `process` function is a string, any template invocations will be expanded using frame:preprocess(), and [[Module:documentation]] will be listed as the source of the documentation. If `process` itself is a string rather than a function, it should name a submodule under [[Module:documentation/functions/]] which returns a function, of the same type as described above. This submodule will be specified as the source of the documentation (unless it returns a table naming a template to expand to get the documentation, as described above). If `process` is omitted entirely, the module will have no documentation. `cat` (optional): A string naming the category into which the module should be placed, or a list of such strings. Captures specified in `regex` may be referenced in this string using %1 for the first capture, %2 for the second, etc. It is also possible to add categories in the `process` function by inserting them into the passed-in CATS array (the second parameter). ]=] local module_regex = { { regex = "^Mô đun:languages/data/(3/%l/extra)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/data/(3/%l)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/data/(2/extra)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/data/(2)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/data/(exceptional/extra)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/data/(exceptional)$", process = make_languages_data_documentation, }, { regex = "^Mô đun:languages/.+$", cat = "Mô đun ngôn ngữ và chữ viết", }, { regex = "^Mô đun:scripts/.+$", cat = "Mô đun ngôn ngữ và chữ viết", }, { regex = "^Mô đun:data tables/data..?.?.?$", cat = "Mô đun dữ liệu bảng tham chiếu phân mảnh", }, { regex = "^Module:zh/data/dial%-pron/.+$", cat = "Mô đun dữ liệu phát âm phương ngữ tiếng Trung Quốc", process = "zh dial or syn", }, { regex = "^Mô đun:zh/data/dial%-syn/.+$", cat = "Mô đun dữ liệu từ đồng nghĩa phương ngữ tiếng Trung Quốc", process = "zh dial or syn", }, { regex = "^Mô đun:zh/data/glyph%-data/.+$", cat = "Mô đun dữ liệu biểu mẫu ký tự lịch sử tiếng Trung Quốc", process = function(title, cats) local character = title.fullText:match("^Module:zh/data/glyph%-data/(.+)") if character then return ("Mô đun này chứa dữ liệu về các hình thức lịch sử của chữ Hán %s.") :format(zh_link(character)) end end, }, { regex = "^Mô đun:zh/data/ltc%-pron/(.+)$", cat = "Mô đun dữ liệu phát âm tiếng Trung Quốc trung đại|%1", process = "zh data", }, { regex = "^Mô đun:zh/data/och%-pron%-BS/(.+)$", cat = "Mô đun dữ liệu phát âm tiếng Trung Quốc cổ (Baxter-Sagart)|%1", process = "zh data", }, { regex = "^Mô đun:zh/data/och%-pron%-ZS/(.+)$", cat = "Mô đun dữ liệu phát âm tiếng Trung Quốc cổ (Trịnh Chương)|%1", process = "zh data", }, { -- capture rest of zh/data submodules regex = "^Mô đun:zh/data/(.+)$", cat = "Mô đun dữ liệu tiếng Trung Quốc|%1", }, { regex = "^Mô đun:mul/guoxue%-data/cjk%-?(.*)$", process = "guoxue-data", }, { regex = "^Mô đun:Unicode data/(.+)$", cat = "Mô đun dữ liệu Unicode|%1", process = make_Unicode_data_documentation, }, { regex = "^Mô đun:number list/data/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "Mô đun dữ liệu số") if lang then return ("Mô đun này chứa dữ liệu về nhiều loại số khác nhau trong %s.\n%s") :format(lang:makeCategoryLink(), number_list_show_table() or "") end end, }, { regex = "^Mô đun:chemical element list/data/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "Mô đun dữ liệu nguyên tố hóa học") if lang then return ("Mô đun này chứa dữ liệu về nguyên tố hóa học trong %s.\n%s") :format(lang:makeCategoryLink(), chemical_element_list_show_table() or "") end end, }, { regex = "^Mô đun:accel/(.+)$", process = function(title, cats) local lang_code = title.subpageText local lang = lang_cache[lang_code] if lang then cats:insert("Mô đun " .. lang:getCanonicalName() .. "|accel") cats:insert(("Mô đun con Accel|%s"):format(lang:getCanonicalName())) return ("Mô đun này chứa các quy tắc tạo mục từ mới cho %s; xem [[WT:ACCEL]] để có cái nhìn tổng quan và [[Module:accel]] để biết thông tin về việc tạo các quy tắc mới.") :format(lang:makeCategoryLink()) end end, }, { regex = "^Mô đun:inc%-ash/dial/data/(.+)$", cat = "Mô đun Ashokan Prakrit|%1", process = function(title, cats) local word = title.fullText:match("^Module:inc%-ash/dial/data/(.+)$") if word then local lang = lang_cache["inc-ash"] return ("Mô đun này chứa dữ liệu về cách phát âm của %s trong các phương ngữ của %s.") :format(full_link({ term = word, lang = lang }, "term"), lang:makeCategoryLink()) end end, }, { regex = "^.+%-translit$", process = "translit", }, { regex = "^Mô đun:form of/lang%-data/(.+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "Mô đun dạng từ theo ngôn ngữ cụ thể") if lang then -- FIXME, display more info. return "Mô đun này chứa dữ liệu dạng ngôn ngữ cụ thể (thẻ, phím tắt, tham số lemma cơ sở, v.v.) cho " .. langname .. "." end end }, { regex = "^Mô đun:labels/data/lang/(.+)$", process = function(title, cats, lang_code) local lang = insert_lang_data_module_cats(cats, lang_code, "Mô-đun dữ liệu nhãn theo ngôn ngữ cụ thể") if lang then return { title = "label language-specific data documentation", args = { [1] = lang_code }, } end end }, { regex = "^Mô đun:category tree/lang/(.+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "Mô đun dữ liệu cây thể loại/lang") if lang then return "Mô đun này xử lý việc tạo ra các mô tả và phân loại cho các trang thể loại " .. langname .. " theo " .. "định dạng \"LABEL " .. langname .. "\" trong đó LABEL có thể là bất kỳ văn bản nào. Ví dụ là " .. "[[:Thể loại:Chia động từ 2.1 tiếng Bulgaria]] và [[:Thể loại:Danh từ trung tính gốc vòm mềm tiếng Nga]]. " .. "Mô đun này là một phần của hệ thống cây thể loại, là một khuôn khổ chung để tạo ra " .. "mô tả và phân loại các trang thể loại.\n\n" .. "Để biết thêm thông tin, hãy xem [[Module:category tree/lang/tài liệu]].\n\n" .. "'''LƯU Ý:''' Nếu bạn thêm một mô đun ngôn ngữ cụ thể mới, bạn phải thêm mã ngôn ngữ vào " .. "danh sách ở đầu [[Module:category tree/lang]] để mô đun được nhận dạng." end end }, { regex = "^Mô đun:category tree/topic/(.+)$", process = function(title, cats, submodule) cats:insert("Mô đun dữ liệu cây thể loại/topic| ") return { title = "topic cat data submodule documentation" } end }, { regex = "^Mô đun:category tree/(.+)$", process = function(title, cats, submodule) cats:insert("Mô đun dữ liệu cây thể loại| ") return { title = "category tree data submodule documentation" } end }, { regex = "^Mô đun:ja/data/(.+)$", cat = "Mô đun dữ liệu tiếng Nhật|%1", }, { regex = "^Mô đun:fi%-dialects/data/feature/Kettunen1940 ([0-9]+)$", cat = "Mô đun atlas dữ liệu phương ngữ tiếng Phần Lan|%1", process = function(title, cats, shard) return "Mô-đun này chứa phân đoạn " .. shard .. " của phiên bản trực tuyến tác phẩm năm 1940 của Lauri Kettunen " .. "''Suomen murteet III A. Murrekartasto'' (\"Finnish dialects III A: Dialect atlas\"). " .. "Nó đã được nhập và chuyển đổi từ urn:nbn:fi:csc-kata20151130145346403821, được xuất bản bởi " .. "''Kotimaisten kielten keskus'' theo giấy phép CC BY 4.0." end }, { regex = "^Mô đun:fi%-dialects/data/feature/(.+)", cat = "Mô đun dữ liệu phương ngữ tiếng Phần Lan|%1", }, { regex = "^Mô đun:fi%-dialects/data/word/(.+)", cat = "Mô đun dữ liệu phương ngữ tiếng Phần Lan|%1", }, { regex = "^Mô đun:Swadesh/data/([%l-]+)$", process = function(title, cats, lang_code) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "Mô đun Swadesh") if lang then return "Mô đun này chứa [[danh sách Swadesh]] có các từ vựng cơ bản trong " .. langname .. "." end end }, { regex = "^Mô đun:Swadesh/data/([%l-]+)/([^/]*)$", process = function(title, cats, lang_code, variety) local lang, langname = insert_lang_data_module_cats(cats, lang_code, "Mô đun Swadesh") if lang then local prefix = "Mô đun này chứa [[danh sách Swadesh]] có các từ vựng cơ bản trong " local etym_lang = get_lang(variety, nil, "allow etym") if etym_lang then return ("%s %s các kiểu khác nhau của %s."):format(prefix, etym_lang:getCanonicalName(), langname) end local script = get_script(variety) if script then return ("chữ viết %s %s %s."):format(prefix, langname, script:getCanonicalName()) end return ("%s %s các kiểu khác nhau của %s."):format(prefix, variety, langname) end end }, { regex = "^Mô đun:typing%-aids", process = function(title, cats) local data_suffix = title.fullText:match("^Module:typing%-aids/data/(.+)$") local sortkey if data_suffix then if data_suffix:find "^[%l-]+$" then local lang = get_lang(data_suffix) if lang then sortkey = lang:getCanonicalName() cats:insert("Mô đun dữ liệu " .. sortkey) end elseif data_suffix:find "^%u%l%l%l$" then local script = get_script(data_suffix) if script then sortkey = script:getCanonicalName() cats:insert(script:getCategoryName()) end end cats:insert("Mô-đun dữ liệu chèn ký tự|" .. (sortkey or data_suffix)) end end, }, { regex = "^Mô đun:R:([%l-]+):(.+)$", process = function(title, cats, lang_code, refname) local lang = lang_cache[lang_code] if lang then cats:insert("Mô đun " .. lang:getCanonicalName() .. "|" .. refname) cats:insert(("Mô đun tham khảo|%s"):format(lang:getCanonicalName())) return "Mô đun này triển khai bản mẫu tham khảo {{temp|R:" .. lang_code .. ":" .. refname .. "}}." end end, }, { regex = "^Mô đun:Quotations/([%l-]+)/?(.*)", process = "Quotation", }, { regex = "^Mô đun:affix/lang%-data/([%l-]+)", process = "affix lang-data", }, { regex = "^Mô đun:dialect synonyms/([%l-]+)$", process = function(title, cats, lang_code) local lang = lang_cache[lang_code] if lang then local langname = lang:getCanonicalName() cats:insert("Mô đun dữ liệu từ phương ngữ đồng nghĩa|" .. langname) cats:insert("Mô đun dữ liệu từ phương ngữ đồng nghĩa " .. langname .. "| ") return "Mô đun này chứa dữ liệu về các dạng cụ thể của " .. langname .. ", được sử dụng bởi " .. "{{tl|dialect synonyms}}. Các từ đồng nghĩa thực tế được chứa trong các mô đun con.\n\n" .. expand_template({ title = 'dial syn', args = { lang_code, ["demo mode"] = "y" } }) end end, }, { regex = "^Mô đun:dialect synonyms/([%l-]+)/(.+)$", process = function(title, cats, lang_code, term) local lang = lang_cache[lang_code] if lang then local langname = lang:getCanonicalName() cats:insert("Mô đun dữ liệu từ phương ngữ đồng nghĩa|" .. langname) cats:insert("Mô đun dữ liệu từ phương ngữ đồng nghĩa " .. langname .. "|" .. term) return ("Mô đun này chứa các từ phương ngữ đồng nghĩa %s cho {{mention|%s|%s}}.\n\n%s"):format(langname, lang_code, term, expand_template({ title = 'dial syn', args = { lang_code, term } })) end end, }, { regex = "^Mô đun:bibliography/data/([%l-]+)$", process = function(title, cats, lang_code) if lang_code == "preload" then return 'Được sử dụng làm mô hình cơ sở cho các ngôn ngữ khác khi nhấn vào nút "tạo mô đun con ngôn ngữ mới".' end local page = require(title.fullText).bib_page if not page then page = lang_cache[lang_code]:getCanonicalName() if page then cats:insert("Mô đun " ..page) end end cats:insert("Mô đun tham khảo") return "Mô-đun này chứa dữ liệu thư mục cho "..page..". Đối với thư mục được định dạng, xem '''[[Phụ lục:Thư mục học/"..page.."]]'''." end, }, } function export.show(frame) local boolean_default_false = {type = "boolean", default = false} local args = process_params(frame.args, { ["hr"] = true, ["for"] = true, ["from"] = true, ["allowondoc"] = boolean_default_false, -- Don't throw an error if used on a documentation subpage. ["notsubpage"] = boolean_default_false, ["nodoc"] = boolean_default_false, ["nolinks"] = boolean_default_false, -- suppress all "Useful links" ["nosandbox"] = boolean_default_false, -- supress sandbox }) local output = Array('\n<div class="documentation" style="display:block; clear:both">\n') local cats = Array() local nodoc = args.nodoc local title = args["for"] and new_title(args["for"]) or get_current_title() local doc_title = args.from ~= "-" and new_title(args.from or title.fullText .. '/tài liệu') or nil local contentModel = title.contentModel local pagetype, is_script_or_stylesheet = get_pagetype(title) local preload, fallback_docs, doc_content, old_doc_title, user_name, skin_name, needs_doc local doc_content_source = "Module:documentation2" local auto_generated_cat_source local cats_auto_generated = false if not args.allowondoc and is_documentation(title) then -- TODO: merge with {{documentation subpage}}, and choose behaviour based on the page type. error("Bản mẫu này không nên được sử dụng trên trang tài liệu. Vui lòng sử dụng [[Bản mẫu:documentation subpage]].") elseif is_sandbox(title) then local sandbox_ns = title.nsText preload = ("Template:Tài liệu 2/preload%s%sSandbox"):format( sandbox_ns == "Mô_đun" and sandbox_ns or "Bản_mẫu", title.rootText:match("^[Tt]hành viên:(.+)") and "Thành viên" or "" ) elseif pagetype:match("%f[%w]gadget%f[%W]") then preload = "Template:Tài liệu 2/preloadGadget" elseif pagetype:match("%f[%w]script%f[%W]") then -- .js if title.nsText == "MediaWiki" then preload = "Template:Tài liệu 2/preloadMediaWikiJavaScript" else preload = "Template:Tài liệu/preload" -- XXX if title.nsText == "Thành_viên" then user_name = title.rootText end end is_script_or_stylesheet = true elseif pagetype:match("%f[%w]stylesheet%f[%W]") then -- .css preload = "Template:Tài liệu/preload" -- XXX if title.nsText == "Thành_viên" then user_name = title.rootText end is_script_or_stylesheet = true elseif contentModel == "Scribunto" then -- Exclude pages in Module: which aren't Scribunto. preload = "Template:Tài liệu 2/preloadModule" elseif pagetype:match("%f[%w]bản_mẫu%f[%W]") or pagetype:match("%f[%w]project%f[%W]") then preload = "Template:Tài liệu/preload" end if doc_title and doc_title.isRedirect then old_doc_title = doc_title doc_title = doc_title.redirectTarget end output:insert("<dl class=\"plainlinks\" style=\"font-size: smaller;\">") local function get_module_doc_and_cats(categories_only) cats_auto_generated = true local automatic_cats = nil if user_name then fallback_docs = "documentation/fallback/user module" automatic_cats = {"Mô đun chỗ thử thành viên"} else for _, data in ipairs(module_regex) do local captures = {umatch(title.fullText, data.regex)} if #captures > 0 then local cat, process_function if is_callable(data.process) then process_function = data.process elseif type(data.process) == "string" then doc_content_source = "Mô đun:documentation2/functions/" .. data.process process_function = require(doc_content_source) end if process_function then doc_content = process_function(title, cats, unpack(captures)) end if type(doc_content) == "table" then doc_content_source = doc_content.title and "Bản_mẫu:" .. doc_content.title or doc_content_source doc_content = expand_template(doc_content) elseif doc_content ~= nil then doc_content = preprocess(doc_content) end cat = data.cat if cat then if type(cat) == "string" then cat = {cat} end for _, c in ipairs(cat) do insert(cats, (ugsub(title.fullText, data.regex, c))) end end break end end end if title.subpageText == "templates" then cats:insert("Mô đun giao diện bản mẫu") end if automatic_cats then for _, c in ipairs(automatic_cats) do cats:insert(c) end end if #cats == 0 then local auto_cats = categorize_module(frame, "return raw", "noerror") if #auto_cats > 0 then auto_generated_cat_source = "Module:module categorization" end for _, category in ipairs(auto_cats) do cats:insert(category) end end -- meaning module is not in user’s sandbox or one of many datamodule boring series needs_doc = not categories_only and not (automatic_cats or doc_content or fallback_docs) end -- Override automatic documentation, if present. if doc_title and doc_title.exists then local cats_auto_generated_text = "" if contentModel == "Scribunto" then local doc_page_content = doc_title.content -- Track then do nothing if there are uses of includeonly. The -- pattern is slightly too permissive, but any false-positives are -- obvious typos that should be corrected. if doc_page_content:lower():match("</?includeonly%f[%s/>][^>]*>") then track("module-includeonly") else -- Check for uses of {{module cat}}. find_templates treats the -- input as transcluded by default (i.e. it parses the wikitext -- which will be transcluded through to the module page). local module_cat for template in find_templates(doc_page_content) do if template:get_name() == "module cat" then module_cat = true break end end if not module_cat then get_module_doc_and_cats("categories only") auto_generated_cat_source = auto_generated_cat_source or doc_content_source cats_auto_generated_text = " Thể loại được tự động tạo bởi [[" .. auto_generated_cat_source .. "]]. <sup>[[" .. new_title(auto_generated_cat_source):fullUrl{action = "edit"} .. " sửa]]</sup>" end end end output:insert( "<dd><i style=\"font-size: larger;\">[[:en:Help:Documenting templates and modules|Tài liệu]] " .. "bên dưới nằm tại [[" .. doc_title.fullText .. "]]. " .. "<sup>[[" .. doc_title:fullUrl{action = "edit"} .. " sửa]]</sup>" .. cats_auto_generated_text .. "</i></dd>") else if contentModel == "Scribunto" then get_module_doc_and_cats(false) elseif title.nsText == "Bản_mẫu" then --cats:insert("Uncategorized templates") needs_doc = not (fallback_docs or nodoc) elseif user_name and is_script_or_stylesheet then skin_name = skins[title.text:sub(#title.rootText + 1):match("^/(%l+)%.[jc]ss?$")] if skin_name then fallback_docs = "documentation/fallback/user " .. contentModel end end if doc_content then output:insert( "<dd><i style=\"font-size: larger;\">[[:en:Help:Documenting templates and modules|Tài liệu]] " .. "bên dưới được " .. "tạo bởi [[" .. doc_content_source .. "]]. <sup>[[" .. new_title(doc_content_source):fullUrl{action = "edit"} .. " sửa]]</sup> </i></dd>") elseif not nodoc then if title.text:find("/sandbox%d*%f[/%z]") then local sandbox_of = title.fullText:gsub("/sandbox%d*%f[/%z]", "") output:insert( "<dd><i style=\"font-size: larger;\">Chỗ thử của" .. " [[" .. sandbox_of .. "|" .. sandbox_of .. "]]. <sup>[" .. compare_pages(title.fullText, sandbox_of, "khác") .. "]</sup></i></dd>\n") elseif title.text:find("/testcases%d*%f[/%z]") then local testcase_of = title.fullText:gsub("/testcases%d*%f[/%z]", "") output:insert( "<dd><i style=\"font-size: larger;\">Trường hợp kiểm thử của" .. " [[" .. testcase_of .. "|" .. testcase_of .. "]]. <sup>[" .. compare_pages(title.fullText, testcase_of, "khác") .. "]</sup></i></dd>\n") elseif doc_title then output:insert( "<dd><i style=\"font-size: larger;\">Trang " .. pagetype .. " này thiếu [[:en:Help:Documenting templates and modules|trang con tài liệu]]. " .. (fallback_docs and "Bạn có thể " or "Xin hãy ") .. "[" .. doc_title:fullUrl{action = "edit", preload = preload} .. " tạo trang tài liệu này].</i></dd>\n") else output:insert( "<dd><i style=\"font-size: larger; color: var(--wikt-palette-red-9,#FF0000);\">Không thể tự động tạo " .. "trang tài liệu cho " .. pagetype .." này.</i></dd>\n") end end end if startswith(title.fullText, "MediaWiki:Gadget-") then local is_gadget = false for line in gline(new_title("MediaWiki:Gadgets-definition").content) do local gadget, items = line:match("^%*%s*(%a[%w_-]*)%[.-%]|(.+)$") if not gadget then gadget, items = line:match("^%*%s*(%a[%w_-]*)|(.+)$") end if gadget then items = Array(split(items, "|")) for i, item in ipairs(items) do if title.fullText == ("MediaWiki:Gadget-" .. item) then is_gadget = true output:insert("<dd> ''Tập lệnh này là một phần của tiện ích <code>") output:insert(gadget) output:insert("</code> ([") output:insert(tostring(full_url("MediaWiki:Gadgets-definition", {action = "edit"}))) output:insert(" sửa định nghĩa])'' <dl>") output:insert("<dd> ''Mô tả ([") output:insert(tostring(full_url("MediaWiki:Gadget-" .. gadget, {action = "edit"}))) output:insert(" sửa])'': ") output:insert(preprocess(new_message('Gadget-' .. gadget):plain())) output:insert(" </dd>") items:remove(i) if #items > 0 then for j, item in ipairs(items) do items[j] = '[[MediaWiki:Gadget-' .. item .. '|' .. item .. ']]' end output:insert("<dd> ''Phần khác'': ") output:insert(list_to_text(items)) output:insert("</dd>") end output:insert("</dl></dd>") break end end end end if not is_gadget then output:insert("<dd> ''Tập lệnh này không phải là một phần của bất kỳ [") output:insert(tostring(full_url("Special:Gadgets", {uselang = "en"}))) output:insert(' tiện ích] nào ([') output:insert(tostring(full_url("MediaWiki:Gadgets-definition", {action = "edit"}))) output:insert(' sửa định nghĩa]).</dd>') -- else -- cats:insert("Wiktionary gadgets") end end if old_doc_title then output:insert("<dd> ''Đổi hướng từ'' [") output:insert(old_doc_title:fullUrl{redirect = "no"}) output:insert(" ") output:insert(old_doc_title.fullText) output:insert("] ([") output:insert(old_doc_title:fullUrl{action = "edit"}) output:insert(" sửa]).</dd>\n") end if not args.nolinks then local links = Array() if title.isSubpage and not args.notsubpage then links:insert("[[:" .. title.nsText .. ":" .. title.rootText .. "|trang gốc]]") links:insert("[[Special:PrefixIndex/" .. title.nsText .. ":" .. title.rootText .. "/|trang con của trang gốc]]") else links:insert("[[Special:PrefixIndex/" .. title.fullText .. "/|danh sách trang con]]") end links:insert( "[" .. tostring(full_url("Special:WhatLinksHere/" .. title.fullText, {hidetrans = true, hideredirs = true})) .. " liên kết]") if contentModel ~= "Scribunto" then links:insert( "[" .. tostring(full_url("Special:WhatLinksHere/" .. title.fullText, {hidelinks = true, hidetrans = true})) .. " đổi hướng]") end if is_script_or_stylesheet then if user_name then links:insert("[[Special:MyPage" .. title.text:sub(#title.rootText + 1) .. "|của bạn]]") end else links:insert( "[" .. tostring(full_url("Special:WhatLinksHere/" .. title.fullText, {hidelinks = true, hideredirs = true})) .. " nhúng]") end if contentModel == "Scribunto" then local is_testcases = title.isSubpage and title.subpageText == "testcases" local without_subpage = title.nsText .. ":" .. title.baseText if is_testcases then links:insert("[[:" .. without_subpage .. "|trường hợp mô đun đã kiểm thử]]") else links:insert("[[" .. without_subpage .. "/testcases|trường hợp kiểm thử]]") end if user_name then links:insert("[[User:" .. user_name .. "|trang thành viên]]") links:insert("[[User talk:" .. user_name .. "|trang thảo luận thành viên]]") links:insert("[[Special:PrefixIndex/User:" .. user_name .. "/|không gian thành viên]]") -- If sandbox module, add a link to the module that this is a sandbox of. -- Exclude user sandbox modules like [[User:Dine2016/sandbox]]. elseif title.text:find("/sandbox%d*%f[/%z]") then cats:insert("Chỗ thử mô đun") -- Sandbox modules don’t really need documentation. needs_doc = false -- Don't track user sandbox modules. local text_title = new_title(title.text) if not (text_title and text_title.namespace == 2) then track("sandbox to be moved") local sandbox_of, diff = title.baseText if title_exists(sandbox_of) then else track("no sandbox of") end end -- If not a sandbox module, add link to sandbox module. -- Sometimes there are multiple sandboxes for a single module: -- [[Module:sa-pronunc/sandbox]], [[Module:sa-pronunc/sandbox2]]. -- Occasionally sandbox modules have their own subpages that are also -- sandboxes: [[Module:grc-decl/sandbox/decl]]. else local sandbox_title if title.rootText == "grc-decl" then sandbox_title = string_insert(title.fullText, 16, "/sandbox") elseif is_testcases then sandbox_title = title.fullText:gsub("/testcases", "/sandbox") else sandbox_title = title.fullText .. "/sandbox" end local sandbox_link = "[[:" .. sandbox_title .. "|chỗ thử]]" local diff if title_exists(sandbox_title) then diff = " (" .. compare_pages(title.fullText, sandbox_title, "khác") .. ")" end links:insert(sandbox_link .. (diff or "")) end end if title.nsText == "Bản_mẫu" then -- Error search: all(any namespace), hastemplate (show pages using the template), insource (show source code), incategory (any/specific error) -- [[mw:Help:CirrusSearch]], [[w:Help:Searching/Regex]] -- apparently same with/without: &profile=advanced&fulltext=1 local errorq = 'searchengineselect=mediawiki&search=all: hastemplate:\"'..title.rootText..'\" insource:\"'..title.rootText..'\" incategory:' local eincategory = "Pages_with_module_errors|ParserFunction_errors|DisplayTitle_errors|Pages_with_ISBN_errors|Pages_with_ISSN_errors|Pages_with_reference_errors|Pages_with_syntax_highlighting_errors|Pages_with_TemplateStyles_errors" links:insert( '[' .. tostring(full_url('Special:Search', errorq..eincategory )) .. ' lỗi]' .. ' (' .. '[' .. tostring(full_url('Special:Search', errorq..'ParserFunction_errors' )) .. ' phân tích cú pháp]' .. '/' .. '[' .. tostring(full_url('Special:Search', errorq..'Pages_with_module_errors' )) .. ' mô đun]' .. ')' ) if title.isSubpage and title.text:find("/sandbox%d*%f[/%z]") then -- This is a sandbox template. -- At the moment there are no user sandbox templates with subpage -- “/sandbox”. cats:insert("Chỗ thử bản mẫu") -- Sandbox templates don’t really need documentation. needs_doc = false -- Will behave badly if “/sandbox” occurs twice in title! local sandbox_of = title.fullText:gsub("/sandbox%d*%f[/%z]", "") if title_exists(sandbox_of) then else track("no sandbox of") end -- This is a template that can have a sandbox. elseif not args.nosandbox then -- unless we tell it not to local sandbox_title = title.fullText .. "/sandbox" local diff if title_exists(sandbox_title) then diff = " (" .. compare_pages(title.fullText, sandbox_title, "khác") .. ")" end links:insert("[[:" .. sandbox_title .. "|chỗ thử]]" .. (diff or "")) end end if #links > 0 then output:insert("<dd> ''Liên kết hữu ích'': " .. links:concat(" • ") .. "</dd>") end end output:insert("</dl>\n") -- Show error from [[Module:category tree/topic cat/data]] on its submodules' -- documentation to, for instance, warn about duplicate labels. if startswith(title.fullText, "Mô đun:category tree/topic/") then local ok, err = pcall(require, "Mô đun:category tree/topic/data") if not ok then output:insert('<span class="error">' .. err .. '</span>\n\n') end end if doc_title and doc_title.exists then -- Override automatic documentation, if present. doc_content = expand_template{ title = doc_title.fullText } elseif not doc_content and fallback_docs then doc_content = expand_template{ title = fallback_docs, args = { ['user'] = user_name, ['page'] = title.fullText, ['skin name'] = skin_name, }, } end if doc_content then output:insert(doc_content) end output:insert('\n<span style="clear: both;" />') if cats_auto_generated and not cats[1] and (not doc_content or not doc_content:find("%[%[Category:")) then if contentModel == "Scribunto" then if not title.text:find("/testcases%d*%f[/%z]") then cats:insert("Mô đun chưa phân loại") end -- elseif title.nsText == "Bản mẫu" then -- cats:insert("Uncategorized templates") end end if needs_doc then if not title.text:find("/testcases%d*%f[/%z]") then cats:insert("Bản mẫu và mô đun chưa có tài liệu") end end for _, cat in ipairs(cats) do output:insert("[[Category:" .. cat .. "]]") end output:insert("</div>\n") return output:concat() end function export.module_auto_doc_table() local parts = {} local function ins(text) insert(parts, text) end ins('{|class="wikitable"') ins("! Regex !! Thể loại !! Mô đun xử lý") for _, spec in ipairs(module_regex) do local cat_text local cats = spec.cat if cats then local cat_parts = {} if type(cats) == "string" then cats = {cats} end for _, cat in ipairs(cats) do insert(cat_parts, ("<code>%s</code>"):format((cat:gsub("|", "&#124;")))) end cat_text = concat(cat_parts, ", ") else cat_text = "''(không được chỉ định)''" end ins("|-") ins(("| <code>%s</code> || %s || %s"):format(spec.regex, cat_text, is_callable(spec.process) and "''(xử lý nội bộ)''" or type(spec.process) == "string" and ("[[Module:documentation2/functions/%s]]"):format(spec.process) or "''(không có trình tạo tài liệu)''")) end ins("|}") return concat(parts, "\n") end -- Used by {{translit module documentation}}. function export.translitModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local translitModule = pagename local languageObjects = require("Module:languages/byTranslitModule")(translitModule) local codeInPagename = pagename:match("^([%l-]+)%-.*translit$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "tài liệu" then local agreement = languageObjects[2] and "" or "" categories:insert("[[Thể loại:Mô đun chuyển tự được sử dụng bởi " .. #languageObjects .. " ngôn ngữ" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function (lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "tài liệu" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[Category:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "tài liệu" and not title_exists("Mô_đun:" .. pagename .. "/testcases") then categories:insert("[[Thể loại:Mô đun chuyển tự không có trang con trường hợp kiểm thử]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "Nó " .. ( codeInPagenameInList and "cũng" or "" ) .. " được sử dụng để phiên âm " .. langs .. "." .. categories:concat() end -- Used by {{entry name module documentation}}. function export.entryNameModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local entryNameModule = pagename local languageObjects = require("Mô_đun:languages/byEntryNameModule")(entryNameModule) local codeInPagename = pagename:match("^([%l-]+)%-.*entryname$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "tài liệu" then local agreement = languageObjects[2] and "s" or "" categories:insert("[[Category:Mô đun tạo mục từ được sử dụng bởi " .. #languageObjects .. " ngôn ngữ" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function (lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "tài liệu" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[Category:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "tài liệu" and not title_exists("Mô_đun:" .. pagename .. "/testcases") then categories:insert("[[Category:Mô đun tạo tên mục từ không có trang con trường hợp kiểm thử]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "Nó " .. ( codeInPagenameInList and "cũng" or "" ) .. " được sử dụng để tạo tên mục từ cho " .. langs .. "." .. categories:concat() end -- Used by {{sortkey module documentation}}. function export.sortkeyModuleLangList(frame) local pagename, subpage if frame.args[1] then pagename = frame.args[1] else local title = get_current_title() subpage = title.subpageText pagename = title.text if subpage ~= pagename then pagename = title.rootText end end local sortkeyModule = pagename local languageObjects = require("Mô_đun:languages/bySortkeyModule")(sortkeyModule) local codeInPagename = pagename:match("^([%l-]+)%-.*sortkey$") local categories = Array() local codeInPagenameInList = false if codeInPagename then if languageObjects[1] and subpage ~= "tài liệu" then local agreement = languageObjects[2] and "s" or "" categories:insert("[[Category:Mô đun tạo Sortkey được sử dụng bởi " .. #languageObjects .. " ngôn ngữ" .. agreement .. "]]") end languageObjects = Array(languageObjects) :filter( function (lang) local result = lang:getCode() ~= codeInPagename codeInPagenameInList = codeInPagenameInList or result return result end) end if subpage ~= "tài liệu" then for script_code in pagename:gmatch("%f[^-%z]%u%l%l%l%f[-]") do local script = get_script(script_code) if script then categories:insert("[[Category:" .. script:getCategoryName() .. "]]") end end end if subpage ~= "tài liệu" and not title_exists("Mô_đun:" .. pagename .. "/testcases") then categories:insert("[[Category:Mô đun tạo Sortkey không có trang con trường hợp kiểm thử]]") end if not languageObjects[1] then return categories:concat() end local langs = Array(languageObjects) :sort( function(lang1, lang2) return lang1:getCode() < lang2:getCode() end) -- This will not error because languageObjects is not empty. :map(languageObjects[1].makeCategoryLink) :serialCommaJoin() return "Nó " .. ( codeInPagenameInList and "cũng" or "" ) .. " được sử dụng để sắp xếp " .. langs .. "." .. categories:concat() end return export bbetpkkrztu9xoqpc3po4xlhuh0ddrf Ngày của Mẹ 0 283671 2350791 2109990 2026-05-07T08:01:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350791 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Mothers' Day Cake crop.jpg|nhỏ|Một chiếc bánh kem với dòng chữ “Happy Mother's Day!” (Chúc mừng '''Ngày của Mẹ'''!).]] {{-etym-}} Từ ghép giữa {{compound|vi|ngày|của|mẹ}}; {{etym-calque|vi|en|Mother's Day|nocap=1}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[ngày|Ngày]] [[của]] [[mẹ|Mẹ]]}} # [[ngày|Ngày]] [[kỉ niệm]] để [[tôn vinh]] những người [[mẹ]], được tổ chức vào những thời gian khác nhau ở nhiều nơi trên thế giới, phổ biến nhất là vào [[tháng Ba]] hoặc [[tháng Năm]]. #* {{quote-news|vi|year=13/05/2018|author=Như Thủy|title=Người Mỹ chi 23 tỷ USD cho Ngày của Mẹ?|titleurl=https://vtv.vn/doi-song/nguoi-my-chi-23-ty-usd-cho-ngay-cua-me-20180513093012183.htm|work=VTV.vn|text=Khảo sát cũng chỉ ra xu hướng mua sắm trực tuyến trong '''Ngày của Mẹ''' tăng lên khi 32,4% người được hỏi cho biết sẽ mua đồ trên mạng cho mẹ.}} {{-synonym-}} * {{vie-l|Ngày Hiền Mẫu}} {{-trans-}} {{trans-top|Ngày kỉ niệm để tôn vinh những người mẹ}} * {{ara}}: {{t|ar|عِيد اَلْأُمّ|m}} * {{eng}}: {{t+|en|Mother's Day}} * {{pol}}: {{t+|pl|Dzień Matki|m}} * {{por}}: {{t+|pt|Dia das Mães|m}} * {{cat-2}}: {{t|ca|Dia de la Mare|m}} * {{deu}}: {{t+|de|Muttertag|m}} * {{est}}: {{t+|et|emadepäev}} * {{gla}}: {{t|gd|Là nam Màthraichean|m}} * {{glg}}: {{t|gl|día da nai}} * {{nld}}: {{t|nl|moederdag|m}} * {{hun}}: {{t+|hu|anyák napja}} * {{mal}}: {{t|ml|മാതൃദിനം}} * {{nor}}: ** {{nob}}: {{t|nb|morsdag|m}} ** {{nno}}: {{t|nn|morsdag|m}} * {{nav}}: {{t|nv|Amá Bééhániih}} * {{rus}}: {{t|ru|День ма́тери|m}} * {{jpn}}: {{t|ja|母の日|tr=ははのひ, haha-no hi}}, {{t|ja|マザーズデー|tr=mazāzudē}} * {{nrf}}: {{t|nrf|Fête des Méthes|f}} * {{fra}}: {{t+|fr|fête des Mères|f}} * {{fin}}: {{t+|fi|äitienpäivä}} * {{spa}}: {{t|es|Día de la Madre|m}} * {{tur}}: {{t|tr|Anneler Günü}} * {{swe}}: {{t|sv|mors dag}} * {{kor}}: {{t|ko|어머니의 날|sc=Kore}} * {{zho}}: ** {{cmn}}: {{t+|cmn|母親節|tr=mǔqīnjié}} ** {{yue}}: {{t|yue|母親節|tr=mou5 can1 zit3}} * {{ita}}: {{t|it|festa della mamma|f}} {{trans-bottom}} {{-see also-}} * {{vi-l|Vu Lan}} * {{vi-l|Ngày của Cha}} {{C|vi|Ngày lễ}} s76ue2b205gtymtmku32x1u7kqilmze 2351054 2350791 2026-05-07T10:47:18Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351054 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Mothers' Day Cake crop.jpg|nhỏ|Một chiếc bánh kem với dòng chữ “Happy Mother's Day!” (Chúc mừng '''Ngày của Mẹ'''!).]] {{-etym-}} Từ ghép giữa {{compound|vi|ngày|của|mẹ}}; {{etym-calque|vi|en|Mother's Day|nocap=1}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[ngày|Ngày]] [[của]] [[mẹ|Mẹ]]}} # [[ngày|Ngày]] [[kỉ niệm]] để [[tôn vinh]] những người [[mẹ]], được tổ chức vào những thời gian khác nhau ở nhiều nơi trên thế giới, phổ biến nhất là vào [[tháng Ba]] hoặc [[tháng Năm]]. #* {{quote-news|vi|year=13/05/2018|author=Như Thủy|title=Người Mỹ chi 23 tỷ USD cho Ngày của Mẹ?|titleurl=https://vtv.vn/doi-song/nguoi-my-chi-23-ty-usd-cho-ngay-cua-me-20180513093012183.htm|work=VTV.vn|text=Khảo sát cũng chỉ ra xu hướng mua sắm trực tuyến trong '''Ngày của Mẹ''' tăng lên khi 32,4% người được hỏi cho biết sẽ mua đồ trên mạng cho mẹ.}} {{-synonym-}} * {{vie-l|Ngày Hiền Mẫu}} {{-trans-}} {{trans-top|Ngày kỉ niệm để tôn vinh những người mẹ}} * {{ara}}: {{t|ar|عِيد اَلْأُمّ|m}} * {{eng}}: {{t+|en|Mother's Day}} * {{pol}}: {{t+|pl|Dzień Matki|m}} * {{por}}: {{t+|pt|Dia das Mães|m}} * {{cat-old}}: {{t|ca|Dia de la Mare|m}} * {{deu}}: {{t+|de|Muttertag|m}} * {{est}}: {{t+|et|emadepäev}} * {{gla}}: {{t|gd|Là nam Màthraichean|m}} * {{glg}}: {{t|gl|día da nai}} * {{nld}}: {{t|nl|moederdag|m}} * {{hun}}: {{t+|hu|anyák napja}} * {{mal}}: {{t|ml|മാതൃദിനം}} * {{nor}}: ** {{nob}}: {{t|nb|morsdag|m}} ** {{nno}}: {{t|nn|morsdag|m}} * {{nav}}: {{t|nv|Amá Bééhániih}} * {{rus}}: {{t|ru|День ма́тери|m}} * {{jpn}}: {{t|ja|母の日|tr=ははのひ, haha-no hi}}, {{t|ja|マザーズデー|tr=mazāzudē}} * {{nrf}}: {{t|nrf|Fête des Méthes|f}} * {{fra}}: {{t+|fr|fête des Mères|f}} * {{fin}}: {{t+|fi|äitienpäivä}} * {{spa}}: {{t|es|Día de la Madre|m}} * {{tur}}: {{t|tr|Anneler Günü}} * {{swe}}: {{t|sv|mors dag}} * {{kor}}: {{t|ko|어머니의 날|sc=Kore}} * {{zho}}: ** {{cmn}}: {{t+|cmn|母親節|tr=mǔqīnjié}} ** {{yue}}: {{t|yue|母親節|tr=mou5 can1 zit3}} * {{ita}}: {{t|it|festa della mamma|f}} {{trans-bottom}} {{-see also-}} * {{vi-l|Vu Lan}} * {{vi-l|Ngày của Cha}} {{C|vi|Ngày lễ}} j6kuxz6joifkizfr2zmygxv2o1h3scj hải âu cổ rụt 0 284723 2350792 2108105 2026-05-07T08:01:43Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350792 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Puffin (Fratercula arctica) in flight.jpg|nhỏ|'''Hải âu cổ rụt''' Đại Tây Dương (''Fratercula arctica'').]] {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[hải âu]] [[cổ]] [[rụt]]|cls=con}} # Tên gọi cho các loài [[chim biển]] thuộc chi {{mention|mul|Fratercula}}, có bộ [[lông]] chủ yếu là màu đen hoặc màu đen pha trắng với chiếc [[mỏ]] có màu sắc rực rỡ trong mùa [[sinh sản]]. #* '''29/06/2016''', Hà Vũ (theo Daily Mail), ''[https://kienthuc.net.vn/khoa-hoc/mong-bien-de-ngua-hai-au-co-rut-cuop-moi-703965.html Mòng biển đè ngửa hải âu cổ rụt cướp mồi]'', Kiến Thức: #*: {{quote|vi|Chim mòng biển đã đè ngửa chim '''hải âu cổ rụt''' để cướp những con cá nhỏ trong miệng con vật.}} {{-synonym-}} * {{vi-l|hải âu rụt cổ}} {{-drv-}} * {{vi-l|hải âu cổ rụt Đại Tây Dương}} (''{{ll|mul|Fratercula arctica}}'') * {{vi-l|hải âu cổ rụt mào lông}} (''{{ll|mul|Fratercula cirrhata}}'') * {{vi-l|hải âu cổ rụt sừng}} (''{{ll|mul|Fratercula corniculata}}'') {{-trans-}} {{trans-top|Tên gọi cho các loài chim biển thuộc chi ''Fratercula''}} * {{eng}}: {{t+|en|puffin}}, {{q|Anh|từ vùng miền}} {{t+|en|pope}}, {{t+|en|sea-parrot}} * {{cat-2}}: {{t+|ca|fraret|m}}, {{t+|ca|frare|m}} * {{nrf}}: {{t|nrf|gode à rouoge bé|f}} {{qualifier|Jersey}}, {{t|nrf|poffîn|m}} {{qualifier|Jersey}} * {{fra}}: {{t+|fr|macareux|m}} * {{ces}}: {{t|cs|papuchalk|m}} {{trans-bottom}} {{C|vi|Alcidae}} dctaw53l1zszyprskqssytvozo24u5o 2351055 2350792 2026-05-07T10:47:21Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351055 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Puffin (Fratercula arctica) in flight.jpg|nhỏ|'''Hải âu cổ rụt''' Đại Tây Dương (''Fratercula arctica'').]] {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[hải âu]] [[cổ]] [[rụt]]|cls=con}} # Tên gọi cho các loài [[chim biển]] thuộc chi {{mention|mul|Fratercula}}, có bộ [[lông]] chủ yếu là màu đen hoặc màu đen pha trắng với chiếc [[mỏ]] có màu sắc rực rỡ trong mùa [[sinh sản]]. #* '''29/06/2016''', Hà Vũ (theo Daily Mail), ''[https://kienthuc.net.vn/khoa-hoc/mong-bien-de-ngua-hai-au-co-rut-cuop-moi-703965.html Mòng biển đè ngửa hải âu cổ rụt cướp mồi]'', Kiến Thức: #*: {{quote|vi|Chim mòng biển đã đè ngửa chim '''hải âu cổ rụt''' để cướp những con cá nhỏ trong miệng con vật.}} {{-synonym-}} * {{vi-l|hải âu rụt cổ}} {{-drv-}} * {{vi-l|hải âu cổ rụt Đại Tây Dương}} (''{{ll|mul|Fratercula arctica}}'') * {{vi-l|hải âu cổ rụt mào lông}} (''{{ll|mul|Fratercula cirrhata}}'') * {{vi-l|hải âu cổ rụt sừng}} (''{{ll|mul|Fratercula corniculata}}'') {{-trans-}} {{trans-top|Tên gọi cho các loài chim biển thuộc chi ''Fratercula''}} * {{eng}}: {{t+|en|puffin}}, {{q|Anh|từ vùng miền}} {{t+|en|pope}}, {{t+|en|sea-parrot}} * {{cat-old}}: {{t+|ca|fraret|m}}, {{t+|ca|frare|m}} * {{nrf}}: {{t|nrf|gode à rouoge bé|f}} {{qualifier|Jersey}}, {{t|nrf|poffîn|m}} {{qualifier|Jersey}} * {{fra}}: {{t+|fr|macareux|m}} * {{ces}}: {{t|cs|papuchalk|m}} {{trans-bottom}} {{C|vi|Alcidae}} 4icirm916epiemms5959kvyvltssbbw chúc mừng năm mới 0 285190 2350793 2141669 2026-05-07T08:01:46Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350793 wikitext text/x-wiki {{-vie-}} {{phrasebook|vi}} [[Tập tin:Chúc Mừng Năm Mới banner.JPG|nhỏ|'''Chúc mừng năm mới'''.]] {{-etymology-}} Từ ghép giữa {{compound|vi|chúc mừng|năm mới}}. {{-pron-}} {{vie-pron}} {{-phrase-}} {{vi-phrase|head=[[chúc mừng]] [[năm mới]]!}} # {{n-g|Một lời chúc được dùng trong dịp [[năm mới]], để chào đón một năm mới.}} {{-usage-}} * Cụm từ này chủ yếu liên quan đến [[Tết Nguyên Đán]], nhưng tùy ngữ cảnh nó cũng có thể đề cập đến năm mới theo [[lịch Gregorius]] của phương Tây. Các lời chúc dài dòng hơn như {{mention|vi|chúc mừng năm mới [[dương lịch]]}} hay {{mention|vi|chúc mừng [[Tết Tây]]}} đôi khi cũng được sử dụng nhằm làm rõ nghĩa. {{-synonym-}} * {{q|được dùng cho Tết Âm lịch}} [[ăn]] [[Tết]] [[vui vẻ]], {{vi-l|cung chúc tân xuân}} * {{q|được dùng cho Tết Dương lịch}} chúc mừng năm mới [[dương lịch]], chúc mừng [[Tết Tây]] {{-trans-}} {{trans-top|Lời chúc được dùng trong dịp năm mới}} * {{ara}}: {{t+|ar|كُلُّ عَامٍ وَأَنْتُمْ بِخَيْرٍ|tr=kullu ʕāmin wa-ʔantum bi-ḵayrin}}, {{t|ar|سَنَة جَدِيدَة سَعِيدَة|tr=sana jadīda saʕīda}}, {{t|ar|عَام سَعِيد}} * {{afr}}: {{t|af|gelukkige nuwe jaar}}! * {{akl}}: {{t|akl|mahigugmaon nga bag-ong dag-on}} * {{sqi}}: {{t|sq|Gëzuar Vitin e Ri}} * {{amh}}: {{t|am|መልካም አዲስ አመት|sc=Ethi}} * {{eng}}: {{t+|en|happy New Year}} * {{arg}}: {{t|an|goyosa añada nueba}} * {{hye}}: {{t|hy|շնորհավոր Նոր Տարի}} * {{ast}}: {{t|ast|feliz añu nuevu}} * {{aze}}: {{t|az|Yeni İliniz mübarək}}, {{t|az|Yeni Ilin mübarək}} {{q|không trang trọng hoặc là số ít}}, {{t|az|yeni il qutlu olsun}} * {{bak}}: {{t|ba|Яңы йыл менән}} * {{eus}}: {{t|eu|urte berri on}} * {{bel}}: {{t|be|з Но́вым го́дам!}} * {{ben}}: {{t+|bn|শুভ নববর্ষ}} * {{ina}}: {{t|ia|felice anno nove}} * {{bre}}: {{t+|br|bloavezh mat}}, {{t|br|bloavez mad}} * {{bul}}: {{t|bg|Честита Но́ва годи́на}} * {{cat-2}}: {{t|ca|feliç any nou}}, {{t|ca|bon any}} * {{ceb}}: {{t|ceb|mabungahong bag-ong tuig}} * {{cbk}}: {{t|cbk|prospero año nuevo}} * {{nya}}: {{t|ny|chaka chabwino chatsopano}} * {{zdj}}: {{t|zdj|mwaha mwema}} * {{cor}}: {{t|kw|blydhen nowydh da}} * {{heb}}: {{t+|he|שנה טובה|tr=shaná tová|alt=שנה טובה \ שָׁנָה טוֹבָה}} * {{dan}}: {{t+|da|godt nytår}} * {{deu}}: {{t|de|ein gutes neues Jahr}}, {{t|de|gutes neues Jahr}}, {{t|de|fröhliches neues Jahr}}, {{t+|de|frohes neues Jahr}}, {{t|de|prosit Neujahr}}; {{t+|de|guten Rutsch}} {{q|nói trước khi bắt đầu năm mới}}, {{t+|de|guten Rutsch ins neue Jahr}} {{q|nói trước khi bắt đầu năm mới}} * {{est}}: {{t+|et|head uut aastat}} * {{fao}}: {{t|fo|gott nýggjár}} * {{gla}}: {{t|gd|Bliadhna Mhath Ùr}} * {{glg}}: {{t|gl|feliz aninovo}} * {{kal}}: {{t|kl|ukiortaami pilluaritsi}} * {{kat}}: {{t|ka|გილოცავ ახალ წელს|sc=Geor}}, {{t|ka|გილოცავთ ახალ წელს|sc=Geor}} * {{nds}}: ** {{nds-de}}: {{t|nds-de|Proost Neejohr}}, {{t|nds-de|Schönet ne'et Johr}}, {{t|nds-de|Frohet ne'et Johr}}, {{t|nds-de|Proost Niejohr}}, {{t|nds-de|Frohet ni'et Johr}}, {{t|nds-de|Frohet nie'et Johr}} * {{nld}}: {{t|nl|Gelukkig Nieuwjaar}} * {{hat}}: {{t|ht|ke kontan ane nouvo}} * {{haw}}: {{t|haw|hauʻoli makahiki hou}} * {{hil}}: {{t|hil|mahamungayaon nga bag-ong tuig}} * {{hin}}: {{t|hi|नए वर्ष की शुभकामनाएँ}}, {{t|hi|नया साल मुबारक}} * {{hun}}: {{q|kém lịch sự}} {{t+|hu|boldog új évet}}, {{q|thay mặt cho một người nói}} {{t|hu|boldog új évet kívánok}}, {{q|thay mặt cho nhiều người}} {{t|hu|boldog új évet kívánunk}} * {{ell}}: {{t+|el|καλή χρονιά}}, {{t+|el|ευτυχισμένος ο καινούριος χρόνος}}, {{t+|el|χρόνια πολλά}} * {{isl}}: {{t|is|farsælt komandi ár}}, {{t|is|gleðilegt nýtt ár}}, {{t|is|gleðilegt ár}} * {{ido}}: {{t|io|felica nova yaro}} * {{ilo}}: {{t|ilo|narang-ay a baro a tawen}} * {{ind}}: {{t|id|Selamat Tahun Baru}} * {{iku}}: {{t|iu|ᐊᕐᕌᒍᑖᖅᑲᐅᒥᑦ ᖁᕕᐊᓱᒋᑦ|sc=Cans}} * {{gle}}: {{t|ga|athbhliain faoi mhaise}}, {{t|ga|athbhliain faoi shéan is faoi mhaise}} * {{kac}}: {{t|kac|ngwi pyaw ai sháning ningnan rai u ga}} * {{kzj}}: {{t|kzj|Kotobian Toun Vagu}} * {{kan}}: {{t|kn|ಹೊಸ ವರ್ಷದ ಶುಭಾಷಯಗಳು|sc=Knda}} * {{pam}}: {{t|pam|masaplalang bayung banwa}} * {{kaz}}: {{t|kk|Жаңа жыл құтты болсын!|sc=Cyrl}} * {{khm}}: {{t|km|សួស្ដីឆ្នាំថ្មី|tr=soursdey chnamm tmei}} * {{kur}}: ** {{kmr}}: {{t+|kmr|sala nû pîroz be}}, {{t+|kmr|sersala we pîroz be}} * {{kir}}: {{t|ky|Жаны Жынылыздар менен|sc=Cyrl}} * {{lkt}}: {{t|lkt|ómakȟa tȟéča oíyokiphi}} * {{lao}}: {{t|lo|ຄຳອ່ວຍພອນປີໃຫມ່}}, {{t|lo|ຄຳອ່ວຽພອນປີໃຫມ່}} * {{lat}}: {{t|la|fēlīx sit Annus Novus}}, {{t|la|fēlīx sit annus novus}} * {{lav}}: {{t|lv|laimīgu jauno gadu}} * {{lin}}: {{t|ln|mobú elámu}}, {{t|ln|bonána}} * {{lit}}: {{t|lt|laimingų naujųjų metų}} * {{msa}}: {{t|ms|Selamat Tahun Baru}}, {{t|ms|Selamat Tahun Baharu}} * {{mkd}}: {{t|mk|Среќна Нова година|sc=Cyrl}} * {{mlg}}: {{t|mg|miarahaba tratry ny taona vaovao}} * {{mal}}: {{t|ml|നവവല്സര ആശംസകല്|sc=Mlym}} * {{mlt}}: {{t|mt|is-sena t-tajba}} * {{glv}}: {{t|gv|Blein Vie Noa}} * {{mri}}: {{t|mi|Tau Hou hari!}} * {{mya}}: {{t|my|နှစ်သစ်ကူး မင်္ဂလာပါ}} * {{mdf}}: {{t|mdf|Од Киза мархта}} * {{mon}}: {{t|mn|шинэ жилийн мэнд хүргье!|sc=Cyrl}} * {{nor}}: ** {{nob}}: {{t|nb|godt nyttår}}, {{t|nb|godt nytt år}} ** {{nno}}: {{t|nn|godt nyttår}}, {{t|nn|godt nytt år}}, {{t|nn|gledeleg nytt år}} * {{nav}}: {{t|nv|Nizhónígo Nináánááhai Dooleeł}}, {{t|nv|Baa Hózhǫ́ǫgo Nee Nínáádoohah}} {{q|nói trước khi bắt đầu năm mới}}, {{t|nv|Baa Hózhǫ́ǫgo Nee Nínáadoohah}}, {{t|nv|Hózhǫ́ǫgo Nińdoohah}}, {{t|nv|nił hózhǫ́ǫgo nee ńdoohah}} {{q|xưng hô với một người}}, {{t|nv|nihił hózhǫ́ǫgo nihee ńdoohah}} {{q|xưng hô với nhiều người}} * {{rus}}: {{t+|ru|с Но́вым го́дом}} * {{jpn}}: {{t|ja|良いお年をお迎え下さい|tr=よいおとしをおむかえください, yoi otoshi o o-mukae kudasai|sc=Jpan}} {{q|trang trọng, dùng trước khi năm mới bắt đầu}}, {{t+|ja|良いお年を|tr=yoi o-toshi o}} {{q|không trang trọng, dùng trước khi năm mới bắt đầu}}, {{t+|ja|明けましておめでとうございます|tr=akemashite omedetō gozaimasu}} {{q|trang trọng, dùng sau khi năm mới bắt đầu}}, {{t+|ja|明けましておめでとう|tr=akemashite omedetō}} {{q|không trang trọng, dùng sau khi năm mới bắt đầu}}, {{t+|ja|賀正|tr=がしょう, gashou}} * {{nrf}}: {{t|nrf|bouônne année}} * {{oci}}: {{t|oc|bonna annada}}, {{t|oc|bon cap d'an}}, {{t|oc|erós an nau}} {{q|Aran}} * {{oji}}: {{t|oj|mino-oshki-biboon}} * {{fra}}: {{t+|fr|bonne année}} * {{fin}}: {{t|fi|hyvää uutta vuotta}}, {{t|fi|onnellista uutta vuotta}} * {{epo}}: {{t|eo|feliĉan novjaron}} * {{ces}}: {{t+|cs|šťastný nový rok}} * {{tha}}: {{t+|th|สวัสดีปีใหม่}} * {{kor}}: {{t+|ko|새해 복 많이 받으세요}}, {{t+|ko|새해를 축하합니다}} {{qualifier|Triều Tiên}} * {{bcl}}: {{t|bcl|magayagayang bagong taon}} * {{zho}}: ** {{cmn}}: {{t+|cmn|新年快樂|tr=xīnnián kuàilè}}, {{t+|cmn|新年好|tr=xīnnián hǎo}}, {{t+|cmn|恭賀新禧|tr=gōnghèxīnxǐ}}, {{t+|cmn|恭喜發財}} {{q|thành ngữ}}, {{t+|cmn|恭喜发财|tr=gōngxǐ fācái}} ** {{yue}}: {{t|yue|新年快樂|tr=san1 nin4 faai3 lok6}}, {{t+|yue|恭喜發財}} {{q|thành ngữ}}, {{t|yue|恭喜发财|tr=gung1 hei2 faat3 coi4}} * {{cym}}: {{t|cy|Blwyddyn Newydd Dda}} * {{ita}}: {{t|it|felice anno nuovo}}, {{t|it|buon anno}} {{trans-bottom}} {{C|vi|Năm mới|Chào hỏi}} brkd8ju1epn9m9gtfyzy6xyr0bbf64f 2351056 2350793 2026-05-07T10:47:24Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351056 wikitext text/x-wiki {{-vie-}} {{phrasebook|vi}} [[Tập tin:Chúc Mừng Năm Mới banner.JPG|nhỏ|'''Chúc mừng năm mới'''.]] {{-etymology-}} Từ ghép giữa {{compound|vi|chúc mừng|năm mới}}. {{-pron-}} {{vie-pron}} {{-phrase-}} {{vi-phrase|head=[[chúc mừng]] [[năm mới]]!}} # {{n-g|Một lời chúc được dùng trong dịp [[năm mới]], để chào đón một năm mới.}} {{-usage-}} * Cụm từ này chủ yếu liên quan đến [[Tết Nguyên Đán]], nhưng tùy ngữ cảnh nó cũng có thể đề cập đến năm mới theo [[lịch Gregorius]] của phương Tây. Các lời chúc dài dòng hơn như {{mention|vi|chúc mừng năm mới [[dương lịch]]}} hay {{mention|vi|chúc mừng [[Tết Tây]]}} đôi khi cũng được sử dụng nhằm làm rõ nghĩa. {{-synonym-}} * {{q|được dùng cho Tết Âm lịch}} [[ăn]] [[Tết]] [[vui vẻ]], {{vi-l|cung chúc tân xuân}} * {{q|được dùng cho Tết Dương lịch}} chúc mừng năm mới [[dương lịch]], chúc mừng [[Tết Tây]] {{-trans-}} {{trans-top|Lời chúc được dùng trong dịp năm mới}} * {{ara}}: {{t+|ar|كُلُّ عَامٍ وَأَنْتُمْ بِخَيْرٍ|tr=kullu ʕāmin wa-ʔantum bi-ḵayrin}}, {{t|ar|سَنَة جَدِيدَة سَعِيدَة|tr=sana jadīda saʕīda}}, {{t|ar|عَام سَعِيد}} * {{afr}}: {{t|af|gelukkige nuwe jaar}}! * {{akl}}: {{t|akl|mahigugmaon nga bag-ong dag-on}} * {{sqi}}: {{t|sq|Gëzuar Vitin e Ri}} * {{amh}}: {{t|am|መልካም አዲስ አመት|sc=Ethi}} * {{eng}}: {{t+|en|happy New Year}} * {{arg}}: {{t|an|goyosa añada nueba}} * {{hye}}: {{t|hy|շնորհավոր Նոր Տարի}} * {{ast}}: {{t|ast|feliz añu nuevu}} * {{aze}}: {{t|az|Yeni İliniz mübarək}}, {{t|az|Yeni Ilin mübarək}} {{q|không trang trọng hoặc là số ít}}, {{t|az|yeni il qutlu olsun}} * {{bak}}: {{t|ba|Яңы йыл менән}} * {{eus}}: {{t|eu|urte berri on}} * {{bel}}: {{t|be|з Но́вым го́дам!}} * {{ben}}: {{t+|bn|শুভ নববর্ষ}} * {{ina}}: {{t|ia|felice anno nove}} * {{bre}}: {{t+|br|bloavezh mat}}, {{t|br|bloavez mad}} * {{bul}}: {{t|bg|Честита Но́ва годи́на}} * {{cat-old}}: {{t|ca|feliç any nou}}, {{t|ca|bon any}} * {{ceb}}: {{t|ceb|mabungahong bag-ong tuig}} * {{cbk}}: {{t|cbk|prospero año nuevo}} * {{nya}}: {{t|ny|chaka chabwino chatsopano}} * {{zdj}}: {{t|zdj|mwaha mwema}} * {{cor}}: {{t|kw|blydhen nowydh da}} * {{heb}}: {{t+|he|שנה טובה|tr=shaná tová|alt=שנה טובה \ שָׁנָה טוֹבָה}} * {{dan}}: {{t+|da|godt nytår}} * {{deu}}: {{t|de|ein gutes neues Jahr}}, {{t|de|gutes neues Jahr}}, {{t|de|fröhliches neues Jahr}}, {{t+|de|frohes neues Jahr}}, {{t|de|prosit Neujahr}}; {{t+|de|guten Rutsch}} {{q|nói trước khi bắt đầu năm mới}}, {{t+|de|guten Rutsch ins neue Jahr}} {{q|nói trước khi bắt đầu năm mới}} * {{est}}: {{t+|et|head uut aastat}} * {{fao}}: {{t|fo|gott nýggjár}} * {{gla}}: {{t|gd|Bliadhna Mhath Ùr}} * {{glg}}: {{t|gl|feliz aninovo}} * {{kal}}: {{t|kl|ukiortaami pilluaritsi}} * {{kat}}: {{t|ka|გილოცავ ახალ წელს|sc=Geor}}, {{t|ka|გილოცავთ ახალ წელს|sc=Geor}} * {{nds}}: ** {{nds-de}}: {{t|nds-de|Proost Neejohr}}, {{t|nds-de|Schönet ne'et Johr}}, {{t|nds-de|Frohet ne'et Johr}}, {{t|nds-de|Proost Niejohr}}, {{t|nds-de|Frohet ni'et Johr}}, {{t|nds-de|Frohet nie'et Johr}} * {{nld}}: {{t|nl|Gelukkig Nieuwjaar}} * {{hat}}: {{t|ht|ke kontan ane nouvo}} * {{haw}}: {{t|haw|hauʻoli makahiki hou}} * {{hil}}: {{t|hil|mahamungayaon nga bag-ong tuig}} * {{hin}}: {{t|hi|नए वर्ष की शुभकामनाएँ}}, {{t|hi|नया साल मुबारक}} * {{hun}}: {{q|kém lịch sự}} {{t+|hu|boldog új évet}}, {{q|thay mặt cho một người nói}} {{t|hu|boldog új évet kívánok}}, {{q|thay mặt cho nhiều người}} {{t|hu|boldog új évet kívánunk}} * {{ell}}: {{t+|el|καλή χρονιά}}, {{t+|el|ευτυχισμένος ο καινούριος χρόνος}}, {{t+|el|χρόνια πολλά}} * {{isl}}: {{t|is|farsælt komandi ár}}, {{t|is|gleðilegt nýtt ár}}, {{t|is|gleðilegt ár}} * {{ido}}: {{t|io|felica nova yaro}} * {{ilo}}: {{t|ilo|narang-ay a baro a tawen}} * {{ind}}: {{t|id|Selamat Tahun Baru}} * {{iku}}: {{t|iu|ᐊᕐᕌᒍᑖᖅᑲᐅᒥᑦ ᖁᕕᐊᓱᒋᑦ|sc=Cans}} * {{gle}}: {{t|ga|athbhliain faoi mhaise}}, {{t|ga|athbhliain faoi shéan is faoi mhaise}} * {{kac}}: {{t|kac|ngwi pyaw ai sháning ningnan rai u ga}} * {{kzj}}: {{t|kzj|Kotobian Toun Vagu}} * {{kan}}: {{t|kn|ಹೊಸ ವರ್ಷದ ಶುಭಾಷಯಗಳು|sc=Knda}} * {{pam}}: {{t|pam|masaplalang bayung banwa}} * {{kaz}}: {{t|kk|Жаңа жыл құтты болсын!|sc=Cyrl}} * {{khm}}: {{t|km|សួស្ដីឆ្នាំថ្មី|tr=soursdey chnamm tmei}} * {{kur}}: ** {{kmr}}: {{t+|kmr|sala nû pîroz be}}, {{t+|kmr|sersala we pîroz be}} * {{kir}}: {{t|ky|Жаны Жынылыздар менен|sc=Cyrl}} * {{lkt}}: {{t|lkt|ómakȟa tȟéča oíyokiphi}} * {{lao}}: {{t|lo|ຄຳອ່ວຍພອນປີໃຫມ່}}, {{t|lo|ຄຳອ່ວຽພອນປີໃຫມ່}} * {{lat}}: {{t|la|fēlīx sit Annus Novus}}, {{t|la|fēlīx sit annus novus}} * {{lav}}: {{t|lv|laimīgu jauno gadu}} * {{lin}}: {{t|ln|mobú elámu}}, {{t|ln|bonána}} * {{lit}}: {{t|lt|laimingų naujųjų metų}} * {{msa}}: {{t|ms|Selamat Tahun Baru}}, {{t|ms|Selamat Tahun Baharu}} * {{mkd}}: {{t|mk|Среќна Нова година|sc=Cyrl}} * {{mlg}}: {{t|mg|miarahaba tratry ny taona vaovao}} * {{mal}}: {{t|ml|നവവല്സര ആശംസകല്|sc=Mlym}} * {{mlt}}: {{t|mt|is-sena t-tajba}} * {{glv}}: {{t|gv|Blein Vie Noa}} * {{mri}}: {{t|mi|Tau Hou hari!}} * {{mya}}: {{t|my|နှစ်သစ်ကူး မင်္ဂလာပါ}} * {{mdf}}: {{t|mdf|Од Киза мархта}} * {{mon}}: {{t|mn|шинэ жилийн мэнд хүргье!|sc=Cyrl}} * {{nor}}: ** {{nob}}: {{t|nb|godt nyttår}}, {{t|nb|godt nytt år}} ** {{nno}}: {{t|nn|godt nyttår}}, {{t|nn|godt nytt år}}, {{t|nn|gledeleg nytt år}} * {{nav}}: {{t|nv|Nizhónígo Nináánááhai Dooleeł}}, {{t|nv|Baa Hózhǫ́ǫgo Nee Nínáádoohah}} {{q|nói trước khi bắt đầu năm mới}}, {{t|nv|Baa Hózhǫ́ǫgo Nee Nínáadoohah}}, {{t|nv|Hózhǫ́ǫgo Nińdoohah}}, {{t|nv|nił hózhǫ́ǫgo nee ńdoohah}} {{q|xưng hô với một người}}, {{t|nv|nihił hózhǫ́ǫgo nihee ńdoohah}} {{q|xưng hô với nhiều người}} * {{rus}}: {{t+|ru|с Но́вым го́дом}} * {{jpn}}: {{t|ja|良いお年をお迎え下さい|tr=よいおとしをおむかえください, yoi otoshi o o-mukae kudasai|sc=Jpan}} {{q|trang trọng, dùng trước khi năm mới bắt đầu}}, {{t+|ja|良いお年を|tr=yoi o-toshi o}} {{q|không trang trọng, dùng trước khi năm mới bắt đầu}}, {{t+|ja|明けましておめでとうございます|tr=akemashite omedetō gozaimasu}} {{q|trang trọng, dùng sau khi năm mới bắt đầu}}, {{t+|ja|明けましておめでとう|tr=akemashite omedetō}} {{q|không trang trọng, dùng sau khi năm mới bắt đầu}}, {{t+|ja|賀正|tr=がしょう, gashou}} * {{nrf}}: {{t|nrf|bouônne année}} * {{oci}}: {{t|oc|bonna annada}}, {{t|oc|bon cap d'an}}, {{t|oc|erós an nau}} {{q|Aran}} * {{oji}}: {{t|oj|mino-oshki-biboon}} * {{fra}}: {{t+|fr|bonne année}} * {{fin}}: {{t|fi|hyvää uutta vuotta}}, {{t|fi|onnellista uutta vuotta}} * {{epo}}: {{t|eo|feliĉan novjaron}} * {{ces}}: {{t+|cs|šťastný nový rok}} * {{tha}}: {{t+|th|สวัสดีปีใหม่}} * {{kor}}: {{t+|ko|새해 복 많이 받으세요}}, {{t+|ko|새해를 축하합니다}} {{qualifier|Triều Tiên}} * {{bcl}}: {{t|bcl|magayagayang bagong taon}} * {{zho}}: ** {{cmn}}: {{t+|cmn|新年快樂|tr=xīnnián kuàilè}}, {{t+|cmn|新年好|tr=xīnnián hǎo}}, {{t+|cmn|恭賀新禧|tr=gōnghèxīnxǐ}}, {{t+|cmn|恭喜發財}} {{q|thành ngữ}}, {{t+|cmn|恭喜发财|tr=gōngxǐ fācái}} ** {{yue}}: {{t|yue|新年快樂|tr=san1 nin4 faai3 lok6}}, {{t+|yue|恭喜發財}} {{q|thành ngữ}}, {{t|yue|恭喜发财|tr=gung1 hei2 faat3 coi4}} * {{cym}}: {{t|cy|Blwyddyn Newydd Dda}} * {{ita}}: {{t|it|felice anno nuovo}}, {{t|it|buon anno}} {{trans-bottom}} {{C|vi|Năm mới|Chào hỏi}} pnv6eebrq4ik2n0e2mhbvp5adn8b57v nàng tiên cá 0 285272 2350794 2109364 2026-05-07T08:01:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350794 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Waterhouse a mermaid.jpg|nhỏ|'''Nàng tiên cá''' trong bức tranh "A Mermaid" (1900) của họa sĩ {{w|John William Waterhouse}}.]] {{-etym-}} Từ ghép giữa {{compound|vi|nàng tiên|cá}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # Sinh vật [[thần thoại]] có phần đầu và phần thân trên của [[phụ nữ]], còn phần dưới là đuôi cá. #* '''30/12/2012''', Huyền Thanh, ''[https://danviet.vn/theo-dau-nang-tien-ca-dai-su-du-lich-cua-dan-mach-777762977.htm Theo dấu Nàng tiên cá - đại sứ du lịch của Đan Mạch]'', Dân Việt: #*: {{quote|vi|Bên cạnh những thứ khổng lồ ấy, '''nàng tiên cá''' ngồi trên một tảng đá granit chênh vênh, trông hết sức nhỏ bé, lặng lẽ, khuôn mặt u buồn nửa hướng vào bờ, nửa nhìn ra biển.}} {{-synonym-}} * {{vie-l|mĩ nhân ngư}} {{-trans-}} {{trans-top|Sinh vật với phần trên của phụ nữ, phần dưới là đuôi cá}} * {{ara}}: {{t|ar|خَيَلَان|f}}, {{t|ar|اِبْنَة الْبَحْر|f}}, {{t|ar|حُورِيَّة الْبَحْر|f}}, {{t|ar|عَرُوسَة الْبَحْر|f}}, {{t|ar|حُورِيَّة الْمَاء|f}} * {{sqi}}: {{t+|sq|sirenë|f}}, {{t|sq|rusale|f}} * {{eng}}: {{t+|en|mermaid}} * {{hye}}: {{t+|hy|ջրահարս}} * {{ast}}: {{t|ast|serena|f}}, {{t|ast|sirena|f}} * {{aze}}: {{t|az|supərisi}}, {{t|az|su pərisi}} * {{pol}}: {{t+|pl|syrena|f}}, {{t+|pl|rusałka|f}}, {{t+|pl|panna wodna|f}}, {{t+|pl|boginka|f}} * {{fas}}: {{t|fa|پری دریایی|tr=pari-ye daryâyi}} * {{bel}}: {{t|be|руса́лка|f}}, {{t|be|сірэ́на|f}}, {{t|be|ная́да|f}} * {{ben}}: {{t|bn|মৎস্যকন্যা}} * {{por}}: {{t+|pt|sereia|f}} * {{bul}}: {{t|bg|морска́ сире́на|f}}, {{t+|bg|русалка|f}} * {{cat-2}}: {{t+|ca|sirena|f}} * {{cor}}: {{t|kw|morvoren|f}} * {{heb}}: {{t+|he|בַּת יָם|f|tr=bat yam}} * {{dan}}: {{t|da|havfrue|c}} * {{deu}}: {{t+|de|Nixe|f}}, {{t|de|Wassernixe|f}}, {{t|de|Seejungfrau|f}}, {{t+|de|Meerjungfrau|f}} * {{est}}: {{t|et|merineitsi}} * {{gla}}: {{t|gd|maighdeann-mhara|f}} * {{glg}}: {{t+|gl|serea|f}} * {{kat}}: {{t|ka|ქალთევზა}}, {{t+|ka|ალი}}, {{t|ka|სირინოზი}} * {{nld}}: {{t+|nl|zeemeermin|f}}, {{t+|nl|meermin|f}} * {{haw}}: {{t|haw|wahine hiʻu iʻa}} * {{hin}}: {{t|hi|जलपरी|tr=jalparī}}, {{t|hi|मत्स्यांगना}} * {{hun}}: {{t+|hu|hableány}}, {{t+|hu|sellő}} * {{ell}}: {{t+|el|γοργόνα|f}}, {{t+|el|σειρήνα|f}} * {{isl}}: {{t+|is|hafmey|f}} * {{ido}}: {{t+|io|sireno}} * {{gle}}: {{t|ga|maighdean mhara|f}}, {{t|ga|murúch|f}} * {{kaz}}: {{t|kk|су перісі}} * {{khm}}: {{t+|km|មច្ឆានុ}}, {{t|km|រក្សសី}} * {{kum}}: {{t|kum|суванасы}} * {{kir}}: {{t|ky|суу периси}} * {{lao}}: {{t|lo|ນາງເງືອກ}}, {{t|lo|ເງືອກ}} * {{lat}}: {{t|la|Sirena|f}}, {{t|la|femina marina}}, {{t|la|puella marina}}, {{t|la|semipuella marina}}, {{t|la|oceanide|f}}, {{t|la|Nereis|f}} * {{lav}}: {{t+|lv|nāra|f}} * {{lit}}: {{t|lt|undinė|f}} * {{mkd}}: {{t|mk|сире́на|f}}, {{t|mk|морска самовила|f}}, {{t|mk|морска вила|f}} * {{msa}}: {{t|ms|ikan duyung}} * {{mlt}}: {{t|mt|sirena|f}} * {{mya}}: {{t+|my|ရေသူမ}} * {{nor}}: ** {{nob}}: {{t|nb|havfrue|m|f}} ** {{nno}}: {{t|nn|havfru|f}}, {{t|nn|havfrue|f}} * {{nav}}: {{t|nv|chʼikę́ę́h łóóʼ}} * {{rus}}: {{t+|ru|руса́лка|f}}, {{t+|ru|сире́на|f}}, {{t+|ru|ная́да|f}}, {{t|ru|морска́я де́ва|f}} * {{jpn}}: {{t+|ja|人魚|tr=にんぎょ, ningyo}} * {{fra}}: {{t+|fr|sirène|f}} * {{fin}}: {{t+|fi|merenneito}} * {{epo}}: {{t|eo|sireno}}, {{t|eo|marvirino}} * {{ron}}: {{t+|ro|sirenă|f}} * {{ces}}: {{t|cs|mořská panna|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|сирена}} ** {{Latn}}: {{t+|sh|sirena}} * {{slk}}: {{t|sk|morská panna|f}} * {{slv}}: {{t+|sl|morska deklica|f}} * {{tgl}}: {{t|tl|sirena}} * {{tgk}}: {{t|tg|парии обӣ}} * {{tat}}: {{t|tt|су анасы}} * {{aii}}: {{t|aii|ܟܲܠܬܵܐ ܕܝܵܡܵܐ|f|tr=kaltā d-yāmā}} * {{spa}}: {{t+|es|sirena|f}} * {{tel}}: {{t|te|మత్స్యకన్య}} * {{tha}}: {{t+|th|นางเงือก}}, {{t+|th|เงือก}} * {{tur}}: {{t+|tr|deniz kızı}}, {{t+|tr|denizkızı}}, {{t|tr|susulu}}, {{t|tr|susuna}} * {{swe}}: {{t+|sv|sjöjungfru|c}}, {{t+|sv|havsfru|c}} * {{kor}}: {{t+|ko|인어(人魚)}} * {{zho}}: ** {{cmn}}: {{t+|cmn|人魚|tr=rényú}}, {{t+|cmn|美人魚|tr=měirényú}} ** {{yue}}: {{t|yue|人魚|tr=jan4 jyu4}}, {{t|yue|美人魚|tr=mei5 jan4 jyu4}} * {{tuk}}: {{t|tk|suw perisi}} * {{ukr}}: {{t+|uk|руса́лка|f}}, {{t|uk|сире́на|f}}, {{t|uk|ная́да|f}}, {{t|uk|морська́ ді́ва|f}}, {{t|uk|морська́ па́нна|f}} * {{uzb}}: {{t|uz|rusalka}}, {{t|uz|suv parisi}} * {{cym}}: {{t|cy|môr-forwyn|f}} * {{ita}}: {{t+|it|sirena|f}} * {{yid}}: {{t|yi|ים־מיידל|n|tr=yam-meydl}} * {{zea}}: {{t|zea|merreminne|f}} {{trans-bottom}} {{-see also-}} * {{l|mul|🧜‍♀️}} {{C|vi|Người cá|Nhân vật}} a82n7j0olnrz8fyy2y4y41gvb475pqc 2351057 2350794 2026-05-07T10:47:27Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351057 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Waterhouse a mermaid.jpg|nhỏ|'''Nàng tiên cá''' trong bức tranh "A Mermaid" (1900) của họa sĩ {{w|John William Waterhouse}}.]] {{-etym-}} Từ ghép giữa {{compound|vi|nàng tiên|cá}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} # Sinh vật [[thần thoại]] có phần đầu và phần thân trên của [[phụ nữ]], còn phần dưới là đuôi cá. #* '''30/12/2012''', Huyền Thanh, ''[https://danviet.vn/theo-dau-nang-tien-ca-dai-su-du-lich-cua-dan-mach-777762977.htm Theo dấu Nàng tiên cá - đại sứ du lịch của Đan Mạch]'', Dân Việt: #*: {{quote|vi|Bên cạnh những thứ khổng lồ ấy, '''nàng tiên cá''' ngồi trên một tảng đá granit chênh vênh, trông hết sức nhỏ bé, lặng lẽ, khuôn mặt u buồn nửa hướng vào bờ, nửa nhìn ra biển.}} {{-synonym-}} * {{vie-l|mĩ nhân ngư}} {{-trans-}} {{trans-top|Sinh vật với phần trên của phụ nữ, phần dưới là đuôi cá}} * {{ara}}: {{t|ar|خَيَلَان|f}}, {{t|ar|اِبْنَة الْبَحْر|f}}, {{t|ar|حُورِيَّة الْبَحْر|f}}, {{t|ar|عَرُوسَة الْبَحْر|f}}, {{t|ar|حُورِيَّة الْمَاء|f}} * {{sqi}}: {{t+|sq|sirenë|f}}, {{t|sq|rusale|f}} * {{eng}}: {{t+|en|mermaid}} * {{hye}}: {{t+|hy|ջրահարս}} * {{ast}}: {{t|ast|serena|f}}, {{t|ast|sirena|f}} * {{aze}}: {{t|az|supərisi}}, {{t|az|su pərisi}} * {{pol}}: {{t+|pl|syrena|f}}, {{t+|pl|rusałka|f}}, {{t+|pl|panna wodna|f}}, {{t+|pl|boginka|f}} * {{fas}}: {{t|fa|پری دریایی|tr=pari-ye daryâyi}} * {{bel}}: {{t|be|руса́лка|f}}, {{t|be|сірэ́на|f}}, {{t|be|ная́да|f}} * {{ben}}: {{t|bn|মৎস্যকন্যা}} * {{por}}: {{t+|pt|sereia|f}} * {{bul}}: {{t|bg|морска́ сире́на|f}}, {{t+|bg|русалка|f}} * {{cat-old}}: {{t+|ca|sirena|f}} * {{cor}}: {{t|kw|morvoren|f}} * {{heb}}: {{t+|he|בַּת יָם|f|tr=bat yam}} * {{dan}}: {{t|da|havfrue|c}} * {{deu}}: {{t+|de|Nixe|f}}, {{t|de|Wassernixe|f}}, {{t|de|Seejungfrau|f}}, {{t+|de|Meerjungfrau|f}} * {{est}}: {{t|et|merineitsi}} * {{gla}}: {{t|gd|maighdeann-mhara|f}} * {{glg}}: {{t+|gl|serea|f}} * {{kat}}: {{t|ka|ქალთევზა}}, {{t+|ka|ალი}}, {{t|ka|სირინოზი}} * {{nld}}: {{t+|nl|zeemeermin|f}}, {{t+|nl|meermin|f}} * {{haw}}: {{t|haw|wahine hiʻu iʻa}} * {{hin}}: {{t|hi|जलपरी|tr=jalparī}}, {{t|hi|मत्स्यांगना}} * {{hun}}: {{t+|hu|hableány}}, {{t+|hu|sellő}} * {{ell}}: {{t+|el|γοργόνα|f}}, {{t+|el|σειρήνα|f}} * {{isl}}: {{t+|is|hafmey|f}} * {{ido}}: {{t+|io|sireno}} * {{gle}}: {{t|ga|maighdean mhara|f}}, {{t|ga|murúch|f}} * {{kaz}}: {{t|kk|су перісі}} * {{khm}}: {{t+|km|មច្ឆានុ}}, {{t|km|រក្សសី}} * {{kum}}: {{t|kum|суванасы}} * {{kir}}: {{t|ky|суу периси}} * {{lao}}: {{t|lo|ນາງເງືອກ}}, {{t|lo|ເງືອກ}} * {{lat}}: {{t|la|Sirena|f}}, {{t|la|femina marina}}, {{t|la|puella marina}}, {{t|la|semipuella marina}}, {{t|la|oceanide|f}}, {{t|la|Nereis|f}} * {{lav}}: {{t+|lv|nāra|f}} * {{lit}}: {{t|lt|undinė|f}} * {{mkd}}: {{t|mk|сире́на|f}}, {{t|mk|морска самовила|f}}, {{t|mk|морска вила|f}} * {{msa}}: {{t|ms|ikan duyung}} * {{mlt}}: {{t|mt|sirena|f}} * {{mya}}: {{t+|my|ရေသူမ}} * {{nor}}: ** {{nob}}: {{t|nb|havfrue|m|f}} ** {{nno}}: {{t|nn|havfru|f}}, {{t|nn|havfrue|f}} * {{nav}}: {{t|nv|chʼikę́ę́h łóóʼ}} * {{rus}}: {{t+|ru|руса́лка|f}}, {{t+|ru|сире́на|f}}, {{t+|ru|ная́да|f}}, {{t|ru|морска́я де́ва|f}} * {{jpn}}: {{t+|ja|人魚|tr=にんぎょ, ningyo}} * {{fra}}: {{t+|fr|sirène|f}} * {{fin}}: {{t+|fi|merenneito}} * {{epo}}: {{t|eo|sireno}}, {{t|eo|marvirino}} * {{ron}}: {{t+|ro|sirenă|f}} * {{ces}}: {{t|cs|mořská panna|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|сирена}} ** {{Latn}}: {{t+|sh|sirena}} * {{slk}}: {{t|sk|morská panna|f}} * {{slv}}: {{t+|sl|morska deklica|f}} * {{tgl}}: {{t|tl|sirena}} * {{tgk}}: {{t|tg|парии обӣ}} * {{tat}}: {{t|tt|су анасы}} * {{aii}}: {{t|aii|ܟܲܠܬܵܐ ܕܝܵܡܵܐ|f|tr=kaltā d-yāmā}} * {{spa}}: {{t+|es|sirena|f}} * {{tel}}: {{t|te|మత్స్యకన్య}} * {{tha}}: {{t+|th|นางเงือก}}, {{t+|th|เงือก}} * {{tur}}: {{t+|tr|deniz kızı}}, {{t+|tr|denizkızı}}, {{t|tr|susulu}}, {{t|tr|susuna}} * {{swe}}: {{t+|sv|sjöjungfru|c}}, {{t+|sv|havsfru|c}} * {{kor}}: {{t+|ko|인어(人魚)}} * {{zho}}: ** {{cmn}}: {{t+|cmn|人魚|tr=rényú}}, {{t+|cmn|美人魚|tr=měirényú}} ** {{yue}}: {{t|yue|人魚|tr=jan4 jyu4}}, {{t|yue|美人魚|tr=mei5 jan4 jyu4}} * {{tuk}}: {{t|tk|suw perisi}} * {{ukr}}: {{t+|uk|руса́лка|f}}, {{t|uk|сире́на|f}}, {{t|uk|ная́да|f}}, {{t|uk|морська́ ді́ва|f}}, {{t|uk|морська́ па́нна|f}} * {{uzb}}: {{t|uz|rusalka}}, {{t|uz|suv parisi}} * {{cym}}: {{t|cy|môr-forwyn|f}} * {{ita}}: {{t+|it|sirena|f}} * {{yid}}: {{t|yi|ים־מיידל|n|tr=yam-meydl}} * {{zea}}: {{t|zea|merreminne|f}} {{trans-bottom}} {{-see also-}} * {{l|mul|🧜‍♀️}} {{C|vi|Người cá|Nhân vật}} oz282u0zu5h6gl7mp8p16pn4u0esdo5 chúc mừng sinh nhật 0 285448 2350817 2110078 2026-05-07T08:08:31Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350817 wikitext text/x-wiki {{-vie-}} {{phrasebook|vi}} {{-etymology-}} Từ ghép giữa {{compound|vi|chúc mừng|sinh nhật}}. {{-pron-}} {{vie-pron}} {{-phrase-}} {{vi-phrase|head=[[chúc mừng]] [[sinh nhật]]!}} # {{n-g|Lời chúc cho một ai đó vào dịp [[sinh nhật]] của họ}}. #: {{ux|vi|'''Chúc mừng sinh nhật''' con gái yêu quý của bố nhé!}} {{-trans-}} {{trans-top|Lời chúc sinh nhật ai đó}} * {{ara}}: {{t+|ar|كُلُّ عَامٍ وَأَنْتُمْ بِخَيْرٍ|tr=kullu ʕāmin wa-ʔantum bi-ḵayrin}}, {{t|ar|عِيد مِيلَاد سَعِيد}}, {{t|ar|[[سَنَة]] [[حلو|حُلْوَة]]|tr=sana ḥulwa}} ** {{arz}}: {{t|arz|كل سنة وانت طيب|tr=kulli sina wi-inta ṭayyib}} * {{afr}}: {{t|af|gelukkige verjaarsdag}}, {{t|af|lekker verjaar}} * {{sqi}}: {{t|sq|gëzuar ditëlindjen}} * {{amh}}: {{t|am|መልካም ልደት}} * {{eng}}: {{t+|en|happy birthday}} * {{arc}}: ** {{aii}}: {{t|aii|ܥܐܕܐ ܕܡܘܠܕܘܟ ܗܘܐ ܒܪܝܟܐ|tr=ʿēḏā d'mawlāḏuḵ hāwē brīḵā}} * {{hye}}: {{t|hy|ծնունդդ շնորհավոր}}, {{t|hy|[[շնորհավոր]] [[տարեդարձդ]]}} * {{ast}}: {{t|ast|feliz cumpleaños}} * {{aym}}: {{t|ay|kusisiñ mara phuqhapan}} * {{aze}}: {{t|az|ad gününüz mübarək}} {{q|với người nhiều tuổi hơn}}, {{t|az|ad günün mübarək}} {{q|với người ít tuổi hơn}} ** {{Cyrl}}: {{t|az|ад ҝүнүнүз мүбарәк}} {{q|với người nhiều tuổi hơn}}, {{t|az|ад ҝүнүн мүбарәк}} {{q|với người ít tuổi hơn}} * {{bak}}: {{t|ba|тыуған көнөң менән}} * {{eus}}: {{t|eu|zorionak zure urtebetetze egunean}}, {{t|eu|zorionak}} * {{bel}}: {{t|be|з днём нараджэ́ння}} * {{ben}}: {{t+|bn|শুভ জন্মদিন}} * {{bis}}: {{t|bi|yumi selebretem de blong bon blong yu}} * {{bre}}: {{t+|br|deiz-ha-bloaz laouen}} * {{bul}}: {{t|bg|чести́т рожде́н ден}} * {{cat-2}}: {{t+|ca|per molts anys}} * {{cha}}: {{t|ch|biba kumplianos}} * {{che}}: {{t|ce|вина де декъала хуьлда хьан}} * {{chr}}: {{t|chr|ᏣᏕᏘᏱᏍᎬᎢ ᎠᎵᎮᎵᏍᏗ ᎠᏆᏚᎵᎭ}} * {{cre}}: {{t|cr|ᒥᔪ ᑎᐱᐢᑲ}} * {{cmo}}: {{t|cmo|មអាកនារទែស|tr=mʔak nar t̤ɛ̆h}} * {{dan}}: {{t+|da|tillykke med fødselsdagen}}, {{t+|da|tillykke}} * {{deu}}: {{t+|de|alles Gute zum Geburtstag}}, {{t|de|herzlichen Glückwunsch zum Geburtstag}}, {{qualifier|không trang trọng}} {{t|de|viel Glück zum Geburtstag}} ** {{gsw}}: {{t|gsw|gueter Geburtsdaa}} * {{est}}: {{t|et|palju õnne sünnipäevaks}} * {{fao}}: {{t|fo|til lukku við føðingardegnum}}, {{t|fo|til lukku við degnum}}, {{t|fo|til lukku}} * {{gl}}: {{t|gl|feliz aniversario}} * {{kal}}: {{t|kl|inuuinni pilluarit}} * {{ka}}: {{t|ka|გილოცავ დაბადების დღეს}} * {{guj}}: {{qualifier|Ấn Độ}} {{t|gu|જન્મદિવસની શુભેચ્છાઓ}}, {{t|gu|જન્મદિવસની હાર્દિક શુભેચ્છા}} * {{nld}}: {{t|nl|gelukkige verjaardag}} {{q|tiêu chuẩn}}, {{t|nl|gefeliciteerd met je verjaardag}}, {{t+|nl|gefeliciteerd}}, {{t+|nl|proficiat}}, {{t|nl|fijne verjaardag}} * {{ell}}: {{t|el|να τα εκατοστήσεις}}, {{t+|el|χρόνια πολλά|n-p}}, {{t|el|να τα εκατοστίσεις}} ** {{grc}}: {{t|grc|ὄλβιον}}, {{t|grc|γενέθλιον ἦμαρ}} * {{mya}}: {{t|my|မွေးနေ့မင်္ဂလာပါ}} * {{fr}}: {{t+|fr|bon anniversaire}}, {{t+|fr|joyeux anniversaire}} * {{fin}}: {{t|fi|hyvää syntymäpäivää}} {{q|trang trọng}}, {{t+|fi|onneksi olkoon}} {{q|chúc mừng}}, {{t+|fi|onnea}}, {{t|fi|paljon onnea}} {{q|thông tục, các dịp nói chung nhưng thường được dùng cho sinh nhật}} * {{eo}}: {{t|eo|feliĉan naskiĝtagon}} * {{ces}}: {{t|cs|všechno nejlepší}}, {{t|cs|všechno nejlepší k narozeninám}} * {{bcl}}: {{t|bcl|maugmang aldaw nin pagkamundag}} * {{dtp}}: {{t|dtp|kotobian tadau kinosusuon}} * {{zho}}: ** {{hak}}: {{t|hak|生日快樂|tr=sâng-ngit khoai-lo̍k}} ** {{nan}}: {{t|nan|生日快樂|tr=seⁿ-ji̍t-khòai-lo̍k, siⁿ-ji̍t-khòai-lo̍k}} ** {{wuu}}: {{t|wuu|生日快樂}} ** {{cmn}}: {{t+|cmn|生日快樂|tr=shēngrì kuàilè}}, {{t|cmn|[[祝]][[你]][[生日快樂]]|tr=zhù nǐ shēngrì kuàilè}} ** {{yue}}: {{t|yue|生日快樂|tr=saang1 jat6 faai3 lok6}} * {{tk}}: {{t|tk|doglan günüň gutly bolsun}} {{trans-bottom}} 93cxnjj9jd85cgsnnmpe3xngza9lxaq 2351058 2350817 2026-05-07T10:47:30Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351058 wikitext text/x-wiki {{-vie-}} {{phrasebook|vi}} {{-etymology-}} Từ ghép giữa {{compound|vi|chúc mừng|sinh nhật}}. {{-pron-}} {{vie-pron}} {{-phrase-}} {{vi-phrase|head=[[chúc mừng]] [[sinh nhật]]!}} # {{n-g|Lời chúc cho một ai đó vào dịp [[sinh nhật]] của họ}}. #: {{ux|vi|'''Chúc mừng sinh nhật''' con gái yêu quý của bố nhé!}} {{-trans-}} {{trans-top|Lời chúc sinh nhật ai đó}} * {{ara}}: {{t+|ar|كُلُّ عَامٍ وَأَنْتُمْ بِخَيْرٍ|tr=kullu ʕāmin wa-ʔantum bi-ḵayrin}}, {{t|ar|عِيد مِيلَاد سَعِيد}}, {{t|ar|[[سَنَة]] [[حلو|حُلْوَة]]|tr=sana ḥulwa}} ** {{arz}}: {{t|arz|كل سنة وانت طيب|tr=kulli sina wi-inta ṭayyib}} * {{afr}}: {{t|af|gelukkige verjaarsdag}}, {{t|af|lekker verjaar}} * {{sqi}}: {{t|sq|gëzuar ditëlindjen}} * {{amh}}: {{t|am|መልካም ልደት}} * {{eng}}: {{t+|en|happy birthday}} * {{arc}}: ** {{aii}}: {{t|aii|ܥܐܕܐ ܕܡܘܠܕܘܟ ܗܘܐ ܒܪܝܟܐ|tr=ʿēḏā d'mawlāḏuḵ hāwē brīḵā}} * {{hye}}: {{t|hy|ծնունդդ շնորհավոր}}, {{t|hy|[[շնորհավոր]] [[տարեդարձդ]]}} * {{ast}}: {{t|ast|feliz cumpleaños}} * {{aym}}: {{t|ay|kusisiñ mara phuqhapan}} * {{aze}}: {{t|az|ad gününüz mübarək}} {{q|với người nhiều tuổi hơn}}, {{t|az|ad günün mübarək}} {{q|với người ít tuổi hơn}} ** {{Cyrl}}: {{t|az|ад ҝүнүнүз мүбарәк}} {{q|với người nhiều tuổi hơn}}, {{t|az|ад ҝүнүн мүбарәк}} {{q|với người ít tuổi hơn}} * {{bak}}: {{t|ba|тыуған көнөң менән}} * {{eus}}: {{t|eu|zorionak zure urtebetetze egunean}}, {{t|eu|zorionak}} * {{bel}}: {{t|be|з днём нараджэ́ння}} * {{ben}}: {{t+|bn|শুভ জন্মদিন}} * {{bis}}: {{t|bi|yumi selebretem de blong bon blong yu}} * {{bre}}: {{t+|br|deiz-ha-bloaz laouen}} * {{bul}}: {{t|bg|чести́т рожде́н ден}} * {{cat-old}}: {{t+|ca|per molts anys}} * {{cha}}: {{t|ch|biba kumplianos}} * {{che}}: {{t|ce|вина де декъала хуьлда хьан}} * {{chr}}: {{t|chr|ᏣᏕᏘᏱᏍᎬᎢ ᎠᎵᎮᎵᏍᏗ ᎠᏆᏚᎵᎭ}} * {{cre}}: {{t|cr|ᒥᔪ ᑎᐱᐢᑲ}} * {{cmo}}: {{t|cmo|មអាកនារទែស|tr=mʔak nar t̤ɛ̆h}} * {{dan}}: {{t+|da|tillykke med fødselsdagen}}, {{t+|da|tillykke}} * {{deu}}: {{t+|de|alles Gute zum Geburtstag}}, {{t|de|herzlichen Glückwunsch zum Geburtstag}}, {{qualifier|không trang trọng}} {{t|de|viel Glück zum Geburtstag}} ** {{gsw}}: {{t|gsw|gueter Geburtsdaa}} * {{est}}: {{t|et|palju õnne sünnipäevaks}} * {{fao}}: {{t|fo|til lukku við føðingardegnum}}, {{t|fo|til lukku við degnum}}, {{t|fo|til lukku}} * {{gl}}: {{t|gl|feliz aniversario}} * {{kal}}: {{t|kl|inuuinni pilluarit}} * {{ka}}: {{t|ka|გილოცავ დაბადების დღეს}} * {{guj}}: {{qualifier|Ấn Độ}} {{t|gu|જન્મદિવસની શુભેચ્છાઓ}}, {{t|gu|જન્મદિવસની હાર્દિક શુભેચ્છા}} * {{nld}}: {{t|nl|gelukkige verjaardag}} {{q|tiêu chuẩn}}, {{t|nl|gefeliciteerd met je verjaardag}}, {{t+|nl|gefeliciteerd}}, {{t+|nl|proficiat}}, {{t|nl|fijne verjaardag}} * {{ell}}: {{t|el|να τα εκατοστήσεις}}, {{t+|el|χρόνια πολλά|n-p}}, {{t|el|να τα εκατοστίσεις}} ** {{grc}}: {{t|grc|ὄλβιον}}, {{t|grc|γενέθλιον ἦμαρ}} * {{mya}}: {{t|my|မွေးနေ့မင်္ဂလာပါ}} * {{fr}}: {{t+|fr|bon anniversaire}}, {{t+|fr|joyeux anniversaire}} * {{fin}}: {{t|fi|hyvää syntymäpäivää}} {{q|trang trọng}}, {{t+|fi|onneksi olkoon}} {{q|chúc mừng}}, {{t+|fi|onnea}}, {{t|fi|paljon onnea}} {{q|thông tục, các dịp nói chung nhưng thường được dùng cho sinh nhật}} * {{eo}}: {{t|eo|feliĉan naskiĝtagon}} * {{ces}}: {{t|cs|všechno nejlepší}}, {{t|cs|všechno nejlepší k narozeninám}} * {{bcl}}: {{t|bcl|maugmang aldaw nin pagkamundag}} * {{dtp}}: {{t|dtp|kotobian tadau kinosusuon}} * {{zho}}: ** {{hak}}: {{t|hak|生日快樂|tr=sâng-ngit khoai-lo̍k}} ** {{nan}}: {{t|nan|生日快樂|tr=seⁿ-ji̍t-khòai-lo̍k, siⁿ-ji̍t-khòai-lo̍k}} ** {{wuu}}: {{t|wuu|生日快樂}} ** {{cmn}}: {{t+|cmn|生日快樂|tr=shēngrì kuàilè}}, {{t|cmn|[[祝]][[你]][[生日快樂]]|tr=zhù nǐ shēngrì kuàilè}} ** {{yue}}: {{t|yue|生日快樂|tr=saang1 jat6 faai3 lok6}} * {{tk}}: {{t|tk|doglan günüň gutly bolsun}} {{trans-bottom}} 54dyzuqpohhjgmt3rpn2i7skp0xoinb Nam Phi 0 288588 2350795 2268980 2026-05-07T08:01:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350795 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Flag of South Africa.svg|nhỏ|Quốc kì '''Nam Phi'''.]] [[Tập tin:LocationSouthAfrica.svg|nhỏ|Cộng hoà '''Nam Phi'''.]] {{-etymology-}} {{vie-etym-sino|南|nam, phía nam|非|châu Phi}}. {{-pron-}} {{vie-pron}} {{-pr-noun-}} {{vie-pr-noun}} # Phần phía [[nam]] của [[lục địa]] [[châu Phi]]. # {{senseid|vi|Q258}} {{place|vi|quốc gia|r/[[Nam Phi|khu vực Nam Phi]]|capital=Pretoria|capital2=Cape Town|capital3=Bloemfontein|official=Cộng hoà Nam Phi}}. #* {{quote-journal|vi|title=Tsitsikamma - viên ngọc xanh của Nam Phi|author=Lê Công Hội|journal=[[w:Hànộimới|Báo Hànộimới]]|year=22/1/2022|url=https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archiveurl=https://web.archive.org/web/20231203061509/https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archivedate=3/12/2023|passage=Đi theo tuyến đường số 62, du khách sẽ đến Langkloof, nơi được coi là “vựa hoa quả” của cả '''Nam Phi'''.}} {{-coordinate-}} {{col-auto|title=khu vực|vi|Tây Phi|Đông Phi|Trung Phi|Bắc Phi}} {{-trans-}} {{trans-top|Phần phía nam lục địa châu Phi}} * {{af}}: {{t|af|Suider-Afrika}}, {{t|af|Suider-Afrika}} * {{eng}}: {{t+|en|Southern Africa}} * {{et}}: {{t|et|Lõuna-Aafrika}} * {{nl}}: {{t|nl|Zuidelijk Afrika|n}} * {{fr}}: {{t+|fr|Afrique australe}} * {{fi}}: {{t|fi|[[eteläinen]] [[Afrikka]]}}, {{t|fi|[[eteläinen|Eteläinen]] [[Afrikka]]}} * {{sw}}: {{t|sw|Afrika ya Kusini}} * {{spa}}: {{t|es|África austral}} * {{ko}}: {{t|ko|남아프리카}} * {{zh}}: *: {{cmn}}: {{t+|cmn|南部非洲|tr=Nánbù Fēizhōu}}, {{t+|cmn|南非}} {{trans-bottom}} {{trans-top|Quốc gia}} * {{ar}}: {{t|ar|جَنُوب أَفْرِيقْيَا|f}}, {{t|ar|أَفْرِيقِيَا الْجَنُوبِيَّة|f}} * {{af}}: {{t+|af|Suid-Afrika}} * {{sq}}: {{t|sq|Afrikë Jugore|f}}, {{t|sq|Afrika Jugore|f}} {{q|dạng xác định}} * {{am}}: {{t|am|ደቡብ አፍሪካ}} * {{eng}}: {{t+|en|South Africa}} * {{hy}}: {{t|hy|Հարավային Աֆրիկա}} * {{ast}}: {{t+|ast|Sudáfrica|f}} * {{az}}: {{t+|az|Cənubi Afrika}} * {{pl}}: {{t+|pl|Afryka Południowa|f}} * {{fas}}: *: {{prs}}: {{t|prs|آفْرِیقَایِ جَنُوبِی}} *: {{fa-ira}}: {{t|fa-ira|آفْریقایِ جُنوبی}} *: {{fa-cls}}: {{t|fa-cls|آفْرِیقَایِ جَنُوبِی}} * {{eu}}: {{t|eu|Hego Afrika}} * {{bar}}: {{t|bar|Sidafrika}} * {{se}}: {{t|se|Mátta-Afrihká}} * {{nso}}: {{t|nso|Afrika Borwa}} * {{be}}: {{t|be|Паўднёвая А́фрыка|f}} * {{bn}}: {{t+|bn|দক্ষিণ আফ্রিকা}} * {{pt}}: {{t+|pt|África do Sul|f}} * {{ia}}: {{t|ia|Africa del Sud}} * {{br}}: {{t+|br|Suafrika}} * {{bg}}: {{t|bg|Ю́жна А́фрика|f}} * {{cat-2}}: {{t+|ca|Sud-àfrica|f}}, {{t|ca|Àfrica del Sud|f}} * {{co}}: {{t|co|Sudafrica|m}} * {{dv}}: {{t+|dv|ދެކުނު އެފްރިކާ}} * {{he}}: {{t|he|דְּרוֹם אַפְרִיקָה|f|tr=drom áfrika}} * {{ug}}: {{t|ug|جەنۇبىي ئافرىقا}} * {{dan}}: {{t+|da|Sydafrika|n}} * {{de}}: {{t+|de|Südafrika|n}} * {{pdc}}: {{t|pdc|Saut Afrikaa}} * {{est}}: {{t|et|Lõuna-Aafrika}}, {{t|et|LAV}} * {{fao}}: {{t|fo|Suðurafrika|n}} * {{stq}}: {{t|stq|Suud-Afrikoa}} * {{gd}}: {{t|gd|Afraga a Deas}}, {{t|gd|Poblachd Afraga a Deas}} * {{gl}}: {{t+|gl|Suráfrica|f}}, {{t+|gl|África do Sur|f}} * {{kl}}: {{t|kl|Afrika Kujalleq}} * {{ka}}: {{t|ka|სამხრეთი აფრიკა}} * {{nds}}: *: {{nds-nl}}: {{t|nds-nl|Zuud-Afrika}} *: {{nds-de}}: {{t|nds-de|Süüdafrika}} * {{nl}}: {{t+|nl|Zuid-Afrika|n}} * {{ha}}: {{t|ha|Afirka ta Kudu|f}} * {{haw}}: {{t|haw|ʻApelika Hema}} * {{hin}}: {{t+|hi|दक्षिण अफ़्रीका|m}}, {{t|hi|साउथ अफ़्रीका|m}} * {{hun}}: {{t+|hu|Dél-afrikai Köztársaság}} * {{el}}: {{t+|el|Νότια Αφρική|f}} * {{is}}: {{t+|is|Suður-Afríka|f}} * {{id}}: {{t+|id|Afrika Selatan}} * {{ga}}: {{t|ga|Afraic Theas|f|alt=an Afraic Theas}} * {{kk}}: {{t+|kk|Оңтүстік Африка}} * {{km}}: {{t|km|អាហ្វ្រិកខាងត្បូង}} * {{naq}}: {{t|naq|ǁHui!gaeb|m}} * {{ku}}: *: {{kmr}}: {{t|kmr|Afrîka Başûr}} * {{fkv}}: {{t|fkv|Etelä-Aafrikka}} * {{ky}}: {{t+|ky|Түштүк Африка}} * {{lao}}: {{t|lo|ອາຟຣິກາໃຕ້}}, {{t|lo|ອາຝະລິກາໃຕ້}}, {{t|lo|ອາຟຣິກໃຕ້}}, {{t|lo|ອາຟະລິກໃຕ້}}, {{t|lo|ອາຟຣິກກາໃຕ້}} * {{la}}: {{t|la|Africa Australis|f}}, {{t|la|Africa Meridionalis|f}} * {{lv}}: {{t|lv|Dienvidāfrika|f}} * {{li}}: {{t|li|Zuid-Afrika}} * {{lt}}: {{t|lt|Pietų Afrika|f}} * {{langname|lb}}: {{t+|lb|Südafrika}} * {{ms}}: {{t+|ms|Afrika Selatan}} * {{mk}}: {{t+|mk|Јужна Африка|f}} * {{mt}}: {{t|mt|Afrika t'Isfel|f|alt=l-Afrika t'Isfel}}, {{t|mt|Sud Afrika|f|alt=is-Sud Afrika}} * {{gv}}: {{t|gv|Yn Affrick Yiass}} * {{mi}}: {{t|mi|Āwherika ki te Tonga}} * {{my}}: {{t|my|တောင်အာဖရိက}} * {{mon}}: *: {{Cyrl}}: {{t|mn|Өмнөд Африк}} *: {{Mong}}: {{t|mn|ᠡᠮᠦᠨᠡᠳᠦ ᠠᠹᠷᠢᠺᠠ}} * {{nor}}: *: {{nb}}: {{t+|nb|Sør-Afrika|n}} *: {{nn}}: {{t+|nn|Sør-Afrika|n}} * {{nv}}: {{t|nv|Kéyah Naakai Łizhinii Bikéyah Shádiʼááhjí Siʼánígíí}} * {{rus}}: {{t|ru|Ю́жная А́фрика|f}} * {{ja}}: {{t|ja|南アフリカ|tr=みなみアフリカ, Minami Afurika}}, {{t+|ja|南ア|tr=なんあ, Nan'a}} * {{ps}}: {{t|ps|سويلي افريقا|f|tr=soeli afriqā}} * {{fr}}: {{t+|fr|Afrique du Sud|f}} * {{fin}}: {{t+|fi|Etelä-Afrikka}} * {{eo}}: {{t+|eo|Sud-Afriko}} * {{rar}}: {{t|rar|‘Āperika Tonga}} * {{ro}}: {{t+|ro|Africa de Sud|f}} * {{sc}}: {{t|sc|Sudàfrica|m}} * {{sco}}: {{t|sco|Sooth Africae}} * {{ces}}: {{t|cs|Jižní Afrika|f}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|Ју̏жна̄ А̀фрика|f}} *: {{Latn}}: {{t|sh|Jȕžnā Àfrika|f}} * {{scn}}: {{t|scn|Àfrica dû Sud|f}}, {{t|scn|Sudàfrica|m}} * {{si}}: {{t|si|දකුණු අප්‍රිකාව}} * {{sk}}: {{t|sk|Južná Afrika|f}} * {{sl}}: {{t|sl|Južna Afrika|f}} * {{so}}: {{t|so|Koonfur Afrika}} * {{st}}: {{t+|st|Afrika Borwa}} * {{sw}}: {{t+|sw|Afrika Kusini}} * {{tgl}}: {{t+|tl|Timog Aprika}} * {{tg}}: {{t+|tg|Африқои Ҷанубӣ}} * {{tt}}: {{t|tt|Көньяк Африка}} * {{aii}}: {{t|aii|ܬܲܝܡܲܢ ܐܲܦܪܝܼܩܵܐ|f}} * {{spa}}: {{t+|es|Sudáfrica|f}} * {{fy}}: {{t|fy|Súd-Afrika}} * {{te}}: {{t|te|దక్షిణాఫ్రికా}} * {{tha}}: {{t+|th|แอฟริกาใต้}} * {{tur}}: {{t+|tr|Güney Afrika}} * {{sv}}: {{t+|sv|Sydafrika|n}} * {{ti}}: {{t|ti|ደቡብ ኣፍሪቃ}} * {{ts}}: {{t|ts|Afrika-Dzonga}} * {{tn}}: {{t|tn|Aforika Borwa}} * {{ko}}: {{t|ko|^남아프리카}}, {{t+|ko|^남아공(南阿共)}} * {{zh}}: *: {{hak}}: {{t|hak|南非|tr=Nàm-fî}} *: {{nan}}: {{t|nan|南非|tr=Lâm-hui}} *: {{wuu}}: {{t|wuu|南非}} *: {{cmn}}: {{t+|cmn|南非}} *: {{yue}} {{t|yue|南非}} * {{tk}}: {{t|tk|Günorta Afrika}} * {{uk}}: {{t+|uk|Півде́нна А́фрика|f}} * {{ur}}: {{t|ur|جُنُوبی اَفْرِیقَہ|m}}, {{t|ur|جَنُوبی اَفْرِیقَہ|m}}, {{t|ur|ساؤُتھ اَفْرِیقَہ|m}} * {{uz}}: {{t|uz|Janubiy Ofriqo}} * {{ve}}: {{t|ve|Afurika Tshipembe}} * {{vo}}: {{t|vo|Sulüdafrikän}} * {{cy}}: {{t|cy|De Affrica}} * {{vls}}: {{t|vls|Zuud-Afrika}} * {{xh}}: {{t|xh|Mzantsi Afrika}} * {{it}}: {{t+|it|Sudafrica|m}} * {{yi}}: {{t|yi|דרום אַפֿריקע|n|tr=dorem afrike}} * {{yo}}: {{t|yo|Ariwa Afirika}} * {{zea}}: {{t|zea|Zuud-Afrika}} * {{zu}}: {{t|zu|iNingizimu Afrika}} {{trans-bottom}} {{-adjective-}} {{vie-adj}} # Thuộc về hoặc có liên quan đến quốc gia Nam Phi. #* {{quote-journal|vi|title=Biểu tượng của phong trào chống AIDS qua đời|author=Minh Châu|journal=w:VnExpress|year=1/6/2001|url=https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archiveurl=https://web.archive.org/web/20231203032440/https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archivedate=3/12/2023|passage=Ngày 1/6. Dường như em bé '''Nam Phi''' {{w|Nkosi Johnson}} đã chọn ngày đặc biệt của trẻ em để ra đi.}} {{-trans-}} {{trans-top|Thuộc về hoặc có liên quan đến quốc gia Nam Phi}} * {{eng}}: {{t+|en|South African}} * {{pl}}: {{t+|pl|południowoafrykański}} * {{be}}: {{t|be|паўднёваафрыка́нскі}} * {{bn}}: {{t|bn|দক্ষিণ আফ্রিকীয়}} * {{pt}}: {{t+|pt|sul-africano}} * {{bg}}: {{t|bg|южноафрика́нски}} * {{ca}}: {{t+|ca|sud-africà}} * {{da}}: {{t+|da|sydafrikansk}} * {{de}}: {{t+|de|südafrikanisch}} * {{fao}}: {{t|fo|suðurafrikanskur}} * {{gl}}: {{t+|gl|surafricano}} * {{nl}}: {{t+|nl|Zuid-Afrikaans}} * {{hun}}: {{t+|hu|dél-afrikai}} * {{is}}: {{t|is|suðurafrískur}} * {{ga}}: {{t|ga|Afracach Theas}} * {{lv}}: {{t|lv|dienvidāfrikas}}, {{t|lv|dienvidāfrikānis}} * {{mk}}: {{t|mk|јужноафрикански}} * {{nor}}: *: {{nb}}: {{t+|nb|sørafrikansk}} *: {{nn}}: {{t+|nn|sørafrikansk}} * {{rus}}: {{t+|ru|южноафрика́нский}} * {{fr}}: {{t+|fr|sud-africain}} * {{fi}}: {{t+|fi|eteläafrikkalainen}} * {{ro}}: {{t|ro|sud-african}} * {{ces}}: {{t+|cs|jihoafrický}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|јужноа̀фричкӣ}}, {{t|sh|јужноафрикански}} *: {{Latn}}: {{t+|sh|južnoàfričkī}}, {{t|sh|južnoafrikanski}} * {{sk}}: {{t+|sk|juhoafrický}} * {{sl}}: {{t|sl|južnoafriški}} * {{sw}}: {{t|sw|Kiafrika Kusini}} * {{spa}}: {{t+|es|sudafricano}} * {{uk}}: {{t|uk|південноафрика́нський}} * {{cy}}: {{t|cy|De-Affricanaidd}} * {{it}}: {{t+|it|sudafricano}} {{trans-bottom}} {{-see also-}} * {{list:countries of Africa/vi}} nx0kw6yr8xhpqysv24blzd2ivhwxj83 2350818 2350795 2026-05-07T08:08:35Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350818 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Flag of South Africa.svg|nhỏ|Quốc kì '''Nam Phi'''.]] [[Tập tin:LocationSouthAfrica.svg|nhỏ|Cộng hoà '''Nam Phi'''.]] {{-etymology-}} {{vie-etym-sino|南|nam, phía nam|非|châu Phi}}. {{-pron-}} {{vie-pron}} {{-pr-noun-}} {{vie-pr-noun}} # Phần phía [[nam]] của [[lục địa]] [[châu Phi]]. # {{senseid|vi|Q258}} {{place|vi|quốc gia|r/[[Nam Phi|khu vực Nam Phi]]|capital=Pretoria|capital2=Cape Town|capital3=Bloemfontein|official=Cộng hoà Nam Phi}}. #* {{quote-journal|vi|title=Tsitsikamma - viên ngọc xanh của Nam Phi|author=Lê Công Hội|journal=[[w:Hànộimới|Báo Hànộimới]]|year=22/1/2022|url=https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archiveurl=https://web.archive.org/web/20231203061509/https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archivedate=3/12/2023|passage=Đi theo tuyến đường số 62, du khách sẽ đến Langkloof, nơi được coi là “vựa hoa quả” của cả '''Nam Phi'''.}} {{-coordinate-}} {{col-auto|title=khu vực|vi|Tây Phi|Đông Phi|Trung Phi|Bắc Phi}} {{-trans-}} {{trans-top|Phần phía nam lục địa châu Phi}} * {{af}}: {{t|af|Suider-Afrika}}, {{t|af|Suider-Afrika}} * {{eng}}: {{t+|en|Southern Africa}} * {{et}}: {{t|et|Lõuna-Aafrika}} * {{nl}}: {{t|nl|Zuidelijk Afrika|n}} * {{fr}}: {{t+|fr|Afrique australe}} * {{fi}}: {{t|fi|[[eteläinen]] [[Afrikka]]}}, {{t|fi|[[eteläinen|Eteläinen]] [[Afrikka]]}} * {{sw}}: {{t|sw|Afrika ya Kusini}} * {{spa}}: {{t|es|África austral}} * {{ko}}: {{t|ko|남아프리카}} * {{zh}}: *: {{cmn}}: {{t+|cmn|南部非洲|tr=Nánbù Fēizhōu}}, {{t+|cmn|南非}} {{trans-bottom}} {{trans-top|Quốc gia}} * {{ar}}: {{t|ar|جَنُوب أَفْرِيقْيَا|f}}, {{t|ar|أَفْرِيقِيَا الْجَنُوبِيَّة|f}} * {{af}}: {{t+|af|Suid-Afrika}} * {{sq}}: {{t|sq|Afrikë Jugore|f}}, {{t|sq|Afrika Jugore|f}} {{q|dạng xác định}} * {{am}}: {{t|am|ደቡብ አፍሪካ}} * {{eng}}: {{t+|en|South Africa}} * {{hy}}: {{t|hy|Հարավային Աֆրիկա}} * {{ast}}: {{t+|ast|Sudáfrica|f}} * {{az}}: {{t+|az|Cənubi Afrika}} * {{pl}}: {{t+|pl|Afryka Południowa|f}} * {{fas}}: *: {{prs}}: {{t|prs|آفْرِیقَایِ جَنُوبِی}} *: {{fa-ira}}: {{t|fa-ira|آفْریقایِ جُنوبی}} *: {{fa-cls}}: {{t|fa-cls|آفْرِیقَایِ جَنُوبِی}} * {{eu}}: {{t|eu|Hego Afrika}} * {{bar}}: {{t|bar|Sidafrika}} * {{se}}: {{t|se|Mátta-Afrihká}} * {{nso}}: {{t|nso|Afrika Borwa}} * {{be}}: {{t|be|Паўднёвая А́фрыка|f}} * {{bn}}: {{t+|bn|দক্ষিণ আফ্রিকা}} * {{pt}}: {{t+|pt|África do Sul|f}} * {{ia}}: {{t|ia|Africa del Sud}} * {{br}}: {{t+|br|Suafrika}} * {{bg}}: {{t|bg|Ю́жна А́фрика|f}} * {{cat-2}}: {{t+|ca|Sud-àfrica|f}}, {{t|ca|Àfrica del Sud|f}} * {{co}}: {{t|co|Sudafrica|m}} * {{dv}}: {{t+|dv|ދެކުނު އެފްރިކާ}} * {{he}}: {{t|he|דְּרוֹם אַפְרִיקָה|f|tr=drom áfrika}} * {{ug}}: {{t|ug|جەنۇبىي ئافرىقا}} * {{dan}}: {{t+|da|Sydafrika|n}} * {{de}}: {{t+|de|Südafrika|n}} * {{pdc}}: {{t|pdc|Saut Afrikaa}} * {{est}}: {{t|et|Lõuna-Aafrika}}, {{t|et|LAV}} * {{fao}}: {{t|fo|Suðurafrika|n}} * {{stq}}: {{t|stq|Suud-Afrikoa}} * {{gd}}: {{t|gd|Afraga a Deas}}, {{t|gd|Poblachd Afraga a Deas}} * {{gl}}: {{t+|gl|Suráfrica|f}}, {{t+|gl|África do Sur|f}} * {{kl}}: {{t|kl|Afrika Kujalleq}} * {{ka}}: {{t|ka|სამხრეთი აფრიკა}} * {{nds}}: *: {{nds-nl}}: {{t|nds-nl|Zuud-Afrika}} *: {{nds-de}}: {{t|nds-de|Süüdafrika}} * {{nl}}: {{t+|nl|Zuid-Afrika|n}} * {{ha}}: {{t|ha|Afirka ta Kudu|f}} * {{haw}}: {{t|haw|ʻApelika Hema}} * {{hin}}: {{t+|hi|दक्षिण अफ़्रीका|m}}, {{t|hi|साउथ अफ़्रीका|m}} * {{hun}}: {{t+|hu|Dél-afrikai Köztársaság}} * {{el}}: {{t+|el|Νότια Αφρική|f}} * {{is}}: {{t+|is|Suður-Afríka|f}} * {{id}}: {{t+|id|Afrika Selatan}} * {{ga}}: {{t|ga|Afraic Theas|f|alt=an Afraic Theas}} * {{kk}}: {{t+|kk|Оңтүстік Африка}} * {{km}}: {{t|km|អាហ្វ្រិកខាងត្បូង}} * {{naq}}: {{t|naq|ǁHui!gaeb|m}} * {{ku}}: *: {{kmr}}: {{t|kmr|Afrîka Başûr}} * {{fkv}}: {{t|fkv|Etelä-Aafrikka}} * {{ky}}: {{t+|ky|Түштүк Африка}} * {{lao}}: {{t|lo|ອາຟຣິກາໃຕ້}}, {{t|lo|ອາຝະລິກາໃຕ້}}, {{t|lo|ອາຟຣິກໃຕ້}}, {{t|lo|ອາຟະລິກໃຕ້}}, {{t|lo|ອາຟຣິກກາໃຕ້}} * {{la}}: {{t|la|Africa Australis|f}}, {{t|la|Africa Meridionalis|f}} * {{lv}}: {{t|lv|Dienvidāfrika|f}} * {{li}}: {{t|li|Zuid-Afrika}} * {{lt}}: {{t|lt|Pietų Afrika|f}} * {{langname|lb}}: {{t+|lb|Südafrika}} * {{ms}}: {{t+|ms|Afrika Selatan}} * {{mk}}: {{t+|mk|Јужна Африка|f}} * {{mt}}: {{t|mt|Afrika t'Isfel|f|alt=l-Afrika t'Isfel}}, {{t|mt|Sud Afrika|f|alt=is-Sud Afrika}} * {{gv}}: {{t|gv|Yn Affrick Yiass}} * {{mi}}: {{t|mi|Āwherika ki te Tonga}} * {{my}}: {{t|my|တောင်အာဖရိက}} * {{mon}}: *: {{Cyrl}}: {{t|mn|Өмнөд Африк}} *: {{Mong}}: {{t|mn|ᠡᠮᠦᠨᠡᠳᠦ ᠠᠹᠷᠢᠺᠠ}} * {{nor}}: *: {{nb}}: {{t+|nb|Sør-Afrika|n}} *: {{nn}}: {{t+|nn|Sør-Afrika|n}} * {{nv}}: {{t|nv|Kéyah Naakai Łizhinii Bikéyah Shádiʼááhjí Siʼánígíí}} * {{rus}}: {{t|ru|Ю́жная А́фрика|f}} * {{ja}}: {{t|ja|南アフリカ|tr=みなみアフリカ, Minami Afurika}}, {{t+|ja|南ア|tr=なんあ, Nan'a}} * {{ps}}: {{t|ps|سويلي افريقا|f|tr=soeli afriqā}} * {{fr}}: {{t+|fr|Afrique du Sud|f}} * {{fin}}: {{t+|fi|Etelä-Afrikka}} * {{eo}}: {{t+|eo|Sud-Afriko}} * {{rar}}: {{t|rar|‘Āperika Tonga}} * {{ro}}: {{t+|ro|Africa de Sud|f}} * {{sc}}: {{t|sc|Sudàfrica|m}} * {{sco}}: {{t|sco|Sooth Africae}} * {{ces}}: {{t|cs|Jižní Afrika|f}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|Ју̏жна̄ А̀фрика|f}} *: {{Latn}}: {{t|sh|Jȕžnā Àfrika|f}} * {{scn}}: {{t|scn|Àfrica dû Sud|f}}, {{t|scn|Sudàfrica|m}} * {{si}}: {{t|si|දකුණු අප්‍රිකාව}} * {{sk}}: {{t|sk|Južná Afrika|f}} * {{sl}}: {{t|sl|Južna Afrika|f}} * {{so}}: {{t|so|Koonfur Afrika}} * {{st}}: {{t+|st|Afrika Borwa}} * {{sw}}: {{t+|sw|Afrika Kusini}} * {{tgl}}: {{t+|tl|Timog Aprika}} * {{tg}}: {{t+|tg|Африқои Ҷанубӣ}} * {{tt}}: {{t|tt|Көньяк Африка}} * {{aii}}: {{t|aii|ܬܲܝܡܲܢ ܐܲܦܪܝܼܩܵܐ|f}} * {{spa}}: {{t+|es|Sudáfrica|f}} * {{fy}}: {{t|fy|Súd-Afrika}} * {{te}}: {{t|te|దక్షిణాఫ్రికా}} * {{tha}}: {{t+|th|แอฟริกาใต้}} * {{tur}}: {{t+|tr|Güney Afrika}} * {{sv}}: {{t+|sv|Sydafrika|n}} * {{ti}}: {{t|ti|ደቡብ ኣፍሪቃ}} * {{ts}}: {{t|ts|Afrika-Dzonga}} * {{tn}}: {{t|tn|Aforika Borwa}} * {{ko}}: {{t|ko|^남아프리카}}, {{t+|ko|^남아공(南阿共)}} * {{zh}}: *: {{hak}}: {{t|hak|南非|tr=Nàm-fî}} *: {{nan}}: {{t|nan|南非|tr=Lâm-hui}} *: {{wuu}}: {{t|wuu|南非}} *: {{cmn}}: {{t+|cmn|南非}} *: {{yue}} {{t|yue|南非}} * {{tk}}: {{t|tk|Günorta Afrika}} * {{uk}}: {{t+|uk|Півде́нна А́фрика|f}} * {{ur}}: {{t|ur|جُنُوبی اَفْرِیقَہ|m}}, {{t|ur|جَنُوبی اَفْرِیقَہ|m}}, {{t|ur|ساؤُتھ اَفْرِیقَہ|m}} * {{uz}}: {{t|uz|Janubiy Ofriqo}} * {{ve}}: {{t|ve|Afurika Tshipembe}} * {{vo}}: {{t|vo|Sulüdafrikän}} * {{cy}}: {{t|cy|De Affrica}} * {{vls}}: {{t|vls|Zuud-Afrika}} * {{xh}}: {{t|xh|Mzantsi Afrika}} * {{it}}: {{t+|it|Sudafrica|m}} * {{yi}}: {{t|yi|דרום אַפֿריקע|n|tr=dorem afrike}} * {{yo}}: {{t|yo|Ariwa Afirika}} * {{zea}}: {{t|zea|Zuud-Afrika}} * {{zu}}: {{t|zu|iNingizimu Afrika}} {{trans-bottom}} {{-adjective-}} {{vie-adj}} # Thuộc về hoặc có liên quan đến quốc gia Nam Phi. #* {{quote-journal|vi|title=Biểu tượng của phong trào chống AIDS qua đời|author=Minh Châu|journal=w:VnExpress|year=1/6/2001|url=https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archiveurl=https://web.archive.org/web/20231203032440/https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archivedate=3/12/2023|passage=Ngày 1/6. Dường như em bé '''Nam Phi''' {{w|Nkosi Johnson}} đã chọn ngày đặc biệt của trẻ em để ra đi.}} {{-trans-}} {{trans-top|Thuộc về hoặc có liên quan đến quốc gia Nam Phi}} * {{eng}}: {{t+|en|South African}} * {{pl}}: {{t+|pl|południowoafrykański}} * {{be}}: {{t|be|паўднёваафрыка́нскі}} * {{bn}}: {{t|bn|দক্ষিণ আফ্রিকীয়}} * {{pt}}: {{t+|pt|sul-africano}} * {{bg}}: {{t|bg|южноафрика́нски}} * {{cat-2}}: {{t+|ca|sud-africà}} * {{da}}: {{t+|da|sydafrikansk}} * {{de}}: {{t+|de|südafrikanisch}} * {{fao}}: {{t|fo|suðurafrikanskur}} * {{gl}}: {{t+|gl|surafricano}} * {{nl}}: {{t+|nl|Zuid-Afrikaans}} * {{hun}}: {{t+|hu|dél-afrikai}} * {{is}}: {{t|is|suðurafrískur}} * {{ga}}: {{t|ga|Afracach Theas}} * {{lv}}: {{t|lv|dienvidāfrikas}}, {{t|lv|dienvidāfrikānis}} * {{mk}}: {{t|mk|јужноафрикански}} * {{nor}}: *: {{nb}}: {{t+|nb|sørafrikansk}} *: {{nn}}: {{t+|nn|sørafrikansk}} * {{rus}}: {{t+|ru|южноафрика́нский}} * {{fr}}: {{t+|fr|sud-africain}} * {{fi}}: {{t+|fi|eteläafrikkalainen}} * {{ro}}: {{t|ro|sud-african}} * {{ces}}: {{t+|cs|jihoafrický}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|јужноа̀фричкӣ}}, {{t|sh|јужноафрикански}} *: {{Latn}}: {{t+|sh|južnoàfričkī}}, {{t|sh|južnoafrikanski}} * {{sk}}: {{t+|sk|juhoafrický}} * {{sl}}: {{t|sl|južnoafriški}} * {{sw}}: {{t|sw|Kiafrika Kusini}} * {{spa}}: {{t+|es|sudafricano}} * {{uk}}: {{t|uk|південноафрика́нський}} * {{cy}}: {{t|cy|De-Affricanaidd}} * {{it}}: {{t+|it|sudafricano}} {{trans-bottom}} {{-see also-}} * {{list:countries of Africa/vi}} mrbbkw5asklselkuvgjwwivvox8hsj9 2351059 2350818 2026-05-07T10:47:33Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351059 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Flag of South Africa.svg|nhỏ|Quốc kì '''Nam Phi'''.]] [[Tập tin:LocationSouthAfrica.svg|nhỏ|Cộng hoà '''Nam Phi'''.]] {{-etymology-}} {{vie-etym-sino|南|nam, phía nam|非|châu Phi}}. {{-pron-}} {{vie-pron}} {{-pr-noun-}} {{vie-pr-noun}} # Phần phía [[nam]] của [[lục địa]] [[châu Phi]]. # {{senseid|vi|Q258}} {{place|vi|quốc gia|r/[[Nam Phi|khu vực Nam Phi]]|capital=Pretoria|capital2=Cape Town|capital3=Bloemfontein|official=Cộng hoà Nam Phi}}. #* {{quote-journal|vi|title=Tsitsikamma - viên ngọc xanh của Nam Phi|author=Lê Công Hội|journal=[[w:Hànộimới|Báo Hànộimới]]|year=22/1/2022|url=https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archiveurl=https://web.archive.org/web/20231203061509/https://hanoimoi.vn/tsitsikamma-vien-ngoc-xanh-cua-nam-phi-463719.html|archivedate=3/12/2023|passage=Đi theo tuyến đường số 62, du khách sẽ đến Langkloof, nơi được coi là “vựa hoa quả” của cả '''Nam Phi'''.}} {{-coordinate-}} {{col-auto|title=khu vực|vi|Tây Phi|Đông Phi|Trung Phi|Bắc Phi}} {{-trans-}} {{trans-top|Phần phía nam lục địa châu Phi}} * {{af}}: {{t|af|Suider-Afrika}}, {{t|af|Suider-Afrika}} * {{eng}}: {{t+|en|Southern Africa}} * {{et}}: {{t|et|Lõuna-Aafrika}} * {{nl}}: {{t|nl|Zuidelijk Afrika|n}} * {{fr}}: {{t+|fr|Afrique australe}} * {{fi}}: {{t|fi|[[eteläinen]] [[Afrikka]]}}, {{t|fi|[[eteläinen|Eteläinen]] [[Afrikka]]}} * {{sw}}: {{t|sw|Afrika ya Kusini}} * {{spa}}: {{t|es|África austral}} * {{ko}}: {{t|ko|남아프리카}} * {{zh}}: *: {{cmn}}: {{t+|cmn|南部非洲|tr=Nánbù Fēizhōu}}, {{t+|cmn|南非}} {{trans-bottom}} {{trans-top|Quốc gia}} * {{ar}}: {{t|ar|جَنُوب أَفْرِيقْيَا|f}}, {{t|ar|أَفْرِيقِيَا الْجَنُوبِيَّة|f}} * {{af}}: {{t+|af|Suid-Afrika}} * {{sq}}: {{t|sq|Afrikë Jugore|f}}, {{t|sq|Afrika Jugore|f}} {{q|dạng xác định}} * {{am}}: {{t|am|ደቡብ አፍሪካ}} * {{eng}}: {{t+|en|South Africa}} * {{hy}}: {{t|hy|Հարավային Աֆրիկա}} * {{ast}}: {{t+|ast|Sudáfrica|f}} * {{az}}: {{t+|az|Cənubi Afrika}} * {{pl}}: {{t+|pl|Afryka Południowa|f}} * {{fas}}: *: {{prs}}: {{t|prs|آفْرِیقَایِ جَنُوبِی}} *: {{fa-ira}}: {{t|fa-ira|آفْریقایِ جُنوبی}} *: {{fa-cls}}: {{t|fa-cls|آفْرِیقَایِ جَنُوبِی}} * {{eu}}: {{t|eu|Hego Afrika}} * {{bar}}: {{t|bar|Sidafrika}} * {{se}}: {{t|se|Mátta-Afrihká}} * {{nso}}: {{t|nso|Afrika Borwa}} * {{be}}: {{t|be|Паўднёвая А́фрыка|f}} * {{bn}}: {{t+|bn|দক্ষিণ আফ্রিকা}} * {{pt}}: {{t+|pt|África do Sul|f}} * {{ia}}: {{t|ia|Africa del Sud}} * {{br}}: {{t+|br|Suafrika}} * {{bg}}: {{t|bg|Ю́жна А́фрика|f}} * {{cat-old}}: {{t+|ca|Sud-àfrica|f}}, {{t|ca|Àfrica del Sud|f}} * {{co}}: {{t|co|Sudafrica|m}} * {{dv}}: {{t+|dv|ދެކުނު އެފްރިކާ}} * {{he}}: {{t|he|דְּרוֹם אַפְרִיקָה|f|tr=drom áfrika}} * {{ug}}: {{t|ug|جەنۇبىي ئافرىقا}} * {{dan}}: {{t+|da|Sydafrika|n}} * {{de}}: {{t+|de|Südafrika|n}} * {{pdc}}: {{t|pdc|Saut Afrikaa}} * {{est}}: {{t|et|Lõuna-Aafrika}}, {{t|et|LAV}} * {{fao}}: {{t|fo|Suðurafrika|n}} * {{stq}}: {{t|stq|Suud-Afrikoa}} * {{gd}}: {{t|gd|Afraga a Deas}}, {{t|gd|Poblachd Afraga a Deas}} * {{gl}}: {{t+|gl|Suráfrica|f}}, {{t+|gl|África do Sur|f}} * {{kl}}: {{t|kl|Afrika Kujalleq}} * {{ka}}: {{t|ka|სამხრეთი აფრიკა}} * {{nds}}: *: {{nds-nl}}: {{t|nds-nl|Zuud-Afrika}} *: {{nds-de}}: {{t|nds-de|Süüdafrika}} * {{nl}}: {{t+|nl|Zuid-Afrika|n}} * {{ha}}: {{t|ha|Afirka ta Kudu|f}} * {{haw}}: {{t|haw|ʻApelika Hema}} * {{hin}}: {{t+|hi|दक्षिण अफ़्रीका|m}}, {{t|hi|साउथ अफ़्रीका|m}} * {{hun}}: {{t+|hu|Dél-afrikai Köztársaság}} * {{el}}: {{t+|el|Νότια Αφρική|f}} * {{is}}: {{t+|is|Suður-Afríka|f}} * {{id}}: {{t+|id|Afrika Selatan}} * {{ga}}: {{t|ga|Afraic Theas|f|alt=an Afraic Theas}} * {{kk}}: {{t+|kk|Оңтүстік Африка}} * {{km}}: {{t|km|អាហ្វ្រិកខាងត្បូង}} * {{naq}}: {{t|naq|ǁHui!gaeb|m}} * {{ku}}: *: {{kmr}}: {{t|kmr|Afrîka Başûr}} * {{fkv}}: {{t|fkv|Etelä-Aafrikka}} * {{ky}}: {{t+|ky|Түштүк Африка}} * {{lao}}: {{t|lo|ອາຟຣິກາໃຕ້}}, {{t|lo|ອາຝະລິກາໃຕ້}}, {{t|lo|ອາຟຣິກໃຕ້}}, {{t|lo|ອາຟະລິກໃຕ້}}, {{t|lo|ອາຟຣິກກາໃຕ້}} * {{la}}: {{t|la|Africa Australis|f}}, {{t|la|Africa Meridionalis|f}} * {{lv}}: {{t|lv|Dienvidāfrika|f}} * {{li}}: {{t|li|Zuid-Afrika}} * {{lt}}: {{t|lt|Pietų Afrika|f}} * {{langname|lb}}: {{t+|lb|Südafrika}} * {{ms}}: {{t+|ms|Afrika Selatan}} * {{mk}}: {{t+|mk|Јужна Африка|f}} * {{mt}}: {{t|mt|Afrika t'Isfel|f|alt=l-Afrika t'Isfel}}, {{t|mt|Sud Afrika|f|alt=is-Sud Afrika}} * {{gv}}: {{t|gv|Yn Affrick Yiass}} * {{mi}}: {{t|mi|Āwherika ki te Tonga}} * {{my}}: {{t|my|တောင်အာဖရိက}} * {{mon}}: *: {{Cyrl}}: {{t|mn|Өмнөд Африк}} *: {{Mong}}: {{t|mn|ᠡᠮᠦᠨᠡᠳᠦ ᠠᠹᠷᠢᠺᠠ}} * {{nor}}: *: {{nb}}: {{t+|nb|Sør-Afrika|n}} *: {{nn}}: {{t+|nn|Sør-Afrika|n}} * {{nv}}: {{t|nv|Kéyah Naakai Łizhinii Bikéyah Shádiʼááhjí Siʼánígíí}} * {{rus}}: {{t|ru|Ю́жная А́фрика|f}} * {{ja}}: {{t|ja|南アフリカ|tr=みなみアフリカ, Minami Afurika}}, {{t+|ja|南ア|tr=なんあ, Nan'a}} * {{ps}}: {{t|ps|سويلي افريقا|f|tr=soeli afriqā}} * {{fr}}: {{t+|fr|Afrique du Sud|f}} * {{fin}}: {{t+|fi|Etelä-Afrikka}} * {{eo}}: {{t+|eo|Sud-Afriko}} * {{rar}}: {{t|rar|‘Āperika Tonga}} * {{ro}}: {{t+|ro|Africa de Sud|f}} * {{sc}}: {{t|sc|Sudàfrica|m}} * {{sco}}: {{t|sco|Sooth Africae}} * {{ces}}: {{t|cs|Jižní Afrika|f}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|Ју̏жна̄ А̀фрика|f}} *: {{Latn}}: {{t|sh|Jȕžnā Àfrika|f}} * {{scn}}: {{t|scn|Àfrica dû Sud|f}}, {{t|scn|Sudàfrica|m}} * {{si}}: {{t|si|දකුණු අප්‍රිකාව}} * {{sk}}: {{t|sk|Južná Afrika|f}} * {{sl}}: {{t|sl|Južna Afrika|f}} * {{so}}: {{t|so|Koonfur Afrika}} * {{st}}: {{t+|st|Afrika Borwa}} * {{sw}}: {{t+|sw|Afrika Kusini}} * {{tgl}}: {{t+|tl|Timog Aprika}} * {{tg}}: {{t+|tg|Африқои Ҷанубӣ}} * {{tt}}: {{t|tt|Көньяк Африка}} * {{aii}}: {{t|aii|ܬܲܝܡܲܢ ܐܲܦܪܝܼܩܵܐ|f}} * {{spa}}: {{t+|es|Sudáfrica|f}} * {{fy}}: {{t|fy|Súd-Afrika}} * {{te}}: {{t|te|దక్షిణాఫ్రికా}} * {{tha}}: {{t+|th|แอฟริกาใต้}} * {{tur}}: {{t+|tr|Güney Afrika}} * {{sv}}: {{t+|sv|Sydafrika|n}} * {{ti}}: {{t|ti|ደቡብ ኣፍሪቃ}} * {{ts}}: {{t|ts|Afrika-Dzonga}} * {{tn}}: {{t|tn|Aforika Borwa}} * {{ko}}: {{t|ko|^남아프리카}}, {{t+|ko|^남아공(南阿共)}} * {{zh}}: *: {{hak}}: {{t|hak|南非|tr=Nàm-fî}} *: {{nan}}: {{t|nan|南非|tr=Lâm-hui}} *: {{wuu}}: {{t|wuu|南非}} *: {{cmn}}: {{t+|cmn|南非}} *: {{yue}} {{t|yue|南非}} * {{tk}}: {{t|tk|Günorta Afrika}} * {{uk}}: {{t+|uk|Півде́нна А́фрика|f}} * {{ur}}: {{t|ur|جُنُوبی اَفْرِیقَہ|m}}, {{t|ur|جَنُوبی اَفْرِیقَہ|m}}, {{t|ur|ساؤُتھ اَفْرِیقَہ|m}} * {{uz}}: {{t|uz|Janubiy Ofriqo}} * {{ve}}: {{t|ve|Afurika Tshipembe}} * {{vo}}: {{t|vo|Sulüdafrikän}} * {{cy}}: {{t|cy|De Affrica}} * {{vls}}: {{t|vls|Zuud-Afrika}} * {{xh}}: {{t|xh|Mzantsi Afrika}} * {{it}}: {{t+|it|Sudafrica|m}} * {{yi}}: {{t|yi|דרום אַפֿריקע|n|tr=dorem afrike}} * {{yo}}: {{t|yo|Ariwa Afirika}} * {{zea}}: {{t|zea|Zuud-Afrika}} * {{zu}}: {{t|zu|iNingizimu Afrika}} {{trans-bottom}} {{-adjective-}} {{vie-adj}} # Thuộc về hoặc có liên quan đến quốc gia Nam Phi. #* {{quote-journal|vi|title=Biểu tượng của phong trào chống AIDS qua đời|author=Minh Châu|journal=w:VnExpress|year=1/6/2001|url=https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archiveurl=https://web.archive.org/web/20231203032440/https://vnexpress.net/bieu-tuong-cua-phong-trao-chong-aids-qua-doi-1989118.html|archivedate=3/12/2023|passage=Ngày 1/6. Dường như em bé '''Nam Phi''' {{w|Nkosi Johnson}} đã chọn ngày đặc biệt của trẻ em để ra đi.}} {{-trans-}} {{trans-top|Thuộc về hoặc có liên quan đến quốc gia Nam Phi}} * {{eng}}: {{t+|en|South African}} * {{pl}}: {{t+|pl|południowoafrykański}} * {{be}}: {{t|be|паўднёваафрыка́нскі}} * {{bn}}: {{t|bn|দক্ষিণ আফ্রিকীয়}} * {{pt}}: {{t+|pt|sul-africano}} * {{bg}}: {{t|bg|южноафрика́нски}} * {{cat-old}}: {{t+|ca|sud-africà}} * {{da}}: {{t+|da|sydafrikansk}} * {{de}}: {{t+|de|südafrikanisch}} * {{fao}}: {{t|fo|suðurafrikanskur}} * {{gl}}: {{t+|gl|surafricano}} * {{nl}}: {{t+|nl|Zuid-Afrikaans}} * {{hun}}: {{t+|hu|dél-afrikai}} * {{is}}: {{t|is|suðurafrískur}} * {{ga}}: {{t|ga|Afracach Theas}} * {{lv}}: {{t|lv|dienvidāfrikas}}, {{t|lv|dienvidāfrikānis}} * {{mk}}: {{t|mk|јужноафрикански}} * {{nor}}: *: {{nb}}: {{t+|nb|sørafrikansk}} *: {{nn}}: {{t+|nn|sørafrikansk}} * {{rus}}: {{t+|ru|южноафрика́нский}} * {{fr}}: {{t+|fr|sud-africain}} * {{fi}}: {{t+|fi|eteläafrikkalainen}} * {{ro}}: {{t|ro|sud-african}} * {{ces}}: {{t+|cs|jihoafrický}} * {{hbs}}: *: {{Cyrl}}: {{t|sh|јужноа̀фричкӣ}}, {{t|sh|јужноафрикански}} *: {{Latn}}: {{t+|sh|južnoàfričkī}}, {{t|sh|južnoafrikanski}} * {{sk}}: {{t+|sk|juhoafrický}} * {{sl}}: {{t|sl|južnoafriški}} * {{sw}}: {{t|sw|Kiafrika Kusini}} * {{spa}}: {{t+|es|sudafricano}} * {{uk}}: {{t|uk|південноафрика́нський}} * {{cy}}: {{t|cy|De-Affricanaidd}} * {{it}}: {{t+|it|sudafricano}} {{trans-bottom}} {{-see also-}} * {{list:countries of Africa/vi}} lsi2vdgsvakz245hfh0s04jzkrxf16a trí tuệ nhân tạo 0 288886 2350796 2119392 2026-05-07T08:01:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350796 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Từ ghép giữa {{etym-com|vi|trí tuệ|nhân tạo}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[trí tuệ]] [[nhân tạo]]}} # Bộ môn nghiên cứu [[phương pháp luận]] và những [[kĩ thuật]] cho phép [[thiết kế]], [[xây dựng]] và [[thử nghiệm]] các [[hệ thống]] [[máy]] và [[chương trình]] có khả năng thực hiện một số quá trình [[mô phỏng]] [[trí tuệ]] của con [[người]]. #: {{ux|vi|Bùng nổ làn sóng sử dụng '''trí tuệ nhân tạo'''.}} #: {{ux|vi|Kiểm soát công nghệ '''trí tuệ nhân tạo'''.}} {{-synonym-}} * {{vie-l|trí thông minh nhân tạo}} * {{vie-l|AI}} {{-trans-}} {{trans-top|Bộ môn nghiên cứu}} * {{ara}}: {{t|ar|ذَكَاء اِصْطِنَاعِيّ|m}} * {{afr}}: {{t|af|kunsmatige intelligensie}} * {{sqi}}: {{t|sq|inteligjence artificiale|f}}, {{t|sq|inteligjenca artificiale|f}} {{qualifier|definite}} * {{eng}}: {{t+|en|artificial intelligence}} * {{arg}}: {{t|an|intelichencia artificial|f}} * {{hye}}: {{t+|hy|արհեստական բանականություն}} * {{asm}}: {{t|as|কৃত্ৰিম বুদ্ধিমত্তা}} * {{ast}}: {{t|ast|intelixencia artificial|f}} * {{aze}}: {{t|az|süni intellekt}}, {{t|az|süni zəka}} * {{pol}}: {{t+|pl|sztuczna inteligencja|f}} * {{fas}}: {{t+|fa|هوش مصنوعی|tr=huš-e masnu'i}} * {{bak}}: {{t|ba|яһалма интеллект}} * {{eus}}: {{t|eu|adimen artifizial}} * {{bel}}: {{t|be|шту́чны інтэле́кт|m}} * {{ben}}: {{t+|bn|কৃত্রিম বুদ্ধিমত্তা}} * {{por}}: {{t+|pt|inteligência artificial|f}} * {{ina}}: {{t|ia|intelligentia artificial}} * {{bul}}: {{t|bg|изку́ствен интеле́кт|m}} * {{cat-2}}: {{t+|ca|intel·ligència artificial|f}} * {{chv}}: {{t|cv|юриллe интеллект}} * {{heb}}: {{t+|he|אִינְטֶלִיגֶנְצְיָה מְלָאכוּתִית|f|tr=inteligéntsya melakhutít}} * {{uig}}: {{t|ug|سۈنئىي ئەقىل}} * {{dan}}: {{t|da|kunstig intelligens|c}} * {{deu}}: {{t|de|künstliche Intelligenz|f}} * {{est}}: {{t|et|tehisintellekt}}, {{t|et|kunstlik intellekt}} * {{fao}}: {{t|fo|gjørt vit|n}} * {{glg}}: {{t|gl|intelixencia artificial|f}} * {{kat}}: {{t|ka|ხელოვნური ინტელექტი}} * {{nld}}: {{t|nl|kunstmatige intelligentie|f}} * {{hat}}: {{t|ht|entèlijans atifisyèl}} * {{hin}}: {{t|hi|कृत्रिम बुद्धि|f}} * {{hun}}: {{t+|hu|mesterséges intelligencia}} * {{ell}}: {{t+|el|τεχνητή νοημοσύνη|f}} * {{isl}}: {{t|is|gervigreind|f}} * {{ido}}: {{t|io|artifical inteligenteso}} * {{ind}}: {{t|id|kecerdasan buatan|}}, {{t|id|kecerdasan artifisial}} * {{gle}}: {{t|ga|intleacht shaorga}} * {{jav}}: {{t|jv|kacerdhasan gawéyan}} * {{kan}}: {{t+|kn|ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ}} * {{kaz}}: {{t|kk|жасанды интеллект}} * {{kur}}: ** {{kmr}}: {{t|kmr|jîriya destkirî|f}} * {{kir}}: {{t|ky|жасалма интеллект}} * {{lav}}: {{t|lv|mākslīgais intelekts|m}} * {{lim}}: {{t|li|kónsmaesige intelligentie}} * {{lit}}: {{t+|lt|dirbtinis intelektas|m}} * {{msa}}: {{t|ms|kepintaran buatan}}, {{t|ms|kecerdasan buatan}}, {{t|ms|kecerdikan buatan}} {{q|Singapore}} * {{mkd}}: {{t|mk|вештачка интелигенција|f}} * {{mlg}}: {{t+|mg|haranita-tsaina voatrolombelona}} * {{mal}}: {{t+|ml|നിർമ്മിത ബുദ്ധി}} * {{mlt}}: {{t|mt|intelliġenza artifiċjali|f}} * {{mar}}: {{t|mr|कृत्रिम बुद्धिमत्ता}} * {{mya}}: {{t|my|ဉာဏ်ရည်တု}}, {{t|my|ဉာဏ်တု}} * {{mon}}: ** {{Cyrl}}: {{t|mn|хиймэл оюун}} * {{nor}}: ** {{nob}}: {{t|nb|kunstig intelligens|m}} ** {{nno}}: {{t|nn|kunstig intelligens|m}} * {{nep}}: {{t|ne|कृत्रिम बौद्धिकता}} * {{rus}}: {{t+|ru|иску́сственный интелле́кт|m}}, {{t+|ru|ИИ́|m}} * {{jpn}}: {{t|ja|人工知能|tr=じんこうちのう, jinkō chinō}}, {{t|ja|アーティフィシャル・インテリジェンス|tr=ātifisharu-interijensu}} * {{oci}}: {{t|oc|intelligéncia artificiala|f}} * {{ori}}: {{t|or|ଆର୍ଟିଫିସିଆଲ ଇଣ୍ଟେଲିଜେନ୍ସ}} * {{pus}}: {{t|ps|مصنوعي ځيرکتیا}} * {{san}}: {{t|sa|कृत्रिम बुद्धिमता|f}} * {{fra}}: {{t+|fr|intelligence artificielle|f}} * {{fin}}: {{t+|fi|tekoäly}}, {{t+|fi|keinoäly}} * {{pan}}: {{t|pa|ਬਣਾਉਟੀ ਮਸ਼ੀਨੀ ਬੁੱਧੀ|f}} * {{epo}}: {{t|eo|artefarita inteligenteco}}, {{t|eo|artefarita intelekto}} * {{rum}}: {{t+|ro|inteligență artificială|f}} * {{ces}}: {{t|cs|umělá inteligence|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|уметна интелигенција|f}}, {{t|sh|умјетна интелигенција|f}}, {{t|sh|вештачка интелигенција|f}}, {{t|sh|вјештачка интелигенција|f}} ** {{Latn}}: {{t|sh|umetna inteligencija|f}}, {{t|sh|umjetna inteligencija|f}}, {{t|sh|veštačka inteligencija|f}}, {{t|sh|vještačka inteligencija|f}} * {{sin}}: {{t|si|කෘත්‍රීම බුද්ධිය}} * {{slk}}: {{t|sk|umelá inteligencia|f}} * {{slv}}: {{t|sl|umetna inteligenca|f}} * {{swa}}: {{t|sw|akili mnemba}}, {{t|sw|akili bandia}} * {{tgl}}: {{t|tl|gawa-gawang katalinuhan}}, {{t|tl|intelihensiyang artipisyal}} * {{tgk}}: {{t|tg|ҳӯши маснӯъӣ}}, {{t|tg|зеҳни сунъӣ}} * {{tam}}: {{t|ta|செயற்கை நுண்ணறிவு}}, {{t|ta|செயற்கை அறிவுத்திறன்}} * {{tat}}: {{t|tt|ясалма интеллект}} * {{spa}}: {{t+|es|inteligencia artificial}} * {{tel}}: {{t|te|కృత్రిమ మేధస్సు}} * {{tha}}: {{t|th|ปัญญาประดิษฐ์}} * {{tur}}: {{t|tr|yapay zeka}} * {{swe}}: {{t+|sv|artificiell intelligens|c}} * {{kor}}: {{t+|ko|인공지능(人工知能)}} * {{zho}}: ** {{cmn}}: {{t+|cmn|人工智能}} * {{tuk}}: {{t|tk|ýasama akyl}} * {{ukr}}: {{t|uk|шту́чний інтеле́кт|m}} * {{urd}}: {{t|ur|مصنوعی ذہانت|f|tr=masnū'ī zahānat}} * {{uzb}}: {{t|uz|sunʻiy intellekt}}, {{t|uz|sunʼiy ong}} * {{cym}}: {{t|cy|deallusrwydd artiffisial|m}} * {{ita}}: {{t+|it|intelligenza artificiale}} * {{sah}}: {{t|sah|оҥоһуу интеллект}} * {{yid}}: {{t|yi|קינסטלעכע אינטעליגענץ|f}} * {{zul}}: {{t+|zu|uHlakahlisombulu}} {{trans-bottom}} {{-reference-}} {{R:Tratu|vn|vn}} {{C|vi|Trí tuệ nhân tạo}} 7svyyv54v23ctgwvzgbbi1pzxjdffqs 2351060 2350796 2026-05-07T10:47:36Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351060 wikitext text/x-wiki {{-vie-}} {{-info-}} {{-etym-}} Từ ghép giữa {{etym-com|vi|trí tuệ|nhân tạo}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun|head=[[trí tuệ]] [[nhân tạo]]}} # Bộ môn nghiên cứu [[phương pháp luận]] và những [[kĩ thuật]] cho phép [[thiết kế]], [[xây dựng]] và [[thử nghiệm]] các [[hệ thống]] [[máy]] và [[chương trình]] có khả năng thực hiện một số quá trình [[mô phỏng]] [[trí tuệ]] của con [[người]]. #: {{ux|vi|Bùng nổ làn sóng sử dụng '''trí tuệ nhân tạo'''.}} #: {{ux|vi|Kiểm soát công nghệ '''trí tuệ nhân tạo'''.}} {{-synonym-}} * {{vie-l|trí thông minh nhân tạo}} * {{vie-l|AI}} {{-trans-}} {{trans-top|Bộ môn nghiên cứu}} * {{ara}}: {{t|ar|ذَكَاء اِصْطِنَاعِيّ|m}} * {{afr}}: {{t|af|kunsmatige intelligensie}} * {{sqi}}: {{t|sq|inteligjence artificiale|f}}, {{t|sq|inteligjenca artificiale|f}} {{qualifier|definite}} * {{eng}}: {{t+|en|artificial intelligence}} * {{arg}}: {{t|an|intelichencia artificial|f}} * {{hye}}: {{t+|hy|արհեստական բանականություն}} * {{asm}}: {{t|as|কৃত্ৰিম বুদ্ধিমত্তা}} * {{ast}}: {{t|ast|intelixencia artificial|f}} * {{aze}}: {{t|az|süni intellekt}}, {{t|az|süni zəka}} * {{pol}}: {{t+|pl|sztuczna inteligencja|f}} * {{fas}}: {{t+|fa|هوش مصنوعی|tr=huš-e masnu'i}} * {{bak}}: {{t|ba|яһалма интеллект}} * {{eus}}: {{t|eu|adimen artifizial}} * {{bel}}: {{t|be|шту́чны інтэле́кт|m}} * {{ben}}: {{t+|bn|কৃত্রিম বুদ্ধিমত্তা}} * {{por}}: {{t+|pt|inteligência artificial|f}} * {{ina}}: {{t|ia|intelligentia artificial}} * {{bul}}: {{t|bg|изку́ствен интеле́кт|m}} * {{cat-old}}: {{t+|ca|intel·ligència artificial|f}} * {{chv}}: {{t|cv|юриллe интеллект}} * {{heb}}: {{t+|he|אִינְטֶלִיגֶנְצְיָה מְלָאכוּתִית|f|tr=inteligéntsya melakhutít}} * {{uig}}: {{t|ug|سۈنئىي ئەقىل}} * {{dan}}: {{t|da|kunstig intelligens|c}} * {{deu}}: {{t|de|künstliche Intelligenz|f}} * {{est}}: {{t|et|tehisintellekt}}, {{t|et|kunstlik intellekt}} * {{fao}}: {{t|fo|gjørt vit|n}} * {{glg}}: {{t|gl|intelixencia artificial|f}} * {{kat}}: {{t|ka|ხელოვნური ინტელექტი}} * {{nld}}: {{t|nl|kunstmatige intelligentie|f}} * {{hat}}: {{t|ht|entèlijans atifisyèl}} * {{hin}}: {{t|hi|कृत्रिम बुद्धि|f}} * {{hun}}: {{t+|hu|mesterséges intelligencia}} * {{ell}}: {{t+|el|τεχνητή νοημοσύνη|f}} * {{isl}}: {{t|is|gervigreind|f}} * {{ido}}: {{t|io|artifical inteligenteso}} * {{ind}}: {{t|id|kecerdasan buatan|}}, {{t|id|kecerdasan artifisial}} * {{gle}}: {{t|ga|intleacht shaorga}} * {{jav}}: {{t|jv|kacerdhasan gawéyan}} * {{kan}}: {{t+|kn|ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ}} * {{kaz}}: {{t|kk|жасанды интеллект}} * {{kur}}: ** {{kmr}}: {{t|kmr|jîriya destkirî|f}} * {{kir}}: {{t|ky|жасалма интеллект}} * {{lav}}: {{t|lv|mākslīgais intelekts|m}} * {{lim}}: {{t|li|kónsmaesige intelligentie}} * {{lit}}: {{t+|lt|dirbtinis intelektas|m}} * {{msa}}: {{t|ms|kepintaran buatan}}, {{t|ms|kecerdasan buatan}}, {{t|ms|kecerdikan buatan}} {{q|Singapore}} * {{mkd}}: {{t|mk|вештачка интелигенција|f}} * {{mlg}}: {{t+|mg|haranita-tsaina voatrolombelona}} * {{mal}}: {{t+|ml|നിർമ്മിത ബുദ്ധി}} * {{mlt}}: {{t|mt|intelliġenza artifiċjali|f}} * {{mar}}: {{t|mr|कृत्रिम बुद्धिमत्ता}} * {{mya}}: {{t|my|ဉာဏ်ရည်တု}}, {{t|my|ဉာဏ်တု}} * {{mon}}: ** {{Cyrl}}: {{t|mn|хиймэл оюун}} * {{nor}}: ** {{nob}}: {{t|nb|kunstig intelligens|m}} ** {{nno}}: {{t|nn|kunstig intelligens|m}} * {{nep}}: {{t|ne|कृत्रिम बौद्धिकता}} * {{rus}}: {{t+|ru|иску́сственный интелле́кт|m}}, {{t+|ru|ИИ́|m}} * {{jpn}}: {{t|ja|人工知能|tr=じんこうちのう, jinkō chinō}}, {{t|ja|アーティフィシャル・インテリジェンス|tr=ātifisharu-interijensu}} * {{oci}}: {{t|oc|intelligéncia artificiala|f}} * {{ori}}: {{t|or|ଆର୍ଟିଫିସିଆଲ ଇଣ୍ଟେଲିଜେନ୍ସ}} * {{pus}}: {{t|ps|مصنوعي ځيرکتیا}} * {{san}}: {{t|sa|कृत्रिम बुद्धिमता|f}} * {{fra}}: {{t+|fr|intelligence artificielle|f}} * {{fin}}: {{t+|fi|tekoäly}}, {{t+|fi|keinoäly}} * {{pan}}: {{t|pa|ਬਣਾਉਟੀ ਮਸ਼ੀਨੀ ਬੁੱਧੀ|f}} * {{epo}}: {{t|eo|artefarita inteligenteco}}, {{t|eo|artefarita intelekto}} * {{rum}}: {{t+|ro|inteligență artificială|f}} * {{ces}}: {{t|cs|umělá inteligence|f}} * {{hbs}}: ** {{Cyrl}}: {{t|sh|уметна интелигенција|f}}, {{t|sh|умјетна интелигенција|f}}, {{t|sh|вештачка интелигенција|f}}, {{t|sh|вјештачка интелигенција|f}} ** {{Latn}}: {{t|sh|umetna inteligencija|f}}, {{t|sh|umjetna inteligencija|f}}, {{t|sh|veštačka inteligencija|f}}, {{t|sh|vještačka inteligencija|f}} * {{sin}}: {{t|si|කෘත්‍රීම බුද්ධිය}} * {{slk}}: {{t|sk|umelá inteligencia|f}} * {{slv}}: {{t|sl|umetna inteligenca|f}} * {{swa}}: {{t|sw|akili mnemba}}, {{t|sw|akili bandia}} * {{tgl}}: {{t|tl|gawa-gawang katalinuhan}}, {{t|tl|intelihensiyang artipisyal}} * {{tgk}}: {{t|tg|ҳӯши маснӯъӣ}}, {{t|tg|зеҳни сунъӣ}} * {{tam}}: {{t|ta|செயற்கை நுண்ணறிவு}}, {{t|ta|செயற்கை அறிவுத்திறன்}} * {{tat}}: {{t|tt|ясалма интеллект}} * {{spa}}: {{t+|es|inteligencia artificial}} * {{tel}}: {{t|te|కృత్రిమ మేధస్సు}} * {{tha}}: {{t|th|ปัญญาประดิษฐ์}} * {{tur}}: {{t|tr|yapay zeka}} * {{swe}}: {{t+|sv|artificiell intelligens|c}} * {{kor}}: {{t+|ko|인공지능(人工知能)}} * {{zho}}: ** {{cmn}}: {{t+|cmn|人工智能}} * {{tuk}}: {{t|tk|ýasama akyl}} * {{ukr}}: {{t|uk|шту́чний інтеле́кт|m}} * {{urd}}: {{t|ur|مصنوعی ذہانت|f|tr=masnū'ī zahānat}} * {{uzb}}: {{t|uz|sunʻiy intellekt}}, {{t|uz|sunʼiy ong}} * {{cym}}: {{t|cy|deallusrwydd artiffisial|m}} * {{ita}}: {{t+|it|intelligenza artificiale}} * {{sah}}: {{t|sah|оҥоһуу интеллект}} * {{yid}}: {{t|yi|קינסטלעכע אינטעליגענץ|f}} * {{zul}}: {{t+|zu|uHlakahlisombulu}} {{trans-bottom}} {{-reference-}} {{R:Tratu|vn|vn}} {{C|vi|Trí tuệ nhân tạo}} d1rav0bzpn3pjbco5s5oeb9z2y67ecf chim săn mồi 0 288899 2350797 2268979 2026-05-07T08:02:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350797 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Haliaeetus leucocephalus in flight 2cr.jpg|nhỏ|[[đại bàng đầu trắng|Đại bàng đầu trắng]], một loài '''chim săn mồi'''.]] {{-etym-}} Từ ghép giữa {{ghép|vi|chim|săn|mồi}}. {{-pron-}} {{vie-IPA}} {{-noun-}} {{vie-noun|cls=con}} # Các loài [[chim]] ăn thịt, chủ yếu [[săn]] các loài [[động vật có xương sống]]. #* '''18/11/2015''', Phương Hoa, ''[https://vnexpress.net/dai-bang-tan-cong-may-bay-khong-nguoi-lai-tren-day-alps-3313918.html Đại bàng tấn công máy bay không người lái trên dãy Alps]'', VnExpress: #*: {{quote|vi|Con '''chim săn mồi''' tỏ ra giận dữ với vật thể lạ xâm phạm vùng trời riêng của nó và không gặp khó khăn nào trong việc hạ gục chiếc máy bay không người lái.}} {{-trans-}} {{trans-top|Các loài chim ăn thịt, chủ yếu săn các loài động vật có xương sống}} * {{ara}}: {{t|ar|طَيْر جَارِح}} * {{af}}: {{t+|af|roofvoël}} * {{eng}}: {{t+|en|bird of prey}}, {{t+|en|raptor}} * {{pol}}: {{t|pl|ptak drapieżny|m}} * {{fas}}: {{t+|fa|اشکره|tr=eškare}} * {{bak}}: {{t|ba|йыртҡыс ҡош}} * {{eus}}: {{t|eu|hegazti harrapari}} * {{bel}}: {{t|be|драпежная птушка|f}} * {{por}}: {{t+|pt|ave de rapina|f}} * {{ina}}: {{t|ia|ave de preda}} * {{bg}}: {{t|bg|граблива птица|f}} * {{cat-2}}: {{t|ca|rapinyaire}}, {{t|ca|ocell rapaç}}, {{t|ca|ocell de rapinya}} * {{chv}}: {{t|cv|ҫӑткӑн кайӑк|alt=çăткăн кайăк}} * {{heb}}: {{t|he|עוֹף דּוֹרֵס|m}} * {{uig}}: {{t|ug|يىرتقۇچ قۇش}} * {{dan}}: {{t+|da|rovfugl}} * {{deu}}: {{t+|de|Raubvogel}} * {{fao}}: {{t|fo|ránfuglur|m}} * {{gla}}: {{t|gd|eun-creiche|m}} * {{gl}}: {{t+|gl|ave de rapina|f}} * {{nld}}: {{t+|nl|roofvogel}} * {{hun}}: {{t+|hu|ragadozó madár}} * {{ell}}: {{t|el|αρπακτικό πτηνό|n}} ** {{grc}}: {{t|grc|οἰωνός|m}} * {{isl}}: {{t+|is|ránfugl|m}} * {{kum}}: {{t|kum|йыртгъыч къуш}} * {{lav}}: {{t|lv|plēsējputns|m}} * {{langname|lb}}: {{t|lb|Gräifvull|m}} * {{mkd}}: {{t|mk|птица-грабливка|f}}, {{t|mk|граблива птица|f}} * {{mon}}: {{t|mn|махчин шувуу|sc=Cyrl}} * {{rus}}: {{t|ru|хи́щная пти́ца|f}} * {{jpn}}: {{t+|ja|猛禽}}, {{t|ja|もうきん|tr=mōkin}} * {{fra}}: {{t+|fr|oiseau de proie|m}}, {{t+|fr|rapace|m}} ** {{fro}}: {{t|fro|oisel de proie|m}} * {{fin}}: {{t+|fi|petolintu}} * {{que}}: {{t|qu|aqchi}}, {{t+|qu|anka}} {{qualifier|Cuzco}} * {{eo}}: {{t|eo|rabobirdo}} * {{ron}}: {{t+|ro|pasăre de pradă|f}} * {{ces}}: {{t|cs|dravý pták}} * {{hbs}}: {{t|sh|птица грабљивица|f}}, {{t|sh|ptica grabljivica|f}} * {{slk}}: {{t|sk|dravý vták|m}} * {{slv}}: {{t|sl|ptica roparica|f}} * {{tgl}}: {{t|tl|limbas}} * {{tat}}: {{t|tt|ерткыч кош}} * {{spa}}: {{t+|es|ave rapaz|f}}, {{t+|es|ave de rapiña|f}}, {{t+|es|ave rapiega|f}}, {{t|es|ave de presa}} * {{tha}}: {{t|th|นกล่าเหยื่อ}} * {{tur}}: {{t+|tr|alıcı kuş}}, {{t+|tr|avcı kuş}}, {{t|tr|gündüz yırtıcı kuş}} * {{ota}}: {{t|ota|طاوشانجیل|tr=tavşancıl}} * {{swe}}: {{t+|sv|rovfågel|c}} * {{bcl}}: {{t|bcl|wikwik}} * {{zh}}: ** {{cmn}}: {{t+|cmn|猛禽|tr=měngqín}}, {{t+|cmn|鷙|tr=zhì}} * {{cym}}: {{t+|cy|aderyn ysglyfaethus}} * {{it}}: {{t+|it|rapace|m}} {{trans-bottom}} {{C|vi|Chim săn mồi}} cou3nbsbm99ac3wn5y2ibrpldksi9hx 2351061 2350797 2026-05-07T10:47:39Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351061 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Haliaeetus leucocephalus in flight 2cr.jpg|nhỏ|[[đại bàng đầu trắng|Đại bàng đầu trắng]], một loài '''chim săn mồi'''.]] {{-etym-}} Từ ghép giữa {{ghép|vi|chim|săn|mồi}}. {{-pron-}} {{vie-IPA}} {{-noun-}} {{vie-noun|cls=con}} # Các loài [[chim]] ăn thịt, chủ yếu [[săn]] các loài [[động vật có xương sống]]. #* '''18/11/2015''', Phương Hoa, ''[https://vnexpress.net/dai-bang-tan-cong-may-bay-khong-nguoi-lai-tren-day-alps-3313918.html Đại bàng tấn công máy bay không người lái trên dãy Alps]'', VnExpress: #*: {{quote|vi|Con '''chim săn mồi''' tỏ ra giận dữ với vật thể lạ xâm phạm vùng trời riêng của nó và không gặp khó khăn nào trong việc hạ gục chiếc máy bay không người lái.}} {{-trans-}} {{trans-top|Các loài chim ăn thịt, chủ yếu săn các loài động vật có xương sống}} * {{ara}}: {{t|ar|طَيْر جَارِح}} * {{af}}: {{t+|af|roofvoël}} * {{eng}}: {{t+|en|bird of prey}}, {{t+|en|raptor}} * {{pol}}: {{t|pl|ptak drapieżny|m}} * {{fas}}: {{t+|fa|اشکره|tr=eškare}} * {{bak}}: {{t|ba|йыртҡыс ҡош}} * {{eus}}: {{t|eu|hegazti harrapari}} * {{bel}}: {{t|be|драпежная птушка|f}} * {{por}}: {{t+|pt|ave de rapina|f}} * {{ina}}: {{t|ia|ave de preda}} * {{bg}}: {{t|bg|граблива птица|f}} * {{cat-old}}: {{t|ca|rapinyaire}}, {{t|ca|ocell rapaç}}, {{t|ca|ocell de rapinya}} * {{chv}}: {{t|cv|ҫӑткӑн кайӑк|alt=çăткăн кайăк}} * {{heb}}: {{t|he|עוֹף דּוֹרֵס|m}} * {{uig}}: {{t|ug|يىرتقۇچ قۇش}} * {{dan}}: {{t+|da|rovfugl}} * {{deu}}: {{t+|de|Raubvogel}} * {{fao}}: {{t|fo|ránfuglur|m}} * {{gla}}: {{t|gd|eun-creiche|m}} * {{gl}}: {{t+|gl|ave de rapina|f}} * {{nld}}: {{t+|nl|roofvogel}} * {{hun}}: {{t+|hu|ragadozó madár}} * {{ell}}: {{t|el|αρπακτικό πτηνό|n}} ** {{grc}}: {{t|grc|οἰωνός|m}} * {{isl}}: {{t+|is|ránfugl|m}} * {{kum}}: {{t|kum|йыртгъыч къуш}} * {{lav}}: {{t|lv|plēsējputns|m}} * {{langname|lb}}: {{t|lb|Gräifvull|m}} * {{mkd}}: {{t|mk|птица-грабливка|f}}, {{t|mk|граблива птица|f}} * {{mon}}: {{t|mn|махчин шувуу|sc=Cyrl}} * {{rus}}: {{t|ru|хи́щная пти́ца|f}} * {{jpn}}: {{t+|ja|猛禽}}, {{t|ja|もうきん|tr=mōkin}} * {{fra}}: {{t+|fr|oiseau de proie|m}}, {{t+|fr|rapace|m}} ** {{fro}}: {{t|fro|oisel de proie|m}} * {{fin}}: {{t+|fi|petolintu}} * {{que}}: {{t|qu|aqchi}}, {{t+|qu|anka}} {{qualifier|Cuzco}} * {{eo}}: {{t|eo|rabobirdo}} * {{ron}}: {{t+|ro|pasăre de pradă|f}} * {{ces}}: {{t|cs|dravý pták}} * {{hbs}}: {{t|sh|птица грабљивица|f}}, {{t|sh|ptica grabljivica|f}} * {{slk}}: {{t|sk|dravý vták|m}} * {{slv}}: {{t|sl|ptica roparica|f}} * {{tgl}}: {{t|tl|limbas}} * {{tat}}: {{t|tt|ерткыч кош}} * {{spa}}: {{t+|es|ave rapaz|f}}, {{t+|es|ave de rapiña|f}}, {{t+|es|ave rapiega|f}}, {{t|es|ave de presa}} * {{tha}}: {{t|th|นกล่าเหยื่อ}} * {{tur}}: {{t+|tr|alıcı kuş}}, {{t+|tr|avcı kuş}}, {{t|tr|gündüz yırtıcı kuş}} * {{ota}}: {{t|ota|طاوشانجیل|tr=tavşancıl}} * {{swe}}: {{t+|sv|rovfågel|c}} * {{bcl}}: {{t|bcl|wikwik}} * {{zh}}: ** {{cmn}}: {{t+|cmn|猛禽|tr=měngqín}}, {{t+|cmn|鷙|tr=zhì}} * {{cym}}: {{t+|cy|aderyn ysglyfaethus}} * {{it}}: {{t+|it|rapace|m}} {{trans-bottom}} {{C|vi|Chim săn mồi}} i18svhs6spc8vasnpfr4p0a4fppb387 dấu chấm hỏi 0 290163 2350798 2269005 2026-05-07T08:02:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350798 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Unicode 0x003F.svg|nhỏ|'''Dấu chấm hỏi'''.]] {{-etym-}} Từ ghép giữa {{compound|vi|dấu chấm|hỏi}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|head=[[dấu chấm]] [[hỏi]]}} # Dấu '''[[?]]''' đặt ở cuối câu để hỏi dùng làm câu [[nghi vấn]]. {{-synonym-}} * {{vi-l|dấu hỏi}} * {{vi-l|dấu hỏi chấm}} {{-trans-}} {{trans-top|Dấu câu}} * {{ara}}: {{t+|ar|؟}} {{q|ký hiệu}}, {{t+|ar|عَلَامَة اِسْتِفْهَام|f|tr=ʕalāmat istifhām}} * {{sqi}}: {{t+|sq|pikëpyetje|f}} * {{eng}}: {{t+|en|question mark}}, {{t+|en|eroteme}}, {{t+|en|interrogation mark}}, {{t+|en|interrogation point}}, {{t+|en|interrogative}} {{q|cổ xưa}}, {{t+|en|interrogative-point}} {{q|lỗi thời}}, {{t+|en|query}}, {{t+|en|note of interrogation}} {{q|lỗi thời}} * {{hye}}: &nbsp;[[՞]] {{q|ký hiệu}}, {{t+|hy|հարցական նշան}} * {{aze}}: {{t|az|sual işarəsi}} * {{pol}}: {{t+|pl|pytajnik|m}}, {{t+|pl|znak zapytania|m}} * {{fa}}: {{t|fa|؟}}, {{t+|fa|علامت سؤال|tr='alâmat-e so'âl}} * {{ba}}: {{t|ba|һорау билдәһе}} * {{bel}}: {{t|be|пыта́льнік|m}}, {{t|be|пыта́льны знак|m}} * {{bn}}: {{t|bn|জিজ্ঞাসাচিহ্ন}} * {{por}}: {{t+|pt|ponto de interrogação|m}} * {{bre}}: {{t|br|pik-goulennata|m}} * {{bul}}: {{t|bg|въпроси́телен знак|m}} * {{cat-2}}: {{t+|ca|interrogant}}, {{t|ca|signe d'interrogació|m}} * {{kw}}: {{t|kw|nos kwestyon|m}} * {{heb}}: {{t+|he|סִימַן שְׁאֵלָה|m|tr=sìmán she'éla}} * {{dan}}: {{t+|da|spørgsmålstegn|n}} * {{deu}}: {{t+|de|Fragezeichen|n}} * {{fo}}: {{t|fo|spurnartekn|n}} * {{gd}}: {{t|gd|comharradh-ceiste|m}} * {{ka}}: {{t|ka|კითხვის ნიშანი}} * {{nld}}: {{t+|nl|vraagteken|n}} * {{hin}}: {{t|hi|प्रश्नचिह्न}} * {{hun}}: {{t+|hu|kérdőjel}} * {{ell}}: {{t+|el|;}}, {{t+|el|ερωτηματικό|n}} * {{isl}}: {{t|is|spurningarmerki|n}} * {{ido}}: {{t+|io|questionopunto}} * {{ind}}: {{t+|id|tanda tanya}} * {{ga}}: {{t|ga|comhartha ceiste|m}} * {{xal}}: {{t|xal|сургч темдг}} * {{kk}}: {{t|kk|сұрау белгісі}}, {{t|kk|сұрақ белгісі}} * {{kjh}}: {{t|kjh|сурығ танығы}} * {{khm}}: {{t|km|ល្បះសំនួរ}} * {{ky}}: {{t|ky|суроо белгиси}} * {{lv}}: {{t|lv|jautājuma zīme|f}} * {{lt}}: {{t+|lt|klaustukas}} * {{khb}}: {{t|khb|ᦺᦙᧉᦏᦱᧄ}} * {{langname|lb}}: {{t|lb|Froenzeechen|n}} * {{ms}}: {{t+|ms|tanda soal}} * {{mkd}}: {{t|mk|пра́шалник|m}} * {{ml}}: {{t+|ml|ചോദ്യചിഹ്നം}} * {{mi}}: {{t|mi|tohu pātai}} * {{mya}}: {{t+|my|း။}} {{q|ký hiệu}} * {{mon}}: {{t|mn|асуултын тэмдэг}} * {{nor}}: ** {{nob}}: {{t+|nb|spørsmålstegn|n}} * {{langname|alt}}: {{t|alt|суракту темдек}}, {{t|alt|суру билди}}, {{t|alt|сурак билди}} * {{rus}}: {{t+|ru|вопроси́тельный знак|m}}, {{t+|ru|знак вопро́са|m}} * {{jpn}}: {{t+|ja|?}}, {{t+|ja|疑問符|tr=ぎもんふ, gimonfu}} * {{nrf}}: {{t|nrf|point d'tchestchionn'nie|m}} {{q|Jersey}}, {{t|nrf|mèrque dé tchestchion|f}} {{q|Jersey}} * {{ps}}: {{t|ps|؟}} * {{fra}}: {{t+|fr|point d'interrogation|m}} * {{fin}}: {{t+|fi|kysymysmerkki}} * {{epo}}: {{t|eo|demandosigno}} * {{ro}}: {{t|ro|semn de întrebare|n}} * {{cs}}: {{t+|cs|otazník|m}} * {{sh}}: ** {{Cyrl}}: {{t|sh|упитник|m}} ** {{Latn}}: {{t+|sh|ùpitnīk|m}} * {{sk}}: {{t|sk|otáznik|m}} * {{sl}}: {{t+|sl|vprašaj|m}} * {{tgl}}: {{t|tl|tandang pananong}} * {{tg}}: {{t|tg|аломати савол}} * {{crh}}: {{t|crh|sual işareti}} * {{aii}}: {{t|aii|؟|tr=?}} {{q|ký hiệu}}, {{t|aii|ܫܘܼܘܕܵܥܵܐ ܕܫܘܼܐܵܠܵܐ|m|tr=šuwdāʿā d-šuʾālā}} * {{spa}}: {{t|es|signo de interrogación|m}} * {{tha}}: {{t+|th|ปรัศนี}}, {{t+|th|เครื่องหมายคำถาม}}, {{t+|th|เครื่องหมายสงสัย}} * {{tur}}: {{t+|tr|soru işareti}} * {{sv}}: {{t+|sv|frågetecken|n}} * {{kor}}: {{t+|ko|물음표}} * {{zho}}: ** {{cmn}}: {{t+|cmn|?}} {{q|ký hiệu}}, {{t+|cmn|問號|tr=wènhào}} * {{udm}}: {{t|udm|юан пус}} * {{ukr}}: {{t|uk|знак пита́ння|m}}, {{t|uk|пита́льний знак|m}} * {{urd}}: {{t|ur|؟}} {{qualifier|symbol}}, {{t|ur|سوالیہ نشان|m}} * {{uz}}: {{t|uz|soʻroq belgisi}} * {{vol}}: {{t+|vo|säkamalül}} * {{cym}}: {{t|cy|gofynnod|m}}, {{t|cy|holnod|m}}, {{t|cy|marc cwestiwn|m}} * {{ita}}: {{t+|it|punto interrogativo|m}}, {{t|it|punto di domanda|m}} * {{sah}}: {{t|sah|ыйытыы бэлиэтэ}} * {{yid}}: {{t|yi|פֿרעגצייכן|m}} {{trans-bottom}} {{-see also-}} {{dấu câu}} {{-reference-}} {{R:Tratu|vn|vn}} {{C|vi|Dấu câu}} 7a1x7josi246w5ld7paveslum00gnbo 2351062 2350798 2026-05-07T10:47:42Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351062 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:Unicode 0x003F.svg|nhỏ|'''Dấu chấm hỏi'''.]] {{-etym-}} Từ ghép giữa {{compound|vi|dấu chấm|hỏi}}. {{-pron-}} {{vie-pron}} {{-noun-}} {{vi-noun|head=[[dấu chấm]] [[hỏi]]}} # Dấu '''[[?]]''' đặt ở cuối câu để hỏi dùng làm câu [[nghi vấn]]. {{-synonym-}} * {{vi-l|dấu hỏi}} * {{vi-l|dấu hỏi chấm}} {{-trans-}} {{trans-top|Dấu câu}} * {{ara}}: {{t+|ar|؟}} {{q|ký hiệu}}, {{t+|ar|عَلَامَة اِسْتِفْهَام|f|tr=ʕalāmat istifhām}} * {{sqi}}: {{t+|sq|pikëpyetje|f}} * {{eng}}: {{t+|en|question mark}}, {{t+|en|eroteme}}, {{t+|en|interrogation mark}}, {{t+|en|interrogation point}}, {{t+|en|interrogative}} {{q|cổ xưa}}, {{t+|en|interrogative-point}} {{q|lỗi thời}}, {{t+|en|query}}, {{t+|en|note of interrogation}} {{q|lỗi thời}} * {{hye}}: &nbsp;[[՞]] {{q|ký hiệu}}, {{t+|hy|հարցական նշան}} * {{aze}}: {{t|az|sual işarəsi}} * {{pol}}: {{t+|pl|pytajnik|m}}, {{t+|pl|znak zapytania|m}} * {{fa}}: {{t|fa|؟}}, {{t+|fa|علامت سؤال|tr='alâmat-e so'âl}} * {{ba}}: {{t|ba|һорау билдәһе}} * {{bel}}: {{t|be|пыта́льнік|m}}, {{t|be|пыта́льны знак|m}} * {{bn}}: {{t|bn|জিজ্ঞাসাচিহ্ন}} * {{por}}: {{t+|pt|ponto de interrogação|m}} * {{bre}}: {{t|br|pik-goulennata|m}} * {{bul}}: {{t|bg|въпроси́телен знак|m}} * {{cat-old}}: {{t+|ca|interrogant}}, {{t|ca|signe d'interrogació|m}} * {{kw}}: {{t|kw|nos kwestyon|m}} * {{heb}}: {{t+|he|סִימַן שְׁאֵלָה|m|tr=sìmán she'éla}} * {{dan}}: {{t+|da|spørgsmålstegn|n}} * {{deu}}: {{t+|de|Fragezeichen|n}} * {{fo}}: {{t|fo|spurnartekn|n}} * {{gd}}: {{t|gd|comharradh-ceiste|m}} * {{ka}}: {{t|ka|კითხვის ნიშანი}} * {{nld}}: {{t+|nl|vraagteken|n}} * {{hin}}: {{t|hi|प्रश्नचिह्न}} * {{hun}}: {{t+|hu|kérdőjel}} * {{ell}}: {{t+|el|;}}, {{t+|el|ερωτηματικό|n}} * {{isl}}: {{t|is|spurningarmerki|n}} * {{ido}}: {{t+|io|questionopunto}} * {{ind}}: {{t+|id|tanda tanya}} * {{ga}}: {{t|ga|comhartha ceiste|m}} * {{xal}}: {{t|xal|сургч темдг}} * {{kk}}: {{t|kk|сұрау белгісі}}, {{t|kk|сұрақ белгісі}} * {{kjh}}: {{t|kjh|сурығ танығы}} * {{khm}}: {{t|km|ល្បះសំនួរ}} * {{ky}}: {{t|ky|суроо белгиси}} * {{lv}}: {{t|lv|jautājuma zīme|f}} * {{lt}}: {{t+|lt|klaustukas}} * {{khb}}: {{t|khb|ᦺᦙᧉᦏᦱᧄ}} * {{langname|lb}}: {{t|lb|Froenzeechen|n}} * {{ms}}: {{t+|ms|tanda soal}} * {{mkd}}: {{t|mk|пра́шалник|m}} * {{ml}}: {{t+|ml|ചോദ്യചിഹ്നം}} * {{mi}}: {{t|mi|tohu pātai}} * {{mya}}: {{t+|my|း။}} {{q|ký hiệu}} * {{mon}}: {{t|mn|асуултын тэмдэг}} * {{nor}}: ** {{nob}}: {{t+|nb|spørsmålstegn|n}} * {{langname|alt}}: {{t|alt|суракту темдек}}, {{t|alt|суру билди}}, {{t|alt|сурак билди}} * {{rus}}: {{t+|ru|вопроси́тельный знак|m}}, {{t+|ru|знак вопро́са|m}} * {{jpn}}: {{t+|ja|?}}, {{t+|ja|疑問符|tr=ぎもんふ, gimonfu}} * {{nrf}}: {{t|nrf|point d'tchestchionn'nie|m}} {{q|Jersey}}, {{t|nrf|mèrque dé tchestchion|f}} {{q|Jersey}} * {{ps}}: {{t|ps|؟}} * {{fra}}: {{t+|fr|point d'interrogation|m}} * {{fin}}: {{t+|fi|kysymysmerkki}} * {{epo}}: {{t|eo|demandosigno}} * {{ro}}: {{t|ro|semn de întrebare|n}} * {{cs}}: {{t+|cs|otazník|m}} * {{sh}}: ** {{Cyrl}}: {{t|sh|упитник|m}} ** {{Latn}}: {{t+|sh|ùpitnīk|m}} * {{sk}}: {{t|sk|otáznik|m}} * {{sl}}: {{t+|sl|vprašaj|m}} * {{tgl}}: {{t|tl|tandang pananong}} * {{tg}}: {{t|tg|аломати савол}} * {{crh}}: {{t|crh|sual işareti}} * {{aii}}: {{t|aii|؟|tr=?}} {{q|ký hiệu}}, {{t|aii|ܫܘܼܘܕܵܥܵܐ ܕܫܘܼܐܵܠܵܐ|m|tr=šuwdāʿā d-šuʾālā}} * {{spa}}: {{t|es|signo de interrogación|m}} * {{tha}}: {{t+|th|ปรัศนี}}, {{t+|th|เครื่องหมายคำถาม}}, {{t+|th|เครื่องหมายสงสัย}} * {{tur}}: {{t+|tr|soru işareti}} * {{sv}}: {{t+|sv|frågetecken|n}} * {{kor}}: {{t+|ko|물음표}} * {{zho}}: ** {{cmn}}: {{t+|cmn|?}} {{q|ký hiệu}}, {{t+|cmn|問號|tr=wènhào}} * {{udm}}: {{t|udm|юан пус}} * {{ukr}}: {{t|uk|знак пита́ння|m}}, {{t|uk|пита́льний знак|m}} * {{urd}}: {{t|ur|؟}} {{qualifier|symbol}}, {{t|ur|سوالیہ نشان|m}} * {{uz}}: {{t|uz|soʻroq belgisi}} * {{vol}}: {{t+|vo|säkamalül}} * {{cym}}: {{t|cy|gofynnod|m}}, {{t|cy|holnod|m}}, {{t|cy|marc cwestiwn|m}} * {{ita}}: {{t+|it|punto interrogativo|m}}, {{t|it|punto di domanda|m}} * {{sah}}: {{t|sah|ыйытыы бэлиэтэ}} * {{yid}}: {{t|yi|פֿרעגצייכן|m}} {{trans-bottom}} {{-see also-}} {{dấu câu}} {{-reference-}} {{R:Tratu|vn|vn}} {{C|vi|Dấu câu}} qq8kjnuq8ccon5h31jx49b43st318ic ban mai 0 290948 2350799 2272250 2026-05-07T08:02:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350799 wikitext text/x-wiki {{-vie-}} {{-etym-}} Chữ Hán 班 (ca làm việc) và chữ Nôm 𣈕 mai (ngày mai). {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} #[[buổi sáng|Buổi sáng]], [[lúc]] [[sáng sớm]]. #:*{{quote|vi|Bấy giờ sự sáng ngươi sẽ hừng lên như sự sáng '''ban mai''' (''[[s:Ê-sai/Chương 58|Ê-sai 58:8]]'')}} #:*{{quote-book|vi|author=Nam Cao|authorlink=Nam Cao|chapter=[[s:Sống mòn/Phần XV|XV]]|title=[[s:Sống mòn|Sống mòn]]|location=[[Hà Nội]]|publisher=Nhà xuất bản Văn học|year=1944|year2=1956|passage=Tôi rất thích ánh nắng '''ban mai'''...}} {{-trans-}} {{đầu}} * {{ara}}: {{t+|ar|فَجر}} * {{afr}}: {{t+|af|dagbreek}} * {{amh}}: {{t+|am|ንጋት}} * {{eng}}: {{t+|en|dawn}} * {{hye}}: {{t+|hy|արշալույս}} * {{aym}}: {{t+|ay|alwaxa}} * {{aze}}: {{t+|az|sübh}} * {{pol}}: {{t+|pl|świt}} * {{fas}}: {{t+|fa|سپیده دم}} * {{eus}}: {{t+|eu|egunsentia}} * {{isl}}: {{t+|is|dögun}} * {{bel}}: {{t+|be|світанне}} * {{por}}: {{t+|pt|alvorecer}} * {{bul}}: {{t+|bg|зора}} * {{cat-2}}: {{t+|ca|alba}} * {{heb}}:{{t+|he|שַׁחַר}} * {{uig}}:{{t+|ug|تاڭ}} * {{dan}}: {{t+|da|daggry}} * {{deu}}: {{t+|de|Dämmerung}} {{f}} * {{est}}: {{t+|et|koit}} * {{fry}}: {{t+|fy|dage}} * {{gla}}: {{t+|gd|madainn}} * {{glg}}: {{t+|gl|amencer}} * {{kat}}: {{t+|ka|გამთენიისას}} * {{grn}}: {{t+|gn|ko’ẽmbotávo}} * {{guj}}: {{t+|gu|પરોઢ}} * {{nld}}: {{t+|nl|ochtendgloren}} * {{hau}}: {{t+|ha|alfijir}} * {{hin}}: {{t+|hi|भोर}} * {{hun}}: {{t+|hu|hajnal}} * {{ind}}: {{t+|id|fajar}} * {{gle}}: {{t+|ga|breacadh an lae}} * {{jav}}: {{t+|jv|subuh}} * {{kan}}: {{t+|kn|ಮುಂಜಾನೆ}} * {{kaz}}: {{t+|kk|таң}} * {{khm}}: {{t+|km|ព្រឹកព្រលឹម}} * {{kur}}: {{t+|ku|بەیانی}} * {{kir}}: {{t+|ky|таң}} * {{lao}}: {{t+|lo|ອາລຸນ}} * {{lat}}: {{t+|la|aurora}} * {{lav}}: {{t+|lv|rītausma}} * {{lit}}: {{t+|lt|aušra}} * {{ltz}}: {{t+|lb|Sonnenopgang}} * {{msa}}: {{t+|ms|subuh}} * {{mkd}}: {{t+|mk|зората}} * {{mlg}}: {{t+|mg|mangiran-dratsy}} * {{mal}}: {{t+|ml|പ്രഭാതത്തെ}} * {{mlt}}: {{t+|mt|bidunett}} * {{mri}}: {{t+|mi|ata}} * {{mar}}: {{t+|mr|पहाट}} * {{mya}}: {{t+|my|အရုဏ်တက်}} * {{mon}}: {{t+|mn|үүр}} * {{nor}}: {{t+|no|daggry}} * {{nep}}: {{t+|ne|बिहान}} * {{rus}}: {{t+|ru|рассвет}} {{m}} * {{ori}}: {{t+|or|ଭୋର}} * {{orm}}: {{t+|om|barii}} * {{pus}}: {{t+|ps|سهار}} * {{jpn}}: {{t+|ja|暁}} * {{san}}: {{t+|sa|प्रदोषः}} * {{fra}}: {{t+|fr|aube}} * {{fin}}: {{t+|fi|aamunkoitto}} * {{pan}}: {{t+|pa|ਸਵੇਰ}} * {{que}}: {{t+|qu|achikyay}} * {{epo}}: {{t+|eo|tagiĝo}} * {{ron}}: {{t+|ro|zori}} * {{ces}}: {{t+|cs|svítání}} * {{slk}}: {{t+|sk|svitanie}} * {{slv}}: {{t+|sv|svit}} * {{hbs}}: {{t+|sh|zora}} * {{sin}}: {{t+|si|අලුයම}} * {{som}}: {{t+|so|waaberiga}} * {{sun}}: {{t+|su|subuh}} * {{swa}}: {{t+|sw|alfajiri}} * {{tgk}}: {{t+|tg|субҳ}} * {{tam}}: {{t+|ta|விடியல்}} * {{tat}}: {{t+|tt|таң}} * {{spa}}: {{t+|es|amanecer}} * {{tel}}: {{t+|te|తెల్లవారుజాము}} * {{tha}}: {{t+|th|รุ่งอรุณ}} * {{tur}}: {{t+|tr|şafak}} * {{swe}}: {{t+|sv|gryning}} * {{tir}}: {{t+|ti|ወጋሕታ}} * {{kor}}: {{t+|ko|새벽}} * {{zho}}: {{t+|zh|黎明}} * {{tuk}}: {{t+|tk|daň atmak}} * {{ukr}}: {{t+|uk|світанок}} * {{urd}}: {{t+|ur|ڈان کی}} * {{uzb}}: {{t+|uz|tong}} * {{cym}}: {{t+|cy|wawr}} * {{ita}}: {{t+|it|alba}} * {{yor}}: {{l|yo|owurọ}} * {{zul}}: {{t+|zu|ukusa}} {{cuối}} {{-reference-}} #{{Chú thích sách|title=[http://www.namkyluctinh.com/eBooks/TuDien/Viet-Nam-Tu-Dien_Le-van-Duc_Le-ngoc-Tru_1970-1.pdf Việt Nam tự điển, quyển Thượng]|author=Lê Văn Đức|year=1970|page=57|location=[[Sài Gòn]]|publisher=Nhà sách Khai Trí}} #{{Chú thích sách|title=Từ điển tiếng Việt|author=Hoàng Phê|year=2003|page=[https://archive.org/details/tu-dien-tieng-viet-vien-ngon-ngu-hoc/page/28 28]|location=[[Hà Nội]]-[[Đà Nẵng]]|publisher=Nhà xuất bản Đà Nẵng}} reifm8v3gu2943q6ladm17qghcag9g1 2351063 2350799 2026-05-07T10:47:45Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351063 wikitext text/x-wiki {{-vie-}} {{-etym-}} Chữ Hán 班 (ca làm việc) và chữ Nôm 𣈕 mai (ngày mai). {{-pron-}} {{vie-pron}} {{-noun-}} {{vie-noun}} #[[buổi sáng|Buổi sáng]], [[lúc]] [[sáng sớm]]. #:*{{quote|vi|Bấy giờ sự sáng ngươi sẽ hừng lên như sự sáng '''ban mai''' (''[[s:Ê-sai/Chương 58|Ê-sai 58:8]]'')}} #:*{{quote-book|vi|author=Nam Cao|authorlink=Nam Cao|chapter=[[s:Sống mòn/Phần XV|XV]]|title=[[s:Sống mòn|Sống mòn]]|location=[[Hà Nội]]|publisher=Nhà xuất bản Văn học|year=1944|year2=1956|passage=Tôi rất thích ánh nắng '''ban mai'''...}} {{-trans-}} {{đầu}} * {{ara}}: {{t+|ar|فَجر}} * {{afr}}: {{t+|af|dagbreek}} * {{amh}}: {{t+|am|ንጋት}} * {{eng}}: {{t+|en|dawn}} * {{hye}}: {{t+|hy|արշալույս}} * {{aym}}: {{t+|ay|alwaxa}} * {{aze}}: {{t+|az|sübh}} * {{pol}}: {{t+|pl|świt}} * {{fas}}: {{t+|fa|سپیده دم}} * {{eus}}: {{t+|eu|egunsentia}} * {{isl}}: {{t+|is|dögun}} * {{bel}}: {{t+|be|світанне}} * {{por}}: {{t+|pt|alvorecer}} * {{bul}}: {{t+|bg|зора}} * {{cat-old}}: {{t+|ca|alba}} * {{heb}}:{{t+|he|שַׁחַר}} * {{uig}}:{{t+|ug|تاڭ}} * {{dan}}: {{t+|da|daggry}} * {{deu}}: {{t+|de|Dämmerung}} {{f}} * {{est}}: {{t+|et|koit}} * {{fry}}: {{t+|fy|dage}} * {{gla}}: {{t+|gd|madainn}} * {{glg}}: {{t+|gl|amencer}} * {{kat}}: {{t+|ka|გამთენიისას}} * {{grn}}: {{t+|gn|ko’ẽmbotávo}} * {{guj}}: {{t+|gu|પરોઢ}} * {{nld}}: {{t+|nl|ochtendgloren}} * {{hau}}: {{t+|ha|alfijir}} * {{hin}}: {{t+|hi|भोर}} * {{hun}}: {{t+|hu|hajnal}} * {{ind}}: {{t+|id|fajar}} * {{gle}}: {{t+|ga|breacadh an lae}} * {{jav}}: {{t+|jv|subuh}} * {{kan}}: {{t+|kn|ಮುಂಜಾನೆ}} * {{kaz}}: {{t+|kk|таң}} * {{khm}}: {{t+|km|ព្រឹកព្រលឹម}} * {{kur}}: {{t+|ku|بەیانی}} * {{kir}}: {{t+|ky|таң}} * {{lao}}: {{t+|lo|ອາລຸນ}} * {{lat}}: {{t+|la|aurora}} * {{lav}}: {{t+|lv|rītausma}} * {{lit}}: {{t+|lt|aušra}} * {{ltz}}: {{t+|lb|Sonnenopgang}} * {{msa}}: {{t+|ms|subuh}} * {{mkd}}: {{t+|mk|зората}} * {{mlg}}: {{t+|mg|mangiran-dratsy}} * {{mal}}: {{t+|ml|പ്രഭാതത്തെ}} * {{mlt}}: {{t+|mt|bidunett}} * {{mri}}: {{t+|mi|ata}} * {{mar}}: {{t+|mr|पहाट}} * {{mya}}: {{t+|my|အရုဏ်တက်}} * {{mon}}: {{t+|mn|үүр}} * {{nor}}: {{t+|no|daggry}} * {{nep}}: {{t+|ne|बिहान}} * {{rus}}: {{t+|ru|рассвет}} {{m}} * {{ori}}: {{t+|or|ଭୋର}} * {{orm}}: {{t+|om|barii}} * {{pus}}: {{t+|ps|سهار}} * {{jpn}}: {{t+|ja|暁}} * {{san}}: {{t+|sa|प्रदोषः}} * {{fra}}: {{t+|fr|aube}} * {{fin}}: {{t+|fi|aamunkoitto}} * {{pan}}: {{t+|pa|ਸਵੇਰ}} * {{que}}: {{t+|qu|achikyay}} * {{epo}}: {{t+|eo|tagiĝo}} * {{ron}}: {{t+|ro|zori}} * {{ces}}: {{t+|cs|svítání}} * {{slk}}: {{t+|sk|svitanie}} * {{slv}}: {{t+|sv|svit}} * {{hbs}}: {{t+|sh|zora}} * {{sin}}: {{t+|si|අලුයම}} * {{som}}: {{t+|so|waaberiga}} * {{sun}}: {{t+|su|subuh}} * {{swa}}: {{t+|sw|alfajiri}} * {{tgk}}: {{t+|tg|субҳ}} * {{tam}}: {{t+|ta|விடியல்}} * {{tat}}: {{t+|tt|таң}} * {{spa}}: {{t+|es|amanecer}} * {{tel}}: {{t+|te|తెల్లవారుజాము}} * {{tha}}: {{t+|th|รุ่งอรุณ}} * {{tur}}: {{t+|tr|şafak}} * {{swe}}: {{t+|sv|gryning}} * {{tir}}: {{t+|ti|ወጋሕታ}} * {{kor}}: {{t+|ko|새벽}} * {{zho}}: {{t+|zh|黎明}} * {{tuk}}: {{t+|tk|daň atmak}} * {{ukr}}: {{t+|uk|світанок}} * {{urd}}: {{t+|ur|ڈان کی}} * {{uzb}}: {{t+|uz|tong}} * {{cym}}: {{t+|cy|wawr}} * {{ita}}: {{t+|it|alba}} * {{yor}}: {{l|yo|owurọ}} * {{zul}}: {{t+|zu|ukusa}} {{cuối}} {{-reference-}} #{{Chú thích sách|title=[http://www.namkyluctinh.com/eBooks/TuDien/Viet-Nam-Tu-Dien_Le-van-Duc_Le-ngoc-Tru_1970-1.pdf Việt Nam tự điển, quyển Thượng]|author=Lê Văn Đức|year=1970|page=57|location=[[Sài Gòn]]|publisher=Nhà sách Khai Trí}} #{{Chú thích sách|title=Từ điển tiếng Việt|author=Hoàng Phê|year=2003|page=[https://archive.org/details/tu-dien-tieng-viet-vien-ngon-ngu-hoc/page/28 28]|location=[[Hà Nội]]-[[Đà Nẵng]]|publisher=Nhà xuất bản Đà Nẵng}} c497nnlcitegng3lbx01zu0l2x3zn16 cờ vây 0 304964 2350819 2268977 2026-05-07T08:08:37Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350819 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:HKHM 沙田 Shatin 香港文化博物館 HK Heritage Museum 金庸展廳館 Jin Yong Gallery March 2017 IX1 圍棋 GO board game.jpg|nhỏ|Cờ vây]] {{-etymology-}} Từ {{affix|vi|cờ|vây}}, {{calque|vi|zh|圍棋|tr=vi kì|nocap=y}}. So sánh với {{cognate|ja|囲碁|tr=igo}}. {{-pron-}} {{vi-ipa}} {{-noun-}} {{vi-noun}} # {{nhãn|vi|board game}} Trò chơi [[chiến thuật]], có nguồn gốc từ [[Trung Quốc]], gồm 2 người chơi (quân đen và trắng) có mục tiêu [[bao vây]] nhiều [[lãnh thổ]] hơn [[đối thủ]]. {{-trans-}} {{trans-top|Trò chơi với bàn cờ}} * {{ar}}: {{t|ar|غُو|m}} * {{am}}: {{t|am|ጎ}} * {{en}}: {{t+|en|go}} * {{hy}}: {{t+|hy|գո}} * {{pl}}: {{t+|pl|go|n}} * {{fa}}: {{t+|fa|گو|tr=gô}} * {{eu}}: {{t+|eu|go}} * {{bn}}: {{t|bn|গো}} * {{pt}}: {{t+|pt|go|m}} * {{bg}}: {{t+|bg|го}} * {{cat-2}}: {{t+|ca|go|m}} * {{he}}: {{t+|he|גו|m}} * {{da}}: {{t+|da|go}} * {{de}}: {{t+|de|Go|n}} * {{nl}}: {{t+|nl|go|n}} * {{et}}: {{t+|et|go}} * {{ka}}: {{t|ka|გო}} * {{hi}}: {{t+|hi|गो}} * {{hu}}: {{t+|hu|go}} * {{el}}: {{t|el|γκο}} * {{is}}: {{t|is|gó}} * {{id}}: {{t+|id|igo}}, {{t|id|go}} * {{lv}}: {{t+|lv|go}} * {{lt}}: {{t+|lt|go}} * {{mk}}: {{t+|mk|го|m}} * {{ms}}: {{t+|ms|go}} * {{ml}}: {{t|ml|വെയ്ക്കി}} * {{my}}: {{t|my|ဂို}} * {{mon}}: {{t+|mn|го}} * {{nor}}: *: {{nb}}: {{t+|nb|go}} * {{ru}}: {{t+|ru|го|n}} * {{ja}}: {{t+|ja|囲碁|tr=いご, igo}}, {{t+|ja|碁|tr=ご, go}} * {{fr}}: {{t+|fr|go|m}}, {{t+|fr|jeu de go|m}} * {{fi}}: {{t+|fi|go}}, {{t|fi|go-peli}} * {{eo}}: {{t|eo|goo}} * {{ro}}: {{t+|ro|go}} * {{cs}}: {{t+|cs|go|n}} * {{sh}}: *: {{Cyrl}}: {{t|sh|го̑}} *: {{Latn}}: {{t+|sh|gȏ}} * {{sw}}: {{t|sw|Go}} * {{tgl}}: {{t+|tl|go}} * {{ta}}: {{t|ta|வெய்ச்சி}} * {{es}}: {{t+|es|go|m}} * {{bo}}: {{t|bo|མིག་མངས་སྒོར་སྒོར}} * {{th}}: {{t+|th|หมากล้อม}}, {{t+|th|โกะ|tr=gò}} * {{tr}}: {{t+|tr|go}} * {{sv}}: {{t+|sv|go|c}} * {{ko}}: {{t+|ko|바둑}}, {{t+|ko|위기}} * {{okm}}: {{t|okm|바독}} * {{zh}}: *: {{cmn}}: {{t+|cmn|圍棋}} *: {{yue}}: {{t|yue|圍棋}} * {{ur}}: {{t|ur|گو}} * {{it}}: {{t+|it|go|m}} {{trans-bottom}} {{C|vi|Cờ vây}} 2ullws5n3qz5fppkho4o37q21j1dozc 2351064 2350819 2026-05-07T10:47:49Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351064 wikitext text/x-wiki {{-vie-}} {{-info-}} [[Tập tin:HKHM 沙田 Shatin 香港文化博物館 HK Heritage Museum 金庸展廳館 Jin Yong Gallery March 2017 IX1 圍棋 GO board game.jpg|nhỏ|Cờ vây]] {{-etymology-}} Từ {{affix|vi|cờ|vây}}, {{calque|vi|zh|圍棋|tr=vi kì|nocap=y}}. So sánh với {{cognate|ja|囲碁|tr=igo}}. {{-pron-}} {{vi-ipa}} {{-noun-}} {{vi-noun}} # {{nhãn|vi|board game}} Trò chơi [[chiến thuật]], có nguồn gốc từ [[Trung Quốc]], gồm 2 người chơi (quân đen và trắng) có mục tiêu [[bao vây]] nhiều [[lãnh thổ]] hơn [[đối thủ]]. {{-trans-}} {{trans-top|Trò chơi với bàn cờ}} * {{ar}}: {{t|ar|غُو|m}} * {{am}}: {{t|am|ጎ}} * {{en}}: {{t+|en|go}} * {{hy}}: {{t+|hy|գո}} * {{pl}}: {{t+|pl|go|n}} * {{fa}}: {{t+|fa|گو|tr=gô}} * {{eu}}: {{t+|eu|go}} * {{bn}}: {{t|bn|গো}} * {{pt}}: {{t+|pt|go|m}} * {{bg}}: {{t+|bg|го}} * {{cat-old}}: {{t+|ca|go|m}} * {{he}}: {{t+|he|גו|m}} * {{da}}: {{t+|da|go}} * {{de}}: {{t+|de|Go|n}} * {{nl}}: {{t+|nl|go|n}} * {{et}}: {{t+|et|go}} * {{ka}}: {{t|ka|გო}} * {{hi}}: {{t+|hi|गो}} * {{hu}}: {{t+|hu|go}} * {{el}}: {{t|el|γκο}} * {{is}}: {{t|is|gó}} * {{id}}: {{t+|id|igo}}, {{t|id|go}} * {{lv}}: {{t+|lv|go}} * {{lt}}: {{t+|lt|go}} * {{mk}}: {{t+|mk|го|m}} * {{ms}}: {{t+|ms|go}} * {{ml}}: {{t|ml|വെയ്ക്കി}} * {{my}}: {{t|my|ဂို}} * {{mon}}: {{t+|mn|го}} * {{nor}}: *: {{nb}}: {{t+|nb|go}} * {{ru}}: {{t+|ru|го|n}} * {{ja}}: {{t+|ja|囲碁|tr=いご, igo}}, {{t+|ja|碁|tr=ご, go}} * {{fr}}: {{t+|fr|go|m}}, {{t+|fr|jeu de go|m}} * {{fi}}: {{t+|fi|go}}, {{t|fi|go-peli}} * {{eo}}: {{t|eo|goo}} * {{ro}}: {{t+|ro|go}} * {{cs}}: {{t+|cs|go|n}} * {{sh}}: *: {{Cyrl}}: {{t|sh|го̑}} *: {{Latn}}: {{t+|sh|gȏ}} * {{sw}}: {{t|sw|Go}} * {{tgl}}: {{t+|tl|go}} * {{ta}}: {{t|ta|வெய்ச்சி}} * {{es}}: {{t+|es|go|m}} * {{bo}}: {{t|bo|མིག་མངས་སྒོར་སྒོར}} * {{th}}: {{t+|th|หมากล้อม}}, {{t+|th|โกะ|tr=gò}} * {{tr}}: {{t+|tr|go}} * {{sv}}: {{t+|sv|go|c}} * {{ko}}: {{t+|ko|바둑}}, {{t+|ko|위기}} * {{okm}}: {{t|okm|바독}} * {{zh}}: *: {{cmn}}: {{t+|cmn|圍棋}} *: {{yue}}: {{t|yue|圍棋}} * {{ur}}: {{t|ur|گو}} * {{it}}: {{t+|it|go|m}} {{trans-bottom}} {{C|vi|Cờ vây}} ptffm98qqyzncvj03pgbr9j2xmmlalx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Tây Ban Nha 14 324523 2350851 2213348 2026-05-07T09:25:18Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Tây Ban Nha có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Tây Ban Nha]] (đã tắt đổi hướng) 2213348 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Tây Ban Nha]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|T]] 2v25x0512kcukhdjnc03hk9l3r3vjxt 2350852 2350851 2026-05-07T09:25:46Z TheHighFighter2 42988 /* */ 2350852 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Anh 14 324567 2350855 2213340 2026-05-07T09:28:51Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Anh có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Anh]] (đã tắt đổi hướng) 2213340 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Anh]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|A]] ats7t78ip3t0q5saiudrw2y0w4txi4e 2350856 2350855 2026-05-07T09:29:10Z TheHighFighter2 42988 Thay cả nội dung bằng “{{auto cat}}” 2350856 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Nhật 14 325302 2350863 2213345 2026-05-07T09:39:00Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Nhật có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Nhật]] (đã tắt đổi hướng) 2213345 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Nhật]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|N]] c6th9xdvp8m5x1gsboj1sn1yenglz3o 2350864 2350863 2026-05-07T09:39:22Z TheHighFighter2 42988 /* */ 2350864 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Việt 14 326524 2350853 2213349 2026-05-07T09:26:39Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Việt có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Việt]] (đã tắt đổi hướng) 2213349 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Việt]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|V]] mzw877hgkgbxe2c9ue1vb9yr6gjn2jq 2350854 2350853 2026-05-07T09:27:05Z TheHighFighter2 42988 /* */ 2350854 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Pháp 14 329123 2350865 2213346 2026-05-07T09:40:20Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Pháp có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Pháp]] (đã tắt đổi hướng) 2213346 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Pháp]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|P]] dyncj1457vo5ko8glam62som0nhyjq8 2350866 2350865 2026-05-07T09:40:38Z TheHighFighter2 42988 Thay cả nội dung bằng “{{auto cat}}” 2350866 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Hà Lan 14 329244 2350857 2213341 2026-05-07T09:30:03Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Hà Lan có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Hà Lan]] (đã tắt đổi hướng) 2213341 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Hà Lan]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|H]] 7hcyswidv6127sf8gcpexph1d5tn7oy 2350858 2350857 2026-05-07T09:30:24Z TheHighFighter2 42988 Thay cả nội dung bằng “{{auto cat}}” 2350858 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Mông Cổ 14 329772 2350861 2213343 2026-05-07T09:37:30Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Mông Cổ có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Mông Cổ]] (đã tắt đổi hướng) 2213343 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Mông Cổ]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|M]] oqplt5cc7ohqsqfe33jzm8c9llrnja6 2350862 2350861 2026-05-07T09:37:48Z TheHighFighter2 42988 /* */ 2350862 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Quan Thoại 14 330195 2350847 2214525 2026-05-07T09:20:38Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Quan Thoại có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Quan Thoại]] (đã tắt đổi hướng) 2214525 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Quan Thoại]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|Q]] s1u7vrvrpd5i21x0hqbkwdzm00ashjl 2350848 2350847 2026-05-07T09:21:03Z TheHighFighter2 42988 /* */ 2350848 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Litva 14 330582 2350859 2214524 2026-05-07T09:31:38Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Litva có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Litva]] (đã tắt đổi hướng) 2214524 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Litva]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|L]] 6j13ewtuckqyl9p6sf9od3zbg4fvxxn 2350860 2350859 2026-05-07T09:31:57Z TheHighFighter2 42988 /* */ 2350860 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Uzbek 14 330584 2350849 2214526 2026-05-07T09:23:35Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Uzbek có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Uzbek]] (đã tắt đổi hướng) 2214526 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Uzbek]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|U]] 61u4fvpdhip32hl0rynq945ur7jzjbn 2350850 2350849 2026-05-07T09:23:57Z TheHighFighter2 42988 /* */ 2350850 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Anh trung đại 14 331075 2350845 2214954 2026-05-07T09:18:38Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Thể loại:Mục từ tiếng Anh trung đại có đề mục ngôn ngữ không đúng]] thành [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng tiếng Anh trung đại]] (đã tắt đổi hướng) 2214954 wikitext text/x-wiki {{Thể loại theo dõi}} {{Thể loại trống}} __HIDDENCAT__ [[Thể loại:Bảo trì mục từ tiếng Anh trung đại]] [[Thể loại:Mục từ có đề mục ngôn ngữ không đúng theo ngôn ngữ|N]] hbky1vb4jfpczo9i24zps7p96s81tjj 2350846 2350845 2026-05-07T09:19:10Z TheHighFighter2 42988 /* */ 2350846 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx dãy núi 0 336949 2350820 2268982 2026-05-07T08:08:40Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350820 wikitext text/x-wiki == {{langname|vi}} == {{Wikipedia}} ==={{ĐM|alter}}=== * {{qualifier|rút ngắn}} {{l|vi|dãy}} === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun}} # Một [[loạt]] các [[ngọn]] [[núi]] [[liền kề]] với nhau, thường [[nằm]] trên một [[đường thẳng]]. #: {{ux|vi|'''Dãy núi''' Himalaya}} #: {{ux|vi|'''Dãy núi''' Hoàng Liên Sơn}} ==== {{ĐM|syn}} ==== * {{l|vi|rặng núi}} * {{l|vi|mạch núi}} * {{l|vi|sơn mạch}} ==== {{ĐM|trans}} ==== {{trans-top|Dãy núi}} * {{en}}: {{t+|en|mountain range}} * {{af}}: {{t+|af|gebergte}} * {{hy}}: {{t+|hy|լեռնաշղթա}} * {{pt}}: {{t+|pt|cordilheira|f}} * {{bn}}: {{t+|bn|পর্বতমালা|sc=Beng}} * {{cat-2}}: {{t+|ca|serra|f}}, {{t+|ca|serralada|f}} * {{da}}: {{t+|da|bjergkæde|c}} * {{de}}: {{t+|de|Gebirgskette|f}} * {{id}}: {{t+|id|barisan}} * {{zh}}: *: {{cmn}}: {{t+|cmn|山脈|tr=shānmài}} * {{cs}}: {{t+|cs|pohoří|n}}, {{t|cs|horské pásmo|n}} * {{nl}}: {{t+|nl|gebergte|n}} * {{eo}}: {{t|eo|montaro}} * {{fi}}: {{t+|fi|vuorijono}} * {{fr}}: {{t+|fr|chaine de montagnes}}, {{t+|fr|cordillère|f}} * {{ka}}: {{t|ka|მთაგრეხილი}} * {{el}}: {{t+|el|οροσειρά|f}} * {{hu}}: {{t+|hu|hegylánc}}, {{t+|hu|hegyvonulat}}, {{t+|hu|hegység}} * {{ja}}: {{t+|ja|山脈|tr=さんみゃく, sanmyaku|sc=Jpan}} * {{ko}}: {{t+|ko|산맥(山脈)}} * {{mnc}}: {{t|mnc|ᠠᠯᡳᡵᡝᠨ}} * {{ru}}: {{t+|ru|го́рный хребе́т|m}}, {{t+|ru|го́рная цепь|f}} * {{es}}: {{t+|es|cordillera|f}}, {{t+|es|sierra|f}} * {{sv}}: {{t+|sv|bergskedja|c}} * {{tgl}}: {{t|tl|bulubundukin}}, {{t|tl|tagaytay}} * {{th}}: {{t+|th|เทือกเขา}} {{trans-bottom}} llo7z3fqsy8rpyf73ri5qfyysyx6syj 2351065 2350820 2026-05-07T10:47:52Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351065 wikitext text/x-wiki == {{langname|vi}} == {{Wikipedia}} ==={{ĐM|alter}}=== * {{qualifier|rút ngắn}} {{l|vi|dãy}} === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun}} # Một [[loạt]] các [[ngọn]] [[núi]] [[liền kề]] với nhau, thường [[nằm]] trên một [[đường thẳng]]. #: {{ux|vi|'''Dãy núi''' Himalaya}} #: {{ux|vi|'''Dãy núi''' Hoàng Liên Sơn}} ==== {{ĐM|syn}} ==== * {{l|vi|rặng núi}} * {{l|vi|mạch núi}} * {{l|vi|sơn mạch}} ==== {{ĐM|trans}} ==== {{trans-top|Dãy núi}} * {{en}}: {{t+|en|mountain range}} * {{af}}: {{t+|af|gebergte}} * {{hy}}: {{t+|hy|լեռնաշղթա}} * {{pt}}: {{t+|pt|cordilheira|f}} * {{bn}}: {{t+|bn|পর্বতমালা|sc=Beng}} * {{cat-old}}: {{t+|ca|serra|f}}, {{t+|ca|serralada|f}} * {{da}}: {{t+|da|bjergkæde|c}} * {{de}}: {{t+|de|Gebirgskette|f}} * {{id}}: {{t+|id|barisan}} * {{zh}}: *: {{cmn}}: {{t+|cmn|山脈|tr=shānmài}} * {{cs}}: {{t+|cs|pohoří|n}}, {{t|cs|horské pásmo|n}} * {{nl}}: {{t+|nl|gebergte|n}} * {{eo}}: {{t|eo|montaro}} * {{fi}}: {{t+|fi|vuorijono}} * {{fr}}: {{t+|fr|chaine de montagnes}}, {{t+|fr|cordillère|f}} * {{ka}}: {{t|ka|მთაგრეხილი}} * {{el}}: {{t+|el|οροσειρά|f}} * {{hu}}: {{t+|hu|hegylánc}}, {{t+|hu|hegyvonulat}}, {{t+|hu|hegység}} * {{ja}}: {{t+|ja|山脈|tr=さんみゃく, sanmyaku|sc=Jpan}} * {{ko}}: {{t+|ko|산맥(山脈)}} * {{mnc}}: {{t|mnc|ᠠᠯᡳᡵᡝᠨ}} * {{ru}}: {{t+|ru|го́рный хребе́т|m}}, {{t+|ru|го́рная цепь|f}} * {{es}}: {{t+|es|cordillera|f}}, {{t+|es|sierra|f}} * {{sv}}: {{t+|sv|bergskedja|c}} * {{tgl}}: {{t|tl|bulubundukin}}, {{t|tl|tagaytay}} * {{th}}: {{t+|th|เทือกเขา}} {{trans-bottom}} nm0lobucbt7keer4egyuz01o5rmfwiw Bản mẫu:rsk-decl-noun-table 10 337004 2350614 2259553 2026-05-07T06:39:56Z Hiyuune 50834 2350614 wikitext text/x-wiki {{inflection-table-top|title=Biến cách của ''{{lang|rsk|{{PAGENAME}}}}'' <!--<span>({{{type|irregular}}})</span>-->|palette=blue|tall=yes}} ! class="outer" | ! class="outer" | số ít ! class="outer" | số nhiều |- ! [[nominative|danh cách]] | {{#if:{{{1|}}}|{{l-self|rsk|{{{1}}}}}</span>|—}} | {{#if:{{{8|}}}|{{l-self|rsk|{{{8}}}}}</span>|—}} |- ! [[genitive|sinh cách]] | {{#if:{{{2|}}}|{{l-self|rsk|{{{2}}}}}</span>|—}} | {{#if:{{{9|}}}|{{l-self|rsk|{{{9}}}}}</span>|—}} |- ! [[dative|dữ cách]] | {{#if:{{{3|}}}|{{l-self|rsk|{{{3}}}}}</span>|—}} | {{#if:{{{10|}}}|{{l-self|rsk|{{{10}}}}}</span>|—}} |- ! [[accusative|đối cách]] | {{#if:{{{4|}}}|{{l-self|rsk|{{{4}}}}}</span>|—}} | {{#if:{{{11|}}}|{{l-self|rsk|{{{11}}}}}</span>|—}} |- ! [[instrumental|cách công cụ]] | {{#if:{{{5|}}}|{{l-self|rsk|{{{5}}}}}</span>|—}} | {{#if:{{{12|}}}|{{l-self|rsk|{{{12}}}}}</span>|—}} |- ! [[locative|định vị cách]] | {{#if:{{{6|}}}|{{l-self|rsk|{{{6}}}}}</span>|—}} | {{#if:{{{13|}}}|{{l-self|rsk|{{{13}}}}}</span>|—}} |- ! [[vocative|hô cách]] | {{#if:{{{7|}}}|{{l-self|rsk|{{{7}}}}}</span>|—}} | {{#if:{{{14|}}}|{{l-self|rsk|{{{14}}}}}</span>|—}} {{inflection-table-bottom}}<noinclude>[[Thể loại:Bản mẫu bảng biến tố danh từ tiếng Rusnak|*]]</noinclude> eo6ld56s402fkuu990j5ecicp374wfz mũi Hảo Vọng 0 338830 2350821 2298482 2026-05-07T08:08:44Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350821 wikitext text/x-wiki == {{langname|vi}} == {{wp}} ==={{ĐM|etymology}}=== {{mention|vi|mũi}} + {{vi-etym-sino|好|hảo|望|vọng|tr=hảo vọng}}, {{calque|vi|zh|nocap=y|好望角|tr=Hảo Vọng Giác}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|pr-noun}} === {{vie-proper noun|head=[[mũi]] [[hảo|Hảo]] [[vọng|Vọng]]}} # {{place|vi|[[mũi đất]]| ở [[phía]] [[tây nam]] [[Nam Phi]], gần {{w|Cape Town}}}}. ===={{ĐM|trans}}==== {{trans-top|một mũi đất ở phía tây nam Nam Phi}} * {{af}}: {{t|af|Kaap die Goeie Hoop}} * {{ar}}: {{t|ar|رَأْس اَلرَّجَاء اَلصَّالِح|m}} * {{hy}}: {{t+|hy|Բարեհուսո հրվանդան}} * {{bg}}: {{t|bg|нос До́бра Наде́жда|m}} * {{cat-2}}: {{t|ca|Cap de Bona Esperança|m}} * {{da}}: {{t|da|Kap Det Gode Håb|c}} * {{nl}}: {{t+|nl|Kaap de Goede Hoop}} * {{ja}}: {{t|ja|喜望峰|tr=きぼうほう, Kibōhō|sc=Jpan}} * {{fi}}: {{t|fi|Hyväntoivonniemi}} * {{fr}}: {{t+|fr|cap de Bonne-Espérance|m}} * {{eo}}: {{t|eo|Kabo de Bona Espero}} * {{zh}}: *: {{yue}}: {{t|yue|好望角|tr=hou2 mong6 gok3}} *: {{cmn}}: {{t+|cmn|好望角|tr=Hǎowàngjiǎo}} * {{ko}}: {{t|ko|^희망봉(喜望峯)}} {{trans-bottom}} 2ai8nunf9xv2cgicyxphcwjv547mnbi 2351066 2350821 2026-05-07T10:47:55Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351066 wikitext text/x-wiki == {{langname|vi}} == {{wp}} ==={{ĐM|etymology}}=== {{mention|vi|mũi}} + {{vi-etym-sino|好|hảo|望|vọng|tr=hảo vọng}}, {{calque|vi|zh|nocap=y|好望角|tr=Hảo Vọng Giác}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|pr-noun}} === {{vie-proper noun|head=[[mũi]] [[hảo|Hảo]] [[vọng|Vọng]]}} # {{place|vi|[[mũi đất]]| ở [[phía]] [[tây nam]] [[Nam Phi]], gần {{w|Cape Town}}}}. ===={{ĐM|trans}}==== {{trans-top|một mũi đất ở phía tây nam Nam Phi}} * {{af}}: {{t|af|Kaap die Goeie Hoop}} * {{ar}}: {{t|ar|رَأْس اَلرَّجَاء اَلصَّالِح|m}} * {{hy}}: {{t+|hy|Բարեհուսո հրվանդան}} * {{bg}}: {{t|bg|нос До́бра Наде́жда|m}} * {{cat-old}}: {{t|ca|Cap de Bona Esperança|m}} * {{da}}: {{t|da|Kap Det Gode Håb|c}} * {{nl}}: {{t+|nl|Kaap de Goede Hoop}} * {{ja}}: {{t|ja|喜望峰|tr=きぼうほう, Kibōhō|sc=Jpan}} * {{fi}}: {{t|fi|Hyväntoivonniemi}} * {{fr}}: {{t+|fr|cap de Bonne-Espérance|m}} * {{eo}}: {{t|eo|Kabo de Bona Espero}} * {{zh}}: *: {{yue}}: {{t|yue|好望角|tr=hou2 mong6 gok3}} *: {{cmn}}: {{t+|cmn|好望角|tr=Hǎowàngjiǎo}} * {{ko}}: {{t|ko|^희망봉(喜望峯)}} {{trans-bottom}} o8jp2ncl3aucb2qlrx597gzev8z4wzs phòng tắm 0 340553 2350822 2230831 2026-05-07T08:08:47Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350822 wikitext text/x-wiki == {{langname|vi}} == === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun}} # Một [[căn]] [[phòng]] có [[vòi]] [[sen]] và/hoặc [[bồn]] [[tắm]], và {{qualifier|thường nhưng không nhất thiết}} có [[nhà]] [[vệ sinh]]. Được [[sử dụng]] với [[mục đích]] [[tắm rửa]], vệ sinh [[cá nhân]],.v.v. #: {{ux|vi|'''Phòng tắm''' đẹp}} #: {{ux|vi|'''Phòng tắm''' lớn}} ===={{ĐM|syn}}==== * {{l|vi|nhà tắm}} * {{l|vi|buồng tắm}} ===={{ĐM|trans}}==== {{trans-top|một căn phòng dùng để tắm hoặc vệ sinh cá nhân,.v.v.}} * {{en}}: {{t+|en|bathroom}} * {{ar}}: {{t+|ar|حَمَّام|m}} * {{pl}}: {{t+|pl|łazienka|f}} * {{pt}}: {{t+|pt|banheiro|m}} {{qualifier|Brazil}}, {{t+|pt|casa de banho|f}} {{qualifier|Bồ Đào Nha}} * {{be}}: {{t|be|ва́нная|f}}, {{t|be|ва́нны пако́й|m}} * {{bn}}: {{t+|bn|গোসলখানা}} * {{cat-2}}: {{t|ca|cambra de bany|f}}, {{t+|ca|bany|m}} * {{da}}: {{t+|da|badeværelse|n}} * {{nl}}: {{t+|nl|badkamer|f}} * {{hi}}: {{t+|hi|स्नानघर}}, {{t|hi|ग़ुस्लख़ाना|m}} * {{hu}}: {{t+|hu|fürdőszoba}} * {{el}}: {{t+|el|λουτρό|n}}, {{t+|el|μπάνιο|n}} * {{lo}}: {{t|lo|ຫ້ອງນ້ຳ}}, {{t|lo|ຫ້ອງອາບນ້ຳ}}, {{t|lo|ສ້ວມອາບນ້ຳ}} * {{la}}: {{t|la|balneum|n}} * {{ja}}: {{t+|ja|風呂場|tr=ふろば, furoba}}, {{t+|ja|浴室|tr=よくしつ, yokushitsu}} * {{fi}}: {{t+|fi|kylpyhuone}}, {{t+|fi|kylppäri}} * {{fr}}: {{t+|fr|salle de bains|f}} * {{eo}}: {{t+|eo|banĉambro}} * {{zh}}: *: {{cmn}}: {{t+|cmn|浴室|tr=yùshì}} * {{ko}}: {{t+|ko|욕실(浴室)}}, {{t+|ko|목욕실(沐浴室)}} * {{th}}: {{t+|th|ห้องน้ำ}} * {{it}}: [[stanza]] da [[bagno]], {{t+|it|bagno|m}} {{trans-bottom}} f5pcmvw061gbb7e2gn4uoa9vs95aazy 2351067 2350822 2026-05-07T10:47:58Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351067 wikitext text/x-wiki == {{langname|vi}} == === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun}} # Một [[căn]] [[phòng]] có [[vòi]] [[sen]] và/hoặc [[bồn]] [[tắm]], và {{qualifier|thường nhưng không nhất thiết}} có [[nhà]] [[vệ sinh]]. Được [[sử dụng]] với [[mục đích]] [[tắm rửa]], vệ sinh [[cá nhân]],.v.v. #: {{ux|vi|'''Phòng tắm''' đẹp}} #: {{ux|vi|'''Phòng tắm''' lớn}} ===={{ĐM|syn}}==== * {{l|vi|nhà tắm}} * {{l|vi|buồng tắm}} ===={{ĐM|trans}}==== {{trans-top|một căn phòng dùng để tắm hoặc vệ sinh cá nhân,.v.v.}} * {{en}}: {{t+|en|bathroom}} * {{ar}}: {{t+|ar|حَمَّام|m}} * {{pl}}: {{t+|pl|łazienka|f}} * {{pt}}: {{t+|pt|banheiro|m}} {{qualifier|Brazil}}, {{t+|pt|casa de banho|f}} {{qualifier|Bồ Đào Nha}} * {{be}}: {{t|be|ва́нная|f}}, {{t|be|ва́нны пако́й|m}} * {{bn}}: {{t+|bn|গোসলখানা}} * {{cat-old}}: {{t|ca|cambra de bany|f}}, {{t+|ca|bany|m}} * {{da}}: {{t+|da|badeværelse|n}} * {{nl}}: {{t+|nl|badkamer|f}} * {{hi}}: {{t+|hi|स्नानघर}}, {{t|hi|ग़ुस्लख़ाना|m}} * {{hu}}: {{t+|hu|fürdőszoba}} * {{el}}: {{t+|el|λουτρό|n}}, {{t+|el|μπάνιο|n}} * {{lo}}: {{t|lo|ຫ້ອງນ້ຳ}}, {{t|lo|ຫ້ອງອາບນ້ຳ}}, {{t|lo|ສ້ວມອາບນ້ຳ}} * {{la}}: {{t|la|balneum|n}} * {{ja}}: {{t+|ja|風呂場|tr=ふろば, furoba}}, {{t+|ja|浴室|tr=よくしつ, yokushitsu}} * {{fi}}: {{t+|fi|kylpyhuone}}, {{t+|fi|kylppäri}} * {{fr}}: {{t+|fr|salle de bains|f}} * {{eo}}: {{t+|eo|banĉambro}} * {{zh}}: *: {{cmn}}: {{t+|cmn|浴室|tr=yùshì}} * {{ko}}: {{t+|ko|욕실(浴室)}}, {{t+|ko|목욕실(沐浴室)}} * {{th}}: {{t+|th|ห้องน้ำ}} * {{it}}: [[stanza]] da [[bagno]], {{t+|it|bagno|m}} {{trans-bottom}} 4g4spiqf0qw5k7eog4fx9u3xkf4pmr7 Mô đun:labels/data/lang/zlw-opl 828 342667 2350583 2235077 2026-05-07T06:06:37Z Hiyuune 50834 2350583 Scribunto text/plain local labels = {} labels["reflexive-się"] = { aliases = {"reflexive-sie"}, display = "[[Phụ lục:Từ điển thuật ngữ#phản thân|phản thân]] với {{mention|zlw-opl|się}}", pos_categories = "Động từ phản thân", } labels["reflexive-sobie"] = { display = "[[Phụ lục:Từ điển thuật ngữ#phản thân|phản thân]] với {{mention|zlw-opl|sobie}}", pos_categories = "Động từ phản thân", } labels["reflexive-siebie"] = { display = "[[Phụ lục:Từ điển thuật ngữ#phản thân|phản thân]] với {{mention|zlw-opl|siebie}}", pos_categories = "Động từ phản thân", } labels["Pomerania"] = { aliases = {"Pomorze"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Wielkopolska"] = { aliases = {"Greater Poland"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Kuyavia"] = { aliases = {"Kujawy", "Kujavia"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Masovia"] = { aliases = {"Mazovia", "Mazowsze"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Podlachia"] = { aliases = {"Podlasie"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Bắc Borderlands"] = { aliases = {"Northern Borderlands","Północnokresowy", "Upper Borderlands"}, Wikipedia = "phương ngữ Bắc Borderlands", regional_categories = true, parent = true, } labels["Silesia"] = { aliases = {"Śląsk"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Sieradz-Łęczyca"] = { aliases = {"Łęczyca", "Sieradz"}, region = "{{w|lang=pl|Ziemia sieradzka}}", Wikipedia = "pl:Ziemia sieradzka", regional_categories = true, parent = true, } labels["Małopolska"] = { aliases = {"Lesser Poland"}, Wikipedia = true, regional_categories = true, parent = true, } labels["Nam Borderlands"] = { aliases = {"Southern Borderlands","Południowokresowy", "Lower Borderlands"}, Wikipedia = "phương ngữ Nam Borderlands", regional_categories = true, parent = true, } return require("Module:labels").finalize_data(labels) 5q4hu5xy06bldgdv5lgd1nf4mwgyswt hải ly 0 357752 2350823 2279697 2026-05-07T08:08:50Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350823 wikitext text/x-wiki == {{langname|vi}} == [[Tập tin:American Beaver.jpg|nhỏ|Một con '''hải ly''']] {{wikipedia}} ==={{ĐM|alter}}=== * {{l|vi|hải li}} ==={{ĐM|etym}}=== {{vi-etym-sino|海狸}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun|cls=con}} # [[loài|Loài]] [[động vật]] [[gặm nhấm]] lớn, [[chân]] sau có [[màng]] [[da]] [[nối]] các [[ngón]], [[đuôi]] [[dẹp]] [[phủ]] [[vảy]] [[sừng]], [[sống]] ở vùng nửa trên [[cạn]], nửa dưới [[nước]]. ==== {{ĐM|trans}} ==== {{trans-top|loài động vật gặm nhấm lớn, sống ở vùng nửa trên cạn, nửa dưới nước}} * {{en}}: {{t+|en|beaver}} * {{af}}: {{t+|af|bewer}} * {{pl}}: {{t+|pl|bóbr|m}} * {{pt}}: {{t+|pt|castor|m}} * {{cat-2}}: {{t+|ca|castor}} * {{da}}: {{t+|da|bæver}} * {{de}}: {{t+|de|Biber|m}} * {{nl}}: {{t+|nl|bever|m}} * {{el}}: {{t+|el|κάστορας|m}} *: {{grc}}: {{t|grc|κάστωρ|m}} * {{ja}}: {{t+|ja|ビーバー|tr=bībā|sc=Jpan}}, {{t+|ja|海狸|tr=かいり, kairi, うみだぬき, umidanuki|sc=Jpan}} * {{ru}}: {{t+|ru|бобр|m}}, {{t+|ru|бобёр|m}} * {{fi}}: {{t+|fi|majava}} * {{fr}}: {{t+|fr|castor|m}}, {{t+|fr|bièvre|m}} {{qualifier|cổ xưa}} * {{ro}}: {{t+|ro|castor|m}}, {{t+|ro|biber|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|海狸|tr=hǎilí}}, {{t+|cmn|河狸|tr=hélí}} * {{ko}}: {{t+|ko|비버}} * {{es}}: {{t+|es|castor|m}} * {{sv}}: {{t+|sv|bäver}} * {{th}}: {{t|th|บีเวอร์}} * {{tk}}: {{t|tk|gunduz}} {{trans-bottom}} === {{ĐM|ref}} === * {{R:Tratu}} {{C|vi|Bộ Gặm nhấm}} 2m7a5hep5q57wtmlt7n06ycn2ynymqc 2351068 2350823 2026-05-07T10:48:01Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351068 wikitext text/x-wiki == {{langname|vi}} == [[Tập tin:American Beaver.jpg|nhỏ|Một con '''hải ly''']] {{wikipedia}} ==={{ĐM|alter}}=== * {{l|vi|hải li}} ==={{ĐM|etym}}=== {{vi-etym-sino|海狸}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun|cls=con}} # [[loài|Loài]] [[động vật]] [[gặm nhấm]] lớn, [[chân]] sau có [[màng]] [[da]] [[nối]] các [[ngón]], [[đuôi]] [[dẹp]] [[phủ]] [[vảy]] [[sừng]], [[sống]] ở vùng nửa trên [[cạn]], nửa dưới [[nước]]. ==== {{ĐM|trans}} ==== {{trans-top|loài động vật gặm nhấm lớn, sống ở vùng nửa trên cạn, nửa dưới nước}} * {{en}}: {{t+|en|beaver}} * {{af}}: {{t+|af|bewer}} * {{pl}}: {{t+|pl|bóbr|m}} * {{pt}}: {{t+|pt|castor|m}} * {{cat-old}}: {{t+|ca|castor}} * {{da}}: {{t+|da|bæver}} * {{de}}: {{t+|de|Biber|m}} * {{nl}}: {{t+|nl|bever|m}} * {{el}}: {{t+|el|κάστορας|m}} *: {{grc}}: {{t|grc|κάστωρ|m}} * {{ja}}: {{t+|ja|ビーバー|tr=bībā|sc=Jpan}}, {{t+|ja|海狸|tr=かいり, kairi, うみだぬき, umidanuki|sc=Jpan}} * {{ru}}: {{t+|ru|бобр|m}}, {{t+|ru|бобёр|m}} * {{fi}}: {{t+|fi|majava}} * {{fr}}: {{t+|fr|castor|m}}, {{t+|fr|bièvre|m}} {{qualifier|cổ xưa}} * {{ro}}: {{t+|ro|castor|m}}, {{t+|ro|biber|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|海狸|tr=hǎilí}}, {{t+|cmn|河狸|tr=hélí}} * {{ko}}: {{t+|ko|비버}} * {{es}}: {{t+|es|castor|m}} * {{sv}}: {{t+|sv|bäver}} * {{th}}: {{t|th|บีเวอร์}} * {{tk}}: {{t|tk|gunduz}} {{trans-bottom}} === {{ĐM|ref}} === * {{R:Tratu}} {{C|vi|Bộ Gặm nhấm}} tjr1ubq5vo13smy2dyq6221v8hwxaak bướm đêm 0 362361 2350824 2279740 2026-05-07T08:08:53Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350824 wikitext text/x-wiki == {{langname|vi}} == [[Tập tin:Moth September 2008-3.jpg|nhỏ|Bướm đêm]] {{Wikipedia}} === {{ĐM|etym}} === Từ ghép giữa {{compound|vi|bướm|đêm}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun|cls=con}} # [[loài|Loài]] [[côn trùng]] thuộc {{w|Bộ Cánh vẩy}}, có [[thân]] [[dày]], thường [[sinh sống]] và hoạt động vào [[ban đêm]]. ==== {{ĐM|syn}} ==== * {{l|vi|ngài}} ==== {{ĐM|trans}} ==== {{trans-top|Loài côn trùng giống với bướm nhưng hoạt động vào ban đêm}} * {{eo}}: {{t+|eo|tineo}} * {{en}}: {{t+|en|moth}} * {{ain}}: {{t|ain|ヘポラㇷ゚|tr=heporap}} * {{sq}}: {{t|sq|ethëzë|f}}, {{t+|sq|tenjë|f}}, {{t|sq|zgjerbe|f}} * {{ar}}: {{t|ar|عُثَّة|f}} *: {{langname|arq}}: {{t|arq|بوفرتوتو|tr=bufrtutu}} *: {{ary}}: {{t|ary|فرطوط|tr=farṭūṭ}} * {{am}}: *: {{langname|syc}}: {{t|syc|ܣܣܐ|m|tr=sāsā}} * {{hy}}: {{t+|hy|ցեց}} * {{tay}}: {{t|tay|kperay}} * {{az}}: {{t+|az|güvə}} * {{fa}}: {{t+|fa|بید|tr=bid}}, {{t+|fa|مته|tr=mete}}, {{t+|fa|پروانه|tr=parvâne}} * {{pl}}: {{t+|pl|ćma|f}}, {{t|pl|motyl nocny|m}} * {{pt}}: {{t+|pt|traça|f}}, {{t+|pt|mariposa|f}} * {{ba}}: {{t|ba|көйә|sc=Cyrl}} * {{eu}}: {{t|eu|sits}} * {{be}}: {{t|be|моль|f}} * {{bg}}: {{t|bg|нощна́ пеперу́да|f}} * {{cat-2}}: {{t+|ca|arna|f}} * {{ceb}}: {{t|ceb|anunugba}} * {{chr}}: {{t|chr|ᏩᏐᏝ}} * {{langname|ny}}: {{t|ny|balaula}} * {{kw}}: {{t|kw|godhan|m|alt=gòdhan}}, {{t|kw|tykki Duw nos|m}} * {{he}}: {{t+|he|עָשׁ|m|tr=ash}}, {{t+|he|סָס|m|tr=sas}} * {{da}}: {{t|da|møl}}, {{t+|da|natsommerfugl}} * {{de}}: {{t+|de|Motte|f}}, {{t+|de|Nachtfalter|m}} * {{et}}: {{t+|et|ööliblikas}} * {{fo}}: {{t|fo|húsvætti|n}} * {{gl}}: {{t|gl|traza|f}}, {{t|gl|couza|f}}, {{t|gl|avelaíña|f}} * {{gd}}: {{t+|gd|leòman|m}} * {{ka}}: {{t|ka|ჩრჩილი}}, {{t|ka|ღამის პეპელა}} * {{got}}: {{t|got|𐌼𐌰𐌻𐍉}} * {{nl}}: {{t+|nl|mot|f}}, {{t+|nl|nachtvlinder|m}} * {{el}}: {{t+|el|νυχτοπεταλούδα|f}} *: {{grc}}: {{t|grc|σής|m}} * {{hi}}: {{t+|hi|पतंगा}}, {{t+|hi|परवाना}} * {{hu}}: {{t+|hu|moly}}, {{t+|hu|molylepke}}, {{t|hu|éjjeli lepke}} * {{is}}: {{t|is|mölur|m}} * {{io}}: {{t+|io|tineo}} * {{id}}: {{t+|id|ngengat}}, {{t+|id|gegat}} * {{izh}}: {{t|izh|koi}} * {{ga}}: {{t|ga|leamhan|m}} * {{kn}}: {{t+|kn|ಚಿಟ್ಟೆ}} * {{pam}}: {{t|pam|kambubulag}} * {{kk}}: {{t|kk|көбелек}} * {{km}}: {{t|km|សត្វខ្មូត|sc=Khmr}} * {{lo}}: {{t+|lo|ກະເບື້ອ}} * {{la}}: {{t+|la|papilio|m}}, {{t|la|tinea|f}} * {{lv}}: {{t|lv|kode}} * {{lt}}: {{t|lt|kandis|f}} * {{mk}}: {{t|mk|мо́лец|m}} * {{langname|mg}}: {{t+|mg|samoina}} * {{ms}}: {{t|ms|kupu-kupu}} * {{mt}}: {{t|mt|kamla}} * {{gv}}: {{t|gv|lhemeen|m}} * {{ja}}: {{t+|ja|蛾|tr=が, ga}} * {{ru}}: {{t+|ru|моль|f}}, {{t+|ru|мотылёк|m}}, {{t+|ru|ночна́я ба́бочка|f}} * {{nv}}: {{t|nv|iichʼąhii}} * {{nrf}}: {{t|nrf|ange|m}}, {{t|nrf|cahuche|f}}, {{t|nrf|papillon d'niet|m}} * {{nor}}: *: {{nb}}: {{t+|nb|møll|m|n}}, {{t|nb|nattsvermer|m}} *: {{nn}}: {{t|nn|møll|m}}, {{t|nn|nattsvermar|m}} * {{oc}}: {{t+|oc|arna|f}} * {{ryu}}: {{t|ryu|蛾|tr=がー, gā}} * {{langname|pa}}: {{t|pa|ਪਤੰਗਾ|m}}, {{t|pa|ਪਰਵਾਨਾ|m}} * {{fi}}: {{t+|fi|yöperhonen}}, {{t+|fi|koi}} * {{fr}}: {{t+|fr|mite|f}} ''(trong quần áo)'', {{t+|fr|papillon de nuit|m}}, {{t+|fr|phalène|m|f}} * {{qu}}: {{t|qu|puyu}} * {{ro}}: {{t+|ro|molie|f}} * {{cs}}: {{t+|cs|můra|f}}, {{t|cs|noční motýl|m}} * {{sw}}: {{t|sw|nondo}} * {{sc}}: {{t|sc|arna|f}}, {{t|sc|babbaliscu|m}}, {{t|sc|tacatia|f}}, {{t|sc|maniposa|f}} * {{si}}: {{t|si|සලඹයා}} * {{sk}}: {{t|sk|moľ|m}} * {{sl}}: {{t|sl|vešča|f}}, {{t+|sl|molj|m}} {{qualifier|ngài vải}} * {{tyz}}: {{t|tyz|bỉ}} * {{ko}}: {{t+|ko|나방}} * {{ota}}: {{t|ota|گوگه|tr=güğe, güve}}, {{t|ota|پروانه|tr=pervane}}, {{t|ota|فراشه|tr=feraşe}} * {{es}}: {{t+|es|polilla|f}}, {{t+|es|taraza|m}} * {{sv}}: {{t+|sv|mal|c}}, {{t+|sv|nattfjäril|c}} * {{tg}}: {{t|tg|парвона}} * {{langname|rif}}: {{t|rif|afarṭu|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|蛾|tr=é}} * {{th}}: {{t|th|ผีเสื้อกลางคืน}} * {{tr}}: {{t+|tr|güve}} * {{ur}}: {{t|ur|پتنگا|tr=patangā}}, {{t|ur|پروانہ|tr=parvāna}} * {{uz}}: {{t+|uz|moʻl}} * {{cy}}: {{t+|cy|gwyfyn|m}}, {{t|cy|pryf y gannwyll|m}} * {{yi}}: {{t|yi|מאָל|m}} * {{it}}: {{t+|it|falena|f}}, {{t+|it|tarma|f}}, {{t+|it|camola|f}}, {{t+|it|tignola|f}} {{trans-bottom}} === {{ĐM|see}} === * {{l|vi|bướm}} * {{l|vi|bướm ngày}} 1raidk90w6snpkspu4ssze77uru0fvu 2351069 2350824 2026-05-07T10:48:04Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351069 wikitext text/x-wiki == {{langname|vi}} == [[Tập tin:Moth September 2008-3.jpg|nhỏ|Bướm đêm]] {{Wikipedia}} === {{ĐM|etym}} === Từ ghép giữa {{compound|vi|bướm|đêm}}. === {{ĐM|pron}} === {{vie-pron}} === {{ĐM|noun}} === {{vie-noun|cls=con}} # [[loài|Loài]] [[côn trùng]] thuộc {{w|Bộ Cánh vẩy}}, có [[thân]] [[dày]], thường [[sinh sống]] và hoạt động vào [[ban đêm]]. ==== {{ĐM|syn}} ==== * {{l|vi|ngài}} ==== {{ĐM|trans}} ==== {{trans-top|Loài côn trùng giống với bướm nhưng hoạt động vào ban đêm}} * {{eo}}: {{t+|eo|tineo}} * {{en}}: {{t+|en|moth}} * {{ain}}: {{t|ain|ヘポラㇷ゚|tr=heporap}} * {{sq}}: {{t|sq|ethëzë|f}}, {{t+|sq|tenjë|f}}, {{t|sq|zgjerbe|f}} * {{ar}}: {{t|ar|عُثَّة|f}} *: {{langname|arq}}: {{t|arq|بوفرتوتو|tr=bufrtutu}} *: {{ary}}: {{t|ary|فرطوط|tr=farṭūṭ}} * {{am}}: *: {{langname|syc}}: {{t|syc|ܣܣܐ|m|tr=sāsā}} * {{hy}}: {{t+|hy|ցեց}} * {{tay}}: {{t|tay|kperay}} * {{az}}: {{t+|az|güvə}} * {{fa}}: {{t+|fa|بید|tr=bid}}, {{t+|fa|مته|tr=mete}}, {{t+|fa|پروانه|tr=parvâne}} * {{pl}}: {{t+|pl|ćma|f}}, {{t|pl|motyl nocny|m}} * {{pt}}: {{t+|pt|traça|f}}, {{t+|pt|mariposa|f}} * {{ba}}: {{t|ba|көйә|sc=Cyrl}} * {{eu}}: {{t|eu|sits}} * {{be}}: {{t|be|моль|f}} * {{bg}}: {{t|bg|нощна́ пеперу́да|f}} * {{cat-old}}: {{t+|ca|arna|f}} * {{ceb}}: {{t|ceb|anunugba}} * {{chr}}: {{t|chr|ᏩᏐᏝ}} * {{langname|ny}}: {{t|ny|balaula}} * {{kw}}: {{t|kw|godhan|m|alt=gòdhan}}, {{t|kw|tykki Duw nos|m}} * {{he}}: {{t+|he|עָשׁ|m|tr=ash}}, {{t+|he|סָס|m|tr=sas}} * {{da}}: {{t|da|møl}}, {{t+|da|natsommerfugl}} * {{de}}: {{t+|de|Motte|f}}, {{t+|de|Nachtfalter|m}} * {{et}}: {{t+|et|ööliblikas}} * {{fo}}: {{t|fo|húsvætti|n}} * {{gl}}: {{t|gl|traza|f}}, {{t|gl|couza|f}}, {{t|gl|avelaíña|f}} * {{gd}}: {{t+|gd|leòman|m}} * {{ka}}: {{t|ka|ჩრჩილი}}, {{t|ka|ღამის პეპელა}} * {{got}}: {{t|got|𐌼𐌰𐌻𐍉}} * {{nl}}: {{t+|nl|mot|f}}, {{t+|nl|nachtvlinder|m}} * {{el}}: {{t+|el|νυχτοπεταλούδα|f}} *: {{grc}}: {{t|grc|σής|m}} * {{hi}}: {{t+|hi|पतंगा}}, {{t+|hi|परवाना}} * {{hu}}: {{t+|hu|moly}}, {{t+|hu|molylepke}}, {{t|hu|éjjeli lepke}} * {{is}}: {{t|is|mölur|m}} * {{io}}: {{t+|io|tineo}} * {{id}}: {{t+|id|ngengat}}, {{t+|id|gegat}} * {{izh}}: {{t|izh|koi}} * {{ga}}: {{t|ga|leamhan|m}} * {{kn}}: {{t+|kn|ಚಿಟ್ಟೆ}} * {{pam}}: {{t|pam|kambubulag}} * {{kk}}: {{t|kk|көбелек}} * {{km}}: {{t|km|សត្វខ្មូត|sc=Khmr}} * {{lo}}: {{t+|lo|ກະເບື້ອ}} * {{la}}: {{t+|la|papilio|m}}, {{t|la|tinea|f}} * {{lv}}: {{t|lv|kode}} * {{lt}}: {{t|lt|kandis|f}} * {{mk}}: {{t|mk|мо́лец|m}} * {{langname|mg}}: {{t+|mg|samoina}} * {{ms}}: {{t|ms|kupu-kupu}} * {{mt}}: {{t|mt|kamla}} * {{gv}}: {{t|gv|lhemeen|m}} * {{ja}}: {{t+|ja|蛾|tr=が, ga}} * {{ru}}: {{t+|ru|моль|f}}, {{t+|ru|мотылёк|m}}, {{t+|ru|ночна́я ба́бочка|f}} * {{nv}}: {{t|nv|iichʼąhii}} * {{nrf}}: {{t|nrf|ange|m}}, {{t|nrf|cahuche|f}}, {{t|nrf|papillon d'niet|m}} * {{nor}}: *: {{nb}}: {{t+|nb|møll|m|n}}, {{t|nb|nattsvermer|m}} *: {{nn}}: {{t|nn|møll|m}}, {{t|nn|nattsvermar|m}} * {{oc}}: {{t+|oc|arna|f}} * {{ryu}}: {{t|ryu|蛾|tr=がー, gā}} * {{langname|pa}}: {{t|pa|ਪਤੰਗਾ|m}}, {{t|pa|ਪਰਵਾਨਾ|m}} * {{fi}}: {{t+|fi|yöperhonen}}, {{t+|fi|koi}} * {{fr}}: {{t+|fr|mite|f}} ''(trong quần áo)'', {{t+|fr|papillon de nuit|m}}, {{t+|fr|phalène|m|f}} * {{qu}}: {{t|qu|puyu}} * {{ro}}: {{t+|ro|molie|f}} * {{cs}}: {{t+|cs|můra|f}}, {{t|cs|noční motýl|m}} * {{sw}}: {{t|sw|nondo}} * {{sc}}: {{t|sc|arna|f}}, {{t|sc|babbaliscu|m}}, {{t|sc|tacatia|f}}, {{t|sc|maniposa|f}} * {{si}}: {{t|si|සලඹයා}} * {{sk}}: {{t|sk|moľ|m}} * {{sl}}: {{t|sl|vešča|f}}, {{t+|sl|molj|m}} {{qualifier|ngài vải}} * {{tyz}}: {{t|tyz|bỉ}} * {{ko}}: {{t+|ko|나방}} * {{ota}}: {{t|ota|گوگه|tr=güğe, güve}}, {{t|ota|پروانه|tr=pervane}}, {{t|ota|فراشه|tr=feraşe}} * {{es}}: {{t+|es|polilla|f}}, {{t+|es|taraza|m}} * {{sv}}: {{t+|sv|mal|c}}, {{t+|sv|nattfjäril|c}} * {{tg}}: {{t|tg|парвона}} * {{langname|rif}}: {{t|rif|afarṭu|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|蛾|tr=é}} * {{th}}: {{t|th|ผีเสื้อกลางคืน}} * {{tr}}: {{t+|tr|güve}} * {{ur}}: {{t|ur|پتنگا|tr=patangā}}, {{t|ur|پروانہ|tr=parvāna}} * {{uz}}: {{t+|uz|moʻl}} * {{cy}}: {{t+|cy|gwyfyn|m}}, {{t|cy|pryf y gannwyll|m}} * {{yi}}: {{t|yi|מאָל|m}} * {{it}}: {{t+|it|falena|f}}, {{t+|it|tarma|f}}, {{t+|it|camola|f}}, {{t+|it|tignola|f}} {{trans-bottom}} === {{ĐM|see}} === * {{l|vi|bướm}} * {{l|vi|bướm ngày}} h4duptuze16q2pvgggwfzl2blguiw9l Tô-gô 0 365927 2350825 2290760 2026-05-07T08:08:56Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2350825 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|pr-noun}}=== {{vie-proper noun}} # {{senseid|vi|Q945}}{{place|vi|quốc gia|r/Tây Phi|official=Cộng hòa Togo}} ===={{ĐM|trans}}==== {{trans-top|id=Q945|Quốc gia ở Tây Phi}} * {{en}}: {{t+|en|Togo}} * {{af}}: {{t|af|Togo}} * {{am}}: {{t|am|ቶጎ}} * {{ar}}: {{t|ar|تُوغُو|f|tr=tōḡō}}, {{t|ar|تُوجُو|f|tr=tōgō}} * {{hy}}: {{t|hy|Տոգո}} * {{langname|aii}}: {{t|aii|ܬܘܿܓ݂ܘܿ|f}} * {{az}}: {{t+|az|Toqo}} * {{be}}: {{t|be|То́га|f}} * {{bn}}: {{t+|bn|টোগো}} * {{br}}: {{t|br|Togo|?}} * {{bg}}: {{t|bg|То́го|m}} * {{my}}: {{t|my|တိုဂို}} * {{cat-2}}: {{t+|ca|Togo|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|多哥|tr=Duōgē}} * {{cs}}: {{t+|cs|Togo|n}} * {{da}}: {{t+|da|Togo|?}} * {{nl}}: {{t+|nl|Togo|n}} * {{eo}}: {{t|eo|Togolo}}, {{t+|eo|Togolando}} * {{fi}}: {{t+|fi|Togo}} * {{fr}}: {{t+|fr|Togo|m}} * {{ka}}: {{t|ka|ტოგო}} * {{de}}: {{t+|de|Togo|n}} * {{el}}: {{t+|el|Τόγκο|n}} * {{ha}}: {{t|ha|Togo}} * {{hi}}: {{t+|hi|टोगो|?}} * {{ia}}: {{t|ia|Togo}} * {{ga}}: {{t|ga|Tóga|m}} * {{it}}: {{t+|it|Togo|m}} * {{ha}}: {{t+|ja|トーゴ|tr=Tōgo}} * {{kk}}: {{t+|kk|Того}} * {{km}}: {{t+|km|តូហ្គោ}} * {{ko}}: {{t+|ko|^토고}}, {{t+|ko|^또고}} {{qualifier|Bắc Triều Tiên}} * {{ky}}: {{t+|ky|Того}} * {{lo}}: {{t|lo|ໂຕໂກ}} * {{lv}}: {{t+|lv|Togo|f}} * {{lt}}: {{t+|lt|Togas|m}} * {{mk}}: {{t|mk|Того|n}} * {{mi}}: {{t|mi|Toko}} * {{mr}}: {{t|mr|टोगो|m}} * {{mn}}: {{t+|mn|Того}} * {{nv}}: {{t|nv|Tʼóogo|sc=Latn}} * {{langname|nrf}}: {{t|nrf|Togo|m}} * {{nor}}: *: {{nb}}: {{t+|nb|Togo}} *: {{nn}}: {{t+|nn|Togo}} * {{fa}}: {{t|fa|توگو|tr=togo}} * {{pl}}: {{t+|pl|Togo}} * {{pt}}: {{t+|pt|Togo}} * {{ro}}: {{t+|ro|Togo|n}} * {{ru}}: {{t+|ru|То́го|f}} * {{sk}}: {{t|sk|Togo|n}} * {{sl}}: {{t+|sl|Togo|m}} * {{es}}: {{t+|es|Togo|?}} * {{sv}}: {{t+|sv|Togo|?}} * {{langname|tl}}: {{t+|tl|Togo}} * {{tg}}: {{t|tg|Того}} * {{th}}: {{t+|th|โตโก}} * {{tr}}: {{t+|tr|Togo}} * {{uk}}: {{t+|uk|То́го|f}} * {{uz}}: {{t+|uz|Togo}} * {{langname|yo}}: {{t|yo|Tógò}} {{trans-bottom}} {{C|vi|Quốc gia châu Phi}} ss90gts7oteqnd6attu6ak262ai4qeo 2351070 2350825 2026-05-07T10:48:07Z BlueShurikenNinjaBot 50371 Thay thế bản mẫu (via JWB) 2351070 wikitext text/x-wiki =={{langname|vi}}== {{wikipedia}} ==={{ĐM|pron}}=== {{vie-pron}} ==={{ĐM|pr-noun}}=== {{vie-proper noun}} # {{senseid|vi|Q945}}{{place|vi|quốc gia|r/Tây Phi|official=Cộng hòa Togo}} ===={{ĐM|trans}}==== {{trans-top|id=Q945|Quốc gia ở Tây Phi}} * {{en}}: {{t+|en|Togo}} * {{af}}: {{t|af|Togo}} * {{am}}: {{t|am|ቶጎ}} * {{ar}}: {{t|ar|تُوغُو|f|tr=tōḡō}}, {{t|ar|تُوجُو|f|tr=tōgō}} * {{hy}}: {{t|hy|Տոգո}} * {{langname|aii}}: {{t|aii|ܬܘܿܓ݂ܘܿ|f}} * {{az}}: {{t+|az|Toqo}} * {{be}}: {{t|be|То́га|f}} * {{bn}}: {{t+|bn|টোগো}} * {{br}}: {{t|br|Togo|?}} * {{bg}}: {{t|bg|То́го|m}} * {{my}}: {{t|my|တိုဂို}} * {{cat-old}}: {{t+|ca|Togo|m}} * {{zh}}: *: {{cmn}}: {{t+|cmn|多哥|tr=Duōgē}} * {{cs}}: {{t+|cs|Togo|n}} * {{da}}: {{t+|da|Togo|?}} * {{nl}}: {{t+|nl|Togo|n}} * {{eo}}: {{t|eo|Togolo}}, {{t+|eo|Togolando}} * {{fi}}: {{t+|fi|Togo}} * {{fr}}: {{t+|fr|Togo|m}} * {{ka}}: {{t|ka|ტოგო}} * {{de}}: {{t+|de|Togo|n}} * {{el}}: {{t+|el|Τόγκο|n}} * {{ha}}: {{t|ha|Togo}} * {{hi}}: {{t+|hi|टोगो|?}} * {{ia}}: {{t|ia|Togo}} * {{ga}}: {{t|ga|Tóga|m}} * {{it}}: {{t+|it|Togo|m}} * {{ha}}: {{t+|ja|トーゴ|tr=Tōgo}} * {{kk}}: {{t+|kk|Того}} * {{km}}: {{t+|km|តូហ្គោ}} * {{ko}}: {{t+|ko|^토고}}, {{t+|ko|^또고}} {{qualifier|Bắc Triều Tiên}} * {{ky}}: {{t+|ky|Того}} * {{lo}}: {{t|lo|ໂຕໂກ}} * {{lv}}: {{t+|lv|Togo|f}} * {{lt}}: {{t+|lt|Togas|m}} * {{mk}}: {{t|mk|Того|n}} * {{mi}}: {{t|mi|Toko}} * {{mr}}: {{t|mr|टोगो|m}} * {{mn}}: {{t+|mn|Того}} * {{nv}}: {{t|nv|Tʼóogo|sc=Latn}} * {{langname|nrf}}: {{t|nrf|Togo|m}} * {{nor}}: *: {{nb}}: {{t+|nb|Togo}} *: {{nn}}: {{t+|nn|Togo}} * {{fa}}: {{t|fa|توگو|tr=togo}} * {{pl}}: {{t+|pl|Togo}} * {{pt}}: {{t+|pt|Togo}} * {{ro}}: {{t+|ro|Togo|n}} * {{ru}}: {{t+|ru|То́го|f}} * {{sk}}: {{t|sk|Togo|n}} * {{sl}}: {{t+|sl|Togo|m}} * {{es}}: {{t+|es|Togo|?}} * {{sv}}: {{t+|sv|Togo|?}} * {{langname|tl}}: {{t+|tl|Togo}} * {{tg}}: {{t|tg|Того}} * {{th}}: {{t+|th|โตโก}} * {{tr}}: {{t+|tr|Togo}} * {{uk}}: {{t+|uk|То́го|f}} * {{uz}}: {{t+|uz|Togo}} * {{langname|yo}}: {{t|yo|Tógò}} {{trans-bottom}} {{C|vi|Quốc gia châu Phi}} plkcf9ztvnm3kf64ymb3la5hv05ltl3 Mô đun:form of doc 828 366293 2350444 2291780 2026-05-06T12:27:31Z Kateru Zakuro 34522 2350444 Scribunto text/plain local export = {} -- Author: Benwing2 --[==[ intro: This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the functions meant to be called directly from templates. ]==] local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local parse_interface_module = "Module:parse interface" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local table_extend = m_table.extend local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = mw.loadData(m_form_of.headword_data_module).pos_aliases local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: var(--wikt-palette-paleblue, #f9f9f9); border: 1px var(--border-color-base,#aaaaaa) solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function raw_editpage(page) return tostring(mw.uri.fullUrl(page, "action=edit")) end local function show_editlink(page) return link_box("[" .. raw_editpage(page) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text -- DO NOT replace with mw.loadData("Module:headword/data").pagename; we want the whole template name local tempname = PAGENAME:gsub("/documentation$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} local function ins(txt) insert(parts, txt) end if args.etymtemp then ins("{{hatnote|This template is for definition sections. For the template used in etymology sections, see [[Template:" .. args.etymtemp .. "]].}}\n") end ins(("{{uses lua|%s/templates}}"):format(form_of_module)) ins("This template creates a definition line for ") ins(args.pldesc or template_name():gsub(" of$", "") .. "s") ins(" ") ins(args.primaryentrytext or "of primary entries") if lang then ins(" in " .. langname) elseif args.exlang[1] then ins(", e.g. in " .. serial_comma_join(exlangnames, {conj = "or"})) end ins(".") local cats = args.cat if cats[1] then ins(" It also categorizes the page into ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Category:" .. langname .. " " .. cat .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "the proper language-specific subcategory of [[:Category:" .. ucfirst(cat) .. " by language]] (e.g. [[:Category:" .. (exlangnames[1] or "English") .. " " .. cat .. "]])") end end ins(serial_comma_join(catparts)) ins(".") end if args.addlintrotext then ins(" ") ins(args.addlintrotext) end ins("\n") if args.withcap and args.withdot then ins([===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using {{para|nocap|1}} and/or {{para|nodot|1}} (see below). ]===]) elseif args.withcap or args.withencap and lang == "en" then ins([===[ By default, this template displays its output with an initial capital letter. This can be overridden using {{para|nocap|1}} (see below). ]===]) elseif args.withencap then ins([===[ By default, this template displays its output with an initial capital letter if the term's language in {{para|1}} is English (but not otherwise]===]) if args.usedwithlimitedlangs then ins([==[, and there are likely no English examples for this template).]==]) else ins([==[). This can be overridden by using {{para|nocap|1}} to make the initial letter lowercase for English. This does not auto-add a final period; if (and only if) the term's language is English, you should manually include it after the template unless other text follows, since English definitions should be formatted like full sentences.]==]) end ins("\n") else ins([===[ By default, this template displays its output with an initial lowercase letter. This can be overridden by using {{para|cap|1}} to make the initial letter capitalized]===] .. (lang == "en" and ".\n" or " (but this is not " .. "generally recommended for non-English languages, as non-English definitions should be lowercase).\n")) end ins([===[ This template is '''not''' meant to be used in etymology sections.]===]) if args.etymtemp then ins(" For those sections, use {{tl|" .. args.etymtemp .. "}} instead.\n") else ins("\n") end ins([===[ '''Note:''' This is a “form of” template. The full list of such templates, including their distinctive properties and how to customize the output of this template, can be found at [[:Category:Form-of templates]]. ''The documentation for this page is auto-generated by [[Module:form of doc]].<sup>[<span class="plainlinks">[]===] .. raw_editpage("Module:form of doc") .. " edit]</span>]</sup> As a result, the edit buttons on most section links do not work.''\n") return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "{{para|" .. p .. "}}") if list then insert(listparts, ", {{para|" .. p .. "2}}") insert(listparts, ", {{para|" .. p .. "3}}") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(required)'''" or "''(optional)''" return concat(paramparts, " or ") .. " " .. reqtext end function export.paramdoc(args) local parts = {} local function ins(txt) insert(parts, txt) end local function param_and_doc(params, list, required, doc) ins("; ") ins(param(params, list, required)) ins("\n") ins(": ") ins(doc) ins("\n") end local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname ins("''Positional (unnamed) parameters:''\n") local lang = args.lang if args.lang then param_and_doc("1", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include any needed diacritics as " .. "appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in " .. "the appropriate fashion in order to create the link to the page. This parameter can also include multiple " .. "terms separated by a comma, as long as there is no space after the comma, and each such term can have " .. "inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("2", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the first " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc("1", false, true, "The [[WT:LANGCODE|language code]] of the term linked to (which this page is " .. sgdescof .. "). See " .. "[[Wiktionary:List of languages]]. <small>The parameter {{para|lang}} is a deprecated synonym; please do " .. "not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc("2", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include diacritics as appropriate " .. "to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin " .. "to indicate vowel length, etc.). These diacritics will automatically be stripped out in a " .. "language-specific fashion in order to create the link to the page. This parameter can also include " .. "multiple terms separated by a comma, as long as there is no space after the comma, and each such term can " .. "have inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("3", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the second " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the second parameter.") end ins("''Named parameters:''\n") param_and_doc({"t", lang and "3" or "4"}, false, false, "A gloss or short translation of the term linked " .. "to. <small>The parameter {{para|gloss}} is a deprecated synonym; please do not use.</small>") param_and_doc("tr", false, false, "Transliteration for non-Latin-script terms, if different from the automatically-generated one.") param_and_doc("ts", false, false, "Transcription for non-Latin-script terms whose transliteration is " .. "markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc("cat", true, false, "Additional categories to place the page into. They are automatically " .. "prepended with the language name. A single parameter can contain multiple comma-separated categories as long " .. "as there is no space after the comma.") param_and_doc("addl", false, false, "Additional text to display at the end, before the final closing " .. "<code>&lt;/span></code> tag. It is normally joined to the preceding text by a comma followed by a space. However, if the " .. "value of {{para|addl}} begins with a colon or semicolon, it is appended directly with no joining punctuation, " .. "and if the value begins with an underscore, the remainder is joined to the preceding text with a space.") if args.withfrom then param_and_doc("from", true, false, "A label (see {{tl|label}}) that gives additional information on " .. "the language variety that the term belongs to, the place that it originates from, or something similar.") end if args.withdot then param_and_doc("dot", false, false, "A character to replace the final dot that is normally shown automatically.") param_and_doc("nodot", false, false, "If {{para|nodot|1}}, then no automatic dot will be shown.") end if (args.withcap or args.withencap) and not args.usedwithlimitedlangs then -- Don't even mention if usedwithlimitedlangs=1, because there are unlikely to be English examples. param_and_doc("nocap", false, false, "If {{para|nocap|1}}, then the first letter will be in lowercase." .. (args.withencap and " Only useful for English, because other languages already begin with a lowercase letter." or "")) end if not args.withcap then param_and_doc("cap", false, false, "If {{para|cap|1}}, then the first letter will be in capitalized. " .. "Not generally recommended" .. (args.withencap and "" or ", except for English definitions") .. ", because non-English definitions should begin with a lowercase letter and be formatted like a phrase, " .. "rather than a full sentence.") end if args.cat and args.cat[1] then param_and_doc("nocat", false, false, "Disable categorization of categories built into the template. " .. "For example, {{tl|ellipsis of|en|...}} normally categories into e.g. [[:Category:English ellipses]], but " .. "this can be disabled using {{para|nocat|1}}. This does not affect categories explicitly specified in the " .. "template call itself using {{para|cat}}.") end param_and_doc("notext", false, false, "If {{para|notext|1}}, don't display the initial text preceding the " .. "term(s), but only the actual term or terms. The page is still categorized as normal, unless {{para|nocat|1}} " .. "is given.") param_and_doc("id", false, false, "A sense id for the term, which links to anchors on the page set by " .. "the {{tl|senseid}} template.") param_and_doc("sc", false, false, "Script code to use, if script detection does not work. See " .. "[[Wiktionary:Scripts]]. Rarely needs to be given.") param_and_doc("sort", false, false, "Sort key for sorting any categories the page is added to. Rarely needs " .. "to be given except for Japanese, and even then, only when there are multiple possible pronunciations.") if args.addlparamtext then ins("\n") ins(args.addlparamtext) ins("\n") end ins([==[ ===Inline modifiers=== Use a syntax like <code>Изабе́лла<tr:Izabɛ́lla><t:Isabelle></code> to specify modifiers such as transliterations, glosses, labels and qualifiers. In this example, for the Russian name {{m|ru|Изабе́лла|tr=Izabɛ́lla|t=Isabelle}}, the manual transliteration ''Izabɛ́lla'' and gloss "Isabelle" are given. The following modifiers are recognized; see [[WT:Inline modifiers]] for more detailed discussion of inline modifiers and the meanings of the modifiers given below. * <code>t</code>: gloss * <code>tr</code>: transliteration * <code>ts</code>: transcription, for languages where the transliteration and pronunciation are markedly different * <code>l</code>: comma-separated left labels, e.g. {{cd|<l:rare>}} or {{cd|<l:UK,Australia>}} or {{cd|<l:archaic,or,dialectal>}} or {{cd|<l:<<rare>>, <<archaic>> or <<dialectal>>>}} *: As shown, in the syntax without {{cd|<<...>>}}, there must not be a space after the comma for it to be recognized as a delimiter. *: The labels appear '''before''' the term, parenthesized, italicized and appropriately linked as if {{tl|lb}} were used (but without categorization). * <code>ll</code>: comma-separated right labels; these appear '''after''' the term, parenthesized, italicized and appropriately linked as for left labels * <code>q</code>: left qualifier; this appears '''before''' the term, parenthesized and italicized, but displayed as-is, without interpretation; useful for one-off explanatory notes * <code>qq</code>: right qualifier; this appears '''after''' the term, parenthesized and italicized * <code>ref</code>: reference or references, using the syntax documented in [[Template:IPA#References]] * <code>g</code>: comma-separated list of gender/number specifications; see [[Module:gender and number]] for the complete list * <code>alt</code>: alternative display text * <code>pos</code>: part of speech * <code>ng</code>: arbitrary non-gloss explanatory text * <code>lit</code>: literal meaning * <code>id</code>: sense ID; see {{temp|senseid}} * <code>sc</code>: script code]==]) return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end if not args.usedwithlimitedlangs then insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') end exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> for ' .. lang_name(langcode, "exlang")) end local exlangs = serial_comma_join(langparts, {conj = "or"}) local tempname = template_name("preserve lang code") if args.lang then return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><primary entry goes here></var>}}</code> ===Parameters=== ]===]):format(tempname) .. export.paramdoc(args) else return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><langcode></var>|<var><primary entry goes here></var>}}</code> where <code><var><langcode></var></code> is the [[Wiktionary:Languages|language code]], e.g. %s. ===Parameters=== ]===]):format(tempname, exlangs) .. export.paramdoc(args) end end function export.fulldoc(args) local shortcuts = args.shortcut[1] and ("{{shortcut|%s}}"):format(concat(args.shortcut, "|")) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return "{{documentation subpage}}\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "the") .. " " .. template_name():gsub(" of$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " of" args.primaryentrytext = args.primaryentrytext or "of a primary entry" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if non_alias_shortcuts1[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-grey-3, #dddddd);" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if non_alias_shortcuts2[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-grey-3, #dddddd);" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and data_module.base_lemma_params[1] then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if non_alias_shortcuts[1] then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if cats[1] then category_table = construct_category_table(cats) end if labels[1] then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if cats[1] then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if labels[1] then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export 5p79r28n5qfxf61v4c4h83vfwhgth0m 2350446 2350444 2026-05-06T12:29:47Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2291780 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350446 Scribunto text/plain --[=[ This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the function meant to be called directly from templates. Author: Benwing2 ]=] local export = {} local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local parse_interface_module = "Module:parse interface" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local table_extend = m_table.extend local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = require(m_form_of.form_of_pos_module) local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: #f9f9f9; border: 1px #aaaaaa solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function show_editlink(page) return link_box("[" .. tostring(mw.uri.fullUrl(page, "action=edit")) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text local tempname = PAGENAME:gsub("/doc$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} local function ins(txt) insert(parts, txt) end ins(("{{uses lua|%s/templates}}"):format(form_of_module)) ins("Bản mẫu này tạo dòng định nghĩa cho ") ins(args.pldesc or template_name():gsub(" của$", "") .. "") ins(" ") ins(args.primaryentrytext or "của mục từ chính") if lang then ins(" trong " .. langname) elseif args.exlang[1] then ins(", ví dụ trong " .. serial_comma_join(exlangnames, {conj = "or"})) end ins(".") local cats = args.cat if cats[1] then ins(" Nó cũng phân loại trang vào ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Thể loại:" .. cat .. " " .. langname .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "thể loại con ngôn ngữ cụ thể phù hợp trong [[:Thể loại:" .. ucfirst(cat) .. " theo ngôn ngữ]] (ví dụ [[:Thể loại:" .. cat .. " " .. (exlangnames[1] or "tiếng Anh") .. "]])") end end ins(serial_comma_join(catparts)) ins(".") end if args.addlintrotext then ins(" ") ins(args.addlintrotext) end ins("\n") if args.withcap and args.withdot then ins([===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using {{para|nocap|1}} and/or {{para|nodot|1}} (see below). ]===]) elseif args.withcap or args.withencap and lang == "en" then ins([===[ By default, this template displays its output with an initial capital letter. This can be overridden using {{para|nocap|1}} (see below). ]===]) elseif args.withencap then ins([===[ By default, this template displays its output with an initial capital letter if the term's language in {{para|1}} is English (but not otherwise]===]) if args.usedwithlimitedlangs then ins([==[, and there are likely no English examples for this template).]==]) else ins([==[). This can be overridden by using {{para|nocap|1}} to make the initial letter lowercase for English. This does not auto-add a final period; if (and only if) the term's language is English, you should manually include it after the template unless other text follows, since English definitions should be formatted like full sentences.]==]) end ins("\n") else ins([===[ By default, this template displays its output with an initial lowercase letter. This can be overridden by using {{para|cap|1}} to make the initial letter capitalized]===] .. (lang == "en" and ".\n" or " (but this is not " .. "generally recommended for non-English languages, as non-English definitions should be lowercase).\n")) end ins([===[ '''Không''' sử dụng bản mẫu này trong các phần từ nguyên.]===]) local etymtemp = args.etymtemp if etymtemp then ins(" For those sections, use {{tl|" .. etymtemp .. "}} instead.\n") else ins("\n") end ins([===[ Lưu ý người dùng có thể tùy chỉnh cách hiển thị đầu ra của bản mẫu này bằng cách sửa đổi trang CSS tùy chỉnh. Xem [[:Thể loại:Bản mẫu dạng từ|bản mẫu “dạng từ”]] để biết thêm chi tiết. ]===]) return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "{{para|" .. p .. "}}") if list then insert(listparts, ", {{para|" .. p .. "2}}") insert(listparts, ", {{para|" .. p .. "3}}") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(cần thiết)'''" or "''(tùy chọn)''" return concat(paramparts, " hoặc ") .. " " .. reqtext end function export.paramdoc(args) local parts = {} local function ins(txt) insert(parts, txt) end local function param_and_doc(params, list, required, doc) ins("; ") ins(param(params, list, required)) ins("\n") ins(": ") ins(doc) ins("\n") end local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname ins("''Tham số phổ biến (không tên):''\n") local lang = args.lang if args.lang then param_and_doc("1", false, true, "Tên mục từ cần liên kết đến (mà trang này là " .. sgdescof .. " mục từ cần liên kết đến đó). This should include any needed diacritics as " .. "appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in " .. "the appropriate fashion in order to create the link to the page. This parameter can also include multiple " .. "terms separated by a comma, as long as there is no space after the comma, and each such term can have " .. "inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("2", false, false, "Văn bản hiển thị trong liên kết đến mục từ. If empty or omitted, the term specified by the first " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc("1", false, true, "[[WT:LANGCODE|Mã ngôn ngữ]] của mục từ cần liên kết đến (mà trang này là " .. sgdescof .. " mục từ cần liên kết đến đó). Xem " .. "[[Wiktionary:Danh sách ngôn ngữ]]. <small>The parameter {{para|lang}} is a deprecated synonym; please do " .. "not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc("2", false, true, "Tên mục từ cần liên kết đến (mà trang này là " .. sgdescof .. " mục từ cần liên kết đến đó). This should include diacritics as appropriate " .. "to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin " .. "to indicate vowel length, etc.). These diacritics will automatically be stripped out in a " .. "language-specific fashion in order to create the link to the page. This parameter can also include " .. "multiple terms separated by a comma, as long as there is no space after the comma, and each such term can " .. "have inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("3", false, false, "Văn bản hiển thị trong liên kết đến mục từ. Nếu để trống hoặc bỏ qua, sử dụng tên mục từ được chỉ định " .. "bởi tham số thứ hai. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the second parameter.") end ins("''Tham số có tên:''\n") if args.etymtemp == 'contraction' then param_and_doc("mandatory", false, false, "If {{para|mandatory|1}}, indicates that the contraction is mandatory.") param_and_doc("optional", false, false, "If {{para|optional|1}}, indicates that the contraction is optional.") end param_and_doc({"t", lang and "3" or "4"}, false, false, "Một chú giải hoặc bản dịch ngữ nghĩa của từ cần liên kết " .. "đến. <small>The parameter {{para|gloss}} is a deprecated synonym; please do not use.</small>") param_and_doc("tr", false, false, "Chuyển ngữ của từ không phải chữ Latinh, nếu khác với từ được tạo tự động.") param_and_doc("ts", false, false, "Transcription for non-Latin-script terms whose transliteration is " .. "markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc("cat", true, false, "Additional categories to place the page into. They are automatically " .. "prepended with the language name. A single parameter can contain multiple comma-separated categories as long " .. "as there is no space after the comma.") param_and_doc("addl", false, false, "Additional text to display at the end, before the final closing " .. "&lt;span/> tag. It is normally joined to the preceding text by a comma followed by a space. However, if the " .. "value of {{para|addl}} begins with a colon or semicolon, it is appended directly with no joining punctuation, " .. "and if the value begins with an underscore, the remainder is joined to the preceding text with a space.") if args.withfrom then param_and_doc("from", true, false, "Một nhãn (xem {{tl|label}}) cung cấp thông tin bổ sung về " .. "phương ngữ mà từ thuộc về, nơi bắt nguồn của từ đó hoặc điều gì đó tương tự.") end if args.withdot then param_and_doc("dot", false, false, "Một ký tự để thay thế dấu chấm cuối cùng thường được hiển thị tự động.") param_and_doc("nodot", false, false, "Nếu {{para|nodot|1}}, sẽ không có dấu chấm tự động nào được hiển thị.") end if (args.withcap or args.withencap) and not args.usedwithlimitedlangs then -- Don't even mention if usedwithlimitedlangs=1, because there are unlikely to be English examples. param_and_doc("nocap", false, false, "Nếu {{para|nocap|1}}, thì chữ cái đầu tiên sẽ ở dạng chữ thường." .. (args.withencap and " Only useful for English, because other languages already begin with a lowercase letter." or "")) end if not args.withcap then param_and_doc("cap", false, false, "If {{para|cap|1}}, then the first letter will be in capitalized. " .. "Not generally recommended" .. (args.withencap and "" or ", except for English definitions") .. ", because non-English definitions should begin with a lowercase letter and be formatted like a phrase, " .. "rather than a full sentence.") end if args.cat and args.cat[1] then param_and_doc("nocat", false, false, "Disable categorization of categories built into the template. " .. "For example, {{tl|ellipsis of|en|...}} normally categories into e.g. [[:Category:English ellipses]], but " .. "this can be disabled using {{para|nocat|1}}. This does not affect categories explicitly specified in the " .. "template call itself using {{para|cat}}.") end param_and_doc("notext", false, false, "If {{para|notext|1}}, don't display the initial text preceding the " .. "term(s), but only the actual term or terms. The page is still categorized as normal, unless {{para|nocat|1}} " .. "is given.") param_and_doc("id", false, false, "A sense id for the term, which links to anchors on the page set by " .. "the {{tl|senseid}} template.") param_and_doc("sc", false, false, "Mã tập lệnh, nếu hệ thống phát hiện tập lệnh không hoạt động. See " .. "[[Wiktionary:Scripts]]. Hiếm khi cần thiết.") param_and_doc("sort", false, false, "Sort key for sorting any categories the page is added to. Rarely needs " .. "to be given except for Japanese, and even then, only when there are multiple possible pronunciations.") if args.addlparamtext then ins("\n") ins(args.addlparamtext) ins("\n") end ins([==[ ===Inline modifiers=== Use a syntax like <code>Изабе́лла<tr:Izabɛ́lla><t:Isabelle></code> to specify modifiers such as transliterations, glosses and qualifiers. In this example, for the Russian name {{m|ru|Изабе́лла|tr=Izabɛ́lla|t=Isabelle}}, the manual transliteration ''Izabɛ́lla'' and gloss "Isabelle" are given. The following modifiers are recognized; see {{temp|link}} for the exact meaning of these modifiers. * <code>t</code>: gloss * <code>tr</code>: transliteration * <code>ts</code>: transcription, for languages where the transliteration and pronunciation are markedly different * <code>q</code>: left qualifier, e.g. {{cd|<q:neither sexual nor romantic in nature>}} (in reference to [[platonic love]]); this appears '''before''' the term, parenthesized and italicized * <code>qq</code>: right qualifier; this appears '''after''' the term, parenthesized and italicized * <code>l</code>: comma-separated left labels, e.g. {{cd|<l:rare>}} or {{cd|<l:UK,Australia>}} or {{cd|<l:archaic,or,dialectal>}}; as shown, there must not be a space after the comma for it to be recognized as a delimiter; the labels appear '''before''' the term, parenthesized, italicized and appropriately linked as if {{tl|lb}} were used (but without categorization); an alternative syntax is to enclose the labels in {{cd|<<...>>}}, e.g. {{cd|<l:<<rare>>, <<archaic>> or <<dialectal>>>}} * <code>ll</code>: comma-separated right labels; these appear '''after''' the term, parenthesized, italicized and appropriately linked as for left labels * <code>ref</code>: reference or references, using the syntax documented in [[Template:IPA#References]] * <code>g</code>: comma-separated list of gender/number specifications; see [[Module:gender and number]] for the complete list * <code>alt</code>: alternative display text * <code>pos</code>: part of speech * <code>lit</code>: literal meaning * <code>id</code>: sense ID; see {{temp|senseid}} * <code>sc</code>: script code]==]) return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end if not args.usedwithlimitedlangs then insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') end exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> cho ' .. lang_name(langcode, "exlang")) end local exlangs = serial_comma_join(langparts, {conj = "hoặc"}) local tempname = template_name("preserve lang code") if args.lang then return ([===[ ==Sử dụng== Dùng trong dòng định nghĩa, hầu hết đều như bên dưới: # <code><nowiki>{{%s</nowiki>|<var><tên mục từ></var>}}</code> ===Tham số=== ]===]):format(tempname) .. export.paramdoc(args) else return ([===[ ==Sử dụng== Dùng trong dòng định nghĩa, hầu hết đều như bên dưới: # <code><nowiki>{{%s</nowiki>|<var><mã ngôn ngữ></var>|<var><tên mục từ></var>}}</code> trong đó <code><var><mã ngôn ngữ></var></code> là [[Wiktionary:Ngôn ngữ|mã ngôn ngữ]], ví dụ %s. ===Tham số=== ]===]):format(tempname, exlangs) .. export.paramdoc(args) end end function export.fulldoc(args) local shortcuts = args.shortcut[1] and ("{{shortcut|%s}}"):format(concat(args.shortcut, "|")) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return "{{documentation subpage}}\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "") .. " " .. template_name():gsub(" của$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " của" args.primaryentrytext = args.primaryentrytext or "của mục từ chính" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if non_alias_shortcuts1[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if non_alias_shortcuts2[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and data_module.base_lemma_params[1] then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if non_alias_shortcuts[1] then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if cats[1] then category_table = construct_category_table(cats) end if labels[1] then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if cats[1] then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if labels[1] then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export foacfsvh2d5bx64fm7g78a49u8as2j8 2350447 2350446 2026-05-06T12:33:09Z Kateru Zakuro 34522 2350447 Scribunto text/plain --[=[ This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the function meant to be called directly from templates. Author: Benwing2 ]=] local export = {} local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local shortcut_box_module = "Module:shortcut box" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local format_shortcuts = require(shortcut_box_module).format_shortcuts local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local str_utils_format = m_str_utils.format local table_extend = m_table.extend local template_link = require(template_parser_module).templateLink local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = require(m_form_of.form_of_pos_module) local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: #f9f9f9; border: 1px #aaaaaa solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function show_editlink(page) return link_box("[" .. tostring(mw.uri.fullUrl(page, "action=edit")) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text local tempname = PAGENAME:gsub("/documentation$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} insert(parts, mw.getCurrentFrame():expandTemplate {title="uses lua", args={form_of_module .. "/templates"}}) insert(parts, "This template creates a definition line for ") insert(parts, args.pldesc or template_name():gsub(" of$", "") .. "s") insert(parts, " ") insert(parts, args.primaryentrytext or "of primary entries") if lang then insert(parts, " in " .. langname) elseif #args.exlang > 0 then insert(parts, ", e.g. in " .. serial_comma_join(exlangnames, {conj = "or"})) end insert(parts, ".") local cats = args.cat if #cats > 0 then insert(parts, " It also categorizes the page into ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Category:" .. langname .. " " .. cat .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "the proper language-specific subcategory of [[:Category:" .. ucfirst(cat) .. " by language]] (e.g. [[:Category:" .. (exlangnames[1] or "English") .. " " .. cat .. "]])") end end insert(parts, serial_comma_join(catparts)) insert(parts, ".") end if args.addlintrotext then insert(parts, " ") insert(parts, args.addlintrotext) end insert(parts, "\n") if args.withcap and args.withdot then insert(parts, [===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using <code>|nocap=1</code> and/or <code>|nodot=1</code> (see below). ]===]) elseif args.withcap then insert(parts, [===[ By default, this template displays its output with an initial capital letter. This can be overridden using <code>|nocap=1</code> (see below). ]===]) end insert(parts, [===[ This template is '''not''' meant to be used in etymology sections.]===]) local etymtemp = args.etymtemp if etymtemp then insert(parts, " For those sections, use <code>{{[[Template:" .. etymtemp .. "|" .. etymtemp .. "]]}}</code> instead.") end insert(parts, [===[ Note that users can customize how the output of this template displays by modifying their Custom CSS files. See [[:Category:Form-of templates|“Form of” templates]] for details. ]===]) return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "<code>|" .. p .. "=</code>") if list then insert(listparts, ", <code>|" .. p .. "2=</code>") insert(listparts, ", <code>|" .. p .. "3=</code>") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(required)'''" or "''(optional)''" return concat(paramparts, " or ") .. " " .. reqtext end local function param_and_doc(parts, params, list, required, doc) insert(parts, "; ") insert(parts, param(params, list, required)) insert(parts, "\n") insert(parts, ": ") insert(parts, doc) insert(parts, "\n") end function export.paramdoc(args) local parts = {} local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname insert(parts, "''Positional (unnamed) parameters:''\n") local lang = args.lang if args.lang then param_and_doc(parts, "1", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include any needed diacritics as appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in the appropriate fashion in order to create the link to the page.") param_and_doc(parts, "2", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the first parameter will be used. This parameter is normally not necessary, and should not be used solely to indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc(parts, "1", false, true, "The [[WT:LANGCODE|language code]] of the term linked to (which this page is " .. sgdescof .. "). See [[Wiktionary:List of languages]]. <small>The parameter <code>|lang=</code> is a deprecated synonym; please do not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc(parts, "2", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include diacritics as appropriate to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin to indicate vowel length, etc.). These diacritics will automatically be stripped out in a language-specific fashion in order to create the link to the page.") param_and_doc(parts, "3", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the second parameter will be used. This parameter is normally not necessary, and should not be used solely to indicate diacritics; instead, put the diacritics in the second parameter.") end insert(parts, "''Named parameters:''\n") if args.etymtemp == 'contraction' then param_and_doc(parts, "mandatory", false, false, "If <code>|mandatory=1</code>, indicates that the contraction is mandatory.") param_and_doc(parts, "optional", false, false, "If <code>|optional=1</code>, indicates that the contraction is optional.") end param_and_doc(parts, {"t", lang and "3" or "4"}, false, false, "A gloss or short translation of the term linked to. <small>The parameter <code>|gloss=</code> is a deprecated synonym; please do not use.</small>") param_and_doc(parts, "tr", false, false, "Transliteration for non-Latin-script terms, if different from the automatically-generated one.") param_and_doc(parts, "ts", false, false, "Transcription for non-Latin-script terms whose transliteration is markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc(parts, "sc", false, false, "Script code to use, if script detection does not work. See [[Wiktionary:Scripts]].") if args.withfrom then param_and_doc(parts, "from", true, false, "A label (see " .. template_link("label") .. ") that gives additional information on the dialect that the term belongs to, the place that it originates from, or something similar.") end if args.withdot then param_and_doc(parts, "dot", false, false, "A character to replace the final dot that is normally shown automatically.") param_and_doc(parts, "nodot", false, false, "If <code>|nodot=1</code>, then no automatic dot will be shown.") end if args.withcap then param_and_doc(parts, "nocap", false, false, "If <code>|nocap=1</code>, then the first letter will be in lowercase.") end param_and_doc(parts, "id", false, false, "A sense id for the term, which links to anchors on the page set by the " .. template_link("senseid") .. " template.") return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> for ' .. lang_name(langcode, "exlang")) end sub.exlangs = serial_comma_join(langparts, {conj = "or"}) sub.tempname = template_name("preserve lang code") if args.lang then return str_utils_format([===[ ==Usage== Use in the definition line, most commonly as follows: # {\op}{\op}{tempname}|<var><primary entry goes here></var>{\cl}{\cl} ===Parameters=== ]===], sub) .. export.paramdoc(args) else return str_utils_format([===[ ==Usage== Use in the definition line, most commonly as follows: # {\op}{\op}{tempname}|<var><langcode></var>|<var><primary entry goes here></var>{\cl}{\cl} where <code><var><langcode></var></code> is the [[Wiktionary:Languages|language code]], e.g. {exlangs}. ===Parameters=== ]===], sub) .. export.paramdoc(args) end end function export.fulldoc(args) local docsubpage = mw.getCurrentFrame():expandTemplate{title="documentation subpage", args={}} local shortcuts = #args.shortcut > 0 and format_shortcuts(args.shortcut) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return docsubpage .. "\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "the") .. " " .. template_name():gsub(" of$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " of" args.primaryentrytext = args.primaryentrytext or "of a primary entry" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if #non_alias_shortcuts1 > 0 then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if #non_alias_shortcuts2 > 0 then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and #data_module.base_lemma_params > 0 then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if #non_alias_shortcuts > 0 then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if #cats > 0 then category_table = construct_category_table(cats) end if #labels > 0 then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if #cats > 0 then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if #labels > 0 then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export p98o1qmhmd4oe6yae9h7rlnx3u73ynz 2350448 2350447 2026-05-06T12:34:00Z Kateru Zakuro 34522 2350448 Scribunto text/plain --[=[ This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the function meant to be called directly from templates. Author: Benwing2 ]=] local export = {} local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local parse_interface_module = "Module:parse interface" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local table_extend = m_table.extend local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = mw.loadData(m_form_of.headword_data_module).pos_aliases local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: var(--wikt-palette-paleblue, #f9f9f9); border: 1px var(--border-color-base,#aaaaaa) solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function show_editlink(page) return link_box("[" .. tostring(mw.uri.fullUrl(page, "action=edit")) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text local tempname = PAGENAME:gsub("/documentation$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} local function ins(txt) insert(parts, txt) end ins(("{{uses lua|%s/templates}}"):format(form_of_module)) ins("This template creates a definition line for ") ins(args.pldesc or template_name():gsub(" of$", "") .. "s") ins(" ") ins(args.primaryentrytext or "of primary entries") if lang then ins(" in " .. langname) elseif args.exlang[1] then ins(", e.g. in " .. serial_comma_join(exlangnames, {conj = "or"})) end ins(".") local cats = args.cat if cats[1] then ins(" It also categorizes the page into ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Category:" .. langname .. " " .. cat .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "the proper language-specific subcategory of [[:Category:" .. ucfirst(cat) .. " by language]] (e.g. [[:Category:" .. (exlangnames[1] or "English") .. " " .. cat .. "]])") end end ins(serial_comma_join(catparts)) ins(".") end if args.addlintrotext then ins(" ") ins(args.addlintrotext) end ins("\n") if args.withcap and args.withdot then ins([===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using {{para|nocap|1}} and/or {{para|nodot|1}} (see below). ]===]) elseif args.withcap or args.withencap and lang == "en" then ins([===[ By default, this template displays its output with an initial capital letter. This can be overridden using {{para|nocap|1}} (see below). ]===]) elseif args.withencap then ins([===[ By default, this template displays its output with an initial capital letter if the term's language in {{para|1}} is English (but not otherwise]===]) if args.usedwithlimitedlangs then ins([==[, and there are likely no English examples for this template).]==]) else ins([==[). This can be overridden by using {{para|nocap|1}} to make the initial letter lowercase for English. This does not auto-add a final period; if (and only if) the term's language is English, you should manually include it after the template unless other text follows, since English definitions should be formatted like full sentences.]==]) end ins("\n") else ins([===[ By default, this template displays its output with an initial lowercase letter. This can be overridden by using {{para|cap|1}} to make the initial letter capitalized]===] .. (lang == "en" and ".\n" or " (but this is not " .. "generally recommended for non-English languages, as non-English definitions should be lowercase).\n")) end ins([===[ This template is '''not''' meant to be used in etymology sections.]===]) local etymtemp = args.etymtemp if etymtemp then ins(" For those sections, use {{tl|" .. etymtemp .. "}} instead.\n") else ins("\n") end ins([===[ Note that users can customize how the output of this template displays by modifying their Custom CSS files. See [[:Category:Form-of templates|“Form of” templates]] for details. ]===]) return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "{{para|" .. p .. "}}") if list then insert(listparts, ", {{para|" .. p .. "2}}") insert(listparts, ", {{para|" .. p .. "3}}") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(required)'''" or "''(optional)''" return concat(paramparts, " or ") .. " " .. reqtext end function export.paramdoc(args) local parts = {} local function ins(txt) insert(parts, txt) end local function param_and_doc(params, list, required, doc) ins("; ") ins(param(params, list, required)) ins("\n") ins(": ") ins(doc) ins("\n") end local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname ins("''Positional (unnamed) parameters:''\n") local lang = args.lang if args.lang then param_and_doc("1", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include any needed diacritics as " .. "appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in " .. "the appropriate fashion in order to create the link to the page. This parameter can also include multiple " .. "terms separated by a comma, as long as there is no space after the comma, and each such term can have " .. "inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("2", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the first " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc("1", false, true, "The [[WT:LANGCODE|language code]] of the term linked to (which this page is " .. sgdescof .. "). See " .. "[[Wiktionary:List of languages]]. <small>The parameter {{para|lang}} is a deprecated synonym; please do " .. "not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc("2", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include diacritics as appropriate " .. "to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin " .. "to indicate vowel length, etc.). These diacritics will automatically be stripped out in a " .. "language-specific fashion in order to create the link to the page. This parameter can also include " .. "multiple terms separated by a comma, as long as there is no space after the comma, and each such term can " .. "have inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("3", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the second " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the second parameter.") end ins("''Named parameters:''\n") if args.etymtemp == 'contraction' then param_and_doc("mandatory", false, false, "If {{para|mandatory|1}}, indicates that the contraction is mandatory.") param_and_doc("optional", false, false, "If {{para|optional|1}}, indicates that the contraction is optional.") end param_and_doc({"t", lang and "3" or "4"}, false, false, "A gloss or short translation of the term linked " .. "to. <small>The parameter {{para|gloss}} is a deprecated synonym; please do not use.</small>") param_and_doc("tr", false, false, "Transliteration for non-Latin-script terms, if different from the automatically-generated one.") param_and_doc("ts", false, false, "Transcription for non-Latin-script terms whose transliteration is " .. "markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc("cat", true, false, "Additional categories to place the page into. They are automatically " .. "prepended with the language name. A single parameter can contain multiple comma-separated categories as long " .. "as there is no space after the comma.") param_and_doc("addl", false, false, "Additional text to display at the end, before the final closing " .. "&lt;span/> tag. It is normally joined to the preceding text by a comma followed by a space. However, if the " .. "value of {{para|addl}} begins with a colon or semicolon, it is appended directly with no joining punctuation, " .. "and if the value begins with an underscore, the remainder is joined to the preceding text with a space.") if args.withfrom then param_and_doc("from", true, false, "A label (see {{tl|label}}) that gives additional information on " .. "the language variety that the term belongs to, the place that it originates from, or something similar.") end if args.withdot then param_and_doc("dot", false, false, "A character to replace the final dot that is normally shown automatically.") param_and_doc("nodot", false, false, "If {{para|nodot|1}}, then no automatic dot will be shown.") end if (args.withcap or args.withencap) and not args.usedwithlimitedlangs then -- Don't even mention if usedwithlimitedlangs=1, because there are unlikely to be English examples. param_and_doc("nocap", false, false, "If {{para|nocap|1}}, then the first letter will be in lowercase." .. (args.withencap and " Only useful for English, because other languages already begin with a lowercase letter." or "")) end if not args.withcap then param_and_doc("cap", false, false, "If {{para|cap|1}}, then the first letter will be in capitalized. " .. "Not generally recommended" .. (args.withencap and "" or ", except for English definitions") .. ", because non-English definitions should begin with a lowercase letter and be formatted like a phrase, " .. "rather than a full sentence.") end if args.cat and args.cat[1] then param_and_doc("nocat", false, false, "Disable categorization of categories built into the template. " .. "For example, {{tl|ellipsis of|en|...}} normally categories into e.g. [[:Category:English ellipses]], but " .. "this can be disabled using {{para|nocat|1}}. This does not affect categories explicitly specified in the " .. "template call itself using {{para|cat}}.") end param_and_doc("notext", false, false, "If {{para|notext|1}}, don't display the initial text preceding the " .. "term(s), but only the actual term or terms. The page is still categorized as normal, unless {{para|nocat|1}} " .. "is given.") param_and_doc("id", false, false, "A sense id for the term, which links to anchors on the page set by " .. "the {{tl|senseid}} template.") param_and_doc("sc", false, false, "Script code to use, if script detection does not work. See " .. "[[Wiktionary:Scripts]]. Rarely needs to be given.") param_and_doc("sort", false, false, "Sort key for sorting any categories the page is added to. Rarely needs " .. "to be given except for Japanese, and even then, only when there are multiple possible pronunciations.") if args.addlparamtext then ins("\n") ins(args.addlparamtext) ins("\n") end ins([==[ ===Inline modifiers=== Use a syntax like <code>Изабе́лла<tr:Izabɛ́lla><t:Isabelle></code> to specify modifiers such as transliterations, glosses, labels and qualifiers. In this example, for the Russian name {{m|ru|Изабе́лла|tr=Izabɛ́lla|t=Isabelle}}, the manual transliteration ''Izabɛ́lla'' and gloss "Isabelle" are given. The following modifiers are recognized; see [[WT:Inline modifiers]] for more detailed discussion of inline modifiers and the meanings of the modifiers given below. * <code>t</code>: gloss * <code>tr</code>: transliteration * <code>ts</code>: transcription, for languages where the transliteration and pronunciation are markedly different * <code>l</code>: comma-separated left labels, e.g. {{cd|<l:rare>}} or {{cd|<l:UK,Australia>}} or {{cd|<l:archaic,or,dialectal>}} or {{cd|<l:<<rare>>, <<archaic>> or <<dialectal>>>}} *: As shown, in the syntax without {{cd|<<...>>}}, there must not be a space after the comma for it to be recognized as a delimiter. *: The labels appear '''before''' the term, parenthesized, italicized and appropriately linked as if {{tl|lb}} were used (but without categorization). * <code>ll</code>: comma-separated right labels; these appear '''after''' the term, parenthesized, italicized and appropriately linked as for left labels * <code>q</code>: left qualifier; this appears '''before''' the term, parenthesized and italicized, but displayed as-is, without interpretation; useful for one-off explanatory notes * <code>qq</code>: right qualifier; this appears '''after''' the term, parenthesized and italicized * <code>ref</code>: reference or references, using the syntax documented in [[Template:IPA#References]] * <code>g</code>: comma-separated list of gender/number specifications; see [[Module:gender and number]] for the complete list * <code>alt</code>: alternative display text * <code>pos</code>: part of speech * <code>ng</code>: arbitrary non-gloss explanatory text * <code>lit</code>: literal meaning * <code>id</code>: sense ID; see {{temp|senseid}} * <code>sc</code>: script code]==]) return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end if not args.usedwithlimitedlangs then insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') end exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> for ' .. lang_name(langcode, "exlang")) end local exlangs = serial_comma_join(langparts, {conj = "or"}) local tempname = template_name("preserve lang code") if args.lang then return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><primary entry goes here></var>}}</code> ===Parameters=== ]===]):format(tempname) .. export.paramdoc(args) else return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><langcode></var>|<var><primary entry goes here></var>}}</code> where <code><var><langcode></var></code> is the [[Wiktionary:Languages|language code]], e.g. %s. ===Parameters=== ]===]):format(tempname, exlangs) .. export.paramdoc(args) end end function export.fulldoc(args) local shortcuts = args.shortcut[1] and ("{{shortcut|%s}}"):format(concat(args.shortcut, "|")) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return "{{documentation subpage}}\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "the") .. " " .. template_name():gsub(" of$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " of" args.primaryentrytext = args.primaryentrytext or "of a primary entry" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if non_alias_shortcuts1[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-grey-3, #dddddd);" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if non_alias_shortcuts2[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-grey-3, #dddddd);" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and data_module.base_lemma_params[1] then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if non_alias_shortcuts[1] then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if cats[1] then category_table = construct_category_table(cats) end if labels[1] then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if cats[1] then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if labels[1] then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export 0oa25ra4d0g7n2xx0jrdzubavoicobw 2350449 2350448 2026-05-06T12:35:07Z Kateru Zakuro 34522 2350449 Scribunto text/plain --[=[ This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the function meant to be called directly from templates. Author: Benwing2 ]=] local export = {} local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local parse_interface_module = "Module:parse interface" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local table_extend = m_table.extend local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = require(m_form_of.form_of_pos_module) local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: #f9f9f9; border: 1px #aaaaaa solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function show_editlink(page) return link_box("[" .. tostring(mw.uri.fullUrl(page, "action=edit")) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text local tempname = PAGENAME:gsub("/documentation$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} local function ins(txt) insert(parts, txt) end ins(("{{uses lua|%s/templates}}"):format(form_of_module)) ins("This template creates a definition line for ") ins(args.pldesc or template_name():gsub(" of$", "") .. "s") ins(" ") ins(args.primaryentrytext or "of primary entries") if lang then ins(" in " .. langname) elseif args.exlang[1] then ins(", e.g. in " .. serial_comma_join(exlangnames, {conj = "or"})) end ins(".") local cats = args.cat if cats[1] then ins(" It also categorizes the page into ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Category:" .. langname .. " " .. cat .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "the proper language-specific subcategory of [[:Category:" .. ucfirst(cat) .. " by language]] (e.g. [[:Category:" .. (exlangnames[1] or "English") .. " " .. cat .. "]])") end end ins(serial_comma_join(catparts)) ins(".") end if args.addlintrotext then ins(" ") ins(args.addlintrotext) end ins("\n") if args.withcap and args.withdot then ins([===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using {{para|nocap|1}} and/or {{para|nodot|1}} (see below). ]===]) elseif args.withcap or args.withencap and lang == "en" then ins([===[ By default, this template displays its output with an initial capital letter. This can be overridden using {{para|nocap|1}} (see below). ]===]) elseif args.withencap then ins([===[ By default, this template displays its output with an initial capital letter if the term's language in {{para|1}} is English (but not otherwise]===]) if args.usedwithlimitedlangs then ins([==[, and there are likely no English examples for this template).]==]) else ins([==[). This can be overridden by using {{para|nocap|1}} to make the initial letter lowercase for English. This does not auto-add a final period; if (and only if) the term's language is English, you should manually include it after the template unless other text follows, since English definitions should be formatted like full sentences.]==]) end ins("\n") else ins([===[ By default, this template displays its output with an initial lowercase letter. This can be overridden by using {{para|cap|1}} to make the initial letter capitalized]===] .. (lang == "en" and ".\n" or " (but this is not " .. "generally recommended for non-English languages, as non-English definitions should be lowercase).\n")) end ins([===[ This template is '''not''' meant to be used in etymology sections.]===]) local etymtemp = args.etymtemp if etymtemp then ins(" For those sections, use {{tl|" .. etymtemp .. "}} instead.\n") else ins("\n") end ins([===[ Note that users can customize how the output of this template displays by modifying their Custom CSS files. See [[:Category:Form-of templates|“Form of” templates]] for details. ]===]) return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "{{para|" .. p .. "}}") if list then insert(listparts, ", {{para|" .. p .. "2}}") insert(listparts, ", {{para|" .. p .. "3}}") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(required)'''" or "''(optional)''" return concat(paramparts, " or ") .. " " .. reqtext end function export.paramdoc(args) local parts = {} local function ins(txt) insert(parts, txt) end local function param_and_doc(params, list, required, doc) ins("; ") ins(param(params, list, required)) ins("\n") ins(": ") ins(doc) ins("\n") end local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname ins("''Positional (unnamed) parameters:''\n") local lang = args.lang if args.lang then param_and_doc("1", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include any needed diacritics as " .. "appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in " .. "the appropriate fashion in order to create the link to the page. This parameter can also include multiple " .. "terms separated by a comma, as long as there is no space after the comma, and each such term can have " .. "inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("2", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the first " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc("1", false, true, "The [[WT:LANGCODE|language code]] of the term linked to (which this page is " .. sgdescof .. "). See " .. "[[Wiktionary:List of languages]]. <small>The parameter {{para|lang}} is a deprecated synonym; please do " .. "not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc("2", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include diacritics as appropriate " .. "to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin " .. "to indicate vowel length, etc.). These diacritics will automatically be stripped out in a " .. "language-specific fashion in order to create the link to the page. This parameter can also include " .. "multiple terms separated by a comma, as long as there is no space after the comma, and each such term can " .. "have inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("3", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the second " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the second parameter.") end ins("''Named parameters:''\n") if args.etymtemp == 'contraction' then param_and_doc("mandatory", false, false, "If {{para|mandatory|1}}, indicates that the contraction is mandatory.") param_and_doc("optional", false, false, "If {{para|optional|1}}, indicates that the contraction is optional.") end param_and_doc({"t", lang and "3" or "4"}, false, false, "A gloss or short translation of the term linked " .. "to. <small>The parameter {{para|gloss}} is a deprecated synonym; please do not use.</small>") param_and_doc("tr", false, false, "Transliteration for non-Latin-script terms, if different from the automatically-generated one.") param_and_doc("ts", false, false, "Transcription for non-Latin-script terms whose transliteration is " .. "markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc("cat", true, false, "Additional categories to place the page into. They are automatically " .. "prepended with the language name. A single parameter can contain multiple comma-separated categories as long " .. "as there is no space after the comma.") param_and_doc("addl", false, false, "Additional text to display at the end, before the final closing " .. "&lt;span/> tag. It is normally joined to the preceding text by a comma followed by a space. However, if the " .. "value of {{para|addl}} begins with a colon or semicolon, it is appended directly with no joining punctuation, " .. "and if the value begins with an underscore, the remainder is joined to the preceding text with a space.") if args.withfrom then param_and_doc("from", true, false, "A label (see {{tl|label}}) that gives additional information on " .. "the language variety that the term belongs to, the place that it originates from, or something similar.") end if args.withdot then param_and_doc("dot", false, false, "A character to replace the final dot that is normally shown automatically.") param_and_doc("nodot", false, false, "If {{para|nodot|1}}, then no automatic dot will be shown.") end if (args.withcap or args.withencap) and not args.usedwithlimitedlangs then -- Don't even mention if usedwithlimitedlangs=1, because there are unlikely to be English examples. param_and_doc("nocap", false, false, "If {{para|nocap|1}}, then the first letter will be in lowercase." .. (args.withencap and " Only useful for English, because other languages already begin with a lowercase letter." or "")) end if not args.withcap then param_and_doc("cap", false, false, "If {{para|cap|1}}, then the first letter will be in capitalized. " .. "Not generally recommended" .. (args.withencap and "" or ", except for English definitions") .. ", because non-English definitions should begin with a lowercase letter and be formatted like a phrase, " .. "rather than a full sentence.") end if args.cat and args.cat[1] then param_and_doc("nocat", false, false, "Disable categorization of categories built into the template. " .. "For example, {{tl|ellipsis of|en|...}} normally categories into e.g. [[:Category:English ellipses]], but " .. "this can be disabled using {{para|nocat|1}}. This does not affect categories explicitly specified in the " .. "template call itself using {{para|cat}}.") end param_and_doc("notext", false, false, "If {{para|notext|1}}, don't display the initial text preceding the " .. "term(s), but only the actual term or terms. The page is still categorized as normal, unless {{para|nocat|1}} " .. "is given.") param_and_doc("id", false, false, "A sense id for the term, which links to anchors on the page set by " .. "the {{tl|senseid}} template.") param_and_doc("sc", false, false, "Script code to use, if script detection does not work. See " .. "[[Wiktionary:Scripts]]. Rarely needs to be given.") param_and_doc("sort", false, false, "Sort key for sorting any categories the page is added to. Rarely needs " .. "to be given except for Japanese, and even then, only when there are multiple possible pronunciations.") if args.addlparamtext then ins("\n") ins(args.addlparamtext) ins("\n") end ins([==[ ===Inline modifiers=== Use a syntax like <code>Изабе́лла<tr:Izabɛ́lla><t:Isabelle></code> to specify modifiers such as transliterations, glosses and qualifiers. In this example, for the Russian name {{m|ru|Изабе́лла|tr=Izabɛ́lla|t=Isabelle}}, the manual transliteration ''Izabɛ́lla'' and gloss "Isabelle" are given. The following modifiers are recognized; see {{temp|link}} for the exact meaning of these modifiers. * <code>t</code>: gloss * <code>tr</code>: transliteration * <code>ts</code>: transcription, for languages where the transliteration and pronunciation are markedly different * <code>q</code>: left qualifier, e.g. {{cd|<q:neither sexual nor romantic in nature>}} (in reference to [[platonic love]]); this appears '''before''' the term, parenthesized and italicized * <code>qq</code>: right qualifier; this appears '''after''' the term, parenthesized and italicized * <code>l</code>: comma-separated left labels, e.g. {{cd|<l:rare>}} or {{cd|<l:UK,Australia>}} or {{cd|<l:archaic,or,dialectal>}}; as shown, there must not be a space after the comma for it to be recognized as a delimiter; the labels appear '''before''' the term, parenthesized, italicized and appropriately linked as if {{tl|lb}} were used (but without categorization); an alternative syntax is to enclose the labels in {{cd|<<...>>}}, e.g. {{cd|<l:<<rare>>, <<archaic>> or <<dialectal>>>}} * <code>ll</code>: comma-separated right labels; these appear '''after''' the term, parenthesized, italicized and appropriately linked as for left labels * <code>ref</code>: reference or references, using the syntax documented in [[Template:IPA#References]] * <code>g</code>: comma-separated list of gender/number specifications; see [[Module:gender and number]] for the complete list * <code>alt</code>: alternative display text * <code>pos</code>: part of speech * <code>lit</code>: literal meaning * <code>id</code>: sense ID; see {{temp|senseid}} * <code>sc</code>: script code]==]) return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end if not args.usedwithlimitedlangs then insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') end exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> for ' .. lang_name(langcode, "exlang")) end local exlangs = serial_comma_join(langparts, {conj = "or"}) local tempname = template_name("preserve lang code") if args.lang then return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><primary entry goes here></var>}}</code> ===Parameters=== ]===]):format(tempname) .. export.paramdoc(args) else return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><langcode></var>|<var><primary entry goes here></var>}}</code> where <code><var><langcode></var></code> is the [[Wiktionary:Languages|language code]], e.g. %s. ===Parameters=== ]===]):format(tempname, exlangs) .. export.paramdoc(args) end end function export.fulldoc(args) local shortcuts = args.shortcut[1] and ("{{shortcut|%s}}"):format(concat(args.shortcut, "|")) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return "{{documentation subpage}}\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "the") .. " " .. template_name():gsub(" of$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " of" args.primaryentrytext = args.primaryentrytext or "of a primary entry" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if non_alias_shortcuts1[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if non_alias_shortcuts2[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and data_module.base_lemma_params[1] then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if non_alias_shortcuts[1] then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if cats[1] then category_table = construct_category_table(cats) end if labels[1] then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if cats[1] then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if labels[1] then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export 6l3zbfr6fg2m366sg53hvfq9a8w6hin 2350450 2350449 2026-05-06T12:35:55Z Kateru Zakuro 34522 2350450 Scribunto text/plain --[=[ This module contains functions to implement {{form of/*doc}} templates. The module contains the actual implementation, meant to be called from other Lua code. See [[Module:form of doc/templates]] for the function meant to be called directly from templates. Author: Benwing2 ]=] local export = {} local en_utilities_module = "Module:en-utilities" local form_of_module = "Module:form of" local form_of_data_module = "Module:form of/data" local function_module = "Module:fun" local labels_module = "Module:labels" local languages_module = "Module:languages" local load_module = "Module:load" local parse_interface_module = "Module:parse interface" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local template_parser_module = "Module:template parser" local require = require local m_form_of = require(form_of_module) local m_form_of_data = require(form_of_data_module) local m_cats = require(m_form_of.form_of_cats_module) local m_str_utils = require(string_utilities_module) local m_table = require(table_module) local concat = table.concat local get_indefinite_article = require(en_utilities_module).get_indefinite_article local get_label_info = require(labels_module).get_label_info local get_lang = require(languages_module).getByCode local get_tag_display_form = m_form_of.get_tag_display_form local get_tag_set_display_form = m_form_of.get_tag_set_display_form local insert = table.insert local ipairs = ipairs local is_link_or_html = m_form_of.is_link_or_html local iterate_from = require(function_module).iterateFrom local list_to_set = m_table.listToSet local normalize_tag_set = m_form_of.normalize_tag_set local pairs = pairs local remove_duplicates = m_table.removeDuplicates local safe_require = require(load_module).safe_require local serial_comma_join = m_table.serialCommaJoin local shallow_copy = m_table.shallowCopy local sort = table.sort local table_extend = m_table.extend local tostring = tostring local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility local form_of_lang_data_module_prefix = m_form_of.form_of_lang_data_module_prefix local form_of_data1 = require(m_form_of.form_of_data1_module) local form_of_data2 = require(m_form_of.form_of_data2_module) local form_of_pos = mw.loadData(m_form_of.headword_data_module).pos_aliases local SHORTCUTS = m_form_of_data.SHORTCUTS local TAG_TYPE = m_form_of_data.TAG_TYPE local function lang_name(langcode, param) return get_lang(langcode, param):getCanonicalName() end local function link_box(content) return "<div class=\"noprint plainlinks\" style=\"float: right; clear: both; margin: 0 0 .5em 1em; background: #f9f9f9; border: 1px #aaaaaa solid; margin-top: -1px; padding: 5px; font-weight: bold; font-size: small;\">" .. content .. "</div>" end local function show_editlink(page) return link_box("[" .. tostring(mw.uri.fullUrl(page, "action=edit")) .. " Edit]") end local function template_name(preserve_lang_code) -- Fetch the template name, minus the '/documentation' suffix that may follow -- and without any language-specific prefixes (e.g. 'el-' or 'ine-bsl-pro-') -- (unless `preserve_lang_code` is given). local PAGENAME = mw.title.getCurrentTitle().text local tempname = PAGENAME:gsub("/documentation$", "") if not preserve_lang_code then while true do -- Repeatedly strip off language code prefixes, in case there are multiple. local newname = tempname:gsub("^%l%l%l?%-", "") if newname == tempname then break end tempname = newname end end return tempname end function export.introdoc(args) local lang = args.lang local langname = lang and lang_name(lang, "lang") local exlangnames = {} for _, exlang in ipairs(args.exlang) do insert(exlangnames, lang_name(exlang, "exlang")) end local parts = {} local function ins(txt) insert(parts, txt) end ins(("{{uses lua|%s/templates}}"):format(form_of_module)) ins("This template creates a definition line for ") ins(args.pldesc or template_name():gsub(" of$", "") .. "s") ins(" ") ins(args.primaryentrytext or "of primary entries") if lang then ins(" in " .. langname) elseif args.exlang[1] then ins(", e.g. in " .. serial_comma_join(exlangnames, {conj = "or"})) end ins(".") local cats = args.cat if cats[1] then ins(" It also categorizes the page into ") local catparts = {} if lang then for _, cat in ipairs(cats) do insert(catparts, "[[:Category:" .. langname .. " " .. cat .. "]]") end else for _, cat in ipairs(cats) do insert(catparts, "the proper language-specific subcategory of [[:Category:" .. ucfirst(cat) .. " by language]] (e.g. [[:Category:" .. (exlangnames[1] or "English") .. " " .. cat .. "]])") end end ins(serial_comma_join(catparts)) ins(".") end if args.addlintrotext then ins(" ") ins(args.addlintrotext) end ins("\n") if args.withcap and args.withdot then ins([===[ By default, this template displays its output as a full sentence, with an initial capital letter and a trailing period (full stop). This can be overridden using {{para|nocap|1}} and/or {{para|nodot|1}} (see below). ]===]) elseif args.withcap or args.withencap and lang == "en" then ins([===[ By default, this template displays its output with an initial capital letter. This can be overridden using {{para|nocap|1}} (see below). ]===]) elseif args.withencap then ins([===[ By default, this template displays its output with an initial capital letter if the term's language in {{para|1}} is English (but not otherwise]===]) if args.usedwithlimitedlangs then ins([==[, and there are likely no English examples for this template).]==]) else ins([==[). This can be overridden by using {{para|nocap|1}} to make the initial letter lowercase for English. This does not auto-add a final period; if (and only if) the term's language is English, you should manually include it after the template unless other text follows, since English definitions should be formatted like full sentences.]==]) end ins("\n") else ins([===[ By default, this template displays its output with an initial lowercase letter. This can be overridden by using {{para|cap|1}} to make the initial letter capitalized]===] .. (lang == "en" and ".\n" or " (but this is not " .. "generally recommended for non-English languages, as non-English definitions should be lowercase).\n")) end ins([===[ This template is '''not''' meant to be used in etymology sections.]===]) local etymtemp = args.etymtemp if etymtemp then ins(" For those sections, use {{tl|" .. etymtemp .. "}} instead.\n") else ins("\n") end ins([===[ Note that users can customize how the output of this template displays by modifying their Custom CSS files. See [[:Category:Form-of templates|“Form of” templates]] for details. ]===]) return concat(parts) end local function param(params, list, required) local paramparts = {} if type(params) ~= "table" then params = {params} end for _, p in ipairs(params) do local listparts = {} insert(listparts, "{{para|" .. p .. "}}") if list then insert(listparts, ", {{para|" .. p .. "2}}") insert(listparts, ", {{para|" .. p .. "3}}") insert(listparts, ", etc.") end insert(paramparts, concat(listparts)) end local reqtext = required and "'''(required)'''" or "''(optional)''" return concat(paramparts, " or ") .. " " .. reqtext end function export.paramdoc(args) local parts = {} local function ins(txt) insert(parts, txt) end local function param_and_doc(params, list, required, doc) ins("; ") ins(param(params, list, required)) ins("\n") ins(": ") ins(doc) ins("\n") end local tempname = template_name() local art = args.art or get_indefinite_article(tempname) local sgdescof = args.sgdescof or art .. " " .. tempname ins("''Positional (unnamed) parameters:''\n") local lang = args.lang if args.lang then param_and_doc("1", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include any needed diacritics as " .. "appropriate to " .. lang_name(lang, "lang") .. ". These diacritics will automatically be stripped out in " .. "the appropriate fashion in order to create the link to the page. This parameter can also include multiple " .. "terms separated by a comma, as long as there is no space after the comma, and each such term can have " .. "inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("2", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the first " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the first parameter.") else param_and_doc("1", false, true, "The [[WT:LANGCODE|language code]] of the term linked to (which this page is " .. sgdescof .. "). See " .. "[[Wiktionary:List of languages]]. <small>The parameter {{para|lang}} is a deprecated synonym; please do " .. "not use. If this is used, all numbered parameters move down by one.</small>") param_and_doc("2", false, true, "The term to link to (which this page is " .. sgdescof .. "). This should include diacritics as appropriate " .. "to the language (e.g. accents in Russian to mark the stress, vowel diacritics in Arabic, macrons in Latin " .. "to indicate vowel length, etc.). These diacritics will automatically be stripped out in a " .. "language-specific fashion in order to create the link to the page. This parameter can also include " .. "multiple terms separated by a comma, as long as there is no space after the comma, and each such term can " .. "have inline modifiers specifying transliterations, display forms, qualifiers, labels, genders and other " .. "properties. See below.") param_and_doc("3", false, false, "The text to be shown in the link to the term. If empty or omitted, the term specified by the second " .. "parameter will be used. This parameter is normally not necessary, and should not be used solely to " .. "indicate diacritics; instead, put the diacritics in the second parameter.") end ins("''Named parameters:''\n") if args.etymtemp == 'contraction' then param_and_doc("mandatory", false, false, "If {{para|mandatory|1}}, indicates that the contraction is mandatory.") param_and_doc("optional", false, false, "If {{para|optional|1}}, indicates that the contraction is optional.") end param_and_doc({"t", lang and "3" or "4"}, false, false, "A gloss or short translation of the term linked " .. "to. <small>The parameter {{para|gloss}} is a deprecated synonym; please do not use.</small>") param_and_doc("tr", false, false, "Transliteration for non-Latin-script terms, if different from the automatically-generated one.") param_and_doc("ts", false, false, "Transcription for non-Latin-script terms whose transliteration is " .. "markedly different from the actual pronunciation. Should not be used for IPA pronunciations.") param_and_doc("cat", true, false, "Additional categories to place the page into. They are automatically " .. "prepended with the language name. A single parameter can contain multiple comma-separated categories as long " .. "as there is no space after the comma.") param_and_doc("addl", false, false, "Additional text to display at the end, before the final closing " .. "&lt;span/> tag. It is normally joined to the preceding text by a comma followed by a space. However, if the " .. "value of {{para|addl}} begins with a colon or semicolon, it is appended directly with no joining punctuation, " .. "and if the value begins with an underscore, the remainder is joined to the preceding text with a space.") if args.withfrom then param_and_doc("from", true, false, "A label (see {{tl|label}}) that gives additional information on " .. "the language variety that the term belongs to, the place that it originates from, or something similar.") end if args.withdot then param_and_doc("dot", false, false, "A character to replace the final dot that is normally shown automatically.") param_and_doc("nodot", false, false, "If {{para|nodot|1}}, then no automatic dot will be shown.") end if (args.withcap or args.withencap) and not args.usedwithlimitedlangs then -- Don't even mention if usedwithlimitedlangs=1, because there are unlikely to be English examples. param_and_doc("nocap", false, false, "If {{para|nocap|1}}, then the first letter will be in lowercase." .. (args.withencap and " Only useful for English, because other languages already begin with a lowercase letter." or "")) end if not args.withcap then param_and_doc("cap", false, false, "If {{para|cap|1}}, then the first letter will be in capitalized. " .. "Not generally recommended" .. (args.withencap and "" or ", except for English definitions") .. ", because non-English definitions should begin with a lowercase letter and be formatted like a phrase, " .. "rather than a full sentence.") end if args.cat and args.cat[1] then param_and_doc("nocat", false, false, "Disable categorization of categories built into the template. " .. "For example, {{tl|ellipsis of|en|...}} normally categories into e.g. [[:Category:English ellipses]], but " .. "this can be disabled using {{para|nocat|1}}. This does not affect categories explicitly specified in the " .. "template call itself using {{para|cat}}.") end param_and_doc("notext", false, false, "If {{para|notext|1}}, don't display the initial text preceding the " .. "term(s), but only the actual term or terms. The page is still categorized as normal, unless {{para|nocat|1}} " .. "is given.") param_and_doc("id", false, false, "A sense id for the term, which links to anchors on the page set by " .. "the {{tl|senseid}} template.") param_and_doc("sc", false, false, "Script code to use, if script detection does not work. See " .. "[[Wiktionary:Scripts]]. Rarely needs to be given.") param_and_doc("sort", false, false, "Sort key for sorting any categories the page is added to. Rarely needs " .. "to be given except for Japanese, and even then, only when there are multiple possible pronunciations.") if args.addlparamtext then ins("\n") ins(args.addlparamtext) ins("\n") end ins([==[ ===Inline modifiers=== Use a syntax like <code>Изабе́лла<tr:Izabɛ́lla><t:Isabelle></code> to specify modifiers such as transliterations, glosses and qualifiers. In this example, for the Russian name {{m|ru|Изабе́лла|tr=Izabɛ́lla|t=Isabelle}}, the manual transliteration ''Izabɛ́lla'' and gloss "Isabelle" are given. The following modifiers are recognized; see {{temp|link}} for the exact meaning of these modifiers. * <code>t</code>: gloss * <code>tr</code>: transliteration * <code>ts</code>: transcription, for languages where the transliteration and pronunciation are markedly different * <code>q</code>: left qualifier, e.g. {{cd|<q:neither sexual nor romantic in nature>}} (in reference to [[platonic love]]); this appears '''before''' the term, parenthesized and italicized * <code>qq</code>: right qualifier; this appears '''after''' the term, parenthesized and italicized * <code>l</code>: comma-separated left labels, e.g. {{cd|<l:rare>}} or {{cd|<l:UK,Australia>}} or {{cd|<l:archaic,or,dialectal>}}; as shown, there must not be a space after the comma for it to be recognized as a delimiter; the labels appear '''before''' the term, parenthesized, italicized and appropriately linked as if {{tl|lb}} were used (but without categorization); an alternative syntax is to enclose the labels in {{cd|<<...>>}}, e.g. {{cd|<l:<<rare>>, <<archaic>> or <<dialectal>>>}} * <code>ll</code>: comma-separated right labels; these appear '''after''' the term, parenthesized, italicized and appropriately linked as for left labels * <code>ref</code>: reference or references, using the syntax documented in [[Template:IPA#References]] * <code>g</code>: comma-separated list of gender/number specifications; see [[Module:gender and number]] for the complete list * <code>alt</code>: alternative display text * <code>pos</code>: part of speech * <code>lit</code>: literal meaning * <code>id</code>: sense ID; see {{temp|senseid}} * <code>sc</code>: script code]==]) return concat(parts) end function export.usagedoc(args) local exlangs = {} for _, exlang in ipairs(args.exlang) do insert(exlangs, exlang) end if not args.usedwithlimitedlangs then insert(exlangs, 'en') insert(exlangs, 'de') insert(exlangs, 'ja') end exlangs = remove_duplicates(exlangs) local sub = {} local langparts = {} for _, langcode in ipairs(exlangs) do insert(langparts, '<code>' .. langcode .. '</code> for ' .. lang_name(langcode, "exlang")) end local exlangs = serial_comma_join(langparts, {conj = "or"}) local tempname = template_name("preserve lang code") if args.lang then return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><primary entry goes here></var>}}</code> ===Parameters=== ]===]):format(tempname) .. export.paramdoc(args) else return ([===[ ==Usage== Use in the definition line, most commonly as follows: # <code><nowiki>{{%s</nowiki>|<var><langcode></var>|<var><primary entry goes here></var>}}</code> where <code><var><langcode></var></code> is the [[Wiktionary:Languages|language code]], e.g. %s. ===Parameters=== ]===]):format(tempname, exlangs) .. export.paramdoc(args) end end function export.fulldoc(args) local shortcuts = args.shortcut[1] and ("{{shortcut|%s}}"):format(concat(args.shortcut, "|")) or "" local introdoc = export.introdoc(args) local usagedoc = export.usagedoc(args) return "{{documentation subpage}}\n" .. shortcuts .. introdoc .. "\n" .. usagedoc end function export.infldoc(args) args = shallow_copy(args) args.sgdesc = args.sgdesc or (args.art or "the") .. " " .. template_name():gsub(" of$", "") .. (args.form and " " .. args.form or "") args.pldesc = args.sgdesc args.sgdescof = args.sgdescof or args.sgdesc .. " of" args.primaryentrytext = args.primaryentrytext or "of a primary entry" return export.fulldoc(args) end local tag_type_to_description = { -- If not listed, we just capitalize the first letter ["tense-aspect"] = "Tense/aspect", ["voice-valence"] = "Voice/valence", ["comparison"] = "Degrees of comparison", ["class"] = "Inflectional class", ["sound change"] = "Sound changes", ["grammar"] = "Misc grammar", ["other"] = "Other tags", } local tag_type_order = { "person", "number", "gender", "animacy", "tense-aspect", "mood", "voice-valence", "non-finite", "case", "state", "comparison", "register", "deixis", "clusivity", "class", "attitude", "sound change", "grammar", "other", } local function tag_type_desc(tag_type) return tag_type_to_description[tag_type] or ucfirst(tag_type) end local function sort_by_first(a, b) return a[1] < b[1] end local function get_display_form(tag_set, lang) local norm_tag_sets = normalize_tag_set(tag_set, lang) if #norm_tag_sets == 1 then return get_tag_set_display_form(norm_tag_sets[1], lang) end -- If we have a conjoined shortcut that expands to multiple tag sets, display them using a numbered list. -- In order to do that inside a table we need a newline before the list. local display_forms = {} for _, norm_tag_set in ipairs(norm_tag_sets) do insert(display_forms, "\n# " .. get_tag_set_display_form(norm_tag_set, lang)) end return concat(display_forms) end local function organize_tag_data(data_module) local tab = {} for name, data in pairs(data_module.tags) do local tag_type = data[TAG_TYPE] if not tag_type then -- Throw an error because hopefully it will get noticed and fixed. If we just skip it, it may never get -- fixed. error("Tag '" .. name .. "' has no tag_type") end if not tab[tag_type] then tab[tag_type] = {} end insert(tab[tag_type], {name, data}) end local tag_type_order_set = list_to_set(tag_type_order) for tag_type, tags_of_type in pairs(tab) do if not tag_type_order_set[tag_type] then -- See justification above for throwing an error. error("Tag type '" .. tag_type .. "' not listed in tag_type_order") end sort(tags_of_type, sort_by_first) end return tab end local function insert_group(parts, group) for _, namedata in ipairs(group) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") local shortcuts = data[SHORTCUTS] if shortcuts then local ssparts = {} if type(shortcuts) == "string" then shortcuts = {shortcuts} end for _, shortcut in ipairs(shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. get_tag_display_form(name)) insert(parts, "|-") insert(parts, concat(sparts)) end end function export.tagtable() local data1_tab = organize_tag_data(form_of_data1) local data2_tab = organize_tag_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical tag !! Shortcut(s) !! Display form") for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (more common)") insert_group(parts, group_tab) end group_tab = data2_tab[tag_type] if group_tab then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: var(--wikt-palette-lightergrey);" | ' .. tag_type_desc(tag_type) .. " (less common)") insert_group(parts, group_tab) end end insert(parts, "|}") return concat(parts, "\n") end local function organize_non_alias_shortcut_data(data_module, lang) local non_alias_shortcuts = {} for shortcut, full in pairs(data_module.shortcuts) do if type(full) == "table" or is_link_or_html(full) or full:find("//") or full:find(":") then insert(non_alias_shortcuts, {shortcut, full, get_display_form({shortcut}, lang)}) end end sort(non_alias_shortcuts, sort_by_first) return non_alias_shortcuts end local function insert_shortcut_group(parts, shortcuts) for _, spec in ipairs(shortcuts) do local shortcut, full, display = unpack(spec) insert(parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end end function export.non_alias_shortcut_table() local non_alias_shortcuts1 = organize_non_alias_shortcut_data(form_of_data1) local non_alias_shortcuts2 = organize_non_alias_shortcut_data(form_of_data2) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Shortcut !! Expansion !! Display form") if non_alias_shortcuts1[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | More common:') insert_shortcut_group(parts, non_alias_shortcuts1) end if non_alias_shortcuts2[1] then insert(parts, "|-") insert(parts, '! colspan="3" style="text-align: center; background: #dddddd;" | Less common:') insert_shortcut_group(parts, non_alias_shortcuts2) end insert(parts, "|}") return concat(parts, "\n") end local function process_spec(spec, cats, labels) if type(spec) == "string" then insert(cats, spec) return elseif not spec or spec == true then -- Ignore labels, etc. return elseif type(spec) ~= "table" then error("Wrong type of condition " .. spec .. ": " .. type(spec)) elseif spec.labels then table_extend(labels, spec.labels) return end local predicate = spec[1] if predicate == "multi" or predicate == "cond" then for _, sp in iterate_from(2, ipairs(spec)) do -- Iterate from 2. process_spec(sp, cats, labels) end elseif predicate == "pexists" then process_spec(spec[2], cats, labels) process_spec(spec[3], cats, labels) elseif predicate == "has" or predicate == "hasall" or predicate == "hasany" or predicate == "tags=" or predicate == "p=" or predicate == "pany" or predicate == "not" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "and" or predicate == "or" then process_spec(spec[3], cats, labels) process_spec(spec[4], cats, labels) elseif predicate == "call" then return else error("Unrecognized predicate: " .. predicate) end end local function find_categories_and_labels(catstruct) local cats, labels = {}, {} for _, spec in ipairs(catstruct) do process_spec(spec, cats, labels) end return cats, labels end local function construct_category_table(cats) local category_parts = {} insert(category_parts, '{|class="wikitable"') insert(category_parts, "! Category") for _, cat in ipairs(cats) do insert(category_parts, "|-") insert(category_parts, "| <code>" .. cat .. "</code>") end insert(category_parts, "|}") return concat(category_parts, "\n") end local function construct_label_table(labels, lang, replace_und) local label_parts = {} insert(label_parts, '{|class="wikitable"') insert(label_parts, "! Label !! Display form !! Associated categories") for _, label in ipairs(labels) do insert(label_parts, "|-") local label_data = get_label_info{ label = label, lang = lang, } local coded_categories = {} for _, cat in ipairs(label_data.categories) do if replace_und then cat = cat:gsub("^und:", "LANGCODE:") cat = cat:gsub("^Undetermined ", "LANG ") end insert(coded_categories, "<code>" .. cat .. "</code>") end insert(label_parts, ("| <code>%s</code> || %s || %s"):format(label, label_data.label, concat(coded_categories, ","))) end insert(label_parts, "|}") return concat(label_parts, "\n") end local function iterate_languages(langcodes_module, data_by_lang) for langcode in pairs(require(langcodes_module)) do local data_module_name = form_of_lang_data_module_prefix .. langcode local data_module = safe_require(data_module_name) if data_module or m_cats[langcode] and langcode ~= "und" then local lang = get_lang(langcode, nil, true) -- First do base-lemma params. local base_lemma_param_table if data_module and data_module.base_lemma_params and data_module.base_lemma_params[1] then local base_lemma_param_parts = {} insert(base_lemma_param_parts, '{|class="wikitable"') insert(base_lemma_param_parts, "! Parameter !! Display form") for _, base_lemma_param in ipairs(data_module.base_lemma_params) do insert(base_lemma_param_parts, "|-") insert(base_lemma_param_parts, ("| <code>%s</code> || %s"):format(base_lemma_param.param, get_display_form(base_lemma_param.tags, lang))) end insert(base_lemma_param_parts, "|}") base_lemma_param_table = concat(base_lemma_param_parts, "\n") end -- Then do inflection tags. local data1_tab = data_module and organize_tag_data(data_module) or {} local tag_parts = {} insert(tag_parts, '{|class="wikitable"') insert(tag_parts, "! Canonical tag !! Shortcut(s) !! Tag type !! Display form") local saw_any_tag = false for _, tag_type in ipairs(tag_type_order) do local group_tab = data1_tab[tag_type] if group_tab then for _, namedata in ipairs(group_tab) do local sparts = {} local name, data = unpack(namedata) insert(sparts, "| <code>" .. name .. "</code> || ") if data.shortcuts then local ssparts = {} for _, shortcut in ipairs(data.shortcuts) do insert(ssparts, "<code>" .. shortcut .. "</code>") end insert(sparts, concat(ssparts, ", ") .. " ") end insert(sparts, "|| " .. tag_type_desc(tag_type) .. " || " .. get_tag_display_form(name, lang)) insert(tag_parts, "|-") insert(tag_parts, concat(sparts)) saw_any_tag = true end end end insert(tag_parts, "|}") local tag_table = saw_any_tag and concat(tag_parts, "\n") or nil -- Then do non-alias shortcuts. local non_alias_shortcut_table local non_alias_shortcuts = data_module and organize_non_alias_shortcut_data(data_module, lang) or {} if non_alias_shortcuts[1] then local non_alias_shortcut_parts = {} insert(non_alias_shortcut_parts, '{|class="wikitable"') insert(non_alias_shortcut_parts, "! Shortcut !! Expansion !! Display form") for _, spec in ipairs(non_alias_shortcuts) do local shortcut, full, display = unpack(spec) insert(non_alias_shortcut_parts, "|-") if type(full) == "table" then full = "{" .. concat(full, " ") .. "}" end insert(non_alias_shortcut_parts, ("| <code>%s</code> || <code>%s</code> || %s"):format(shortcut, full, display)) end insert(non_alias_shortcut_parts, "|}") non_alias_shortcut_table = concat(non_alias_shortcut_parts, "\n") end -- Then do categories and labels. local category_table, label_table if m_cats[langcode] then local cats, labels = find_categories_and_labels(m_cats[langcode]) if cats[1] then category_table = construct_category_table(cats) end if labels[1] then label_table = construct_label_table(labels, lang) end end -- Concatenate all the tables together, with appropriate explanatory text. if base_lemma_param_table or tag_table or non_alias_shortcut_table or category_table or label_table then local langname, lang_parts = lang:getCanonicalName(), {} insert(lang_parts, "===" .. langname .. "===") insert(lang_parts, show_editlink(data_module_name)) if base_lemma_param_table then insert(lang_parts, ("%s-specific base lemma parameters:"):format(langname)) insert(lang_parts, base_lemma_param_table) end if tag_table then insert(lang_parts, ("%s-specific inflection tags:"):format(langname)) insert(lang_parts, tag_table) end if non_alias_shortcut_table then insert(lang_parts, ("%s-specific non-alias shortcuts:"):format(langname)) insert(lang_parts, non_alias_shortcut_table) end if category_table then insert(lang_parts, ("%s-specific categories (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, category_table) end if label_table then insert(lang_parts, ("%s-specific labels (the exact conditions under which these are added are described in [[Module:form of/cats]]):"): format(langname)) insert(lang_parts, label_table) end insert(data_by_lang, {langname, concat(lang_parts, "\n")}) end end end end local function sort_by_first_english_first(langdata1, langdata2) if langdata1[1] == "English" then -- English is "less than" (goes before) all other languages return true elseif langdata2[1] == "English" then -- All other languages are not "less than" (do not go before) English return false end return langdata1[1] < langdata2[1] end function export.lang_specific_tables() local data_by_lang = {} iterate_languages("Module:languages/code to canonical name", data_by_lang) iterate_languages("Module:etymology languages/code to canonical name", data_by_lang) sort(data_by_lang, sort_by_first_english_first) local parts = {} for _, lang_and_data in ipairs(data_by_lang) do insert(parts, lang_and_data[2]) end return concat(parts, "\n") end function export.postable() local shortcut_tab = {} for shortcut, full in pairs(form_of_pos) do if not shortcut_tab[full] then shortcut_tab[full] = {} end insert(shortcut_tab[full], shortcut) end local shorcut_list = {} for full, shortcuts in pairs(shortcut_tab) do sort(shortcuts) insert(shorcut_list, {full, shortcuts}) end sort(shorcut_list, sort_by_first) local parts = {} insert(parts, '{|class="wikitable"') insert(parts, "! Canonical part of speech !! Shortcut(s)") for _, full_shortcuts in ipairs(shorcut_list) do local full = full_shortcuts[1] local shortcuts = full_shortcuts[2] insert(parts, "|-") local sparts = {} for _, shortcut in ipairs(shortcuts) do insert(sparts, "<code>" .. shortcut .. "</code>") end insert(parts, "| <code>" .. full .. "</code> || " .. concat(sparts, ", ")) end insert(parts, "|}") return concat(parts, "\n") end function export.lang_independent_category_table() if m_cats["und"] then local cats = find_categories_and_labels(m_cats["und"]) if cats[1] then return construct_category_table(cats) end end return "(no language-independent categories currently)" end function export.lang_independent_label_table() if m_cats["und"] then local labels = select(2, find_categories_and_labels(m_cats["und"])) if labels[1] then return construct_label_table(labels, get_lang("und"), "replace und") end end return "(no language-independent labels currently)" end return export jij7ld0pdvzyl5sbx7zrzd95bci0s81 Bản mẫu:cat-old 10 367693 2350869 2294954 2026-05-07T10:32:00Z Kateru Zakuro 34522 Kateru Zakuro đã đổi [[Bản mẫu:cat-2]] thành [[Bản mẫu:cat-old]] 2294954 wikitext text/x-wiki {{tiếng|style={{{style|}}}|[[tiếng Catalan|Tiếng Catalan]]|plain=tiếng Catalan|lc=[[tiếng Catalan]]}}<noinclude> [[Thể loại:Bản mẫu ngôn ngữ|{{TÊNTRANG}}]] </noinclude> 9vnefbo00gifs9xav7ms1q7uyxe48x4 đâng 0 381136 2350621 2323498 2026-05-07T06:50:42Z TheHighFighter2 42988 2350621 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "dang"}} =={{ucfirst:tiếng Việt}}== {{wp}} [[Tập tin:Rhizopora stylosa Found in Mangrove of Cilintang, Taman Nasional Ujung Kulon, Banten.jpg|nhỏ|Cây '''đâng''' trong {{w|vườn quốc gia Ujung Kulon}}, [[Java]].]] ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|noun}}=== {{vi-noun|cls=cây}} # {{taxlink|Rhizophora stylosa|loài}}, một loài [[cây thân gỗ]] có kích thước từ nhỏ cho đến trung bình, thường mọc ở vùng ven biển ngập mặn. #* {{quote-web|vi|url=https://baoquangninh.vn/dau-xua-hon-gai-2356674.html|date=09-09-2017|title=Dấu xưa Hòn Gai|author=Nguyễn Gia Phong|site=Quảng Ninh điện tử|passage=Vụng '''Đâng''' chỉ là một vụng nhỏ bên bờ Cửa Lục, có cây '''đâng''' được ngư dân bóc vỏ nấu thành một thứ nước màu nâu để nhuộm buồm.}} ===={{ĐM|syn}}==== * {{l|vi|đước vòi}} * {{l|vi|đước chằng}} ===={{ĐM|trans}}==== {{trans-top|''Rhizophora stylosa''}} * {{langname|en}}: {{t|en|spotted mangrove}}, {{t|en|red mangrove}}, {{t|en|small stilted mangrove}}, {{t|en|stilt-root mangrove}} {{trans-bottom}} =={{langname|tyz}}== ==={{ĐM|pron}}=== * {{tyz-IPA}} ==={{ĐM|prep}}=== {{tyz-prep}} # [[trong|Trong]]. #: {{uxi|tyz|chang '''đâng'''|bên '''trong'''}} #: {{uxi|tyz|'''đâng''' rườn|'''trong''' nhà}} #: {{ux|tyz|Đây noọc đoóc '''đâng'''.|Ngoài thì tốt, mục nát bên '''trong'''.}} ===={{ĐM|syn}}==== * {{l|tyz|đâư}} ===={{ĐM|ref}}==== * {{R:tyz:Hoàng Văn Ma, Lục Văn Pảo, Hoàng Chí}} * {{R:tyz:Lương Bèn}} * {{R:tyz:tdcnt}} mc93rlqldryix9l5v4hdzyjdmwd0h0a 2350622 2350621 2026-05-07T06:51:07Z TheHighFighter2 42988 /* Tiếng Việt */ 2350622 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "dang"}} ==Tiếng Việt== {{wp}} [[Tập tin:Rhizopora stylosa Found in Mangrove of Cilintang, Taman Nasional Ujung Kulon, Banten.jpg|nhỏ|Cây '''đâng''' trong {{w|vườn quốc gia Ujung Kulon}}, [[Java]].]] ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|noun}}=== {{vi-noun|cls=cây}} # {{taxlink|Rhizophora stylosa|loài}}, một loài [[cây thân gỗ]] có kích thước từ nhỏ cho đến trung bình, thường mọc ở vùng ven biển ngập mặn. #* {{quote-web|vi|url=https://baoquangninh.vn/dau-xua-hon-gai-2356674.html|date=09-09-2017|title=Dấu xưa Hòn Gai|author=Nguyễn Gia Phong|site=Quảng Ninh điện tử|passage=Vụng '''Đâng''' chỉ là một vụng nhỏ bên bờ Cửa Lục, có cây '''đâng''' được ngư dân bóc vỏ nấu thành một thứ nước màu nâu để nhuộm buồm.}} ===={{ĐM|syn}}==== * {{l|vi|đước vòi}} * {{l|vi|đước chằng}} ===={{ĐM|trans}}==== {{trans-top|''Rhizophora stylosa''}} * {{langname|en}}: {{t|en|spotted mangrove}}, {{t|en|red mangrove}}, {{t|en|small stilted mangrove}}, {{t|en|stilt-root mangrove}} {{trans-bottom}} =={{langname|tyz}}== ==={{ĐM|pron}}=== * {{tyz-IPA}} ==={{ĐM|prep}}=== {{tyz-prep}} # [[trong|Trong]]. #: {{uxi|tyz|chang '''đâng'''|bên '''trong'''}} #: {{uxi|tyz|'''đâng''' rườn|'''trong''' nhà}} #: {{ux|tyz|Đây noọc đoóc '''đâng'''.|Ngoài thì tốt, mục nát bên '''trong'''.}} ===={{ĐM|syn}}==== * {{l|tyz|đâư}} ===={{ĐM|ref}}==== * {{R:tyz:Hoàng Văn Ma, Lục Văn Pảo, Hoàng Chí}} * {{R:tyz:Lương Bèn}} * {{R:tyz:tdcnt}} m110eob2iqyreb0zip1bfsoyue6x73q Mô đun:dialect synonyms/pl 828 391723 2350501 2347452 2026-05-06T15:13:27Z Hiyuune 50834 2350501 Scribunto text/plain local export = {} export.title = "Bảng phương ngữ đồng nghĩa của %s" export.columns = { "Nhóm phương ngữ", "Phương ngữ", "Địa danh", "Từ", } export.notes = { "Bảng này hiển thị các biến thể phương ngữ trong tiếng Ba Lan.", } export.varieties = { { name = "Standard", text_display = "Tiêu chuẩn", color = "var(--wikt-palette-grey-scarlet-1);color:inherit", colspan = 3, }, { name = "Old Polish", text_display = "[[w:Tiếng Ba Lan cổ|Tiếng Ba Lan cổ]]", code = "zlw-opl", color = "var(--wikt-palette-brown-1);color:inherit", colspan = 3, }, { name = "Middle Polish", text_display = "[[w:Tiếng Ba Lan trung đại|Tiếng Ba Lan trung đại]]", code = "zlw-mpl", color = "var(--wikt-palette-brown-2);color:inherit", colspan = 3, }, { name = "Greater Poland", text_display = "[[w:Phương ngữ Wielkopolska|Wielkopolska]]", color = "var(--wikt-palette-red-1);color:inherit", { wikidata = "Q128395177", name = "Bory Tucholskie", text_display = "[[w:Phương ngữ Bory Tucholskie|Bory Tucholskie]]", lat = 53.8225, long = 17.9144, { wikidata = "Q6421321", name = "Kłonowo", text_display = "[[w:Kłonowo|Kłonowo]]", lat = 53.4508, long = 17.9692, }, { wikidata = "Q325910", name = "Tuchola", text_display = "[[w:Tuchola|Tuchola]]", lat = 53.5881, long = 17.859, }, }, { wikidata = "Q128395185", name = "Central Greater Poland", text_display = "[[w:en:Central Greater Poland dialect|Gwary środkowowielkopolskie]]", lat = 52.4083, long = 16.9336, { wikidata = "Q4842121", name = "Bagrowo", text_display = "[[w:Bagrowo|Bagrowo]]", lat = 52.2833, long = 17.3167, }, { wikidata = "Q667588", name = "Buk", text_display = "[[w:Buk|Buk]]", lat = 52.3553, long = 16.5196, }, { wikidata = "Q924649", name = "Brodnica", text_display = "[[w:Brodnica|Brodnica]]", lat = 52.1333, long = 16.9, }, { wikidata = "Q51441", name = "Czempiń", text_display = "[[w:Czempiń|Czempiń]]", lat = 52.145, long = 16.7606, }, { wikidata = "Q5202105", name = "Czeszewo", text_display = "[[w:Czeszewo|Czeszewo]]", lat = 52.15, long = 17.5167, }, { wikidata = "Q5320909", name = "Dębicz", text_display = "[[w:Dębicz|Dębicz]]", lat = 52.2667, long = 17.3167, }, { wikidata = "Q990785", name = "Dolsk", text_display = "[[w:Dolsk|Dolsk]]", lat = 51.9833, long = 17.0667, }, { wikidata = "Q3258686", name = "Gądki", text_display = "[[w:Gądki|Gądki]]", lat = 52.3167, long = 17.05, }, { wikidata = "Q9284353", name = "Głuszyna", text_display = "[[w:Głuszyna|Głuszyna]]", lat = 52.3211, long = 16.9492, }, { wikidata = "Q9283611", name = "Górczyn", text_display = "[[w:Górczyn|Górczyn]]", lat = 52.3791, long = 16.8738, }, { wikidata = "Q667845", name = "Jaraczewo", text_display = "[[w:Jaraczewo|Jaraczewo]]", lat = 51.9667, long = 17.2833, }, { wikidata = "Q6190647", name = "Jeżyce", text_display = "[[w:Jeżyce|Jeżyce]]", lat = 52.4449, long = 16.7445, }, { wikidata = "Q52842", name = "Kalisz", text_display = "[[w:Kalisz|Kalisz]]", lat = 51.757, long = 18.083, }, { wikidata = "Q2531968", name = "Kalisz Governorate", text_display = "[[w:Kalisz Governorate|Kalisz Governorate]]", lat = 51.7638, long = 18.0844, }, { wikidata = "Q2531968", name = "Kalisz Voivodeship", text_display = "[[w:Kalisz Voivodeship|Kalisz Voivodeship]]", lat = 51.7638, long = 18.0844, }, { wikidata = "Q6357617", name = "Kamień, Kalisz County", text_display = "[[w:Kamień, Kalisz|Kamień]]", lat = 51.8333, long = 18.2333, }, { wikidata = "Q6373406", name = "Karsewo", text_display = "[[w:Karsewo|Karsewo]]", lat = 52.4167, long = 17.7, }, { wikidata = "Q6429615", name = "Konojad", text_display = "[[w:Konojad|Konojad]]", lat = 52.1667, long = 16.55, }, { wikidata = "Q52850", name = "Kostrzyn", text_display = "[[w:Kostrzyn|Kostrzyn]]", lat = 52.3941, long = 17.2221, }, { wikidata = "Q985098", name = "Kotlin", text_display = "[[w:Kotlin|Kotlin]]", lat = 51.9, long = 17.65, }, { wikidata = "Q52889", name = "Kościan", text_display = "[[w:Kościan|Kościan]]", lat = 52.0833, long = 16.65, }, { wikidata = "Q984538", name = "Krotoszyn", text_display = "[[w:Krotoszyn|Krotoszyn]]", lat = 51.697, long = 17.4357, }, { wikidata = "Q133191", name = "Krotoszyn County", text_display = "[[w:Krotoszyn|Krotoszyn]]", lat = 51.6833, long = 17.4333, }, { wikidata = "Q1007342", name = "Książ Wielkopolski", text_display = "[[w:Książ Wielkopolski|Książ Wielkopolski]]", lat = 52.0617, long = 17.2395, }, { wikidata = "Q51408", name = "Kórnik", text_display = "[[w:Kórnik|Kórnik]]", lat = 52.2367, long = 17.0986, }, { wikidata = "Q994061", name = "Kłecko", text_display = "[[w:Kłecko|Kłecko]]", lat = 52.6333, long = 17.4333, }, { wikidata = "Q3461725", name = "Mądre", text_display = "[[w:Mądre|Mądre]]", lat = 52.1667, long = 17.2667, }, { wikidata = "Q6843802", name = "Mielżyn", text_display = "[[w:Mielżyn|Mielżyn]]", lat = 52.3833, long = 17.7667, }, { wikidata = "Q1025299", name = "Miłosław", text_display = "[[w:Miłosław|Miłosław]]", lat = 52.2032, long = 17.4896, }, { wikidata = "Q50968", name = "Mosina", text_display = "[[w:Mosina|Mosina]]", lat = 52.2439, long = 16.8506, }, { wikidata = "Q51003", name = "Murowana Goślina", text_display = "[[w:Murowana Goślina|Murowana Goślina]]", lat = 52.5744, long = 17.0092, }, { wikidata = "Q288434", name = "Mystki", text_display = "[[w:Mystki|Mystki]]", lat = 52.2806, long = 17.45, }, { wikidata = "Q11788963", name = "Nadziejewo", text_display = "[[w:Nadziejewo|Nadziejewo]]", lat = 52.1667, long = 17.2833, }, { wikidata = "Q11791486", name = "Niegolewo", text_display = "[[w:Niegolewo|Niegolewo]]", lat = 52.3667, long = 16.45, }, { wikidata = "Q639212", name = "Oborniki", text_display = "[[w:Oborniki|Oborniki]]", lat = 52.65, long = 16.8167, }, { wikidata = "Q133213", name = "Oborniki County", text_display = "[[w:Oborniki|Oborniki]]", lat = 52.65, long = 16.8167, }, { wikidata = "Q7076495", name = "Ocieszyn", text_display = "[[w:Ocieszyn|Ocieszyn]]", lat = 52.6004, long = 16.819, }, { wikidata = "Q745567", name = "Odolanów", text_display = "[[w:Odolanów|Odolanów]]", lat = 51.5742, long = 17.6743, }, { wikidata = "Q642192", name = "Ostrzeszów", text_display = "[[w:Ostrzeszów|Ostrzeszów]]", lat = 51.4, long = 18, }, { wikidata = "Q51012", name = "Owińska", text_display = "[[w:Owińska|Owińska]]", lat = 52.5114, long = 16.9772, }, { wikidata = "Q555876", name = "Pleszew", text_display = "[[w:Pleszew|Pleszew]]", lat = 51.8974, long = 17.7856, }, { wikidata = "Q50992", name = "Pobiedziska", text_display = "[[w:Pobiedziska|Pobiedziska]]", lat = 52.4779, long = 17.2671, }, { wikidata = "Q268", name = "Poznań", text_display = "[[w:Poznań|Poznań]]", lat = 52.4083, long = 16.9336, }, { wikidata = "Q9377200", name = "Poznań Voivodeship", text_display = "[[w:Poznań Voivodeship|Poznań Voivodeship]]", lat = 52.4089, long = 16.928, }, { wikidata = "Q658875", name = "Roszków", text_display = "[[w:Roszków|Roszków]]", lat = 51.9611, long = 17.4377, }, { wikidata = "Q985156", name = "Rozdrażew", text_display = "[[w:Rozdrażew|Rozdrażew]]", lat = 51.7833, long = 17.5167, }, { wikidata = "Q774741", name = "Siekierki Wielkie", text_display = "[[w:Siekierki Wielkie|Siekierki Wielkie]]", lat = 52.3814, long = 17.1639, }, { wikidata = "Q984887", name = "Sieroszewice", text_display = "[[w:Sieroszewice|Sieroszewice]]", lat = 51.6344, long = 17.9697, }, { wikidata = "Q7555265", name = "Sokolniki Wielkie", text_display = "[[w:Sokolniki Wielkie|Sokolniki Wielkie]]", lat = 52.5333, long = 16.5, }, { wikidata = "Q288792", name = "Sokołowo", text_display = "[[w:Sokołowo|Sokołowo]]", lat = 52.3469, long = 17.5664, }, { wikidata = "Q9340838", name = "Spławie", text_display = "[[w:Spławie|Spławie]]", lat = 52.3511, long = 17.0241, }, { wikidata = "Q133257", name = "Słupca County", text_display = "[[w:Słupca County|Słupca County]]", lat = 52.3, long = 17.8667, }, { wikidata = "Q991856", name = "Sulmierzyce", text_display = "[[w:Sulmierzyce|Sulmierzyce]]", lat = 51.6, long = 17.5333, }, { wikidata = "Q51427", name = "Szamotuły", text_display = "[[w:Szamotuły|Szamotuły]]", lat = 52.6119, long = 16.5778, }, { wikidata = "Q9351288", name = "Szemborowo", text_display = "[[w:Szemborowo|Szemborowo]]", lat = 52.3667, long = 17.65, }, { wikidata = "Q9351138", name = "Szczuczyn", text_display = "[[w:Szczuczyn|Szczuczyn]]", lat = 52.6333, long = 16.5833, }, { wikidata = "Q7824993", name = "Topola Wielka, Odolanów County", text_display = "[[w:Topola Wielka, Odolanów|Topola Wielka, Odolanów]]", lat = 51.6, long = 17.7667, }, { wikidata = "Q9363649", name = "Tyniec pod Kaliszem", text_display = "[[w:Tyniec pod Kaliszem|Tyniec pod Kaliszem]]", lat = 51.7639, long = 18.1149, }, { wikidata = "Q52902", name = "Września", text_display = "[[w:Września|Września]]", lat = 52.325, long = 17.565, }, { wikidata = "Q133268", name = "Września County", text_display = "[[w:Września|Września]]", lat = 52.3333, long = 17.5833, }, { wikidata = "Q8081057", name = "Łuszkowo", text_display = "[[w:Łuszkowo|Łuszkowo]]", lat = 52.0333, long = 16.8667, }, { wikidata = "Q387260", name = "Śrem", text_display = "[[w:Śrem|Śrem]]", lat = 52.0886, long = 17.015, }, { wikidata = "Q52903", name = "Środa Wielkopolska", text_display = "[[w:Środa Wielkopolska|Środa Wielkopolska]]", lat = 52.2333, long = 17.2833, }, }, { wikidata = "Q4497163", name = "Chełmno-Dobrzyń", text_display = "[[w:Phương ngữ Chełmno-Dobrzyń|Chełmno-Dobrzyń]]", lat = 53.3492, long = 18.4261, { wikidata = "Q1813372", name = "Chełmica Duża", text_display = "[[w:Chełmica Duża|Chełmica Duża]]", lat = 52.7275, long = 19.1309, }, { wikidata = "Q984949", name = "Chrostkowo", text_display = "[[w:Chrostkowo|Chrostkowo]]", lat = 52.9438, long = 19.2533, }, { wikidata = "Q5286912", name = "Dobrzejewice", text_display = "[[w:Dobrzejewice|Dobrzejewice]]", lat = 53, long = 18.8333, }, { wikidata = "Q5319746", name = "Działyń", text_display = "[[w:Działyń, Kuyavian-Pomeranian Voivodeship|Działyń]]", lat = 53.0163, long = 19.0565, }, { wikidata = "Q6159525", name = "Jarantowice", text_display = "[[w:Jarantowice|Jarantowice]]", lat = 53.3292, long = 18.9467, }, { wikidata = "Q984964", name = "Kikół", text_display = "[[w:Kikół|Kikół]]", lat = 52.9099, long = 19.1202, }, { wikidata = "Q324922", name = "Lipno", text_display = "[[w:Lipno|Lipno]]", lat = 52.85, long = 19.1667, }, { wikidata = "Q773421", name = "Lipno County", text_display = "[[w:Lipno County|Lipno County]]", lat = 52.85, long = 19.1667, }, { wikidata = "Q9395146", name = "Łążyn", text_display = "[[w:Łążyn, Gmina Zławieś Wielka|Łążyn]]", lat = 53.1272, long = 18.4247, }, { wikidata = "Q11772549", name = "Mały Komorsk", text_display = "[[w:Mały Komorsk|Mały Komorsk]]", lat = 53.6119, long = 18.6914, }, { wikidata = "Q7075306", name = "Obory", text_display = "[[w:Obory|Obory]]", lat = 53.35, long = 18.6333, }, { wikidata = "Q7107819", name = "Ostrowite", text_display = "[[w:Ostrowite|Ostrowite]]", lat = 53.5054, long = 18.1644, }, { wikidata = "Q7116800", name = "Ośmiałowo", text_display = "[[w:Ośmiałowo|Ośmiałowo]]", lat = 52.8317, long = 19.1322, }, { wikidata = "Q7281526", name = "Radomice", text_display = "[[w:Radomice, Kuyavian-Pomeranian Voivodeship|Radomice]]", lat = 52.8167, long = 19.1333, }, { wikidata = "Q325244", name = "Rypin", text_display = "[[w:Rypin|Rypin]]", lat = 53.0669, long = 19.4069, }, { wikidata = "Q2105355", name = "Siecień", text_display = "[[w:Siecień|Siecień]]", lat = 52.6136, long = 19.5194, }, { wikidata = "Q935406", name = "Sierpc County", text_display = "[[w:Sierpc County|Sierpc County]]", lat = 52.8833, long = 19.6667, }, { wikidata = "Q607132", name = "Skępe", text_display = "[[w:Skępe|Skępe]]", lat = 52.8661, long = 19.3469, }, { wikidata = "Q7625858", name = "Strzygi", text_display = "[[w:Strzygi|Strzygi]]", lat = 53.1221, long = 19.3843, }, { wikidata = "Q387502", name = "Świecie", text_display = "[[w:Świecie|Świecie]]", lat = 53.4094, long = 18.4475, }, { wikidata = "Q47554", name = "Toruń", text_display = "[[w:Toruń|Toruń]]", lat = 53.0167, long = 18.6167, }, { wikidata = "Q8030616", name = "Wolęcin", text_display = "[[w:Wolęcin, Kuyavian-Pomeranian Voivodeship|Wolęcin]]", lat = 52.9, long = 19.1833, }, }, { wikidata = "Q128395188", name = "Eastern Greater Poland", text_display = "[[w:Eastern Greater Poland dialect|Eastern Greater Poland]]", lat = 52.2275, long = 18.2614, { wikidata = "Q797673", name = "Babiak", text_display = "[[w:Babiak|Babiak]]", lat = 52.3445, long = 18.6667, }, { wikidata = "Q1192513", name = "Golina", text_display = "[[w:Golina|Golina]]", lat = 52.2467, long = 18.0953, }, { wikidata = "Q1006802", name = "Grzegorzew", text_display = "[[w:Grzegorzew|Grzegorzew]]", lat = 52.2018, long = 18.7347, }, { wikidata = "Q1355994", name = "Kleczew", text_display = "[[w:Kleczew|Kleczew]]", lat = 52.3711, long = 18.1764, }, { wikidata = "Q988663", name = "Kłodawa", text_display = "[[w:Kłodawa|Kłodawa]]", lat = 52.25, long = 18.9167, }, { wikidata = "Q52845", name = "Konin", text_display = "[[w:Konin|Konin]]", lat = 52.2275, long = 18.2614, }, { wikidata = "Q52853", name = "Koło", text_display = "[[w:Koło|Koło]]", lat = 52.2, long = 18.6333, }, { wikidata = "Q11763165", name = "Lubotyń", text_display = "[[w:Lubotyń, Greater Poland Voivodeship|Lubotyń]]", lat = 52.4015, long = 18.6276, }, { wikidata = "Q6802806", name = "Mchowo", text_display = "[[w:Mchowo, Greater Poland Voivodeship|Mchowo]]", lat = 52.3833, long = 18.7, }, { wikidata = "Q7319951", name = "Rgielew", text_display = "[[w:Rgielew|Rgielew]]", lat = 52.2333, long = 18.9667, }, { wikidata = "Q1001517", name = "Sompolno", text_display = "[[w:Sompolno|Sompolno]]", lat = 52.3881, long = 18.5017, }, { wikidata = "Q387117", name = "Slesin", text_display = "[[w:Slesin|Slesin]]", lat = 52.3667, long = 18.3, }, { wikidata = "Q1002685", name = "Stawiszyn", text_display = "[[w:Stawiszyn|Stawiszyn]]", lat = 51.9183, long = 18.1114, }, { wikidata = "Q7664839", name = "Szołajdy", text_display = "[[w:Szołajdy|Szołajdy]]", lat = 52.2453, long = 19.0935, }, { wikidata = "Q8038787", name = "Wrząca Wielka", text_display = "[[w:Wrząca Wielka, Greater Poland Voivodeship|Wrząca Wielka]]", lat = 52.2606, long = 18.6783, }, }, { wikidata = "Q9283050", name = "Kociewie", text_display = "[[w:Kociewie dialect|Kociewie]]", lat = 53.9631, long = 18.5258, { wikidata = "Q146820", name = "Malbork", text_display = "[[w:Malbork|Malbork]]", lat = 54.0285, long = 19.0443, }, { wikidata = "Q1027142", name = "Pelplin", text_display = "[[w:Pelplin|Pelplin]]", lat = 53.9261, long = 18.7011, }, { wikidata = "Q9376057", name = "Więckowy", text_display = "[[w:Więckowy|Więckowy]]", lat = 54.06, long = 18.3872, }, }, { wikidata = "Q128395181", name = "Krajna", text_display = "[[w:Krajna dialect|Krajna]]", lat = 53.25, long = 17.4167, { wikidata = "Q990186", name = "Margonin", text_display = "[[w:Margonin|Margonin]]", lat = 52.9667, long = 17.0833, }, { wikidata = "Q988576", name = "Nakło nad Notecią", text_display = "[[w:Nakło nad Notecią|Nakło nad Notecią]]", lat = 53.1389, long = 17.5994, }, { wikidata = "Q5101462", name = "Samostrzel", text_display = "[[w:Samostrzel, Kuyavian-Pomeranian Voivodeship|Samostrzel]]", lat = 53.15, long = 17.45, }, { wikidata = "Q995859", name = "Szamocin", text_display = "[[w:Szamocin|Szamocin]]", lat = 53.0303, long = 17.1206, }, { wikidata = "Q988588", name = "Wyrzysk", text_display = "[[w:Wyrzysk|Wyrzysk]]", lat = 53.15, long = 17.2667, }, { name = "Wyrzysk County", text_display = "[[w:Wyrzysk County|Wyrzysk County]]", }, }, { wikidata = "Q9282997", name = "Kuyavia", text_display = "[[w:Kuyavia dialect|Kuyavia]]", aliases = { "Kujawy" }, lat = 52.7, long = 18.55, { wikidata = "Q4838908", name = "Bachorza", text_display = "[[w:Bachorza, Kuyavian-Pomeranian Voivodeship|Bachorza]]", lat = 52.7333, long = 18.6333, }, { wikidata = "Q11688393", name = "Bodzanowo", text_display = "[[w:Bodzanowo|Bodzanowo]]", lat = 52.7008, long = 18.6358, }, { wikidata = "Q4937941", name = "Bogusławice", text_display = "[[w:Bogusławice|Bogusławice]]", lat = 52.5167, long = 19.1833, }, { wikidata = "Q903461", name = "Brdów", text_display = "[[w:Brdów|Brdów]]", lat = 52.3536, long = 18.7306, }, { wikidata = "Q4973930", name = "Broniszewo", text_display = "[[w:Broniszewo|Broniszewo]]", lat = 52.3667, long = 18.95, }, { wikidata = "Q985649", name = "Brześć kujawski", text_display = "[[w:Brześć kujawski|Brześć kujawski]]", lat = 52.605, long = 18.8981, }, { wikidata = "Q41252", name = "Bydgoszcz", text_display = "[[w:Bydgoszcz|Bydgoszcz]]", lat = 53.1167, long = 18, }, { wikidata = "Q984993", name = "Bytoń", text_display = "[[w:Bytoń|Bytoń]]", lat = 52.5578, long = 18.5967, }, { wikidata = "Q987986", name = "Chodecz", text_display = "[[w:Chodecz|Chodecz]]", lat = 52.4053, long = 19.0283, }, { wikidata = "Q985659", name = "Ciechocinek", text_display = "[[w:Ciechocinek|Ciechocinek]]", lat = 52.8833, long = 18.7833, }, { wikidata = "Q5320515", name = "Dąb Wielki", text_display = "[[w:Dąb Wielki|Dąb Wielki]]", lat = 52.6125, long = 19.37, }, { wikidata = "Q5320726", name = "Dąbrowice", text_display = "[[w:Dąbrowice|Dąbrowice]]", lat = 53.2667, long = 17.7667, }, { wikidata = "Q11708261", name = "Głuszyn", text_display = "[[w:Głuszyn, Kuyavian-Pomeranian Voivodeship|Głuszyn]]", lat = 52.5397, long = 18.6492, }, { wikidata = "Q990799", name = "Gniewkowo", text_display = "[[w:Gniewkowo|Gniewkowo]]", lat = 52.9, long = 18.4167, }, { wikidata = "Q1012060", name = "Gopło", text_display = "[[w:Gopło|Gopło]]", lat = 52.5856, long = 18.3542, }, { wikidata = "Q378821", name = "Inowrocław", text_display = "[[w:Inowrocław|Inowrocław]]", lat = 52.7958, long = 18.2611, }, { wikidata = "Q1002533", name = "Izbica Kujawska", text_display = "[[w:Izbica Kujawska|Izbica Kujawska]]", lat = 52.4194, long = 18.7603, }, { wikidata = "Q4224254", name = "Kłótno", text_display = "[[w:Kłótno|Kłótno]]", lat = 52.4898, long = 19.2761, }, { wikidata = "Q6435557", name = "Kołuda Wielka", text_display = "[[w:Kołuda Wielka|Kołuda Wielka]]", lat = 52.7356, long = 18.1503, }, { wikidata = "Q984811", name = "Koneck", text_display = "[[w:Koneck|Koneck]]", lat = 52.7833, long = 18.7167, }, { wikidata = "Q611297", name = "Koronowo", text_display = "[[w:Koronowo|Koronowo]]", lat = 53.3137, long = 17.93698, }, { wikidata = "Q992010", name = "Kowal", text_display = "[[w:Kowal|Kowal]]", lat = 52.5325, long = 19.145, }, { wikidata = "Q166717", name = "Kruszwica", text_display = "[[w:Kruszwica|Kruszwica]]", lat = 52.6772, long = 18.3292, }, { wikidata = "Q836693", name = "Kujawy", text_display = "[[w:Kujawy|Kuyavia]]", lat = 52.7, long = 18.55, }, { wikidata = "Q202160", name = "Kutno", text_display = "[[w:Kutno|Kutno]]", lat = 52.2333, long = 19.3667, }, { wikidata = "Q1005855", name = "Lubień Kujawski", text_display = "[[w:Lubień Kujawski|Lubień Kujawski]]", lat = 52.4047, long = 19.1647, }, { wikidata = "Q1007479", name = "Lubraniec", text_display = "[[w:Lubraniec|Lubraniec]]", lat = 52.5419, long = 18.8356, }, { wikidata = "Q984975", name = "Osięciny", text_display = "[[w:Osięciny|Osięciny]]", lat = 52.6333, long = 18.7167, }, { wikidata = "Q999632", name = "Pakość", text_display = "[[w:Pakość|Pakość]]", lat = 52.8053, long = 18.0839, }, { wikidata = "Q999638", name = "Piotrków Kujawski", text_display = "[[w:Piotrków Kujawski|Piotrków Kujawski]]", lat = 52.8833, long = 18.7833, }, { wikidata = "Q3412257", name = "Płowce", text_display = "[[w:Płowce|Płowce]]", lat = 52.6156, long = 18.6439, }, { wikidata = "Q986966", name = "Przedecz", text_display = "[[w:Przedecz|Przedecz]]", lat = 52.2833, long = 18.9, }, { wikidata = "Q984809", name = "Raciążek", text_display = "[[w:Raciążek|Raciążek]]", lat = 52.8565, long = 18.8133, }, { wikidata = "Q324875", name = "Radziejów", text_display = "[[w:Radziejów|Radziejów]]", lat = 52.6333, long = 18.5167, }, { wikidata = "Q7286830", name = "Rakutowo", text_display = "[[w:Rakutowo|Rakutowo]]", lat = 52.5167, long = 19.2, }, { wikidata = "Q7305693", name = "Redecz Kalny", text_display = "[[w:Redecz Kalny|Redecz Kalny]]", lat = 52.5667, long = 18.8333, }, { wikidata = "Q7305697", name = "Redecz Wielki", text_display = "[[w:Redecz Wielki-Wieś|Redecz Wielki]]", lat = 52.543, long = 18.7812, }, { wikidata = "Q7382728", name = "Ruszków", text_display = "[[w:Ruszków|Ruszków]]", lat = 52.405, long = 19.4128, }, { wikidata = "Q2473944", name = "Sadlno", text_display = "[[w:Sadlno, Greater Poland Voivodeship|Sadlno]]", lat = 52.45, long = 18.4833, }, { wikidata = "Q985057", name = "Skulsk", text_display = "[[w:Skulsk|Skulsk]]", lat = 52.4833, long = 18.3333, }, { wikidata = "Q1005414", name = "Strzelno", text_display = "[[w:Strzelno|Strzelno]]", lat = 52.6294, long = 18.17, }, { wikidata = "Q7651501", name = "Sułkowo", text_display = "[[w:Sułkowo, Kuyavian-Pomeranian Voivodeship|Sułkowo]]", lat = 52.5167, long = 18.8167, }, { wikidata = "Q9350858", name = "Szarlej", text_display = "[[w:Szarlej, Kuyavian-Pomeranian Voivodeship|Szarlej]]", lat = 52.7153, long = 18.3172, }, { wikidata = "Q7667040", name = "Sędzin", text_display = "[[w:Sędzin|Sędzin]]", lat = 52.7333, long = 18.5667, }, { wikidata = "Q9352971", name = "Sędzinek", text_display = "[[w:Sędzinek|Sędzinek]]", lat = 52.7387, long = 18.5998, }, { wikidata = "Q7667552", name = "Służewo", text_display = "[[w:Służewo|Służewo]]", lat = 52.85, long = 18.65, }, { wikidata = "Q7666234", name = "Sójki", text_display = "[[w:Sójki|Sójki]]", lat = 52.2808, long = 19.3933, }, { wikidata = "Q8081973", name = "Śmiłowice", text_display = "[[w:Śmiłowice|Śmiłowice]]", lat = 52.5194, long = 19.0181, }, { wikidata = "Q8082135", name = "Świerczyn", text_display = "[[w:Świerczyn|Świerczyn]]", lat = 52.5228, long = 18.7217, }, { wikidata = "Q7851216", name = "Tuczno", text_display = "[[w:Tuczno, Kuyavian-Pomeranian Voivodeship|Tuczno]]", lat = 52.85, long = 18.1333, }, { wikidata = "Q7878233", name = "Ujma Mała", text_display = "[[w:Ujma Mała|Ujma Mała]]", lat = 52.7167, long = 18.7, }, { wikidata = "Q7887065", name = "Unisławice", text_display = "[[w:Unisławice, Kuyavian-Pomeranian Voivodeship|Unisławice]]", lat = 52.4667, long = 19.15, }, { wikidata = "Q662880", name = "Wieniec", text_display = "[[w:Wieniec|Wieniec]]", lat = 52.65, long = 18.9333, }, { wikidata = "Q9376058", name = "Więcławice", text_display = "[[w:Więcławice|Więcławice]]", lat = 52.8439, long = 18.3042, }, { wikidata = "Q8027761", name = "Wistka Królewska", text_display = "[[w:Wistka Królewska|Wistka Królewska]]", lat = 52.6333, long = 19.2167, }, { wikidata = "Q106681", name = "Włocławek", text_display = "[[w:Włocławek|Włocławek]]", lat = 52.65, long = 19.05, }, { wikidata = "Q8067781", name = "Zbijewo", text_display = "[[w:Zbijewo|Zbijewo]]", lat = 52.3667, long = 18.9667, }, }, { wikidata = "Q9283056", name = "Northern Greater Poland", text_display = "[[w:Northern Greater Poland dialect|Northern Greater Poland]]", lat = 52.8083, long = 17.1994, { wikidata = "Q1007355", name = "Barcin", text_display = "[[w:Barcin|Barcin]]", lat = 52.85, long = 17.95, }, { wikidata = "Q133164", name = "Czarnków-Trzcianka County", text_display = "[[w:Czarnków-Trzcianka County|Czarnków-Trzcianka County]]", lat = 52.9, long = 16.5667, }, { wikidata = "Q51432", name = "Gniezno", text_display = "[[w:Gniezno|Gniezno]]", lat = 52.5333, long = 17.6, }, { wikidata = "Q52828", name = "Gołańcz", text_display = "[[w:Gołańcz|Gołańcz]]", lat = 52.9483, long = 17.3014, }, { wikidata = "Q2458791", name = "Gmina Szubin", text_display = "[[w:Gmina Szubin|Gmina Szubin]]", lat = 53.0167, long = 17.75, }, { wikidata = "Q1003283", name = "Kcynia", text_display = "[[w:Kcynia|Kcynia]]", lat = 52.9919, long = 17.4844, }, { wikidata = "Q612372", name = "Modliszewko", text_display = "[[w:Modliszewko|Modliszewko]]", lat = 52.6167, long = 17.6, }, { wikidata = "Q325627", name = "Mogilno", text_display = "[[w:Mogilno|Mogilno]]", lat = 52.6583, long = 17.95, }, { wikidata = "Q7157090", name = "Pałuki", text_display = "[[w:Pałuki|Pałuki]]", lat = 52.8494, long = 17.7195, }, { wikidata = "Q200685", name = "Rogowo", text_display = "[[w:Rogowo|Rogowo]]", lat = 52.7264, long = 17.6511, }, { wikidata = "Q645022", name = "Wągrowiec", text_display = "[[w:Wągrowiec|Wągrowiec]]", lat = 52.8083, long = 17.1994, }, { wikidata = "Q324941", name = "Żnin", text_display = "[[w:Żnin|Żnin]]", lat = 52.8496, long = 17.7199, }, { name = "Czeszewo (powiat Wągrowski)", text_display = "[[w:Czeszewo (powiat Wągrowski)|Czeszewo (powiat Wągrowski)]]", }, }, { wikidata = "Q128395191", name = "Southern Greater Poland", text_display = "[[w:Southern Greater Poland dialect|Southern Greater Poland]]", lat = 51.8792, long = 17.0125, { wikidata = "Q2784715", name = "Czacz", text_display = "[[w:Czacz, Greater Poland Voivodeship|Czacz]]", lat = 52.0333, long = 16.55, }, { wikidata = "Q4098623", name = "Bukownica", text_display = "[[w:Bukownica|Bukownica]]", lat = 51.8158, long = 16.9744, }, { wikidata = "Q5580427", name = "Golejewko", text_display = "[[w:Golejewko|Golejewko]]", lat = 51.6167, long = 17.0333, }, { wikidata = "Q422286", name = "Gostyń", text_display = "[[w:Gostyń|Gostyń]]", lat = 51.8792, long = 17.0125, }, { wikidata = "Q5612483", name = "Gryżyna", text_display = "[[w:Gryżyna|Gryżyna]]", lat = 52.0311, long = 16.7094, }, { wikidata = "Q1005837", name = "Jutrosin", text_display = "[[w:Jutrosin|Jutrosin]]", lat = 51.6472, long = 17.1694, }, { wikidata = "Q990816", name = "Kobylin", text_display = "[[w:Kobylin|Kobylin]]", lat = 51.7, long = 17.2333, }, { wikidata = "Q556944", name = "Krobia", text_display = "[[w:Krobia|Krobia]]", lat = 51.775, long = 16.9833, }, { wikidata = "Q1323393", name = "Krzywiń", text_display = "[[w:Krzywiń|Krzywiń]]", lat = 51.9633, long = 16.82, }, { wikidata = "Q52892", name = "Leszno", text_display = "[[w:Leszno|Leszno]]", lat = 51.8403, long = 16.5749, }, { wikidata = "Q6723478", name = "Machcin, Greater Poland Voivodeship", text_display = "[[w:Machcin|Machcin]]", lat = 51.95, long = 16.4333, }, { wikidata = "Q1421485", name = "Miejska Górka", text_display = "[[w:Miejska Górka|Miejska Górka]]", lat = 51.6556, long = 16.9611, }, { wikidata = "Q6913307", name = "Morownica", text_display = "[[w:Morownica|Morownica]]", lat = 51.99, long = 16.4756, }, { wikidata = "Q3562594", name = "Ochla", text_display = "[[w:Ochla, Greater Poland Voivodeship|Ochla]]", lat = 51.7764, long = 17.2431, }, { wikidata = "Q984340", name = "Pakosław", text_display = "[[w:Pakosław|Pakosław]]", lat = 51.6142, long = 17.0578, }, { wikidata = "Q52898", name = "Rawicz", text_display = "[[w:Rawicz|Rawicz]]", lat = 51.6092, long = 16.8575, }, { wikidata = "Q133248", name = "Rawicz County", text_display = "[[w:Rawicz County|Rawicz County]]", lat = 51.6092, long = 16.8575, }, { wikidata = "Q2717143", name = "Siemowo", text_display = "[[w:Siemowo|Siemowo]]", lat = 51.9, long = 16.8833, }, { wikidata = "Q7513955", name = "Sikorzyn", text_display = "[[w:Sikorzyn|Sikorzyn]]", lat = 51.8333, long = 16.9667, }, { wikidata = "Q387194", name = "Śmigiel", text_display = "[[w:Śmigiel|Śmigiel]]", lat = 52.0134, long = 16.527, }, { wikidata = "Q7685945", name = "Targoszyce", text_display = "[[w:Targoszyce|Targoszyce]]", lat = 51.7618, long = 17.2711, }, }, { wikidata = "Q11702969", name = "Western Greater Poland", text_display = "[[w:Western Greater Poland dialect|Western Greater Poland]]", lat = 52.6667, long = 16.25, { wikidata = "Q797713", name = "Babimost", text_display = "[[w:Babimost|Babimost]]", lat = 52.1649, long = 15.8291, }, { wikidata = "Q1904227", name = "Biezdrowo", text_display = "[[w:Biezdrowo|Biezdrowo]]", lat = 52.6886, long = 16.3061, }, { wikidata = "Q5590453", name = "Gościeszyn", text_display = "[[w:Gościeszyn|Gościeszyn]]", lat = 52.0914, long = 16.204, }, { wikidata = "Q6435674", name = "Koźminek", text_display = "[[w:Koźminek|Koźminek]]", lat = 52.2167, long = 15.7333, }, { wikidata = "Łąkie", name = "Łąkie", text_display = "[[w:Łąkie|Łąkie]]", lat = 52.1053, long = 16.2275, }, { wikidata = "Q52894", name = "Obrzycko", text_display = "[[w:Obrzycko|Obrzycko]]", lat = 52.7064, long = 16.5292, }, { wikidata = "Q2114575", name = "Przemęt", text_display = "[[w:Przemęt|Przemęt]]", lat = 52.0078, long = 16.3031, }, { wikidata = "Q1587810", name = "Rakoniewice", text_display = "[[w:Rakoniewice|Rakoniewice]]", lat = 52.1408, long = 16.2731, }, { wikidata = "Q852363", name = "Wolsztyn", text_display = "[[w:Wolsztyn|Wolsztyn]]", lat = 52.1167, long = 16.1167, }, { wikidata = "Q318376", name = "Wschowa County", text_display = "[[w:Wschowa County|Wschowa County]]", lat = 51.8, long = 16.3, }, }, { wikidata = "Q988612", name = "Wieleń", text_display = "[[w:Wieleń dialect|Wieleń]]", lat = 52.8922, long = 16.1736, { wikidata = "Q51438", name = "Czarnków", text_display = "[[w:Czarnków|Czarnków]]", lat = 52.9, long = 16.5667, }, { wikidata = "Q201791", name = "Drawsko", text_display = "[[w:Drawsko|Drawsko]]", lat = 52.85, long = 16.0333, }, { wikidata = "Q7369019", name = "Rosko", text_display = "[[w:Rosko|Rosko]]", lat = 52.8743, long = 16.3165, }, }, }, { name = "Masovia", text_display = "[[w:Masovian dialect|Masovia]]", color = "var(--wikt-palette-yellow-1);color:inherit", { wikidata = "Q4154271", name = "Far Masovian", text_display = "[[w:Far Masovian dialect|Far Masovian]]", aliases = { "Far Mazovian" }, lat = 52.8833, long = 20.6167, { wikidata = "Q4101565", name = "Białobrzegi", text_display = "[[w:Białobrzegi, Legionowo County|Białobrzegi]]", lat = 52.4436, long = 21.0581, }, { wikidata = "Q137408", name = "Borki Siedleckie", text_display = "[[w:Borki Siedleckie|Borki Siedleckie]]", lat = 52.2308, long = 22.2853, }, { wikidata = "Q1526676", name = "Ceranów", text_display = "[[w:Ceranów|Ceranów]]", lat = 52.6308, long = 22.2283, }, { wikidata = "Q745051", name = "Ciechanów", text_display = "[[w:Ciechanów|Ciechanów]]", lat = 52.8833, long = 20.6167, }, { wikidata = "Q769211", name = "Cygów", text_display = "[[w:Cygów|Cygów]]", lat = 52.3333, long = 21.4167, }, { wikidata = "Q5306871", name = "Dreglin", text_display = "[[w:Dreglin|Dreglin]]", lat = 52.8333, long = 20.2333, }, { wikidata = "Q2037578", name = "Drożdżyn", text_display = "[[w:Drożdżyn|Drożdżyn]]", lat = 52.6483, long = 20.4622, }, { wikidata = "Q589633", name = "Dąbrowa Wielka", text_display = "[[w:Dąbrowa Wielka|Dąbrowa Wielka]]", lat = 52.8458, long = 22.4086, }, { wikidata = "Q2051728", name = "Gmina Dobre", text_display = "[[w:Gmina Dobre|Gmina Dobre]]", lat = 52.3214, long = 21.6783, }, { wikidata = "Q5610165", name = "Gromadzyn", text_display = "[[w:Gromadzyn|Gromadzyn]]", lat = 52.6667, long = 20.4833, }, { wikidata = "Q2508047", name = "Grudusk", text_display = "[[w:Grudusk|Grudusk]]", lat = 53.05, long = 20.6167, }, { wikidata = "Q1871384", name = "Jadów", text_display = "[[w:Jadów|Jadów]]", lat = 52.4785, long = 21.632, }, { wikidata = "Q6161480", name = "Jasienica", text_display = "[[w:Jasienica|Jasienica]]", lat = 52.8, long = 22.05, }, { wikidata = "Q3078004", name = "Klembów", text_display = "[[w:Klembów|Klembów]]", lat = 52.4065, long = 21.3318, }, { wikidata = "Q1614791", name = "Kolno", text_display = "[[w:Kolno|Kolno]]", lat = 53.4106, long = 21.9339, }, { wikidata = "Q1994531", name = "Korytnica", text_display = "[[w:Korytnica, Węgrów County|Korytnica]]", lat = 52.4167, long = 21.85, }, { wikidata = "Q770778", name = "Kuligów", text_display = "[[w:Kuligów|Kuligów]]", lat = 52.51, long = 21.1764, }, { wikidata = "Q2326308", name = "Liw", text_display = "[[w:Liw|Liw]]", lat = 52.3767, long = 21.965, }, { wikidata = "Q1526985", name = "Lebiedzie", text_display = "[[w:Lebiedzie|Lebiedzie]]", lat = 52.5833, long = 22.3, }, { wikidata = "Q11783667", name = "Miąse", text_display = "[[w:Miąse|Miąse]]", lat = 52.3964, long = 21.4439, }, { wikidata = "Q6885045", name = "Międzyleś", text_display = "[[w:Międzyleś|Międzyleś]]", lat = 52.3644, long = 21.4725, }, { wikidata = "Q947536", name = "Mińsk County", text_display = "[[w:Mińsk County|Mińsk County]]", lat = 52.1833, long = 21.5667, }, { wikidata = "Q2408688", name = "Mokobody", text_display = "[[w:Mokobody|Mokobody]]", lat = 52.2833, long = 22.1167, }, { wikidata = "Q6895554", name = "Mokrylas", text_display = "[[w:Mokrylas|Mokrylas]]", lat = 52.8956, long = 21.6861, }, { wikidata = "Q1906245", name = "Mordy", text_display = "[[w:Mordy|Mordy]]", lat = 52.2081, long = 22.5119, }, { wikidata = "Q983868", name = "Mława", text_display = "[[w:Mława|Mława]]", lat = 53.1167, long = 20.3667, }, { wikidata = "Q947468", name = "Mława County", text_display = "[[w:Mława County|Mława County]]", lat = 53.1167, long = 20.3667, }, { wikidata = "Q3341273", name = "Niegów", text_display = "[[w:Niegów|Niegów]]", lat = 52.5102, long = 21.3861, }, { wikidata = "Q7075385", name = "Obrąb", text_display = "[[w:Obrąb|Obrąb]]", lat = 53.0333, long = 20.8333, }, { wikidata = "Q7080264", name = "Ogródek", text_display = "[[w:Ogródek|Ogródek]]", lat = 52.2669, long = 21.9081, }, { wikidata = "Q841352", name = "Ostrów Mazowiecka", text_display = "[[w:Ostrów Mazowiecka|Ostrów Mazowiecka]]", lat = 52.8, long = 21.9, }, { wikidata = "Q1135401", name = "Ostrów Mazowiecka County", text_display = "[[w:Ostrów Mazowiecka County|Ostrów Mazowiecka County]]", lat = 52.8, long = 21.9, }, { wikidata = "Q270656", name = "Płońsk", text_display = "[[w:Płońsk|Płońsk]]", lat = 52.6233, long = 20.3753, }, { wikidata = "Q7234424", name = "Postoliska", text_display = "[[w:Postoliska|Postoliska]]", lat = 52.45, long = 21.4667, }, { wikidata = "Q5747429", name = "Podłatki Małe", text_display = "[[w:Podłatki Małe|Podłatki Małe]]", lat = 53.05, long = 22.3167, }, { wikidata = "Q7253200", name = "Pruszyn", text_display = "[[w:Pruszyn|Pruszyn]]", lat = 52.1833, long = 22.4167, }, { wikidata = "Q672964", name = "Przasnysz", text_display = "[[w:Przasnysz|Przasnysz]]", lat = 53.0167, long = 20.8833, }, { wikidata = "Q608078", name = "Przasnysz County", text_display = "[[w:Przasnysz County|Przasnysz County]]", lat = 53.0167, long = 20.8833, }, { wikidata = "Q936147", name = "Pułtusk County", text_display = "[[w:Pułtusk County|Pułtusk County]]", lat = 52.7, long = 21.0833, }, { wikidata = "Q609246", name = "Radzymin", text_display = "[[w:Radzymin|Radzymin]]", lat = 52.4159, long = 21.1841, }, { wikidata = "Q770015", name = "Rasztów", text_display = "[[w:Rasztów|Rasztów]]", lat = 52.4167, long = 21.2667, }, { wikidata = "Q995141", name = "Różan", text_display = "[[w:Różan|Różan]]", lat = 52.8828, long = 21.3856, }, { wikidata = "Q1611922", name = "Rytele Święckie", text_display = "[[w:Rytele Święckie|Rytele Święckie]]", lat = 52.6833, long = 22.0833, }, { wikidata = "Q1527251", name = "Seroczyn", text_display = "[[w:Seroczyn|Seroczyn]]", lat = 52.5484, long = 22.2977, }, { wikidata = "Q772972", name = "Słopsk", text_display = "[[w:Słopsk|Słopsk]]", lat = 52.5167, long = 21.3333, }, { wikidata = "Q7555373", name = "Sokołów County", text_display = "[[w:Sokołów County|Sokołów County]]", lat = 52.4067, long = 22.2464, }, { wikidata = "Q2114006", name = "Stanisławów", text_display = "[[w:Stanisławów|Stanisławów]]", lat = 52.2908, long = 21.5486, }, { wikidata = "Q771187", name = "Stary Kraszew", text_display = "[[w:Stary Kraszew|Stary Kraszew]]", lat = 52.4056, long = 21.2612, }, { wikidata = "Q2500141", name = "Starawieś", text_display = "[[w:Starawieś|Starawieś]]", lat = 52.45, long = 21.9333, }, { wikidata = "Q1526656", name = "Sterdyń", text_display = "[[w:Sterdyń|Sterdyń]]", lat = 52.58, long = 22.2931, }, { wikidata = "Q2099575", name = "Suchożebry", text_display = "[[w:Suchożebry|Suchożebry]]", lat = 52.2667, long = 22.25, }, { wikidata = "Q9352394", name = "Szulborze-Koty", text_display = "[[w:Szulborze-Koty|Szulborze-Koty]]", lat = 52.7621, long = 22.2229, }, { wikidata = "Q1826232", name = "Tłuszcz", text_display = "[[w:Tłuszcz|Tłuszcz]]", lat = 52.4333, long = 21.45, }, { wikidata = "Q2187604", name = "Wąsewo", text_display = "[[w:Wąsewo|Wąsewo]]", lat = 52.8833, long = 21.6667, }, { wikidata = "Q7999108", name = "Wielądki", text_display = "[[w:Wielądki|Wielądki]]", lat = 52.4, long = 21.8333, }, { wikidata = "Q8028857", name = "Wiśniew", text_display = "[[w:Wiśniew|Wiśniew]]", lat = 52.2558, long = 21.7194, }, { wikidata = "Q2237742", name = "Wizna", text_display = "[[w:Wizna|Wizna]]", lat = 53.1952, long = 22.3824, }, { wikidata = "Q771435", name = "Wola Cygowska", text_display = "[[w:Wola Cygowska|Wola Cygowska]]", lat = 52.3167, long = 21.4333, }, { wikidata = "Q769629", name = "Wola Rasztowska", text_display = "[[w:Wola Rasztowska|Wola Rasztowska]]", lat = 52.45, long = 21.3, }, { wikidata = "Q8038802", name = "Wróblewo", text_display = "[[w:Wróblewo|Wróblewo]]", lat = 52.55, long = 20.3167, }, { wikidata = "Q8040535", name = "Wysocze", text_display = "[[w:Wysocze|Wysocze]]", lat = 52.8833, long = 21.7, }, { wikidata = "Q1125865", name = "Wysokie Mazowieckie County", text_display = "[[w:Wysokie Mazowieckie County|Wysokie Mazowieckie County]]", lat = 52.9192, long = 22.5144, }, { wikidata = "Q953156", name = "Węgrów", text_display = "[[w:Węgrów|Węgrów]]", lat = 52.3995, long = 22.0163, }, { wikidata = "Q939532", name = "Węgrów County", text_display = "[[w:Węgrów County|Węgrów County]]", lat = 52.4, long = 22.0167, }, { wikidata = "Q5747274", name = "Włosty-Olszanka", text_display = "[[w:Włosty-Olszanka|Włosty-Olszanka]]", lat = 52.8814, long = 22.5153, }, { wikidata = "Q145719", name = "Zambrów", text_display = "[[w:Zambrów|Zambrów]]", lat = 52.9853, long = 22.2422, }, { wikidata = "Q2526742", name = "Zabrodzie", text_display = "[[w:Zabrodzie|Zabrodzie]]", lat = 52.5046, long = 21.4179, }, { wikidata = "Q215633", name = "Łomża", text_display = "[[w:Łomża|Łomża]]", lat = 53.1833, long = 22.0833, }, { wikidata = "Q2479621", name = "Łomża Governorate", text_display = "[[w:Łomża Governorate|Łomża Governorate]]", lat = 53.1667, long = 22.0833, }, { wikidata = "Q1755185", name = "Łomża Voivodeship", text_display = "[[w:Łomża Voivodeship|Łomża Voivodeship]]", lat = 53.1667, long = 22.0833, }, { wikidata = "Q5748651", name = "Łętownica", text_display = "[[w:Łętownica|Łętownica]]", lat = 52.8667, long = 22.2, }, { name = "Radzymin County", text_display = "[[w:Radzymin County|Radzymin County]]", }, }, { wikidata = "Q9282998", name = "Kurpie", text_display = "[[w:Kurpie dialect|Kurpie]]", lat = 53.3833, long = 21.35, { wikidata = "Q9188960", name = "Charciabałda", text_display = "[[w:Charciabałda|Charciabałda]]", lat = 53.3383, long = 21.2783, }, { wikidata = "Q5320738", name = "Dąbrowy", text_display = "[[w:Dąbrowy, Warmian-Masurian Voivodeship|Dąbrowy]]", lat = 53.4406, long = 21.3711, }, { wikidata = "Q2181287", name = "Gmina Jednorożec", text_display = "[[w:Gmina Jednorożec|Gmina Jednorożec]]", lat = 53.1436, long = 21.0533, }, { wikidata = "Q2326141", name = "Gmina Łyse", text_display = "[[w:Gmina Łyse|Gmina Łyse]]", lat = 53.3489, long = 21.5503, }, { wikidata = "Q2327675", name = "Gmina Turośl", text_display = "[[w:Gmina Turośl|Gmina Turośl]]", lat = 53.3833, long = 21.7167, }, { wikidata = "Q101704", name = "Myszyniec", text_display = "[[w:Myszyniec|Myszyniec]]", lat = 53.3833, long = 21.35, }, { wikidata = "Q461287", name = "Ostrołeka", text_display = "[[w:Ostrołeka|Ostrołeka]]", lat = 53.0833, long = 21.5667, }, { wikidata = "Q610857", name = "Ostrołęka County", text_display = "[[w:Ostrołęka County|Ostrołęka County]]", lat = 53.0667, long = 21.5667, }, { wikidata = "Q8030298", name = "Wolkowe", text_display = "[[w:Wolkowe|Wolkowe]]", lat = 53.4161, long = 21.3892, }, { wikidata = "Q8068047", name = "Zdunek", text_display = "[[w:Zdunek|Zdunek]]", lat = 53.3367, long = 21.3242, }, }, { wikidata = "Q489691", name = "Masuria", text_display = "[[w:Masurian dialects|Masuria]]", aliases = { "Masurian" }, lat = 53.5833, long = 21.0861, { wikidata = "Q2928492", name = "Burkarty", text_display = "[[w:Burkarty|Burkarty]]", lat = 54.2167, long = 20.6167, }, { wikidata = "Q6185235", name = "Jeruty", text_display = "[[w:Jeruty|Jeruty]]", lat = 53.5333, long = 21.1667, }, { wikidata = "Q998419", name = "Rozogi", text_display = "[[w:Rozogi|Rozogi]]", lat = 53.4833, long = 21.35, }, { wikidata = "Q2422518", name = "Warpuny", text_display = "[[w:Warpuny|Warpuny]]", lat = 53.9333, long = 21.1833, }, { wikidata = "Q245757", name = "Zyndaki", text_display = "[[w:Zyndaki|Zyndaki]]", lat = 53.915, long = 21.1756, }, { wikidata = "Q7262014", name = "Pustniki", text_display = "[[w:Pustniki|Pustniki]]", lat = 53.8742, long = 21.1489, }, { wikidata = "Q919157", name = "Sorkwity", text_display = "[[w:Sorkwity|Sorkwity]]", lat = 53.845, long = 21.1431, }, { wikidata = "Q6754601", name = "Maradki", text_display = "[[w:Maradki|Maradki]]", lat = 53.8119, long = 21.1356, }, { wikidata = "Q9324306", name = "Rybno", text_display = "[[w:Rybno|Rybno]]", lat = 53.7594, long = 21.1367, }, { wikidata = "Q6435419", name = "Kozłowo", text_display = "[[w:Kozłowo|Kozłowo]]", lat = 53.75, long = 21.1667, }, { wikidata = "Q5321230", name = "Dłużec", text_display = "[[w:Dłużec|Dłużec]]", lat = 54.1333, long = 21.5667, }, { wikidata = "Q5590810", name = "Grabowo", text_display = "[[w:Grabowo|Grabowo]]", lat = 53.8167, long = 21.2333, }, { wikidata = "Q963841", name = "Karwie", text_display = "[[w:Karwie|Karwie]]", lat = 53.8333, long = 21.2833, }, { wikidata = "Q5627385", name = "Gązwa", text_display = "[[w:Gązwa|Gązwa]]", lat = 53.9, long = 21.2333, }, { wikidata = "Q7225998", name = "Polska Wieś", text_display = "[[w:Polska Wieś|Polska Wieś]]", lat = 53.9028, long = 21.28, }, { wikidata = "Q7664626", name = "Szestno", text_display = "[[w:Szestno|Szestno]]", lat = 53.923, long = 21.3055, }, { wikidata = "Q8040618", name = "Wyszembork", text_display = "[[w:Wyszembork|Wyszembork]]", lat = 53.9283, long = 21.3589, }, { wikidata = "Q7229503", name = "Popowo Salęckie", text_display = "[[w:Popowo Salęckie|Popowo Salęckie]]", lat = 53.9017, long = 21.3481, }, { wikidata = "Q745085", name = "Mrągowo", text_display = "[[w:Mrągowo|Mrągowo]]", lat = 53.8642, long = 21.305, }, { wikidata = "Q7246896", name = "Probark", text_display = "[[w:Probark|Probark]]", lat = 53.8225, long = 21.3667, }, { wikidata = "Q6433062", name = "Kosewo", text_display = "[[w:Kosewo|Kosewo]]", lat = 53.8286, long = 21.3881, }, { wikidata = "Q6125704", name = "Jakubowo", text_display = "[[w:Jakubowo|Jakubowo]]", lat = 53.804, long = 21.3669, }, { wikidata = "Q4858411", name = "Baranowo", text_display = "[[w:Baranowo|Baranowo]]", lat = 53.3167, long = 20.8333, }, { wikidata = "Q5180547", name = "Lipowo", text_display = "[[w:Lipowo|Lipowo]]", lat = 53.7783, long = 21.4389, }, { wikidata = "Q984240", name = "Piecki", text_display = "[[w:Piecki|Piecki]]", lat = 53.7492, long = 21.3412, }, { wikidata = "Q1972450", name = "Nawiady", text_display = "[[w:Nawiady|Nawiady]]", lat = 53.7156, long = 21.3172, }, { wikidata = "Q4837947", name = "Babięta", text_display = "[[w:Babięta|Babięta]]", lat = 53.6833, long = 21.2667, }, { wikidata = "Q7601691", name = "Stare Kiełbonki", text_display = "[[w:Stare Kiełbonki|Stare Kiełbonki]]", lat = 53.6667, long = 21.3333, }, { wikidata = "Q2979387", name = "Mojtyny", text_display = "[[w:Mojtyny|Mojtyny]]", lat = 53.7803, long = 21.0894, }, { wikidata = "Q5286888", name = "Dobry Lasek", text_display = "[[w:Dobry Lasek|Dobry Lasek]]", lat = 53.7333, long = 21.4, }, { wikidata = "Q2055287", name = "Krutyń", text_display = "[[w:Krutyń|Krutyń]]", lat = 53.6872, long = 21.43, }, { wikidata = "Q5622621", name = "Krutyński Piecek", text_display = "[[w:Krutyński Piecek|Krutyński Piecek]]", lat = 53.6833, long = 21.4333, }, { wikidata = "Q5837089", name = "Zgon", text_display = "[[w:Zgon|Zgon]]", lat = 53.6502, long = 21.3984, }, { wikidata = "Q8065771", name = "Zameczek", text_display = "[[w:Zameczek|Zameczek]]", lat = 53.8781, long = 20.9639, }, { wikidata = "Q1751402", name = "Wojnowo", text_display = "[[w:Wojnowo|Wojnowo]]", lat = 53.6613, long = 21.472, }, { wikidata = "Q7106815", name = "Osiniak-Piotrowo", text_display = "[[w:Osiniak-Piotrowo|Osiniak-Piotrowo]]", lat = 53.65, long = 21.5, }, { wikidata = "Q557906", name = "Ruciane-Nida", text_display = "[[w:Ruciane-Nida|Ruciane-Nida]]", lat = 53.6506, long = 21.5627, }, { wikidata = "Q5318467", name = "Dybówko", text_display = "[[w:Dybówko|Dybówko]]", lat = 53.6683, long = 22.3042, }, { wikidata = "Q781730", name = "Wygryny", text_display = "[[w:Wygryny|Wygryny]]", lat = 53.6832, long = 21.5506, }, { wikidata = "Q8082221", name = "Śwignajno Wielkie", text_display = "[[w:Śwignajno Wielkie|Śwignajno Wielkie]]", lat = 53.6833, long = 21.5333, }, { wikidata = "Q7878604", name = "Ukta", text_display = "[[w:Ukta|Ukta]]", lat = 53.6883, long = 21.4961, }, { wikidata = "Q653357", name = "Nowa Ukta", text_display = "[[w:Nowa Ukta|Nowa Ukta]]", lat = 53.7017, long = 21.5, }, { wikidata = "Q1496730", name = "Gałkowo", text_display = "[[w:Gałkowo|Gałkowo]]", lat = 53.7, long = 21.4667, }, { wikidata = "Q4936013", name = "Bobrówko", text_display = "[[w:Bobrówko|Bobrówko]]", lat = 53.7378, long = 21.5031, }, { wikidata = "Q984462", name = "Mikołajki", text_display = "[[w:Mikołajki|Mikołajki]]", lat = 53.8028, long = 21.57, }, { wikidata = "Q7905580", name = "Użranki", text_display = "[[w:Użranki|Użranki]]", lat = 53.8333, long = 21.4333, }, { wikidata = "Q8065323", name = "Zalec", text_display = "[[w:Zalec|Zalec]]", lat = 53.8942, long = 21.4075, }, { wikidata = "Q2382557", name = "Sądry", text_display = "[[w:Sądry|Sądry]]", lat = 53.9187, long = 21.4492, }, { wikidata = "Q3486368", name = "Skorupki", text_display = "[[w:Skorupki|Skorupki]]", lat = 53.8761, long = 21.5208, }, { wikidata = "Q3453884", name = "Rybical", text_display = "[[w:Rybical|Rybical]]", lat = 53.9181, long = 21.5267, }, { wikidata = "Q3200074", name = "Krzyżany", text_display = "[[w:Krzyżany|Krzyżany]]", lat = 53.9667, long = 21.5, }, { wikidata = "Q616895", name = "Ryn", text_display = "[[w:Ryn|Ryn]]", lat = 53.9378, long = 21.5481, }, { wikidata = "Q3356878", name = "Orło", text_display = "[[w:Orło|Orło]]", lat = 53.9725, long = 21.5744, }, { wikidata = "Q3498814", name = "Sterławki Wielkie", text_display = "[[w:Sterławki Wielkie|Sterławki Wielkie]]", lat = 54.017, long = 21.583, }, { wikidata = "Q2908609", name = "Bogacko", text_display = "[[w:Bogacko|Bogacko]]", lat = 54.05, long = 21.65, }, { wikidata = "Q3486362", name = "Skop", text_display = "[[w:Skop|Skop]]", lat = 53.9611, long = 21.6597, }, { wikidata = "Q3509749", name = "Szymonka", text_display = "[[w:Szymonka|Szymonka]]", lat = 53.8947, long = 21.6619, }, { wikidata = "Q730211", name = "Karolewo", text_display = "[[w:Karolewo|Karolewo]]", lat = 54.0739, long = 21.4189, }, { wikidata = "Q3362938", name = "Paprotki", text_display = "[[w:Paprotki|Paprotki]]", lat = 53.9286, long = 21.8008, }, { wikidata = "Q2908604", name = "Bogaczewo", text_display = "[[w:Bogaczewo|Bogaczewo]]", lat = 53.9667, long = 21.7333, }, { wikidata = "Q841356", name = "Giżycko", text_display = "[[w:Giżycko|Giżycko]]", lat = 54.04, long = 21.7589, }, { wikidata = "Q3494329", name = "Spytkowo", text_display = "[[w:Spytkowo|Spytkowo]]", lat = 54.0781, long = 21.8256, }, { wikidata = "Q7191446", name = "Pieczarki", text_display = "[[w:Pieczarki|Pieczarki]]", lat = 54.1, long = 21.8, }, { wikidata = "Q336204", name = "Grajewo", text_display = "[[w:Grajewo|Grajewo]]", lat = 53.65, long = 22.45, }, { wikidata = "Q3552078", name = "Upałty", text_display = "[[w:Upałty|Upałty]]", lat = 54.0044, long = 21.8677, }, { wikidata = "Q6843543", name = "Miechy", text_display = "[[w:Miechy|Miechy]]", lat = 53.9428, long = 21.9152, }, { wikidata = "Q3198738", name = "Konopki Wielkie", text_display = "[[w:Konopki Wielkie|Konopki Wielkie]]", lat = 53.9167, long = 21.9, }, { wikidata = "Q600119", name = "Konopki Małe", text_display = "[[w:Konopki Małe|Konopki Małe]]", lat = 53.9167, long = 21.95, }, { wikidata = "Q954576", name = "Pańska Wola", text_display = "[[w:Pańska Wola|Pańska Wola]]", lat = 53.8833, long = 22.0667, }, { wikidata = "Q3008224", name = "Cybulki", text_display = "[[w:Cybulki|Cybulki]]", lat = 53.9667, long = 22.0667, }, { wikidata = "Q1003621", name = "Wydminy", text_display = "[[w:Wydminy|Wydminy]]", lat = 53.9833, long = 22.0333, }, { wikidata = "Q3483387", name = "Siedliska", text_display = "[[w:Siedliska|Siedliska]]", lat = 53.9975, long = 21.9203, }, { wikidata = "Q3502803", name = "Sucholaski", text_display = "[[w:Sucholaski|Sucholaski]]", lat = 54.0078, long = 21.9867, }, { wikidata = "Q1020425", name = "Kruklanki", text_display = "[[w:Kruklanki|Kruklanki]]", lat = 54.0883, long = 21.9225, }, { wikidata = "Q3492543", name = "Sołtmany", text_display = "[[w:Sołtmany|Sołtmany]]", lat = 54.0414, long = 22.0217, }, { wikidata = "Q3303163", name = "Mazuchówka", text_display = "[[w:Mazuchówka|Mazuchówka]]", lat = 54, long = 22.0667, }, { wikidata = "Q3099628", name = "Gawliki Wielkie", text_display = "[[w:Gawliki Wielkie|Gawliki Wielkie]]", lat = 54.0142, long = 22.0853, }, { wikidata = "Q3509654", name = "Szczybały Orłowskie", text_display = "[[w:Szczybały Orłowskie|Szczybały Orłowskie]]", lat = 54.033, long = 22.1294, }, { wikidata = "Q3356875", name = "Orłowo", text_display = "[[w:Orłowo|Orłowo]]", lat = 54.0533, long = 22.1622, }, { wikidata = "Q3094437", name = "Gajrowskie", text_display = "[[w:Gajrowskie|Gajrowskie]]", lat = 54.05, long = 22.2, }, { wikidata = "Q4945622", name = "Borki", text_display = "[[w:Borki|Borki]]", lat = 54.0857, long = 22.1993, }, { wikidata = "Q7359436", name = "Rogojny", text_display = "[[w:Rogojny|Rogojny]]", lat = 54.0719, long = 22.23, }, { wikidata = "Q5612469", name = "Gryzy", text_display = "[[w:Gryzy|Gryzy]]", lat = 54.0542, long = 22.2842, }, { wikidata = "Q6315253", name = "Jurki", text_display = "[[w:Jurki|Jurki]]", lat = 54.0708, long = 22.3494, }, { wikidata = "Q7555470", name = "Sokółki", text_display = "[[w:Sokółki|Sokółki]]", lat = 54.1278, long = 22.32, }, { wikidata = "Q994293", name = "Kowale Oleckie", text_display = "[[w:Kowale Oleckie|Kowale Oleckie]]", lat = 54.15, long = 22.4, }, { wikidata = "Q6522282", name = "Lenarty", text_display = "[[w:Lenarty|Lenarty]]", lat = 54.13, long = 22.52, }, { wikidata = "Q4902717", name = "Biała Olecka", text_display = "[[w:Biała Olecka|Biała Olecka]]", lat = 54.1333, long = 22.5167, }, { wikidata = "Q4473069", name = "Garbas", text_display = "[[w:Garbas|Garbas]]", lat = 54.1508, long = 22.6075, }, { wikidata = "Q4918897", name = "Bitkowo", text_display = "[[w:Bitkowo|Bitkowo]]", lat = 54.2333, long = 22.5167, }, { wikidata = "Q5617710", name = "Mieruniszki", text_display = "[[w:Mieruniszki|Mieruniszki]]", lat = 54.168, long = 22.569, }, { wikidata = "Q4944322", name = "Borawskie", text_display = "[[w:Borawskie|Borawskie]]", lat = 54.09, long = 22.52, }, { wikidata = "Q584736", name = "Możne", text_display = "[[w:Możne|Możne]]", lat = 54.05, long = 22.53, }, { wikidata = "Q950436", name = "Olecko", text_display = "[[w:Olecko|Olecko]]", lat = 54.0336, long = 22.5069, }, { wikidata = "Q984168", name = "Wieliczki", text_display = "[[w:Wieliczki|Wieliczki]]", lat = 53.9844, long = 22.5617, }, { wikidata = "Q6004116", name = "Imionki", text_display = "[[w:Imionki|Imionki]]", lat = 54.0256, long = 22.5514, }, { wikidata = "Q6442549", name = "Kukowo", text_display = "[[w:Kukowo|Kukowo]]", lat = 54, long = 22.48, }, { wikidata = "Q5565962", name = "Giże", text_display = "[[w:Giże|Giże]]", lat = 54.0147, long = 22.3847, }, { wikidata = "Q7105343", name = "Orzechowo", text_display = "[[w:Orzechowo|Orzechowo]]", lat = 53.9622, long = 22.1544, }, { wikidata = "Q7664256", name = "Szczecinowo", text_display = "[[w:Szczecinowo|Szczecinowo]]", lat = 53.9736, long = 22.1642, }, { wikidata = "Q7402718", name = "Sajzy", text_display = "[[w:Sajzy|Sajzy]]", lat = 53.9335, long = 22.2867, }, { wikidata = "Q8063496", name = "Zabielne", text_display = "[[w:Zabielne|Zabielne]]", lat = 53.9689, long = 22.4089, }, { wikidata = "Q5627363", name = "Gąski", text_display = "[[w:Gąski|Gąski]]", lat = 53.9456, long = 22.4381, }, { wikidata = "Q6420673", name = "Kleszczewo", text_display = "[[w:Kleszczewo|Kleszczewo]]", lat = 53.9333, long = 22.5667, }, { wikidata = "Q1092140", name = "Cimochy", text_display = "[[w:Cimochy|Cimochy]]", lat = 53.97, long = 22.68, }, { wikidata = "Q905525", name = "Kalinowo", text_display = "[[w:Kalinowo|Kalinowo]]", lat = 53.8667, long = 22.6667, }, { wikidata = "Q633779", name = "Krzyżewo", text_display = "[[w:Krzyżewo|Krzyżewo]]", lat = 53.8611, long = 22.6931, }, { wikidata = "Q1494006", name = "Laski Wielkie", text_display = "[[w:Laski Wielkie|Laski Wielkie]]", lat = 53.8292, long = 22.4942, }, { wikidata = "Q7664551", name = "Szeligi", text_display = "[[w:Szeligi|Szeligi]]", lat = 53.8179, long = 22.4151, }, { wikidata = "Q61480", name = "Ełk", text_display = "[[w:Ełk|Ełk]]", lat = 53.8167, long = 22.35, }, { wikidata = "Q5590702", name = "Grabnik", text_display = "[[w:Grabnik|Grabnik]]", lat = 53.8667, long = 22.2, }, { wikidata = "Q7536225", name = "Skomack Wielki", text_display = "[[w:Skomack Wielki|Skomack Wielki]]", lat = 53.8533, long = 22.0981, }, { wikidata = "Q7380937", name = "Ruska Wieś", text_display = "[[w:Ruska Wieś|Ruska Wieś]]", lat = 53.7894, long = 22.2056, }, { wikidata = "Q11726830", name = "Szyba", text_display = "[[w:Szyba|Szyba]]", lat = 53.805, long = 22.3814, }, { wikidata = "Q8028879", name = "Wiśniowo Ełckie", text_display = "[[w:Wiśniowo Ełckie|Wiśniowo Ełckie]]", lat = 53.7575, long = 22.5281, }, { wikidata = "Q4858415", name = "Barany", text_display = "[[w:Barany|Barany]]", lat = 53.78, long = 22.35, }, { wikidata = "Q7066252", name = "Nowa Wieś Ełcka", text_display = "[[w:Nowa Wieś Ełcka|Nowa Wieś Ełcka]]", lat = 53.7725, long = 22.3322, }, { wikidata = "Q6917008", name = "Mostołty", text_display = "[[w:Mostołty|Mostołty]]", lat = 53.77, long = 22.23, }, { wikidata = "Q7198465", name = "Pistki", text_display = "[[w:Pistki|Pistki]]", lat = 53.78, long = 22.2142, }, { wikidata = "Q7080268", name = "Ogródek, Warmian-Masurian Voivodeship", text_display = "[[w:Ogródek, Warmian-Masurian Voivodeship|Ogródek]]", lat = 53.8086, long = 22.1014, }, { wikidata = "Q5587034", name = "Gorzekały", text_display = "[[w:Gorzekały|Gorzekały]]", lat = 53.7511, long = 22.0419, }, { wikidata = "Q5621967", name = "Guty Różyńskie", text_display = "[[w:Guty Różyńskie|Guty Różyńskie]]", lat = 53.6333, long = 22.2667, }, { wikidata = "Q7386661", name = "Róźyńsk Wielki", text_display = "[[w:Róźyńsk Wielki|Róźyńsk Wielki]]", lat = 53.6764, long = 22.2397, }, { wikidata = "Q11723731", name = "Jebramki", text_display = "[[w:Jebramki|Jebramki]]", lat = 53.7, long = 22.22, }, { wikidata = "Q5004758", name = "Bzury", text_display = "[[w:Bzury|Bzury]]", lat = 53.6931, long = 22.2169, }, { wikidata = "Q7534078", name = "Skarzyn", text_display = "[[w:Skarzyn|Skarzyn]]", lat = 53.6124, long = 22.2234, }, { wikidata = "Q6435681", name = "Kożuchy", text_display = "[[w:Kożuchy|Kożuchy]]", lat = 53.5833, long = 22.1167, }, { wikidata = "Q11761854", name = "Lisy", text_display = "[[w:Lisy|Lisy]]", lat = 54.2167, long = 22.0667, }, { wikidata = "Q6949056", name = "Myszki", text_display = "[[w:Myszki|Myszki]]", lat = 53.6622, long = 22.1562, }, { wikidata = "Q7207683", name = "Pogorzel Wielka", text_display = "[[w:Pogorzel Wielka|Pogorzel Wielka]]", lat = 53.7041, long = 22.1601, }, { wikidata = "Q3040189", name = "Drygały", text_display = "[[w:Drygały|Drygały]]", lat = 53.6867, long = 22.1071, }, { wikidata = "Q6439477", name = "Kruszewo", text_display = "[[w:Kruszewo|Kruszewo]]", lat = 53.6352, long = 22.1142, }, { wikidata = "Q855940", name = "Biała Piska", text_display = "[[w:Biała Piska|Biała Piska]]", lat = 53.6119, long = 22.0632, }, { wikidata = "Q11757831", name = "Lisaki", text_display = "[[w:Lisaki|Lisaki]]", lat = 53.5262, long = 22.0272, }, { wikidata = "Q5197161", name = "Cwaliny", text_display = "[[w:Cwaliny|Cwaliny]]", lat = 53.55, long = 22.02, }, { wikidata = "Q578009", name = "Strzelniki", text_display = "[[w:Strzelniki|Strzelniki]]", lat = 53.8064, long = 22.0375, }, { wikidata = "Q5565956", name = "Giętkie", text_display = "[[w:Giętkie|Giętkie]]", lat = 53.6333, long = 21.9667, }, { wikidata = "Q7370033", name = "Rostki", text_display = "[[w:Rostki|Rostki]]", lat = 53.7019, long = 21.9014, }, { wikidata = "Q1691178", name = "Wierzbiny", text_display = "[[w:Wierzbiny|Wierzbiny]]", lat = 53.7906, long = 21.9759, }, { wikidata = "Q7077904", name = "Odoje", text_display = "[[w:Odoje|Odoje]]", lat = 53.8539, long = 22.0006, }, { wikidata = "Q7190070", name = "Pianki", text_display = "[[w:Pianki|Pianki]]", lat = 53.8408, long = 21.92, }, { wikidata = "Q5626117", name = "Góra", text_display = "[[w:Góra|Góra]]", lat = 53.8356, long = 21.8747, }, { wikidata = "Q989833", name = "Orzysz", text_display = "[[w:Orzysz|Orzysz]]", lat = 53.8056, long = 21.9458, }, { wikidata = "Q7984100", name = "Wesołowo", text_display = "[[w:Wesołowo|Wesołowo]]", lat = 53.4403, long = 20.8564, }, { wikidata = "Q5320798", name = "Dąbrówka", text_display = "[[w:Dąbrówka|Dąbrówka]]", lat = 53.8667, long = 21.75, }, { wikidata = "Q7850983", name = "Tuchlin", text_display = "[[w:Tuchlin|Tuchlin]]", lat = 53.8061, long = 21.7781, }, { wikidata = "Q3814632", name = "Nowe Guty", text_display = "[[w:Nowe Guty|Nowe Guty]]", lat = 53.7731, long = 21.8533, }, { wikidata = "Q6450411", name = "Kwik", text_display = "[[w:Kwik|Kwik]]", lat = 53.7418, long = 21.8272, }, { wikidata = "Q8067986", name = "Zdory", text_display = "[[w:Zdory|Zdory]]", lat = 53.7161, long = 21.7794, }, { wikidata = "Q7664236", name = "Szczechy Wielkie", text_display = "[[w:Szczechy Wielkie|Szczechy Wielkie]]", lat = 53.7, long = 21.8167, }, { wikidata = "Q6373811", name = "Karwik", text_display = "[[w:Karwik|Karwik]]", lat = 53.6833, long = 21.8, }, { wikidata = "Q9394836", name = "Łupki", text_display = "[[w:Łupki|Łupki]]", lat = 53.6333, long = 21.8667, }, { wikidata = "Q985005", name = "Pisz", text_display = "[[w:Pisz|Pisz]]", lat = 53.6167, long = 21.8, }, { wikidata = "Q6742777", name = "Maldanin", text_display = "[[w:Maldanin|Maldanin]]", lat = 53.65, long = 21.8, }, { wikidata = "Q590986", name = "Snopki", text_display = "[[w:Snopki|Snopki]]", lat = 53.6372, long = 21.7678, }, { wikidata = "Q5627505", name = "Głodowo", text_display = "[[w:Głodowo|Głodowo]]", lat = 53.7203, long = 21.6633, }, { wikidata = "Q11791452", name = "Niedźwiedzi Róg", text_display = "[[w:Niedźwiedzi Róg|Niedźwiedzi Róg]]", lat = 53.7175, long = 21.6939, }, { wikidata = "Q16568262", name = "Kończewo", text_display = "[[w:Kończewo|Kończewo]]", lat = 53.6997, long = 21.6564, }, { wikidata = "Q1465457", name = "Wejsuny", text_display = "[[w:Wejsuny|Wejsuny]]", lat = 53.6884, long = 21.6188, }, { wikidata = "Q6122763", name = "Jagodne, Warmian-Masurian Voivodeship", text_display = "[[w:Jagodne, Warmian-Masurian Voivodeship|Jagodne]]", lat = 53.6167, long = 21.85, }, { wikidata = "Q11820989", name = "Pogobie Średnie", text_display = "[[w:Pogobie Średnie|Pogobie Średnie]]", lat = 53.5573, long = 21.764, }, { wikidata = "Q7207614", name = "Pogobie Tylne", text_display = "[[w:Pogobie Tylne|Pogobie Tylne]]", lat = 53.5293, long = 21.7471, }, { wikidata = "Q8068051", name = "Zdunowo", text_display = "[[w:Zdunowo|Zdunowo]]", lat = 53.5025, long = 21.6678, }, { wikidata = "Q7998040", name = "Wiartel", text_display = "[[w:Wiartel|Wiartel]]", lat = 53.5958, long = 21.678, }, { wikidata = "Q6168563", name = "Jaśkowo", text_display = "[[w:Jaśkowo|Jaśkowo]]", lat = 53.5833, long = 21.6667, }, { wikidata = "Q8065911", name = "Zamordeje", text_display = "[[w:Zamordeje|Zamordeje]]", lat = 53.5647, long = 21.5844, }, { wikidata = "Q6373803", name = "Karwica", text_display = "[[w:Karwica|Karwica]]", lat = 53.5597, long = 21.5053, }, { wikidata = "Q5701251", name = "Hejdyk", text_display = "[[w:Hejdyk|Hejdyk]]", lat = 53.5333, long = 21.55, }, { wikidata = "Q6434977", name = "Kowalik", text_display = "[[w:Kowalik|Kowalik]]", lat = 53.5, long = 21.4667, }, { wikidata = "Q2595871", name = "Występ", text_display = "[[w:Występ|Występ]]", lat = 53.5131, long = 21.2853, }, { wikidata = "Q6421241", name = "Klon", text_display = "[[w:Klon|Klon]]", lat = 53.45, long = 21.2667, }, { wikidata = "Q11754813", name = "Lesiny Małe", text_display = "[[w:Lesiny Małe|Lesiny Małe]]", lat = 53.4, long = 21.1333, }, { wikidata = "Q6530393", name = "Lesiny Wielkie", text_display = "[[w:Lesiny Wielkie|Lesiny Wielkie]]", lat = 53.3833, long = 21.1167, }, { wikidata = "Q8080496", name = "Łatana Mała", text_display = "[[w:Łatana Mała|Łatana Mała]]", lat = 53.4167, long = 21.0833, }, { wikidata = "Q6414608", name = "Kipary", text_display = "[[w:Kipary|Kipary]]", lat = 53.3667, long = 21.0667, }, { wikidata = "Q2036015", name = "Mącice", text_display = "[[w:Mącice|Mącice]]", lat = 53.3333, long = 20.9833, }, { wikidata = "Q8067012", name = "Zaręby", text_display = "[[w:Zaręby|Zaręby]]", lat = 53.3, long = 21.0167, }, { wikidata = "Q2036892", name = "Ścięciel", text_display = "[[w:Ścięciel|Ścięciel]]", lat = 53.3333, long = 20.9333, }, { wikidata = "Q7199678", name = "Piwnice Wielkie", text_display = "[[w:Piwnice Wielkie|Piwnice Wielkie]]", lat = 53.35, long = 20.9167, }, { wikidata = "Q999482", name = "Wielbark", text_display = "[[w:Wielbark|Wielbark]]", lat = 53.3983, long = 20.9461, }, { wikidata = "Q4945665", name = "Borki Wielbarskie", text_display = "[[w:Borki Wielbarskie|Borki Wielbarskie]]", lat = 53.4167, long = 21.05, }, { wikidata = "Q5627573", name = "Głuch", text_display = "[[w:Głuch|Głuch]]", lat = 53.4167, long = 20.8667, }, { wikidata = "Q7386531", name = "Róklas", text_display = "[[w:Róklas|Róklas]]", lat = 53.4214, long = 20.8303, }, { wikidata = "Q11757769", name = "Lipowiec", text_display = "[[w:Lipowiec|Lipowiec]]", lat = 53.4667, long = 21.1333, }, { wikidata = "Q7977006", name = "Wały", text_display = "[[w:Wały|Wały]]", lat = 53.5022, long = 21.1141, }, { wikidata = "Q6520860", name = "Leleszki", text_display = "[[w:Leleszki|Leleszki]]", lat = 53.6167, long = 20.8167, }, { wikidata = "Q387761", name = "Świętajno", text_display = "[[w:Świętajno|Świętajno]]", lat = 53.5654, long = 21.218, }, { wikidata = "Q7190364", name = "Piasutno", text_display = "[[w:Piasutno|Piasutno]]", lat = 53.6, long = 21.2125, }, { wikidata = "Q6176705", name = "Jeleniewo", text_display = "[[w:Jeleniewo|Jeleniewo]]", lat = 53.6908, long = 21.1567, }, { wikidata = "Q7299873", name = "Rańsk", text_display = "[[w:Rańsk|Rańsk]]", lat = 53.7075, long = 21.0944, }, { wikidata = "Q6885120", name = "Miętkie", text_display = "[[w:Miętkie|Miętkie]]", lat = 53.6667, long = 21.1, }, { wikidata = "Q7105405", name = "Orzyny", text_display = "[[w:Orzyny|Orzyny]]", lat = 53.6833, long = 21.0833, }, { wikidata = "Q8065420", name = "Zalesie, Olsztyn County", text_display = "[[w:Zalesie, Olsztyn County|Zalesie]]", lat = 53.7136, long = 21.0717, }, { wikidata = "Q5613000", name = "Grądy", text_display = "[[w:Grądy|Grądy]]", lat = 53.7167, long = 21.0833, }, { wikidata = "Q7685963", name = "Targowo", text_display = "[[w:Targowo|Targowo]]", lat = 53.6944, long = 21.0372, }, { wikidata = "Q946711", name = "Dźwierzuty", text_display = "[[w:Dźwierzuty|Dźwierzuty]]", lat = 53.705, long = 20.9603, }, { wikidata = "Q637005", name = "Rudziska Pasymskie", text_display = "[[w:Rudziska Pasymskie|Rudziska Pasymskie]]", lat = 53.6878, long = 20.7869, }, { wikidata = "Q549895", name = "Botowo", text_display = "[[w:Botowo|Botowo]]", lat = 53.8, long = 20.95, }, { wikidata = "Q2894841", name = "Kobułty", text_display = "[[w:Kobułty|Kobułty]]", lat = 53.7833, long = 21.0333, }, { wikidata = "Q7379443", name = "Rumy", text_display = "[[w:Rumy|Rumy]]", lat = 53.7614, long = 20.9242, }, { wikidata = "Q6440337", name = "Krzywonoga", text_display = "[[w:Krzywonoga|Krzywonoga]]", lat = 53.675, long = 20.7336, }, { wikidata = "Q6885301", name = "Miłuki", text_display = "[[w:Miłuki|Miłuki]]", lat = 53.6672, long = 20.7653, }, { wikidata = "Q1005483", name = "Pasym", text_display = "[[w:Pasym|Pasym]]", lat = 53.6511, long = 20.7919, }, { wikidata = "Q7066487", name = "Nowe Kiejkuty", text_display = "[[w:Nowe Kiejkuty|Nowe Kiejkuty]]", lat = 53.6433, long = 21.0356, }, { wikidata = "Q785163", name = "Trelkowo", text_display = "[[w:Trelkowo|Trelkowo]]", lat = 53.65, long = 20.9833, }, { wikidata = "Q7362863", name = "Romany", text_display = "[[w:Romany|Romany]]", lat = 53.6044, long = 21.0006, }, { wikidata = "Q7665046", name = "Szymany", text_display = "[[w:Szymany|Szymany]]", lat = 53.4853, long = 20.9508, }, { wikidata = "Q8071626", name = "Zielonka, Szczytno County", text_display = "[[w:Zielonka, Szczytno County|Zielonka, Szczytno County]]", lat = 53.5964, long = 21.0342, }, { wikidata = "Q953181", name = "Szczytno", text_display = "[[w:Szczytno|Szczytno]]", lat = 53.5667, long = 21, }, { wikidata = "Q5321141", name = "Dębówko", text_display = "[[w:Dębówko|Dębówko]]", lat = 53.6, long = 20.95, }, { wikidata = "Q7667018", name = "Sędańsk", text_display = "[[w:Sędańsk|Sędańsk]]", lat = 53.5478, long = 20.91, }, { wikidata = "Q5610150", name = "Grom", text_display = "[[w:Grom|Grom]]", lat = 53.6, long = 20.85, }, { wikidata = "Q8028672", name = "Witówko", text_display = "[[w:Witówko|Witówko]]", lat = 53.55, long = 20.8833, }, { wikidata = "Q6966422", name = "Narty", text_display = "[[w:Narty|Narty]]", lat = 53.54, long = 20.7847, }, { wikidata = "Q4998328", name = "Burdąg", text_display = "[[w:Burdąg|Burdąg]]", lat = 53.5704, long = 20.7405, }, { wikidata = "Q381614", name = "Jedwabno", text_display = "[[w:Jedwabno|Jedwabno]]", lat = 53.5278, long = 20.725, }, { wikidata = "Q6433718", name = "Kot", text_display = "[[w:Kot|Kot]]", lat = 53.4733, long = 20.6492, }, { wikidata = "Q7386523", name = "Róg", text_display = "[[w:Róg|Róg]]", lat = 53.3406, long = 20.7536, }, { wikidata = "Q8028833", name = "Więckowo", text_display = "[[w:Więckowo|Więckowo]]", lat = 53.3756, long = 20.5892, }, { wikidata = "Q6964948", name = "Napiwoda", text_display = "[[w:Napiwoda|Napiwoda]]", lat = 53.4, long = 20.4833, }, { wikidata = "Q7999895", name = "Wikno", text_display = "[[w:Wikno|Wikno]]", lat = 53.4833, long = 20.5333, }, { wikidata = "Q6110358", name = "Jabłonka", text_display = "[[w:Jabłonka|Jabłonka]]", lat = 53.4971, long = 20.5586, }, { wikidata = "Q948954", name = "Natać Wielka", text_display = "[[w:Natać Wielka|Natać Wielka]]", lat = 53.5083, long = 20.5697, }, { wikidata = "Q2688604", name = "Łajs", text_display = "[[w:Łajs|Łajs]]", lat = 53.6361, long = 20.6669, }, { wikidata = "Q3339118", name = "Bałdy", text_display = "[[w:Bałdy|Bałdy]]", lat = 53.6003, long = 20.6039, }, { wikidata = "Q8070031", name = "Zgniłocha", text_display = "[[w:Zgniłocha|Zgniłocha]]", lat = 53.5622, long = 20.5621, }, { wikidata = "Q527768", name = "Nidzica", text_display = "[[w:Nidzica|Nidzica]]", lat = 53.3583, long = 20.425, }, { wikidata = "Q6964938", name = "Napierki", text_display = "[[w:Napierki|Napierki]]", lat = 53.2322, long = 20.4278, }, { wikidata = "Q4865331", name = "Bartki", text_display = "[[w:Bartki|Bartki]]", lat = 53.2738, long = 20.3855, }, { wikidata = "Q8081094", name = "Łysakowo", text_display = "[[w:Łysakowo|Łysakowo]]", lat = 53.3667, long = 20.3167, }, { wikidata = "Q7359648", name = "Rogóż", text_display = "[[w:Rogóż|Rogóż]]", lat = 53.3601, long = 20.2563, }, { wikidata = "Q7999266", name = "Wierzbowo", text_display = "[[w:Wierzbowo|Wierzbowo]]", lat = 53.3494, long = 20.2236, }, { wikidata = "Q1567899", name = "Sarnowo", text_display = "[[w:Sarnowo|Sarnowo]]", lat = 53.2678, long = 20.2704, }, { wikidata = "Q1269498", name = "Dziurdziewo", text_display = "[[w:Dziurdziewo|Dziurdziewo]]", lat = 53.3736, long = 20.2111, }, { wikidata = "Q6358364", name = "Kamionka, Nidzica County", text_display = "[[w:Kamionka, Nidzica County|Kamionka, Nidzica County]]", lat = 53.3061, long = 20.4197, }, { wikidata = "Q2204245", name = "Rączki", text_display = "[[w:Rączki|Rączki]]", lat = 53.4083, long = 20.3333, }, { wikidata = "Q6435078", name = "Kownatki", text_display = "[[w:Kownatki|Kownatki]]", lat = 53.2394, long = 20.47, }, { wikidata = "Q1472317", name = "Frąknowo", text_display = "[[w:Frąknowo|Frąknowo]]", lat = 53.4417, long = 20.3303, }, }, { name = "Near Masovian", text_display = "[[w:Near Masovian dialect|Near Masovian]]", aliases = { "Near Mazovian" }, lat = 52.23, long = 21.0111, { wikidata = "Q4900417", name = "Bełcząc", text_display = "[[w:Bełcząc|Bełcząc]]", lat = 51.6667, long = 22.5833, }, { wikidata = "Q209932", name = "Biała Podlaska", text_display = "[[w:Biała Podlaska|Biała Podlaska]]", lat = 52.0333, long = 23.1333, }, { wikidata = "Q4902800", name = "Białka", text_display = "[[w:Białka|Białka]]", lat = 51.8167, long = 22.6667, }, { wikidata = "Q4973923", name = "Bronisze", text_display = "[[w:Bronisze, Masovian Voivodeship|Bronisze]]", lat = 52.2, long = 20.8333, }, { wikidata = "Q2788055", name = "Budziszyn", text_display = "[[w:Budziszyn, Masovian Voivodeship|Budziszyn]]", lat = 51.8767, long = 21.0564, }, { wikidata = "Q2077902", name = "Budziszynek", text_display = "[[w:Budziszynek|Budziszynek]]", lat = 51.8622, long = 21.0617, }, { wikidata = "Q608376", name = "Błonie", text_display = "[[w:Błonie|Błonie]]", lat = 52.2, long = 20.6167, }, { wikidata = "Q3546570", name = "Błonie county", text_display = "[[w:Błonie county|Błonie county]]", lat = 51.9294, long = 20.9814, }, { wikidata = "Q4981693", name = "Brzumin", text_display = "[[w:Brzumin|Brzumin]]", lat = 51.94, long = 21.2597, }, { wikidata = "Q5201444", name = "Czachówek", text_display = "[[w:Czachówek|Czachówek]]", lat = 51.9602, long = 21.0889, }, { wikidata = "Q5201506", name = "Czaplin", text_display = "[[w:Czaplin|Czaplin]]", lat = 51.9518, long = 21.1577, }, { wikidata = "Q2557505", name = "Czemierniki", text_display = "[[w:Czemierniki|Czemierniki]]", lat = 51.6742, long = 22.6381, }, { wikidata = "Q5201987", name = "Czerniaków", text_display = "[[w:Czerniaków|Czerniaków]]", lat = 52.2074, long = 21.0511, }, { wikidata = "Q997018", name = "Czersk", text_display = "[[w:Czersk|Czersk]]", lat = 51.9588, long = 21.2311, }, { wikidata = "Q9391105", name = "Czersk land", text_display = "[[w:Czersk land|Czersk land]]", lat = 51.9588, long = 21.2311, }, { wikidata = "Q1025875", name = "Czerwińsk nad Wisłą", text_display = "[[w:Czerwińsk nad Wisłą|Czerwińsk nad Wisłą]]", lat = 52.3944, long = 20.3094, }, { wikidata = "Q3040160", name = "Drwalew", text_display = "[[w:Drwalew, Masovian Voivodeship|Drwalew]]", lat = 51.8991, long = 21.0168, }, { wikidata = "Q924007", name = "Garwolin County", text_display = "[[w:Garwolin County|Garwolin County]]", lat = 51.9, long = 21.6333, }, { wikidata = "Q5590426", name = "Gończyce", text_display = "[[w:Gończyce|Gończyce]]", lat = 51.7833, long = 21.7333, }, { wikidata = "Q983735", name = "Gostynin", text_display = "[[w:Gostynin|Gostynin]]", lat = 52.4294, long = 19.4619, }, { wikidata = "Q1993160", name = "Goszczyn", text_display = "[[w:Goszczyn|Goszczyn]]", lat = 51.7167, long = 20.85, }, { wikidata = "Q691982", name = "Grobice", text_display = "[[w:Grobice|Grobice]]", lat = 51.9219, long = 21.1149, }, { wikidata = "Q5610039", name = "Grodzisk", text_display = "[[w:Grodzisk|Grodzisk]]", lat = 52.15, long = 21.85, }, { wikidata = "Q5611944", name = "Grudów", text_display = "[[w:Grudów|Grudów]]", lat = 52.1364, long = 20.6903, }, { wikidata = "Q947561", name = "Grójec County", text_display = "[[w:Grójec County|Grójec County]]", lat = 51.8656, long = 20.8675, }, { wikidata = "Q5627653", name = "Główczyn", text_display = "[[w:Główczyn|Główczyn]]", lat = 52.4822, long = 20.1933, }, { wikidata = "Q3894004", name = "Guzów", text_display = "[[w:Guzów|Guzów]]", lat = 52.1161, long = 20.3369, }, { wikidata = "Q1955466", name = "Iłów", text_display = "[[w:Iłów|Iłów]]", lat = 52.3333, long = 20.0167, }, { wikidata = "Q6122759", name = "Jagodne", text_display = "[[w:Jagodne|Jagodne]]", lat = 51.7433, long = 22.0103, }, { wikidata = "Q6125766", name = "Jakusze", text_display = "[[w:Jakusze|Jakusze]]", lat = 52.0311, long = 22.6003, }, { wikidata = "Q6380088", name = "Kawęczyn", text_display = "[[w:Kawęczyn|Kawęczyn]]", lat = 51.6731, long = 21.5842, }, { wikidata = "Q953221", name = "Kobyłka", text_display = "[[w:Kobyłka|Kobyłka]]", lat = 52.3395, long = 21.196, }, { wikidata = "Q991819", name = "Kock", text_display = "[[w:Kock|Kock]]", lat = 51.6413, long = 22.448, }, { wikidata = "Q2060255", name = "Kołbiel", text_display = "[[w:Kołbiel|Kołbiel]]", lat = 52.0667, long = 21.4833, }, { wikidata = "Q3200116", name = "Krężel", text_display = "[[w:Krężel, Masovian Voivodeship|Krężel]]", lat = 51.8645, long = 21.0955, }, { wikidata = "Q6438859", name = "Kromnów", text_display = "[[w:Kromnów, Masovian Voivodeship|Kromnów]]", lat = 52.3778, long = 20.3364, }, { wikidata = "Q3885463", name = "Książenice", text_display = "[[w:Książenice|Książenice]]", lat = 52.0775, long = 20.6969, }, { wikidata = "Q5213964", name = "Kuflew", text_display = "[[w:Kuflew|Kuflew]]", lat = 52.1, long = 21.8, }, { wikidata = "Q2347920", name = "Latowicz", text_display = "[[w:Latowicz|Latowicz]]", lat = 52.0264, long = 21.8083, }, { wikidata = "Q6554174", name = "Linin", text_display = "[[w:Linin|Linin]]", lat = 51.9348, long = 21.177, }, { wikidata = "Q3274290", name = "Machcin", text_display = "[[w:Machcin, Masovian Voivodeship|Machcin]]", lat = 51.9167, long = 21.15, }, { wikidata = "Q2616257", name = "Maciejowice", text_display = "[[w:Maciejowice|Maciejowice]]", lat = 51.6922, long = 21.5534, }, { wikidata = "Q6837984", name = "Michrów", text_display = "[[w:Michrów|Michrów]]", lat = 51.95, long = 20.8, }, { wikidata = "Q4196381", name = "Misie", text_display = "[[w:Misie|Misie]]", lat = 51.9619, long = 22.6867, }, { wikidata = "Q34267", name = "Międzyrzec Podlaski", text_display = "[[w:Międzyrzec Podlaski|Międzyrzec Podlaski]]", lat = 51.9833, long = 22.8, }, { wikidata = "Q477955", name = "Mszczonów", text_display = "[[w:Mszczonów|Mszczonów]]", lat = 51.9742, long = 20.5267, }, { wikidata = "Q1020457", name = "Nadarzyn", text_display = "[[w:Nadarzyn|Nadarzyn]]", lat = 52.0944, long = 20.8078, }, { wikidata = "Q1764143", name = "Nowe Kozłowice", text_display = "[[w:Nowe Kozłowice|Nowe Kozłowice]]", lat = 52.0833, long = 20.4333, }, { wikidata = "Q7081663", name = "Ojrzanów", text_display = "[[w:Ojrzanów, Masovian Voivodeship|Ojrzanów]]", lat = 52, long = 20.75, }, { wikidata = "Q5213320", name = "Okuniew", text_display = "[[w:Okuniew|Okuniew]]", lat = 52.2667, long = 21.3, }, { wikidata = "Q3809411", name = "Opole, Parczew County", text_display = "[[w:Opole, Parczew County|Opole, Parczew County]]", lat = 51.6833, long = 23.2211, }, { wikidata = "Q1764266", name = "Oryszew-Osada", text_display = "[[w:Oryszew-Osada|Oryszew-Osada]]", lat = 52.1167, long = 20.3792, }, { wikidata = "Q2501167", name = "Osieck", text_display = "[[w:Osieck|Osieck]]", lat = 51.9665, long = 21.4191, }, { wikidata = "Q7107877", name = "Ostrożeń Pierwszy", text_display = "[[w:Ostrożeń Pierwszy|Ostrożeń Pierwszy]]", lat = 51.7897, long = 21.7511, }, { wikidata = "Q93971", name = "Ozorów", text_display = "[[w:Ozorów|Ozorów]]", lat = 52.1236, long = 22.0306, }, { wikidata = "Q741876", name = "Piaseczno", text_display = "[[w:Piaseczno|Piaseczno]]", lat = 52.0747, long = 21.0271, }, { wikidata = "Q3382613", name = "Pieczyska", text_display = "[[w:Pieczyska|Pieczyska]]", lat = 51.9217, long = 21.0203, }, { wikidata = "Q7207020", name = "Podole", text_display = "[[w:Podole, Masovian Voivodeship|Podole]]", lat = 51.9247, long = 20.8480, }, { wikidata = "Q936912", name = "Powsin", text_display = "[[w:Powsin|Powsin]]", lat = 52.1294, long = 21.1122, }, { wikidata = "Q104725", name = "Płock", text_display = "[[w:Płock|Płock]]", lat = 52.55, long = 19.7, }, { wikidata = "Q947495", name = "Płock County", text_display = "[[w:Płock County|Płock County]]", lat = 52.55, long = 19.7, }, { wikidata = "Q2181566", name = "Płock Governorate", text_display = "[[w:Płock Governorate|Płock Governorate]]", lat = 52.55, long = 19.7, }, { wikidata = "Q11405685", name = "Płock Voivodeship", text_display = "[[w:Płock Voivodeship|Płock Voivodeship]]", lat = 52.55, long = 19.7, }, { wikidata = "Q3087793", name = "Prażmów", text_display = "[[w:Prażmów|Prażmów]]", lat = 51.9422, long = 20.9537, }, { wikidata = "Q4196672", name = "Puchacze", text_display = "[[w:Puchacze|Puchacze]]", lat = 52.0056, long = 22.9067, }, { wikidata = "Q3814810", name = "Radwanków Szlachecki", text_display = "[[w:Radwanków Szlachecki|Radwanków Szlachecki]]", lat = 51.9521, long = 21.2904, }, { wikidata = "Q913458", name = "Radzyń Podlaski County", text_display = "[[w:Radzyń Podlaski County|Radzyń Podlaski County]]", lat = 51.7828, long = 22.6242, }, { wikidata = "Q5174807", name = "Redzyńskie", text_display = "[[w:Redzyńskie|Redzyńskie]]", lat = 51.9865, long = 21.8067, }, { wikidata = "Q3442724", name = "Rososz", text_display = "[[w:Rososz|Rososz]]", lat = 51.9064, long = 21.1764, }, { wikidata = "Q3442725", name = "Rososzka", text_display = "[[w:Rososzka|Rososzka]]", lat = 51.8972, long = 21.1901, }, { wikidata = "Q2050934", name = "Rościszewo", text_display = "[[w:Rościszewo|Rościszewo]]", lat = 52.9, long = 19.7833, }, { wikidata = "Q4196846", name = "Rogoźniczka", text_display = "[[w:Rogoźniczka|Rogoźniczka]]", lat = 52.0294, long = 22.8822, }, { wikidata = "Q7377742", name = "Rudzieniec", text_display = "[[w:Rudzieniec|Rudzieniec]]", lat = 51.7333, long = 22.9667, }, { wikidata = "Q7410007", name = "Samogoszcz", text_display = "[[w:Samogoszcz, Masovian Voivodeship|Samogoszcz]]", lat = 51.7556, long = 21.4623, }, { wikidata = "Q319813", name = "Siedlce", text_display = "[[w:Siedlce|Siedlce]]", lat = 52.1833, long = 22.2833, }, { wikidata = "Q379162", name = "Siedlce County", text_display = "[[w:Siedlce County|Siedlce County]]", lat = 52.165, long = 22.2714, }, { wikidata = "Q2473698", name = "Siedlce Governorate", text_display = "[[w:Siedlce Governorate|Siedlce Governorate]]", lat = 52.15, long = 22.2667, }, { wikidata = "Q7511239", name = "Sierakówek", text_display = "[[w:Sierakówek|Sierakówek]]", lat = 52.3666, long = 19.4333, }, { wikidata = "Q2118365", name = "Skórzec", text_display = "[[w:Skórzec|Skórzec]]", lat = 52.1167, long = 22.1333, }, { wikidata = "Q7536694", name = "Skrzany", text_display = "[[w:Skrzany, Masovian Voivodeship|Skrzany]]", lat = 52.35, long = 19.4833, }, { wikidata = "Q7550058", name = "Sobieszyn", text_display = "[[w:Sobieszyn|Sobieszyn]]", lat = 51.6, long = 22.1667, }, { wikidata = "Q250485", name = "Sochaczew", text_display = "[[w:Sochaczew|Sochaczew]]", lat = 52.225, long = 20.2333, }, { wikidata = "Q7555373", name = "Sokołów", text_display = "[[w:Sokołów|Sokołów]]", lat = 52.1333, long = 20.8667, }, { wikidata = "Q7555458", name = "Sokół", text_display = "[[w:Sokół|Sokół]]", lat = 51.7556, long = 21.7144, }, { wikidata = "Q7618287", name = "Stoczek", text_display = "[[w:Stoczek|Stoczek]]", lat = 51.8697, long = 21.4939, }, { wikidata = "Q219106", name = "Stoczek Łukowski", text_display = "[[w:Stoczek Łukowski|Stoczek Łukowski]]", lat = 51.9667, long = 21.9667, }, { wikidata = "Q2336806", name = "Stromiec", text_display = "[[w:Stromiec|Stromiec]]", lat = 51.6333, long = 21.0833, }, { wikidata = "Q7651491", name = "Sułkowice", text_display = "[[w:Sułkowice, Masovian Voivodeship|Sułkowice]]", lat = 52.4333, long = 20.6167, }, { wikidata = "Q1922330", name = "Tarczyn", text_display = "[[w:Tarczyn|Tarczyn]]", lat = 51.9786, long = 20.8336, }, { wikidata = "Q7690689", name = "Tchórzew", text_display = "[[w:Tchórzew|Tchórzew]]", lat = 52.0942, long = 22.5081, }, { wikidata = "Q9361487", name = "Tretki", text_display = "[[w:Tretki|Tretki]]", lat = 52.2357, long = 19.7351, }, { wikidata = "Q7849218", name = "Trębki", text_display = "[[w:Trębki|Trębki]]", lat = 52.3203, long = 19.5358, }, { wikidata = "Q1917218", name = "Trzebieszów", text_display = "[[w:Trzebieszów|Trzebieszów]]", lat = 51.9833, long = 22.55, }, { wikidata = "Q7850997", name = "Tuchowicz", text_display = "[[w:Tuchowicz|Tuchowicz]]", lat = 51.8903, long = 22.2217, }, { wikidata = "Q276857", name = "Warka", text_display = "[[w:Warka|Warka]]", lat = 51.7851, long = 21.1834, }, { wikidata = "Q3815280", name = "Warszawice", text_display = "[[w:Warszawice|Warszawice]]", lat = 51.9709, long = 21.3094, }, { wikidata = "Q3550300", name = "Wągrodno", text_display = "[[w:Wągrodno|Wągrodno]]", lat = 51.9573, long = 21.0259, }, { wikidata = "Q3567953", name = "Widok", text_display = "[[w:Widok, Masovian Voivodeship|Widok]]", lat = 51.8964, long = 21.1083, }, { wikidata = "Q7999306", name = "Wierzchowiny", text_display = "[[w:Wierzchowiny|Wierzchowiny]]", lat = 51.8272, long = 22.5344, }, { wikidata = "Q1887504", name = "Wilanów", text_display = "[[w:Wilanów|Wilanów]]", lat = 52.1667, long = 21.0833, }, { wikidata = "Q655956", name = "Wiskitki", text_display = "[[w:Wiskitki|Wiskitki]]", lat = 52.0883, long = 20.3871, }, { wikidata = "Q2387940", name = "Wodynie", text_display = "[[w:Wodynie|Wodynie]]", lat = 52.05, long = 21.9667, }, { wikidata = "Q2879227", name = "Wojcieszków", text_display = "[[w:Wojcieszków|Wojcieszków]]", lat = 51.7667, long = 22.3167, }, { wikidata = "Q8029612", name = "Wola Rębkowska", text_display = "[[w:Wola Rębkowska|Wola Rębkowska]]", lat = 51.9, long = 21.5667, }, { wikidata = "Q569804", name = "Wyszogród", text_display = "[[w:Wyszogród|Wyszogród]]", lat = 52.3917, long = 20.2, }, { wikidata = "Q144773", name = "Zakroczym", text_display = "[[w:Zakroczym|Zakroczym]]", lat = 52.4333, long = 20.6167, }, { wikidata = "Q8065353", name = "Zalesie", text_display = "[[w:Zalesie|Zalesie]]", lat = 51.89, long = 20.8281, }, { wikidata = "Q736472", name = "Zawady", text_display = "[[w:Zawady|Zawady]]", lat = 52.2283, long = 22.6167, }, { wikidata = "Q9397274", name = "Żbików", text_display = "[[w:Żbików|Żbików]]", lat = 52.1806, long = 20.7856, }, { wikidata = "Q5649942", name = "Łukowiec", text_display = "[[w:Łukowiec|Łukowiec]]", lat = 52.0514, long = 21.8525, }, { wikidata = "Q384244", name = "Łuków", text_display = "[[w:Łuków|Łuków]]", lat = 51.9167, long = 22.3833, }, { wikidata = "Q914615", name = "Łuków County", text_display = "[[w:Łuków County|Łuków County]]", lat = 51.9167, long = 22.3833, }, { wikidata = "Q167405", name = "Śniechy", text_display = "[[w:Śniechy|Śniechy]]", lat = 52.8333, long = 19.5167, }, { wikidata = "Q8083032", name = "Żabokliki, Siedlce County", text_display = "[[w:Żabokliki, Siedlce County|Żabokliki, Siedlce County]]", lat = 52.1833, long = 22.3167, }, { wikidata = "Q8083188", name = "Żelazna", text_display = "[[w:Żelazna|Żelazna]]", lat = 52.0033, long = 21.5781, }, { wikidata = "Q393091", name = "Żelechów", text_display = "[[w:Żelechów|Żelechów]]", lat = 51.8, long = 21.9, }, { wikidata = "Q82046", name = "Żeliszew Duży", text_display = "[[w:Żeliszew Duży|Żeliszew Duży]]", lat = 52.1341, long = 21.9903, }, { wikidata = "Q393228", name = "Żychlin", text_display = "[[w:Żychlin|Żychlin]]", lat = 52.2453, long = 19.6236, }, { wikidata = "Q393251", name = "Żyradów", text_display = "[[w:Żyradów|Żyradów]]", lat = 52.05, long = 20.4333, }, { wikidata = "Q3594380", name = "Żyrów", text_display = "[[w:Żyrów|Żyrów]]", lat = 51.8854, long = 20.9689, }, }, { wikidata = "Q192666", name = "Podlachia", text_display = "[[w:Podlachia dialect|Podlachia]]", lat = 52.4, long = 22.65, { wikidata = "Q192666", name = "Białowieża Forest", text_display = "[[w:Białowieża Forest|Białowieża Forest]]", lat = 52.75, long = 23.95, }, { wikidata = "Q931478", name = "Bielsk County", text_display = "[[w:Bielsk County|Bielsk County]]", lat = 52.7667, long = 23.2, }, { wikidata = "Q769631", name = "Drohiczyn", text_display = "[[w:Drohiczyn|Drohiczyn]]", lat = 52.4, long = 22.65, }, { wikidata = "Q5559863", name = "Giełczyn", text_display = "[[w:Giełczyn|Giełczyn]]", lat = 53.23, long = 22.4819, }, { wikidata = "Q1526670", name = "Jabłonna Lacka", text_display = "[[w:Jabłonna Lacka|Jabłonna Lacka]]", lat = 52.4667, long = 22.4333, }, { wikidata = "Q2682641", name = "Kodeń", text_display = "[[w:Kodeń|Kodeń]]", lat = 51.9, long = 23.6, }, { wikidata = "Q2539886", name = "Konstantynów", text_display = "[[w:Konstantynów|Konstantynów]]", lat = 52.2078, long = 23.0853, }, { wikidata = "Q2539886", name = "Konstantynów County", text_display = "[[w:Konstantynów County|Konstantynów County]]", lat = 52.2078, long = 23.0853, }, { wikidata = "Q2600062", name = "Kuzawka", text_display = "[[w:Kuzawka|Kuzawka]]", lat = 51.7369, long = 23.5292, }, { wikidata = "Q1913327", name = "Łosice", text_display = "[[w:Łosice|Łosice]]", lat = 52.2125, long = 22.7189, }, { wikidata = "Q4313126", name = "Narew", text_display = "[[w:Narew|Narew]]", lat = 52.9128, long = 23.5208, }, { wikidata = "Q5733896", name = "Raczki", text_display = "[[w:Raczki, Masovian Voivodeship|Raczki]]", lat = 52.2333, long = 23.0333, }, { wikidata = "Q1906266", name = "Rajgród", text_display = "[[w:Rajgród|Rajgród]]", lat = 53.7303, long = 22.6925, }, { wikidata = "Q2792464", name = "Stara Kornica", text_display = "[[w:Stara Kornica|Stara Kornica]]", lat = 52.1753, long = 22.9431, }, { wikidata = "Q941451", name = "Tykocin", text_display = "[[w:Tykocin|Tykocin]]", lat = 53.2, long = 22.7833, }, { wikidata = "Q5617306", name = "Wnory-Kużele", text_display = "[[w:Wnory-Kużele|Wnory-Kużele]]", lat = 53.0539, long = 22.5719, }, { wikidata = "Q5746209", name = "Łopienie-Jeże", text_display = "[[w:Łopienie-Jeże|Łopienie-Jeże]]", lat = 52.8761, long = 22.7267, }, }, { wikidata = "Q9283007", name = "Suwałki", text_display = "[[w:Suwałki dialect|Suwałki]]", lat = 54.1, long = 22.9333, { wikidata = "Q464763", name = "Augustów", text_display = "[[w:Augustów|Augustów]]", lat = 53.85, long = 22.9667, }, { wikidata = "Q933349", name = "Augustów Governorate", text_display = "[[w:Augustów Governorate|Augustów Governorate]]", lat = 53.85, long = 22.9667, }, { wikidata = "Q3692751", name = "Jesionowo", text_display = "[[w:Jesionowo|Jesionowo]]", lat = 53.7622, long = 23.5081, }, { wikidata = "Q5758762", name = "Sobolewo", text_display = "[[w:Sobolewo|Sobolewo]]", lat = 54.07, long = 22.98, }, { wikidata = "Q1525048", name = "Suwałki Governorate", text_display = "[[w:Suwałki Governorate|Suwałki Governorate]]", lat = 54.0833, long = 22.9333, }, { wikidata = "Q2200391", name = "Szypliszki", text_display = "[[w:Szypliszki|Szypliszki]]", lat = 54.25, long = 23.0667, }, { wikidata = "Q5758091", name = "Wierzbiszki", text_display = "[[w:Wierzbiszki|Wierzbiszki]]", lat = 54.3011, long = 22.9827, }, { wikidata = "Q5760219", name = "Żarnowo Pierwsze", text_display = "[[w:Żarnowo Pierwsze|Żarnowo Pierwsze]]", lat = 53.8119, long = 22.9138, }, }, { wikidata = "Q4264902", name = "Łowicz", text_display = "[[w:Łowicz dialect|Łowicz]]", lat = 52.1, long = 19.9333, { wikidata = "Q672235", name = "Arkadia", text_display = "[[w:Arkadia|Arkadia]]", lat = 52.0667, long = 20, }, { wikidata = "Q4879318", name = "Bednary", text_display = "[[w:Bednary|Bednary]]", lat = 52.1169, long = 20.0603, }, { wikidata = "Q2511967", name = "Bełchów", text_display = "[[w:Bełchów|Bełchów]]", lat = 52.0333, long = 20.0667, }, { wikidata = "Q5005514", name = "Bąków Górny", text_display = "[[w:Bąków Górny|Bąków Górny]]", lat = 52.15, long = 19.7333, }, { wikidata = "Q5005513", name = "Bąków Dolny", text_display = "[[w:Bąków Dolny|Bąków Dolny]]", lat = 52.15, long = 19.7333, }, { wikidata = "Q2888826", name = "Bocheń", text_display = "[[w:Bocheń|Bocheń]]", lat = 52.1047, long = 19.8139, }, { wikidata = "Q4935979", name = "Bobrowniki", text_display = "[[w:Bobrowniki|Bobrowniki]]", lat = 52.0644, long = 20.0194, }, { wikidata = "Q4935948", name = "Bobrowa", text_display = "[[w:Bobrowa|Bobrowa]]", lat = 51.9353, long = 19.9047, }, { wikidata = "Q4936353", name = "Boczki", text_display = "[[w:Boczki|Boczki]]", lat = 52.1667, long = 20.0167, }, { wikidata = "Q4937720", name = "Bogoria Górna", text_display = "[[w:Bogoria Górna|Bogoria Górna]]", lat = 52.1333, long = 19.7667, }, { wikidata = "Q4937722", name = "Bogoria Dolna", text_display = "[[w:Bogoria Dolna|Bogoria Dolna]]", lat = 52.1333, long = 19.75, }, { wikidata = "Q627392", name = "Bolimów", text_display = "[[w:Bolimów|Bolimów]]", lat = 52.0667, long = 20.1667, }, { wikidata = "Q4946892", name = "Borysław", text_display = "[[w:Borysław|Borysław]]", lat = 51.8464, long = 20.0997, }, { wikidata = "Q2369061", name = "Byczki", text_display = "[[w:Byczki|Byczki]]", lat = 51.8736, long = 20.0414, }, { wikidata = "Q2869023", name = "Białynin", text_display = "[[w:Białynin|Białynin]]", lat = 51.8075, long = 20.0136, }, { wikidata = "Q392339", name = "Bielawy", text_display = "[[w:Bielawy|Bielawy]]", lat = 52.0667, long = 19.65, }, { wikidata = "Q2758076", name = "Chąśno", text_display = "[[w:Chąśno|Chąśno]]", lat = 52.2, long = 19.9333, }, { wikidata = "Q5114373", name = "Chruślin", text_display = "[[w:Chruślin|Chruślin]]", lat = 52.0667, long = 19.75, }, { wikidata = "Q5201729", name = "Czatolin", text_display = "[[w:Czatolin|Czatolin]]", lat = 51.9833, long = 19.8833, }, { wikidata = "Q5320551", name = "Dąbkowice", text_display = "[[w:Dąbkowice|Dąbkowice]]", lat = 52.3076, long = 19.4937, }, { wikidata = "Q1828937", name = "Domaniewice", text_display = "[[w:Domaniewice|Domaniewice]]", lat = 52, long = 19.8, }, { wikidata = "Q5309844", name = "Drzewce", text_display = "[[w:Drzewce|Drzewce]]", lat = 51.8936, long = 19.9806, }, { wikidata = "Q8039527", name = "Duplice Duże", text_display = "[[w:Duplice Duże|Duplice Duże]]", lat = 52.1833, long = 19.8667, }, { wikidata = "Q7253417", name = "Duplice Małe", text_display = "[[w:Duplice Małe|Duplice Małe]]", lat = 52.2, long = 19.85, }, { wikidata = "Q5319817", name = "Dzierzgów", text_display = "[[w:Dzierzgów|Dzierzgów]]", lat = 52.0461, long = 20.0344, }, { wikidata = "Q5627311", name = "Gągolin Północny", text_display = "[[w:Gągolin Północny|Gągolin Północny]]", lat = 52.1833, long = 20.0667, }, { wikidata = "Q5627312", name = "Gągolin Południowy", text_display = "[[w:Gągolin Południowy|Gągolin Południowy]]", lat = 52.1667, long = 20.0667, }, { wikidata = "Q2895741", name = "Głuchów", text_display = "[[w:Głuchów|Głuchów]]", lat = 51.7833, long = 20.0667, }, { wikidata = "Q2830900", name = "Godzianów", text_display = "[[w:Godzianów|Godzianów]]", lat = 51.8833, long = 20.0333, }, { wikidata = "Q5580543", name = "Goleńsko", text_display = "[[w:Goleńsko|Goleńsko]]", lat = 52.15, long = 19.9333, }, { wikidata = "Q7601674", name = "Grudze", text_display = "[[w:Grudze|Grudze]]", lat = 52.0365, long = 19.907, }, { wikidata = "Q2509867", name = "Guźnia", text_display = "[[w:Guźnia|Guźnia]]", lat = 52.0836, long = 19.8125, }, { wikidata = "Q5625707", name = "Gzów", text_display = "[[w:Gzów|Gzów]]", lat = 51.8514, long = 20.0144, }, { wikidata = "Q11715766", name = "Jackowice", text_display = "[[w:Jackowice|Jackowice]]", lat = 52.1692, long = 19.7908, }, { wikidata = "Q550139", name = "Jacochów", text_display = "[[w:Jacochów|Jacochów]]", lat = 51.9869, long = 19.9814, }, { wikidata = "Q6148116", name = "Jamno", text_display = "[[w:Jamno|Jamno]]", lat = 52.055, long = 19.8958, }, { wikidata = "Q6154720", name = "Janisławice", text_display = "[[w:Janisławice|Janisławice]]", lat = 51.8456, long = 20.055, }, { wikidata = "Q6155358", name = "Janowice", text_display = "[[w:Janowice|Janowice]]", lat = 52.1153, long = 20.0339, }, { wikidata = "Q11723247", name = "Jastrzębia", text_display = "[[w:Jastrzębia|Jastrzębia]]", lat = 52.0992, long = 19.9067, }, { wikidata = "Q6161521", name = "Jasień", text_display = "[[w:Jasień|Jasień]]", lat = 51.8399, long = 19.8401, }, { wikidata = "Q15232998", name = "Kalenice", text_display = "[[w:Kalenice|Kalenice]]", lat = 51.9592, long = 19.8903, }, { wikidata = "Q6373472", name = "Karsznice", text_display = "[[w:Karsznice|Karsznice]]", lat = 52.2333, long = 19.8667, }, { wikidata = "Q6420760", name = "Klewków", text_display = "[[w:Klewków|Klewków]]", lat = 52.1356, long = 19.9114, }, { wikidata = "Q6424950", name = "Kocierzew", text_display = "[[w:Kocierzew|Kocierzew]]", lat = 52.2319, long = 20.0242, }, { wikidata = "Q3102131", name = "Kompina", text_display = "[[w:Kompina|Kompina]]", lat = 52.1361, long = 20.0781, }, { wikidata = "Q6439057", name = "Krosnowa", text_display = "[[w:Krosnowa|Krosnowa]]", lat = 51.8619, long = 19.9286, }, { wikidata = "Q6440658", name = "Krężce", text_display = "[[w:Krężce|Krężce]]", lat = 51.9336, long = 20.0792, }, { wikidata = "Q2020341", name = "Lipce", text_display = "[[w:Lipce|Lipce]]", lat = 51.8833, long = 19.9333, }, { wikidata = "Q6558905", name = "Lisiewice", text_display = "[[w:Lisiewice|Lisiewice]]", lat = 52.0642, long = 19.7794, }, { wikidata = "Q6695204", name = "Lubianków", text_display = "[[w:Lubianków|Lubianków]]", lat = 51.95, long = 19.7833, }, { wikidata = "Q8080410", name = "Łaguszew", text_display = "[[w:Łaguszew|Łaguszew]]", lat = 52.15, long = 19.9667, }, { wikidata = "Q9394208", name = "Łaźniki", text_display = "[[w:Łaźniki|Łaźniki]]", lat = 52.1833, long = 19.7833, }, { wikidata = "Q2261533", name = "Łyszkowice", text_display = "[[w:Łyszkowice|Łyszkowice]]", lat = 51.9833, long = 19.9167, }, { wikidata = "Q6799471", name = "Małszyce", text_display = "[[w:Małszyce|Małszyce]]", lat = 52.1328, long = 19.9211, }, { wikidata = "Q2216153", name = "Maurzyce", text_display = "[[w:Maurzyce|Maurzyce]]", lat = 52.1347, long = 19.8533, }, { wikidata = "Q2801191", name = "Maków", text_display = "[[w:Maków|Maków]]", lat = 51.9333, long = 20.0333, }, { wikidata = "Q6785567", name = "Mastki", text_display = "[[w:Mastki|Mastki]]", lat = 52.2086, long = 19.8964, }, { wikidata = "Q6762132", name = "Marianka", text_display = "[[w:Marianka|Marianka]]", lat = 51.85, long = 20.25, }, { wikidata = "Q6781818", name = "Marywil", text_display = "[[w:Marywil|Marywil]]", lat = 52.1, long = 19.65, }, { wikidata = "Q6885207", name = "Miłochniewice", text_display = "[[w:Miłochniewice|Miłochniewice]]", lat = 51.9156, long = 20.0908, }, { wikidata = "Q6837980", name = "Michowice", text_display = "[[w:Michowice|Michowice]]", lat = 51.8258, long = 20.0975, }, { wikidata = "Q6949086", name = "Mysłaków", text_display = "[[w:Mysłaków|Mysłaków]]", lat = 52.0897, long = 20.0158, }, { wikidata = "Q981198", name = "Mystkowice", text_display = "[[w:Mystkowice|Mystkowice]]", lat = 52.1, long = 19.7833, }, { wikidata = "Q6930214", name = "Mszadla", text_display = "[[w:Mszadla|Mszadla]]", lat = 51.8994, long = 19.8983, }, { wikidata = "Q7031260", name = "Niedźwiada", text_display = "[[w:Niedźwiada|Niedźwiada]]", lat = 52.15, long = 19.9167, }, { wikidata = "Q11791757", name = "Niespusza", text_display = "[[w:Niespusza|Niespusza]]", lat = 52.2156, long = 19.8606, }, { wikidata = "Q7107943", name = "Ostrów", text_display = "[[w:Ostrów|Ostrów]]", lat = 52.1044, long = 19.8475, }, { wikidata = "Q7107871", name = "Ostrołęka, Zgierz County", text_display = "[[w:Ostrołęka, Zgierz County|Ostrołęka, Zgierz County]]", lat = 51.9667, long = 19.7667, }, { wikidata = "Q7106775", name = "Osiek, Łowicz County", text_display = "[[w:Osiek, Łowicz County|Osiek]]", lat = 52.25, long = 19.9667, }, { wikidata = "Q7108971", name = "Otolice", text_display = "[[w:Otolice|Otolice]]", lat = 52.1167, long = 19.8833, }, { wikidata = "Q3896187", name = "Parma", text_display = "[[w:Parma|Parma]]", lat = 52.0564, long = 19.9975, }, { wikidata = "Q7145170", name = "Patoki", text_display = "[[w:Patoki|Patoki]]", lat = 52.1403, long = 20.1, }, { wikidata = "Q7200289", name = "Placencja", text_display = "[[w:Placencja|Placencja]]", lat = 52.0667, long = 19.9833, }, { wikidata = "Q7265062", name = "Płaskocin", text_display = "[[w:Płaskocin|Płaskocin]]", lat = 52.15, long = 20.0167, }, { wikidata = "Q7265189", name = "Płyćwia", text_display = "[[w:Płyćwia|Płyćwia]]", lat = 51.9208, long = 20.0164, }, { wikidata = "Q7229852", name = "Popów", text_display = "[[w:Popów|Popów]]", lat = 52.1216, long = 19.9837, }, { wikidata = "Q7253490", name = "Przezwiska", text_display = "[[w:Przezwiska|Przezwiska]]", lat = 52.1167, long = 19.65, }, { wikidata = "Q7193806", name = "Pilaszków", text_display = "[[w:Pilaszków|Pilaszków]]", lat = 52.0914, long = 19.8792, }, { wikidata = "Q7197104", name = "Piotrowice, Łowicz County", text_display = "[[w:Piotrowice, Łowicz County|Piotrowice, Łowicz County]]", lat = 52.0667, long = 19.7333, }, { wikidata = "Q7303399", name = "Raczul", text_display = "[[w:Raczul|Raczul]]", lat = 51.85, long = 20.0667, }, { wikidata = "Q7316860", name = "Retki", text_display = "[[w:Retki|Retki]]", lat = 52.1667, long = 19.8333, }, { wikidata = "Q7316869", name = "Retniowiec", text_display = "[[w:Retniowiec|Retniowiec]]", lat = 51.9333, long = 19.95, }, { wikidata = "Q7359638", name = "Rogóźno", text_display = "[[w:Rogóźno|Rogóźno]]", lat = 52.0358, long = 19.8228, }, { wikidata = "Q392087", name = "Rulice", text_display = "[[w:Rulice|Rulice]]", lat = 52.05, long = 19.7, }, { wikidata = "Q7386652", name = "Różyce", text_display = "[[w:Różyce|Różyce]]", lat = 52.2333, long = 19.9833, }, { wikidata = "Q7385823", name = "Rząśno", text_display = "[[w:Rząśno|Rząśno]]", lat = 52.1667, long = 19.75, }, { wikidata = "Q251389", name = "Rzeczyca", text_display = "[[w:Rzeczyca|Rzeczyca]]", lat = 51.5833, long = 20.2833, }, { wikidata = "Q7421193", name = "Sapy", text_display = "[[w:Sapy|Sapy]]", lat = 52.0167, long = 19.75, }, { wikidata = "Q7533960", name = "Skaratki", text_display = "[[w:Skaratki|Skaratki]]", lat = 52.0297, long = 19.7878, }, { wikidata = "Q2734", name = "Skierniewice", text_display = "[[w:Skierniewice|Skierniewice]]", lat = 51.9569, long = 20.143, }, { wikidata = "Q7536521", name = "Skowroda", text_display = "[[w:Skowroda|Skowroda]]", lat = 52.2256, long = 19.9371, }, { wikidata = "Q7536079", name = "Skoczykłody", text_display = "[[w:Skoczykłody|Skoczykłody]]", lat = 51.8, long = 20.1833, }, { wikidata = "Q7667328", name = "Słomków", text_display = "[[w:Słomków|Słomków]]", lat = 51.9583, long = 19.9967, }, { wikidata = "Q2685961", name = "Słupia, Skierniewice County", text_display = "[[w:Słupia, Skierniewice County|Słupia, Skierniewice County]]", lat = 51.85, long = 19.9667, }, { wikidata = "Q7550112", name = "Sobocka Wieś", text_display = "[[w:Sobocka Wieś|Sobocka Wieś]]", lat = 52.1, long = 19.7333, }, { wikidata = "Q7586577", name = "Sromów", text_display = "[[w:Sromów|Sromów]]", lat = 52.15, long = 20.0333, }, { wikidata = "Q7595893", name = "Stachlew", text_display = "[[w:Stachlew|Stachlew]]", lat = 52.0064, long = 20.0258, }, { wikidata = "Q7625299", name = "Strugienice", text_display = "[[w:Strugienice|Strugienice]]", lat = 52.1167, long = 19.8, }, { wikidata = "Q7664413", name = "Szczudłów", text_display = "[[w:Szczudłów|Szczudłów]]", lat = 52.1186, long = 19.8775, }, { wikidata = "Q7665030", name = "Szymanowice", text_display = "[[w:Szymanowice|Szymanowice]]", lat = 52.15, long = 19.8333, }, { wikidata = "Q7510819", name = "Sielce", text_display = "[[w:Sielce|Sielce]]", lat = 51.9867, long = 20.0286, }, { wikidata = "Q7511182", name = "Sierakowice", text_display = "[[w:Sierakowice|Sierakowice]]", lat = 52.0081, long = 20.0689, }, { wikidata = "Q7511752", name = "Sierzniki", text_display = "[[w:Sierzniki|Sierzniki]]", lat = 52.1667, long = 19.95, }, { wikidata = "Q7511742", name = "Sierzchów", text_display = "[[w:Sierzchów|Sierzchów]]", lat = 52.1167, long = 20.1167, }, { wikidata = "Q8082189", name = "Swieryż", text_display = "[[w:Swieryż|Swieryż]]", lat = 52.1553, long = 19.8661, }, { wikidata = "Q764534", name = "Świące", text_display = "[[w:Świące|Świące]]", lat = 52.1167, long = 19.85, }, { wikidata = "Q7831105", name = "Traby", text_display = "[[w:Traby|Traby]]", lat = 52.0736, long = 19.7558, }, { wikidata = "Q7901617", name = "Urzecze", text_display = "[[w:Urzecze|Urzecze]]", lat = 52.1, long = 19.7667, }, { wikidata = "Q921016", name = "Wejsce", text_display = "[[w:Wejsce|Wejsce]]", lat = 52.2667, long = 19.9833, }, { wikidata = "Q8038733", name = "Wrzeczko", text_display = "[[w:Wrzeczko|Wrzeczko]]", lat = 52, long = 19.9, }, { wikidata = "Q8040595", name = "Wysokienice", text_display = "[[w:Wysokienice|Wysokienice]]", lat = 51.8, long = 20.1333, }, { wikidata = "Q7998210", name = "Wicie", text_display = "[[w:Wicie|Wicie]]", lat = 52.2, long = 20.0167, }, { wikidata = "Q7999351", name = "Wierznowice", text_display = "[[w:Wierznowice|Wierznowice]]", lat = 52.1167, long = 19.8, }, { wikidata = "Q9385399", name = "Zabostów Duży", text_display = "[[w:Zabostów Duży|Zabostów Duży]]", lat = 52.1167, long = 20.0333, }, { wikidata = "Q8063591", name = "Zabostów Mały", text_display = "[[w:Zabostów Mały|Zabostów Mały]]", lat = 52.1167, long = 20, }, { wikidata = "Q8064573", name = "Zagórze, Skierniewice County", text_display = "[[w:Zagórze, Skierniewice County|Zagórze, Skierniewice County]]", lat = 51.8808, long = 19.9425, }, { wikidata = "Q8065254", name = "Zakulin", text_display = "[[w:Zakulin|Zakulin]]", lat = 51.9833, long = 19.95, }, { wikidata = "Q321611", name = "Zduny", text_display = "[[w:Zduny|Zduny]]", lat = 52.1472, long = 19.8111, }, { wikidata = "Q8070022", name = "Zglinna", text_display = "[[w:Zglinna Duża|Zglinna]]", lat = 51.85, long = 20.1833, }, { wikidata = "Q321622", name = "Złaków Kościelny", text_display = "[[w:Złaków Kościelny|Złaków Kościelny]]", lat = 52.1981, long = 19.8119, }, { wikidata = "Q8076157", name = "Złaków Borowy", text_display = "[[w:Złaków Borowy|Złaków Borowy]]", lat = 52.2297, long = 19.7983, }, { wikidata = "Q8076173", name = "Złota", text_display = "[[w:Złota|Złota]]", lat = 51.7722, long = 20.1411, }, }, { wikidata = "Q4103917", name = "Warmia", text_display = "[[w:Warmia dialect|Warmia]]", lat = 54.3583, long = 19.6833, { wikidata = "Q8076133", name = "Ząbie", text_display = "[[w:Ząbie|Ząbie]]", lat = 53.5422, long = 20.4806, }, { wikidata = "Q2099765", name = "Pluski", text_display = "[[w:Pluski|Pluski]]", lat = 53.6, long = 20.4167, }, { wikidata = "Q7066021", name = "N Kaletka", text_display = "[[w:N Kaletka|N Kaletka]]", lat = 53.5836, long = 20.5467, }, { wikidata = "Q284611", name = "St Kaletka", text_display = "[[w:St Kaletka|St Kaletka]]", lat = 53.6008, long = 20.5444, }, { wikidata = "Q2448379", name = "Butryny", text_display = "[[w:Butryny|Butryny]]", lat = 53.6058, long = 20.5828, }, { wikidata = "Q5612477", name = "Gryźliny", text_display = "[[w:Gryźliny|Gryźliny]]", lat = 53.6167, long = 20.35, }, { wikidata = "Q8040065", name = "Wymój", text_display = "[[w:Wymój|Wymój]]", lat = 53.6607, long = 20.3501, }, { wikidata = "Q998438", name = "Stawiguda", text_display = "[[w:Stawiguda|Stawiguda]]", lat = 53.6586, long = 20.3997, }, { wikidata = "Q11813609", name = "Patryki", text_display = "[[w:Patryki|Patryki]]", lat = 53.7428, long = 20.6706, }, { wikidata = "Q6958862", name = "Naglady", text_display = "[[w:Naglady|Naglady]]", lat = 53.7508, long = 20.2772, }, { wikidata = "Q994681", name = "Gietrzwałd", text_display = "[[w:Gietrzwałd|Gietrzwałd]]", lat = 53.7475, long = 20.2356, }, { wikidata = "Q8037295", name = "Woryty", text_display = "[[w:Woryty|Woryty]]", lat = 53.7557, long = 20.2096, }, { wikidata = "Q9200872", name = "Dajtki", text_display = "[[w:Dajtki|Dajtki]]", lat = 53.7662, long = 20.4247, }, { wikidata = "Q7533783", name = "Skajboty", text_display = "[[w:Skajboty|Skajboty]]", lat = 53.7656, long = 20.6706, }, { wikidata = "Q6421469", name = "Klucznik", text_display = "[[w:Klucznik|Klucznik]]", lat = 53.7586, long = 20.7736, }, { wikidata = "Q6532200", name = "Leszno, Warmian-Masurian Voivodeship", text_display = "[[w:Leszno, Warmian-Masurian Voivodeship|Leszno]]", lat = 53.7833, long = 20.8833, }, { wikidata = "Q6172856", name = "Jedzbark", text_display = "[[w:Jedzbark|Jedzbark]]", lat = 53.786, long = 20.7565, }, { wikidata = "Q7208749", name = "Pokrzywy", text_display = "[[w:Pokrzywy|Pokrzywy]]", lat = 53.6289, long = 20.5658, }, { wikidata = "Q6895354", name = "Mokiny", text_display = "[[w:Mokiny|Mokiny]]", lat = 53.7853, long = 20.7056, }, { wikidata = "Q7253632", name = "Przykop", text_display = "[[w:Przykop|Przykop]]", lat = 53.6297, long = 20.6014, }, { wikidata = "Q82765", name = "Olsztyn", text_display = "[[w:Olsztyn|Olsztyn]]", lat = 53.78, long = 20.4942, }, { wikidata = "Q6430998", name = "Kopanki", text_display = "[[w:Kopanki|Kopanki]]", lat = 53.6292, long = 20.6303, }, { wikidata = "Q8081044", name = "Łupstych", text_display = "[[w:Łupstych|Łupstych]]", lat = 53.7817, long = 20.3739, }, { wikidata = "Q7067185", name = "Nowy Przykop", text_display = "[[w:Nowy Przykop|Nowy Przykop]]", lat = 53.6397, long = 20.5817, }, { wikidata = "Q7630224", name = "Stękiny", text_display = "[[w:Stękiny|Stękiny]]", lat = 53.7958, long = 20.2006, }, { wikidata = "Q7260963", name = "Purdka", text_display = "[[w:Purdka|Purdka]]", lat = 53.7, long = 20.7, }, { wikidata = "Q9378193", name = "Wrzesina", text_display = "[[w:Wrzesina|Wrzesina]]", lat = 53.8, long = 20.2667, }, { wikidata = "Q6757311", name = "Marcinkowo", text_display = "[[w:Marcinkowo|Marcinkowo]]", lat = 53.6972, long = 20.6758, }, { wikidata = "Q3566313", name = "Warkały", text_display = "[[w:Warkały|Warkały]]", lat = 53.9833, long = 20.0167, }, { wikidata = "Q4401131", name = "Ruś", text_display = "[[w:Ruś|Ruś]]", lat = 53.6919, long = 20.4936, }, { wikidata = "Q5621816", name = "Gutkowo", text_display = "[[w:Gutkowo|Gutkowo]]", lat = 53.8111, long = 20.3522, }, { wikidata = "Q5298706", name = "Dorotowo", text_display = "[[w:Dorotowo|Dorotowo]]", lat = 53.7, long = 20.4167, }, { wikidata = "Q6547345", name = "Likusy", text_display = "[[w:Likusy|Likusy]]", lat = 53.4833, long = 20.4833, }, { wikidata = "Q7884869", name = "Unieszewo", text_display = "[[w:Unieszewo|Unieszewo]]", lat = 53.7161, long = 20.3106, }, { wikidata = "Q9303919", name = "Ramsowo", text_display = "[[w:Ramsowo|Ramsowo]]", lat = 53.8667, long = 20.8167, }, { wikidata = "Q7665186", name = "Sząbruk", text_display = "[[w:Sząbruk|Sząbruk]]", lat = 53.7242, long = 20.335, }, { wikidata = "Q7290321", name = "Ramsówko", text_display = "[[w:Ramsówko|Ramsówko]]", lat = 53.8833, long = 20.8167, }, { wikidata = "Q6440653", name = "Kręsk", text_display = "[[w:Kręsk|Kręsk]]", lat = 53.7167, long = 20.3667, }, { wikidata = "Q807982", name = "Barczewko", text_display = "[[w:Barczewko|Barczewko]]", lat = 53.85, long = 20.5881, }, { wikidata = "Q7818512", name = "Tomaszkowo", text_display = "[[w:Tomaszkowo|Tomaszkowo]]", lat = 53.7172, long = 20.4092, }, { wikidata = "Q984354", name = "Dywity", text_display = "[[w:Dywity|Dywity]]", lat = 53.8376, long = 20.4782, }, { wikidata = "Q919162", name = "Purda", text_display = "[[w:Purda|Purda]]", lat = 53.7167, long = 20.7, }, { wikidata = "Q7306540", name = "Redykajny", text_display = "[[w:Redykajny|Redykajny]]", lat = 53.8258, long = 20.4225, }, { wikidata = "Q2385924", name = "Giławy", text_display = "[[w:Giławy|Giławy]]", lat = 53.7167, long = 20.8, }, { wikidata = "Q984351", name = "Jonkowo", text_display = "[[w:Jonkowo|Jonkowo]]", lat = 53.8281, long = 20.3106, }, { wikidata = "Q7240011", name = "Prejłowo", text_display = "[[w:Prejłowo|Prejłowo]]", lat = 53.7469, long = 20.7247, }, { wikidata = "Q6950882", name = "Mątki", text_display = "[[w:Mątki|Mątki]]", lat = 53.85, long = 20.35, }, { wikidata = "Q6349025", name = "Kajny", text_display = "[[w:Kajny|Kajny]]", lat = 53.8667, long = 20.3833, }, { wikidata = "Q833974", name = "Brąswałd", text_display = "[[w:Brąswałd|Brąswałd]]", lat = 53.8667, long = 20.4167, }, { wikidata = "Q3458859", name = "Różnowo", text_display = "[[w:Różnowo|Różnowo]]", lat = 54.03, long = 20.0389, }, { wikidata = "Q765378", name = "Ługwałd", text_display = "[[w:Ługwałd|Ługwałd]]", lat = 53.85, long = 20.4667, }, { wikidata = "Q923822", name = "Bukwałd", text_display = "[[w:Bukwałd|Bukwałd]]", lat = 53.8833, long = 20.35, }, { wikidata = "Q7581469", name = "Spręcowo", text_display = "[[w:Spręcowo|Spręcowo]]", lat = 53.8801, long = 20.4377, }, { wikidata = "Q5516481", name = "Gady", text_display = "[[w:Gady|Gady]]", lat = 53.8833, long = 20.6, }, { wikidata = "Q8026717", name = "Wipsowo", text_display = "[[w:Wipsowo|Wipsowo]]", lat = 53.8958, long = 20.7967, }, { wikidata = "Q7253844", name = "Próle", text_display = "[[w:Próle|Próle]]", lat = 53.9061, long = 20.7628, }, { wikidata = "Q2412686", name = "Lamkowo", text_display = "[[w:Lamkowo|Lamkowo]]", lat = 53.9167, long = 20.6833, }, { wikidata = "Q7281617", name = "Radosty", text_display = "[[w:Radosty|Radosty]]", lat = 53.915, long = 20.64, }, { wikidata = "Q944190", name = "Tuławki", text_display = "[[w:Tuławki|Tuławki]]", lat = 53.8967, long = 20.573, }, { wikidata = "Q1322416", name = "Sętal", text_display = "[[w:Sętal|Sętal]]", lat = 53.8978, long = 20.4772, }, { wikidata = "Q7295367", name = "Rasząg", text_display = "[[w:Rasząg|Rasząg]]", lat = 53.7928, long = 20.9086, }, { wikidata = "Q8063625", name = "Zabrodzie, Warmian-Masurian Voivodeship", text_display = "[[w:Zabrodzie, Warmian-Masurian Voivodeship|Zabrodzie]]", lat = 53.8167, long = 20.9667, }, { wikidata = "Q6959947", name = "Najdymowo", text_display = "[[w:Najdymowo|Najdymowo]]", lat = 53.8794, long = 20.8942, }, { wikidata = "Q7598034", name = "Stanclewo", text_display = "[[w:Stanclewo|Stanclewo]]", lat = 53.885, long = 21.0639, }, { wikidata = "Q11688789", name = "Bredynki", text_display = "[[w:Bredynki|Bredynki]]", lat = 53.9, long = 21.05, }, { wikidata = "Q7625544", name = "Stryjewo", text_display = "[[w:Stryjewo|Stryjewo]]", lat = 53.9167, long = 21, }, { wikidata = "Q8041179", name = "Węgój", text_display = "[[w:Węgój|Węgój]]", lat = 53.9333, long = 20.9833, }, { wikidata = "Q8080334", name = "Łabuchy", text_display = "[[w:Łabuchy|Łabuchy]]", lat = 53.9167, long = 20.9667, }, { wikidata = "Q9374572", name = "Wilimy", text_display = "[[w:Wilimy|Wilimy]]", lat = 53.895, long = 20.8544, }, { wikidata = "Q191542", name = "Zerbuń", text_display = "[[w:Zerbuń|Zerbuń]]", lat = 53.935, long = 20.8461, }, { wikidata = "Q4904672", name = "Biesowo", text_display = "[[w:Biesowo|Biesowo]]", lat = 53.9333, long = 20.8833, }, { wikidata = "Q1001496", name = "Jeziorany", text_display = "[[w:Jeziorany|Jeziorany]]", lat = 53.9759, long = 20.7476, }, { wikidata = "Q5321095", name = "Dębowo", text_display = "[[w:Dębowo|Dębowo]]", lat = 53.9242, long = 20.9881, }, { wikidata = "Q9381244", name = "Wólka Pilecka", text_display = "[[w:Wólka Pilecka|Wólka Pilecka]]", lat = 53.9917, long = 21.2653, }, { wikidata = "Q201186", name = "Biskupiec", text_display = "[[w:Biskupiec|Biskupiec]]", lat = 53.8647, long = 20.9569, }, { wikidata = "Q7385676", name = "Rzeck", text_display = "[[w:Rzeck|Rzeck]]", lat = 53.8414, long = 20.9231, }, { wikidata = "Q8081305", name = "Łęgajny", text_display = "[[w:Łęgajny|Łęgajny]]", lat = 53.8167, long = 20.6333, }, { wikidata = "Q2111615", name = "Klebark Wielki", text_display = "[[w:Klebark Wielki|Klebark Wielki]]", lat = 53.75, long = 20.6, }, { wikidata = "Q8039800", name = "Wygoda", text_display = "[[w:Wygoda|Wygoda]]", lat = 53.6864, long = 20.6031, }, { wikidata = "Q5576676", name = "Godki", text_display = "[[w:Godki|Godki]]", lat = 53.8333, long = 20.2667, }, { wikidata = "Q7664183", name = "Szałstry", text_display = "[[w:Szałstry|Szałstry]]", lat = 53.833, long = 20.1797, }, }, { wikidata = "Q4339155", name = "Ostróda", text_display = "[[w:Ostróda dialect|Ostróda]]", lat = 53.6967, long = 19.9647, { wikidata = "Q7856624", name = "Turówko", text_display = "[[w:Turówko|Turówko]]", lat = 53.4506, long = 20.2419, }, { wikidata = "Q8028516", name = "Witramowo", text_display = "[[w:Witramowo|Witramowo]]", lat = 53.4792, long = 20.3364, }, { wikidata = "Q6743780", name = "Malinowo", text_display = "[[w:Malinowo|Malinowo]]", lat = 53.4808, long = 20.3603, }, { wikidata = "Q6556883", name = "Lipowo Kurkowskie", text_display = "[[w:Lipowo Kurkowskie|Lipowo Kurkowskie]]", lat = 53.5086, long = 20.4531, }, { wikidata = "Q6782199", name = "Marózek", text_display = "[[w:Marózek|Marózek]]", lat = 53.5258, long = 20.4211, }, { wikidata = "Q6446126", name = "Kurki", text_display = "[[w:Kurki|Kurki]]", lat = 53.55, long = 20.4833, }, { wikidata = "Q9348568", name = "Swaderki", text_display = "[[w:Swaderki|Swaderki]]", lat = 53.5519, long = 20.4183, }, { wikidata = "Q1672666", name = "Waplewo", text_display = "[[w:Waplewo|Waplewo]]", lat = 53.4989, long = 20.3289, }, { wikidata = "Q7066280", name = "N Wieś Ostródzka", text_display = "[[w:N Wieś Ostródzka|N Wieś Ostródzka]]", lat = 53.5086, long = 20.2439, }, { wikidata = "Q1005246", name = "Frygnowo", text_display = "[[w:Frygnowo|Frygnowo]]", lat = 53.5167, long = 20.0833, }, { wikidata = "Q1025864", name = "Grunwald", text_display = "[[w:Grunwald|Grunwald]]", lat = 53.4858, long = 20.0919, }, { wikidata = "Q2518366", name = "Łutynowo", text_display = "[[w:Łutynowo|Łutynowo]]", lat = 53.5667, long = 20.35, }, { wikidata = "Q1963391", name = "Nadrowo", text_display = "[[w:Nadrowo|Nadrowo]]", lat = 53.5331, long = 20.3658, }, { wikidata = "Q2342876", name = "Mierki", text_display = "[[w:Mierki|Mierki]]", lat = 53.5833, long = 20.3167, }, { wikidata = "Q999614", name = "Olsztynek", text_display = "[[w:Olsztynek|Olsztynek]]", lat = 53.5833, long = 20.2833, }, { wikidata = "Q8082327", name = "Świętajny", text_display = "[[w:Świętajny|Świętajny]]", lat = 53.5919, long = 20.2353, }, { wikidata = "Q8069992", name = "Zezuty", text_display = "[[w:Zezuty|Zezuty]]", lat = 53.659, long = 20.3236, }, { wikidata = "Q8028649", name = "Witułty", text_display = "[[w:Witułty|Witułty]]", lat = 53.6533, long = 20.3022, }, { wikidata = "Q6947255", name = "Mycyny", text_display = "[[w:Mycyny|Mycyny]]", lat = 53.65, long = 20.2667, }, { wikidata = "Q6557272", name = "Lipówka", text_display = "[[w:Lipówka|Lipówka]]", lat = 53.3819, long = 20.1622, }, { wikidata = "Q5360084", name = "Elgnówko", text_display = "[[w:Elgnówko|Elgnówko]]", lat = 53.6333, long = 20.2167, }, { wikidata = "Q7546224", name = "Smolonek", text_display = "[[w:Smolonek|Smolonek]]", lat = 53.6491, long = 20.1562, }, { wikidata = "Q7293868", name = "Rapaty", text_display = "[[w:Rapaty|Rapaty]]", lat = 53.7244, long = 20.1494, }, { wikidata = "Q254715", name = "Dłużki", text_display = "[[w:Dłużki|Dłużki]]", lat = 53.7333, long = 20.15, }, { wikidata = "Q3075718", name = "Stare Jabłonki", text_display = "[[w:Stare Jabłonki|Stare Jabłonki]]", lat = 53.7, long = 20.0833, }, { wikidata = "Q3509727", name = "Szyldak", text_display = "[[w:Szyldak|Szyldak]]", lat = 53.6219, long = 20.0668, }, { wikidata = "Q3112940", name = "Grabin", text_display = "[[w:Grabin|Grabin]]", lat = 53.65, long = 20.05, }, { wikidata = "Q2409932", name = "Idzbark", text_display = "[[w:Idzbark|Idzbark]]", lat = 53.6781, long = 20.0447, }, { wikidata = "Q3576379", name = "Zwierzewo", text_display = "[[w:Zwierzewo|Zwierzewo]]", lat = 53.7089, long = 20.0458, }, { wikidata = "Q3264614", name = "Lubajny", text_display = "[[w:Lubajny|Lubajny]]", lat = 53.7, long = 20.0206, }, { wikidata = "Q3453711", name = "Ruś Ml", text_display = "[[w:Ruś Ml|Ruś Ml]]", lat = 53.7281, long = 19.97, }, { wikidata = "Q5371740", name = "Emilianowo", text_display = "[[w:Emilianowo|Emilianowo]]", lat = 53.6717, long = 19.6675, }, { wikidata = "Q995877", name = "Miłomłyn", text_display = "[[w:Miłomłyn|Miłomłyn]]", lat = 53.7667, long = 19.8333, }, { wikidata = "Q3257291", name = "Liwa", text_display = "[[w:Liwa|Liwa]]", lat = 53.7306, long = 19.8258, }, { wikidata = "Q6543325", name = "Lichtajny", text_display = "[[w:Lichtajny|Lichtajny]]", lat = 53.5544, long = 20.2281, }, { wikidata = "Q3199597", name = "Kraplewo", text_display = "[[w:Kraplewo|Kraplewo]]", lat = 53.6333, long = 19.9833, }, { wikidata = "Q281843", name = "Samborowo", text_display = "[[w:Samborowo|Samborowo]]", lat = 53.6661, long = 19.8167, }, { wikidata = "Q3356559", name = "Ornowo", text_display = "[[w:Ornowo|Ornowo]]", lat = 53.6667, long = 19.95, }, { wikidata = "Q3192029", name = "Kajkowo", text_display = "[[w:Kajkowo|Kajkowo]]", lat = 53.6667, long = 19.9667, }, { wikidata = "Q3546375", name = "Tyrowo", text_display = "[[w:Tyrowo|Tyrowo]]", lat = 53.6718, long = 19.888, }, { wikidata = "Q384178", name = "Łukta", text_display = "[[w:Łukta|Łukta]]", lat = 53.8053, long = 20.085, }, { wikidata = "Q3319702", name = "Molza", text_display = "[[w:Molza|Molza]]", lat = 53.7833, long = 20.0667, }, { wikidata = "Q2531978", name = "Biesal", text_display = "[[w:Biesal|Biesal]]", lat = 53.7211, long = 20.1981, }, { wikidata = "Q3388223", name = "Pietrzwałd", text_display = "[[w:Pietrzwałd|Pietrzwałd]]", lat = 53.5721, long = 19.9219, }, { wikidata = "Q3045617", name = "Dąg", text_display = "[[w:Dąg|Dąg]]", lat = 53.7833, long = 20.0833, }, { wikidata = "Q16572286", name = "Lipowo gm Pietrzwałd", text_display = "[[w:Lipowo gm Pietrzwałd|Lipowo gm Pietrzwałd]]", lat = 53.5819, long = 19.8375, }, { wikidata = "Q586822", name = "Wierzbica", text_display = "[[w:Wierzbica|Wierzbica]]", lat = 53.4804, long = 19.984, }, { wikidata = "Q9323506", name = "Rożental", text_display = "[[w:Rożental|Rożental]]", lat = 53.5664, long = 19.7683, }, { wikidata = "Q629331", name = "Kalwa", text_display = "[[w:Kalwa|Kalwa]]", lat = 53.5672, long = 20.0839, }, { wikidata = "Q3078188", name = "Ulnowo", text_display = "[[w:Ulnowo|Ulnowo]]", lat = 53.28, long = 20.1, }, { wikidata = "Q7156404", name = "Pawłowo", text_display = "[[w:Pawłowo|Pawłowo]]", lat = 53.5333, long = 20.2667, }, { wikidata = "Q3108629", name = "Glaznoty", text_display = "[[w:Glaznoty|Glaznoty]]", lat = 53.5356, long = 19.9019, }, }, { wikidata = "Q4271345", name = "Lubawa", text_display = "[[w:Lubawa dialect|Lubawa]]", lat = 53.505, long = 19.7517, }, }, { name = "Lesser Poland", text_display = "[[w:Lesser Polish dialect|Lesser Poland]]", color = "var(--wikt-palette-green-1);color:inherit", { wikidata = "Q128395219", name = "Biecz", text_display = "[[w:Biecz dialect|Biecz]]", lat = 49.7359, long = 21.263, { wikidata = "Q927928", name = "Brzeziny", text_display = "[[w:Brzeziny|Brzeziny]]", lat = 49.9311, long = 21.5211, }, { wikidata = "Q959508", name = "Ciężkowice", text_display = "[[w:Ciężkowice|Ciężkowice]]", lat = 49.8, long = 20.9667, }, { wikidata = "Q947404", name = "Dębica", text_display = "[[w:Dębica|Dębica]]", lat = 50.0515, long = 21.4114, }, { wikidata = "Q990669", name = "Grybów", text_display = "[[w:Grybów|Grybów]]", lat = 49.6244, long = 20.9483, }, { wikidata = "Q6440256", name = "Krzywa", text_display = "[[w:Krzywa, Podkarpackie Voivodeship|Krzywa]]", lat = 50.1014, long = 21.7358, }, { wikidata = "Q7143161", name = "Paszczyna", text_display = "[[w:Paszczyna|Paszczyna]]", lat = 50.0833, long = 21.5167, }, { wikidata = "Q336375", name = "Ropczyce", text_display = "[[w:Ropczyce|Ropczyce]]", lat = 50.0833, long = 21.6333, }, { wikidata = "Q1335538", name = "Ropczyce-Sędziszów County", text_display = "[[w:Ropczyce-Sędziszów County|Ropczyce-Sędziszów County]]", lat = 50.0861, long = 21.6333, }, { wikidata = "Q7375510", name = "Rożnowice", text_display = "[[w:Rożnowice|Rożnowice]]", lat = 49.7564, long = 21.1597, }, { wikidata = "Q2478105", name = "Rzepiennik Strzyżewski", text_display = "[[w:Rzepiennik Strzyżewski|Rzepiennik Strzyżewski]]", lat = 49.8, long = 21.05, }, { wikidata = "Q7625819", name = "Strzeszyn", text_display = "[[w:Strzeszyn|Strzeszyn]]", lat = 49.7219, long = 21.2058, }, }, { wikidata = "Q128395205", name = "Eastern Kraków", text_display = "[[w:Eastern Kraków dialect|Eastern Kraków]]", lat = 50.0125, long = 20.9883, { wikidata = "Q815903", name = "Bochnia", text_display = "[[w:Bochnia|Bochnia]]", lat = 49.9689, long = 20.4303, }, { wikidata = "Q9180335", name = "Brończyce", text_display = "[[w:Brończyce|Brończyce]]", lat = 50.2203, long = 20.5983, }, { wikidata = "Q3187563", name = "Chroberz", text_display = "[[w:Chroberz|Chroberz]]", lat = 50.4333, long = 20.5667, }, { wikidata = "Q5192549", name = "Cudzynowice", text_display = "[[w:Cudzynowice|Cudzynowice]]", lat = 50.3, long = 20.4833, }, { wikidata = "Q5529408", name = "Gdów", text_display = "[[w:Gdów|Gdów]]", lat = 49.9072, long = 20.1986, }, { wikidata = "Q553451", name = "Gmina Stopnica", text_display = "[[w:Gmina Stopnica|Gmina Stopnica]]", lat = 50.4392, long = 20.9406, }, { wikidata = "Q5017691", name = "Gorzków", text_display = "[[w:Gorzków|Gorzków]]", lat = 50.2228, long = 20.5064, }, { wikidata = "Q6155352", name = "Janowice, Tarnów County", text_display = "[[w:Janowice|Janowice]]", lat = 49.8915, long = 20.8608, }, { wikidata = "Q1335675", name = "Jędrzejów County", text_display = "[[w:Jędrzejów County|Jędrzejów County]]", lat = 50.6333, long = 20.3, }, { wikidata = "Q11729607", name = "Jurków", text_display = "[[w:Jurków|Jurków]]", lat = 49.85, long = 20.6833, }, { wikidata = "Q1406641", name = "Kazimierza Wielka", text_display = "[[w:Kazimierza Wielka|Kazimierza Wielka]]", lat = 50.2736, long = 20.4844, }, { wikidata = "Q1958570", name = "Koszyce", text_display = "[[w:Koszyce|Koszyce]]", lat = 50.1701, long = 20.5791, }, { wikidata = "Q2491430", name = "Góry Miechowskie", text_display = "[[w:Góry Miechowskie|Góry Miechowskie]]", lat = 50.3597, long = 20.18, }, { wikidata = "Q275592", name = "Pińczów", text_display = "[[w:Pińczów|Pińczów]]", lat = 50.5333, long = 20.5333, }, { wikidata = "Q119729", name = "Pińczów County", text_display = "[[w:Pińczów County|Pińczów County]]", lat = 50.5333, long = 20.5333, }, { wikidata = "Q324880", name = "Proszowice", text_display = "[[w:Proszowice|Proszowice]]", lat = 50.2, long = 20.3, }, { wikidata = "Q615238", name = "Rębów", text_display = "[[w:Rębów|Rębów]]", lat = 50.6294, long = 20.5164, }, { wikidata = "Q1813609", name = "Skalbmierz", text_display = "[[w:Skalbmierz|Skalbmierz]]", lat = 50.3199, long = 20.3993, }, { wikidata = "Q986052", name = "Stopnica", text_display = "[[w:Stopnica|Stopnica]]", lat = 50.4402, long = 20.9378, }, { wikidata = "Q2368338", name = "Szczepanów", text_display = "[[w:Szczepanów|Szczepanów]]", lat = 50.0053, long = 20.6556, }, { wikidata = "Q7664473", name = "Szczytniki, Proszowice County", text_display = "[[w:Szczytniki, Proszowice County|Szczytniki, Proszowice County]]", lat = 50.2364, long = 20.2881, }, { wikidata = "Q106281", name = "Tarnów", text_display = "[[w:Tarnów|Tarnów]]", lat = 50.0125, long = 20.9883, }, { wikidata = "Q7824982", name = "Topola", text_display = "[[w:Topola|Topola]]", lat = 50.3, long = 20.45, }, { wikidata = "Q945288", name = "Wiślica", text_display = "[[w:Wiślica|Wiślica]]", lat = 50.3486, long = 20.6742, }, { wikidata = "Q7990423", name = "Wełnin", text_display = "[[w:Wełnin|Wełnin]]", lat = 50.3475, long = 20.8958, }, { wikidata = "Q9382530", name = "Włochy pod Pińczowem", text_display = "[[w:Włochy pod Pińczowem|Włochy pod Pińczowem]]", lat = 50.5333, long = 20.5667, }, { wikidata = "Q8041370", name = "Włostowice, Lesser Poland Voivodeship", text_display = "[[w:Włostowice, Lesser Poland Voivodeship|Włostowice, Lesser Poland Voivodeship]]", lat = 50.1667, long = 20.5667, }, }, { ikidata = "Q128395210", name = "Eastern Lublin", text_display = "[[w:Eastern Lublin dialect|Eastern Lublin]]", lat = 51.1333, long = 23.4833, { wikidata = "Q4918214", name = "Biskupice", text_display = "[[w:Biskupice|Biskupice]]", lat = 51.1333, long = 22.95, }, { wikidata = "Q319445", name = "Biłgoraj", text_display = "[[w:Biłgoraj|Biłgoraj]]", lat = 50.55, long = 22.7333, }, { wikidata = "Q910918", name = "Biłgoraj County", text_display = "[[w:Biłgoraj County|Biłgoraj County]]", lat = 50.55, long = 22.7333, }, { wikidata = "Q4946468", name = "Borowina", text_display = "[[w:Borowina|Borowina]]", lat = 50.8008, long = 23.2161, }, { wikidata = "Q234184", name = "Chełm", text_display = "[[w:Chełm|Chełm]]", lat = 51.1333, long = 23.4833, }, { wikidata = "Q911203", name = "Chełm County", text_display = "[[w:Chełm County|Chełm County]]", lat = 51.15, long = 23.4833, }, { wikidata = "Q2656845", name = "Chełm Land", text_display = "[[w:Chełm Land|Chełm Land]]", lat = 51.1365, long = 23.4751, }, { wikidata = "Q1752936", name = "Chełm Voivodeship", text_display = "[[w:Chełm Voivodeship|Chełm Voivodeship]]", lat = 51.1365, long = 23.4751, }, { wikidata = "Q2187299", name = "Chmiel Pierwszy", text_display = "[[w:Chmiel Pierwszy|Chmiel Pierwszy]]", lat = 51.0944, long = 22.6844, }, { wikidata = "Q5118956", name = "Chłaniów", text_display = "[[w:Chłaniów|Chłaniów]]", lat = 50.8333, long = 22.8833, }, { wikidata = "Q168804", name = "Chojno Nowe Pierwsze", text_display = "[[w:Chojno Nowe Pierwsze|Chojno Nowe Pierwsze]]", lat = 51.1792, long = 23.0592, }, { wikidata = "Q2128677", name = "Cyców", text_display = "[[w:Cyców|Cyców]]", lat = 51.2993, long = 23.1412, }, { wikidata = "Q321931", name = "Czernięcin Poduchowny", text_display = "[[w:Czernięcin Poduchowny|Czernięcin Poduchowny]]", lat = 50.7833, long = 22.8167, }, { wikidata = "Q5265466", name = "Deszkowice", text_display = "[[w:Deszkowice|Deszkowice]]", lat = 50.7492, long = 22.9878, }, { wikidata = "Q5310454", name = "Dub", text_display = "[[w:Dub|Dub]]", lat = 50.4889, long = 23.4614, }, { wikidata = "Q985646", name = "Frampol", text_display = "[[w:Frampol|Frampol]]", lat = 50.6833, long = 22.6667, }, { wikidata = "Q180086", name = "Galicia", text_display = "[[w:Galicia|Galicia]]", lat = 49.83, long = 24.0142, }, { wikidata = "Q5522012", name = "Garbatówka", text_display = "[[w:Garbatówka|Garbatówka]]", lat = 51.3667, long = 23.1167, }, { wikidata = "Q5529390", name = "Gdeszyn", text_display = "[[w:Gdeszyn|Gdeszyn]]", lat = 50.7833, long = 23.65, }, { wikidata = "Q1893589", name = "Goraj", text_display = "[[w:Goraj|Goraj]]", lat = 50.7167, long = 22.65, }, { wikidata = "Q2552017", name = "Grabowiec", text_display = "[[w:Grabowiec|Grabowiec]]", lat = 50.8211, long = 23.5467, }, { wikidata = "Q5623114", name = "Guzówka", text_display = "[[w:Guzówka|Guzówka]]", lat = 50.8669, long = 22.6972, }, { wikidata = "Q924103", name = "Hrubieszów", text_display = "[[w:Hrubieszów|Hrubieszów]]", lat = 50.8, long = 23.9167, }, { wikidata = "Q125413", name = "Hrubieszów County", text_display = "[[w:Hrubieszów County|Hrubieszów County]]", lat = 50.8167, long = 23.8833, }, { wikidata = "Q2526174", name = "Jacnia", text_display = "[[w:Jacnia|Jacnia]]", lat = 50.5739, long = 23.1731, }, { wikidata = "Q1950572", name = "Kamień", text_display = "[[w:Kamień|Kamień]]", lat = 51.0942, long = 23.5831, }, { wikidata = "Q115923553", name = "Kocudza", text_display = "[[w:Kocudza|Kocudza]]", lat = 50.3834, long = 23.2888, }, { wikidata = "Q999623", name = "Krasnobród", text_display = "[[w:Krasnobród|Krasnobród]]", lat = 50.5447, long = 23.2153, }, { wikidata = "Q155088", name = "Krasnystaw", text_display = "[[w:Krasnystaw|Krasnystaw]]", lat = 51, long = 23.1667, }, { wikidata = "Q772111", name = "Krasnystaw County", text_display = "[[w:Krasnystaw County|Krasnystaw County]]", lat = 51, long = 23.1667, }, { wikidata = "Q3917334", name = "Krupe", text_display = "[[w:Krupe|Krupe]]", lat = 51.0333, long = 23.2333, }, { wikidata = "Q2563569", name = "Krynice", text_display = "[[w:Krynice|Krynice]]", lat = 50.5833, long = 23.3833, }, { wikidata = "Q50810368", name = "Krynice and Kryniczki", text_display = "[[w:Krynice and Kryniczki|Krynice and Kryniczki]]", }, { wikidata = "Q615427", name = "Krzczonów", text_display = "[[w:Krzczonów|Krzczonów]]", lat = 51.0061, long = 22.7119, }, { wikidata = "Q6440348", name = "Krzywowola", text_display = "[[w:Krzywowola|Krzywowola]]", lat = 51.1667, long = 23.2667, }, { wikidata = "Q6444106", name = "Kumów Plebański", text_display = "[[w:Kumów Plebański|Kumów Plebański]]", lat = 51.0389, long = 23.5514, }, { wikidata = "Q6737513", name = "Majdan Górny", text_display = "[[w:Majdan Górny|Majdan Górny]]", lat = 50.4667, long = 23.4833, }, { wikidata = "Q6743157", name = "Malewszczyzna", text_display = "[[w:Malewszczyzna|Malewszczyzna]]", lat = 50.55, long = 23.15, }, { wikidata = "Q2429259", name = "Milejów", text_display = "[[w:Milejów|Milejów]]", lat = 51.2275, long = 22.9272, }, { wikidata = "Q6895496", name = "Mokrelipie", text_display = "[[w:Mokrelipie|Mokrelipie]]", lat = 50.75, long = 22.8667, }, { wikidata = "Q6957970", name = "Nadrybie-Dwór", text_display = "[[w:Nadrybie-Dwór|Nadrybie-Dwór]]", lat = 51.3444, long = 23.0461, }, { wikidata = "Q7088620", name = "Olszanka", text_display = "[[w:Olszanka|Olszanka]]", lat = 51.0333, long = 22.6667, }, { wikidata = "Q11814684", name = "Pawłów", text_display = "[[w:Pawłów|Pawłów]]", lat = 51.1461, long = 23.2122, }, { wikidata = "Q1008761", name = "Piaski", text_display = "[[w:Piaski|Piaski]]", lat = 51.1389, long = 22.8486, }, { wikidata = "Q2096417", name = "Piotrków Pierwszy", text_display = "[[w:Piotrków Pierwszy|Piotrków Pierwszy]]", lat = 51.0422, long = 22.6447, }, { wikidata = "Q7198361", name = "Pisklaki", text_display = "[[w:Pisklaki|Pisklaki]]", lat = 50.4133, long = 22.8775, }, { wikidata = "Q7280081", name = "Radecznica", text_display = "[[w:Radecznica|Radecznica]]", lat = 50.75, long = 22.8333, }, { wikidata = "Q3912975", name = "Rejowiec", text_display = "[[w:Rejowiec|Rejowiec]]", lat = 51.0833, long = 23.2667, }, { wikidata = "Q9323703", name = "Rudka, Gmina Chełm", text_display = "[[w:Rudka, Gmina Chełm|Rudka, Gmina Chełm]]", lat = 51.1333, long = 23.0667, }, { wikidata = "Q2690632", name = "Rybczewice", text_display = "[[w:Rybczewice|Rybczewice]]", lat = 51.0167, long = 22.85, }, { wikidata = "Q2789398", name = "Sawin", text_display = "[[w:Sawin|Sawin]]", lat = 51.2717, long = 23.4433, }, { wikidata = "Q7510828", name = "Sielec", text_display = "[[w:Sielec|Sielec]]", lat = 51.0333, long = 23.5167, }, { wikidata = "Q2561328", name = "Siennica Różana", text_display = "[[w:Siennica Różana|Siennica Różana]]", lat = 51.0006, long = 23.3122, }, { wikidata = "Q9337284", name = "Sitaniec", text_display = "[[w:Sitaniec|Sitaniec]]", lat = 50.7508, long = 23.2425, }, { wikidata = "Q1932465", name = "Skierbieszów", text_display = "[[w:Skierbieszów|Skierbieszów]]", lat = 50.8517, long = 23.3653, }, { wikidata = "Q7632891", name = "Suche Lipie", text_display = "[[w:Suche Lipie|Suche Lipie]]", lat = 50.8833, long = 22.9333, }, { wikidata = "Q436", name = "Szczebrzeszyn", text_display = "[[w:Szczebrzeszyn|Szczebrzeszyn]]", lat = 50.7, long = 22.9667, }, { wikidata = "Q7686404", name = "Tarnawka", text_display = "[[w:Tarnawka Pierwsza|Tarnawka]]", lat = 50.9139, long = 22.5967, }, { wikidata = "Q2036732", name = "Tarnawatka", text_display = "[[w:Tarnawatka|Tarnawatka]]", lat = 50.5333, long = 23.3833, }, { wikidata = "Q2976352", name = "Tarnogóra", text_display = "[[w:Tarnogóra, Lublin Voivodeship|Tarnogóra]]", lat = 50.8947, long = 23.1366, }, { wikidata = "Q913630", name = "Tomaszów Lubelski County", text_display = "[[w:Tomaszów Lubelski County|Tomaszów Lubelski County]]", lat = 50.45, long = 23.4167, }, { wikidata = "Q7855014", name = "Turka", text_display = "[[w:Turka|Turka]]", lat = 51.1333, long = 23.8, }, { wikidata = "Q2595900", name = "Turobin", text_display = "[[w:Turobin|Turobin]]", lat = 50.8167, long = 22.7333, }, { wikidata = "Q9363087", name = "Turzyniec", text_display = "[[w:Turzyniec|Turzyniec]]", lat = 50.6333, long = 22.95, }, { wikidata = "Q168830", name = "Tworyczów", text_display = "[[w:Tworyczów|Tworyczów]]", lat = 50.7833, long = 22.9333, }, { wikidata = "Q1946027", name = "Tyszowce", text_display = "[[w:Tyszowce|Tyszowce]]", lat = 50.6183, long = 23.7097, }, { wikidata = "Q249050", name = "Udrycze", text_display = "[[w:Udrycze|Udrycze]]", lat = 50.8, long = 23.2833, }, { wikidata = "Q2608922", name = "Werbkowice", text_display = "[[w:Werbkowice|Werbkowice]]", lat = 50.7536, long = 23.7639, }, { wikidata = "Q500896", name = "Wola Żółkiewska", text_display = "[[w:Wola Żółkiewska|Wola Żółkiewska]]", lat = 50.9172, long = 22.8603, }, { wikidata = "Q615400", name = "Wysokie", text_display = "[[w:Wysokie|Wysokie]]", lat = 50.9078, long = 22.665, }, { wikidata = "Q9380537", name = "Wywłoczka", text_display = "[[w:Wywłoczka|Wywłoczka]]", lat = 50.6167, long = 22.95, }, { wikidata = "Q751076", name = "Włodawa", text_display = "[[w:Włodawa|Włodawa]]", lat = 51.55, long = 23.55, }, { wikidata = "Q855537", name = "Włodawa County", text_display = "[[w:Włodawa County|Włodawa County]]", lat = 51.55, long = 23.55, }, { wikidata = "Q145972", name = "Zamość", text_display = "[[w:Zamość|Zamość]]", lat = 50.7206, long = 23.2586, }, { wikidata = "Q914135", name = "Zamość County", text_display = "[[w:Zamość County|Zamość County]]", lat = 50.7206, long = 23.2586, }, { wikidata = "Q2692315", name = "Łukowa", text_display = "[[w:Łukowa|Łukowa]]", lat = 50.3794, long = 22.9142, }, { wikidata = "Q8083019", name = "Żabno", text_display = "[[w:Żabno, Lublin Voivodeship|Żabno]]", lat = 50.8489, long = 22.7772, }, { wikidata = "Q1873726", name = "Żółkiewka", text_display = "[[w:Żółkiewka|Żółkiewka]]", lat = 50.9111, long = 22.8342, }, { name = "nan", text_display = "[[w:nan|nan]]", }, { name = "Has two dialects", text_display = "[[w:Has two dialects|Has two dialects]]", }, { name = "Bug river", text_display = "[[w:Bug river|Bug river]]", }, { name = "Grójec", text_display = "[[w:Grójec|Grójec]]", }, { name = "Unin, Włodawa County", text_display = "[[w:Unin, Włodawa County|Unin, Włodawa County]]", }, }, { wikidata = "Q9282995", name = "Kielce", text_display = "[[w:Kielce dialect|Kielce]]", lat = 50.8725, long = 20.6319, { wikidata = "Q2262209", name = "Baszowice", text_display = "[[w:Baszowice|Baszowice]]", lat = 50.8753, long = 21.0689, }, { wikidata = "Q1818905", name = "Bidziny", text_display = "[[w:Bidziny|Bidziny]]", lat = 50.8408, long = 21.6281, }, { wikidata = "Q890126", name = "Bodzenty", text_display = "[[w:Bodzenty|Bodzenty]]", lat = 50.95, long = 20.9667, }, { wikidata = "Q4981326", name = "Brzezinki", text_display = "[[w:Brzezinki|Brzezinki]]", lat = 50.9239, long = 20.7686, }, { wikidata = "Q5002270", name = "Buszkowice", text_display = "[[w:Buszkowice, Świętokrzyskie Voivodeship|Buszkowice]]", lat = 50.8408, long = 21.6281, }, { wikidata = "Q991924", name = "Chęciny", text_display = "[[w:Chęciny|Chęciny]]", lat = 50.8002, long = 20.4623, }, { wikidata = "Q5103303", name = "Chmielów", text_display = "[[w:Chmielów|Chmielów]]", lat = 50.9372, long = 21.3294, }, { wikidata = "Q2082310", name = "Chybice", text_display = "[[w:Chybice|Chybice]]", lat = 50.9264, long = 21.1044, }, { wikidata = "Q2507925", name = "Daleszyce", text_display = "[[w:Daleszyce|Daleszyce]]", lat = 50.8036, long = 20.8075, }, { wikidata = "Q6125678", name = "Jakubowice", text_display = "[[w:Jakubowice|Jakubowice]]", lat = 50.8111, long = 21.6686, }, { wikidata = "Q2564476", name = "Jasice", text_display = "[[w:Jasice|Jasice]]", lat = 50.8522, long = 21.6172, }, { wikidata = "Q2532702", name = "Kielce Governorate", text_display = "[[w:Kielce Governorate|Kielce Governorate]]", lat = 50.8725, long = 20.6319, }, { wikidata = "Q2553405", name = "Kije", text_display = "[[w:Kije|Kije]]", lat = 50.6072, long = 20.5714, }, { wikidata = "Q1335529", name = "Końskie County", text_display = "[[w:Końskie County|Końskie County]]", lat = 51.2, long = 20.4167, }, { wikidata = "Q607777", name = "Korytnica, Jędrzejów County", text_display = "[[w:Korytnica, Jędrzejów County|Korytnica]]", lat = 50.6569, long = 20.5167, }, { wikidata = "Q2070896", name = "Kurzelów", text_display = "[[w:Kurzelów|Kurzelów]]", lat = 50.8833, long = 19.8833, }, { wikidata = "Q592809", name = "Małogoszcz", text_display = "[[w:Małogoszcz|Małogoszcz]]", lat = 50.8133, long = 20.2683, }, { wikidata = "Q2502889", name = "Masłów", text_display = "[[w:Masłów|Masłów]]", lat = 50.9, long = 20.7167, }, { wikidata = "Q6850303", name = "Mikułowice", text_display = "[[w:Mikułowice|Mikułowice]]", lat = 50.8533, long = 21.5956, }, { wikidata = "Q2778284", name = "Morawica", text_display = "[[w:Morawica|Morawica]]", lat = 50.7333, long = 20.6167, }, { wikidata = "Q2417360", name = "Mstyczów", text_display = "[[w:Mstyczów|Mstyczów]]", lat = 50.525, long = 19.9753, }, { wikidata = "Q2518084", name = "Nowa Słupia", text_display = "[[w:Nowa Słupia|Nowa Słupia]]", lat = 50.85, long = 21.0833, }, { wikidata = "Q1144129", name = "Opatów County", text_display = "[[w:Opatów County|Opatów County]]", lat = 50.805, long = 21.4247, }, { wikidata = "Q994271", name = "Opoczno", text_display = "[[w:Opoczno|Opoczno]]", lat = 51.3833, long = 20.2833, }, { wikidata = "Q1144118", name = "Opoczno County", text_display = "[[w:Opoczno County|Opoczno County]]", lat = 51.3833, long = 20.2833, }, { wikidata = "Q3079381", name = "Pierzchnica", text_display = "[[w:Pierzchnica|Pierzchnica]]", lat = 50.6833, long = 20.75, }, { wikidata = "Q30911498", name = "Potok", text_display = "[[w:Potok|Potok]]", lat = 50.6119, long = 20.2128, }, { wikidata = "Q7257085", name = "Ptkanów", text_display = "[[w:Ptkanów|Ptkanów]]", lat = 50.8394, long = 21.4564, }, { wikidata = "Q3141156", name = "Radoszyce", text_display = "[[w:Radoszyce|Radoszyce]]", lat = 51.0667, long = 20.25, }, { wikidata = "Q1013344", name = "Raków", text_display = "[[w:Raków|Raków]]", lat = 50.6736, long = 21.0456, }, { wikidata = "Q7311587", name = "Rembów", text_display = "[[w:Rembów, Świętokrzyskie Voivodeship|Rembów]]", lat = 50.7, long = 21.0333, }, { wikidata = "Q3079755", name = "Rytwiany", text_display = "[[w:Rytwiany|Rytwiany]]", lat = 50.5167, long = 21.2, }, { wikidata = "Q305154", name = "Szczekociny", text_display = "[[w:Szczekociny|Szczekociny]]", lat = 50.6261, long = 19.8189, }, { wikidata = "Q7507466", name = "Sichów Mały", text_display = "[[w:Sichów Mały|Sichów Mały]]", lat = 50.4847, long = 21.1747, }, { wikidata = "Q9336450", name = "Siekierzno", text_display = "[[w:Siekierzno|Siekierzno]]", lat = 50.9783, long = 20.9439, }, { wikidata = "Q7602140", name = "Starochęciny", text_display = "[[w:Starochęciny|Starochęciny]]", lat = 50.78, long = 20.4786, }, { wikidata = "Q324892", name = "Staszów", text_display = "[[w:Staszów|Staszów]]", lat = 50.5606, long = 21.1667, }, { wikidata = "Q7618328", name = "Stodoły-Wieś", text_display = "[[w:Stodoły-Wieś|Stodoły-Wieś]]", lat = 50.8175, long = 21.5767, }, { wikidata = "Q1946041", name = "Suchedniów", text_display = "[[w:Suchedniów|Suchedniów]]", lat = 51.0517, long = 20.8325, }, { wikidata = "Q7667035", name = "Sędziejowice", text_display = "[[w:Sędziejowice|Sędziejowice]]", lat = 50.5797, long = 20.6494, }, { wikidata = "Q2337969", name = "Słupia", text_display = "[[w:Słupia|Słupia]]", lat = 50.6, long = 19.9667, }, { wikidata = "Q787968", name = "Szydłów", text_display = "[[w:Szydłów|Szydłów]]", lat = 50.5906, long = 21.0028, }, { wikidata = "Q986115", name = "Tuczępy", text_display = "[[w:Tuczępy|Tuczępy]]", lat = 50.5167, long = 20.9928, }, { wikidata = "Q336448", name = "Ćmielów", text_display = "[[w:Ćmielów|Ćmielów]]", lat = 50.8903, long = 21.5147, }, { wikidata = "Q384265", name = "Łysica", text_display = "[[w:Łysica|Łysica]]", lat = 50.9, long = 20.9, }, }, { wikidata = "Q9282999", name = "Lasovia", text_display = "[[w:Lasovia dialect|Lasovia]]", lat = 50.6833, long = 21.75, { wikidata = "Q4907638", name = "Bilcza", text_display = "[[w:Bilcza|Bilcza]]", lat = 50.68, long = 21.5781, }, { wikidata = "Q5321216", name = "Długołęka", text_display = "[[w:Długołęka, Świętokrzyskie Voivodeship|Długołęka]]", lat = 50.5186, long = 21.4989, }, { wikidata = "Q5590508", name = "Goźlice", text_display = "[[w:Goźlice|Goźlice]]", lat = 50.6992, long = 21.4742, }, { wikidata = "Q5626404", name = "Góry Wysokie", text_display = "[[w:Góry Wysokie|Góry Wysokie]]", lat = 50.7444, long = 21.7594, }, { wikidata = "Q1903588", name = "Klimontów", text_display = "[[w:Klimontów|Klimontów]]", lat = 50.65, long = 21.45, }, { wikidata = "Q2187486", name = "Krzątka", text_display = "[[w:Krzątka|Krzątka]]", lat = 50.3985, long = 21.8385, }, { wikidata = "Q6493771", name = "Lasocin", text_display = "[[w:Lasocin|Lasocin]]", lat = 50.8969, long = 21.7572, }, { wikidata = "Q6967807", name = "Nasławice", text_display = "[[w:Nasławice|Nasławice]]", lat = 50.6733, long = 21.5344, }, { wikidata = "Q629018", name = "Nisko County", text_display = "[[w:Nisko County|Nisko County]]", lat = 50.5333, long = 22.1333, }, { wikidata = "Q554417", name = "Osiek", text_display = "[[w:Osiek|Osiek]]", lat = 50.5217, long = 21.4431, }, { wikidata = "Q988658", name = "Połaniec", text_display = "[[w:Połaniec|Połaniec]]", lat = 50.4333, long = 21.2833, }, { wikidata = "Q518094", name = "Pysznica", text_display = "[[w:Pysznica|Pysznica]]", lat = 50.5667, long = 22.1167, }, { wikidata = "Q7375448", name = "Rozwadów", text_display = "[[w:Rozwadów|Rozwadów]]", lat = 50.5911, long = 22.0417, }, { wikidata = "Q193177", name = "Sandomierz", text_display = "[[w:Sandomierz|Sandomierz]]", lat = 50.6833, long = 21.75, }, { wikidata = "Q1144074", name = "Sandomierz County", text_display = "[[w:Sandomierz County|Sandomierz County]]", lat = 50.6833, long = 21.75, }, { wikidata = "Q2253235", name = "Sandomierz Voivodeship", text_display = "[[w:Sandomierz Voivodeship|Sandomierz Voivodeship]]", lat = 50.681, long = 21.7445, }, { wikidata = "Q751140", name = "Stalowa Wola", text_display = "[[w:Stalowa Wola|Stalowa Wola]]", lat = 50.5833, long = 22.05, }, { wikidata = "Q9344038", name = "Stare Kichary", text_display = "[[w:Stare Kichary|Stare Kichary]]", lat = 50.7564, long = 21.7389, }, { wikidata = "Q385847", name = "Sternalice", text_display = "[[w:Sternalice|Sternalice]]", lat = 50.6991, long = 21.5009, }, { wikidata = "Q7636329", name = "Sulisławice", text_display = "[[w:Sulisławice|Sulisławice]]", lat = 50.5864, long = 21.4692, }, { wikidata = "Q28516", name = "Tarnobrzeg", text_display = "[[w:Tarnobrzeg|Tarnobrzeg]]", lat = 50.5833, long = 21.6833, }, { wikidata = "Q1147594", name = "Tarnobrzeg County", text_display = "[[w:Tarnobrzeg County|Tarnobrzeg County]]", lat = 50.5833, long = 21.6833, }, { wikidata = "Q1416177", name = "Tarnobrzeg Voivodeship", text_display = "[[w:Tarnobrzeg Voivodeship|Tarnobrzeg Voivodeship]]", lat = 50.5714, long = 21.6768, }, { wikidata = "Q8065224", name = "Zakrzów", text_display = "[[w:Zakrzów|Zakrzów]]", lat = 50.6883, long = 21.4575, }, { wikidata = "Q1922299", name = "Zawichost", text_display = "[[w:Zawichost|Zawichost]]", lat = 50.8067, long = 21.8564, }, { wikidata = "Q8083408", name = "Żupawa", text_display = "[[w:Żupawa|Żupawa]]", lat = 50.5833, long = 21.7833, }, }, { wikidata = "Q128395201", name = "Masovian Borderland", text_display = "[[w:Masovian Borderland dialect|Masovian Borderland]]", lat = 51.4167, long = 21.15, { wikidata = "Q2892531", name = "Bałtów", text_display = "[[w:Bałtów|Bałtów]]", lat = 51.0167, long = 21.55, }, { wikidata = "Q2147121", name = "Baranów", text_display = "[[w:Baranów|Baranów]]", lat = 51.55, long = 22.1333, }, { wikidata = "Q2468746", name = "Bąkowiec", text_display = "[[w:Bąkowiec|Bąkowiec]]", lat = 51.5039, long = 21.7114, }, { wikidata = "Q2590715", name = "Brzóza", text_display = "[[w:Brzóza|Brzóza]]", lat = 51.601, long = 21.3474, }, { wikidata = "Q581923", name = "Bukówno", text_display = "[[w:Bukówno|Bukówno]]", lat = 51.5454, long = 20.8515, }, { wikidata = "Q2943765", name = "Cecylówka-Brzózka", text_display = "[[w:Cecylówka-Brzózka|Cecylówka-Brzózka]]", lat = 51.55, long = 21.3578, }, { wikidata = "Q9205979", name = "Denków", text_display = "[[w:Denków|Denków]]", lat = 50.9306, long = 21.4214, }, { wikidata = "Q5309948", name = "Drążno", text_display = "[[w:Drążno|Drążno]]", lat = 51.4839, long = 20.6092, }, { wikidata = "Q2131883", name = "Gmina Głowaczów", text_display = "[[w:Gmina Głowaczów|Gmina Głowaczów]]", lat = 51.6211, long = 21.3189, }, { wikidata = "Q942482", name = "Głowaczów", text_display = "[[w:Głowaczów|Głowaczów]]", lat = 51.6231, long = 21.3179, }, { wikidata = "Q2643724", name = "Gózd", text_display = "[[w:Gózd|Gózd]]", lat = 51.3697, long = 21.4242, }, { wikidata = "Q1898628", name = "Inowłódz", text_display = "[[w:Inowłódz|Inowłódz]]", lat = 51.5167, long = 20.2167, }, { wikidata = "Q965933", name = "Jedlińsk", text_display = "[[w:Jedlińsk|Jedlińsk]]", lat = 51.5167, long = 21.1167, }, { wikidata = "Q729396", name = "Jedlnia", text_display = "[[w:Jedlnia|Jedlnia]]", lat = 51.4667, long = 21.3667, }, { wikidata = "Q990651", name = "Kozienice", text_display = "[[w:Kozienice|Kozienice]]", lat = 51.5856, long = 21.5511, }, { wikidata = "Q6762450", name = "Marianów", text_display = "[[w:Marianów|Marianów]]", lat = 51.5553, long = 21.3944, }, { wikidata = "Q6950966", name = "Młodynie Górne", text_display = "[[w:Młodynie Górne|Młodynie Górne]]", lat = 51.5372, long = 20.8728, }, { wikidata = "Q548299", name = "Molendy", text_display = "[[w:Molendy|Molendy]]", lat = 51.5106, long = 21.6047, }, { wikidata = "Q1019505", name = "Nowe Miasto nad Pilicą", text_display = "[[w:Nowe Miasto nad Pilicą|Nowe Miasto nad Pilicą]]", lat = 51.6194, long = 20.5761, }, { wikidata = "Q2195041", name = "Orońsko", text_display = "[[w:Orońsko|Orońsko]]", lat = 51.3167, long = 20.9833, }, { wikidata = "Q7190362", name = "Piastów, Radom County", text_display = "[[w:Piastów, Radom County|Piastów, Radom County]]", lat = 51.4833, long = 21.05, }, { wikidata = "Q985528", name = "Przysucha", text_display = "[[w:Przysucha|Przysucha]]", lat = 51.3667, long = 20.6167, }, { wikidata = "Q600023", name = "Przytyk", text_display = "[[w:Przytyk|Przytyk]]", lat = 51.0167, long = 21.55, }, { wikidata = "Q7254012", name = "Psary", text_display = "[[w:Psary|Psary]]", lat = 51.4653, long = 20.9069, }, { wikidata = "Q104740", name = "Radom", text_display = "[[w:Radom|Radom]]", lat = 51.4167, long = 21.15, }, { wikidata = "Q9302512", name = "Radom Land", text_display = "[[w:Radom Land|Radom Land]]", }, { wikidata = "Q185306", name = "Radom Voivodeship", text_display = "[[w:Radom Voivodeship|Radom Voivodeship]]", lat = 51.4048, long = 21.1571, }, { wikidata = "Q149059", name = "Rawa Mazowiecka", text_display = "[[w:Rawa Mazowiecka|Rawa Mazowiecka]]", lat = 51.7667, long = 20.25, }, { wikidata = "Q2517509", name = "Rawa Voivodeship", text_display = "[[w:Rawa Voivodeship|Rawa Voivodeship]]", lat = 51.7655, long = 20.2548, }, { wikidata = "Q6364896", name = "Rdzuchów", text_display = "[[w:Rdzuchów|Rdzuchów]]", lat = 51.4667, long = 20.7167, }, { wikidata = "Q7384848", name = "Ryczywół", text_display = "[[w:Ryczywół|Ryczywół]]", lat = 51.69, long = 21.4214, }, { wikidata = "Q7413152", name = "Samwodzie", text_display = "[[w:Samwodzie|Samwodzie]]", lat = 51.5975, long = 21.6339, }, { wikidata = "Q3077850", name = "Sienno", text_display = "[[w:Sienno|Sienno]]", lat = 51.0833, long = 21.4667, }, { wikidata = "Q7599285", name = "Stanisławice", text_display = "[[w:Stanisławice, Masovian Voivodeship|Stanisławice]]", lat = 51.5719, long = 21.4808, }, { wikidata = "Q2226976", name = "Stara Błotnica", text_display = "[[w:Stara Błotnica|Stara Błotnica]]", lat = 51.5468, long = 20.9748, }, { wikidata = "Q1909751", name = "Stężyca", text_display = "[[w:Stężyca, Lublin Voivodeship|Stężyca]]", lat = 51.5806, long = 21.7703, }, { wikidata = "Q974977", name = "Szydłowiec", text_display = "[[w:Szydłowiec|Szydłowiec]]", lat = 51.2333, long = 20.85, }, { wikidata = "Q1865522", name = "Tczów", text_display = "[[w:Tczów|Tczów]]", lat = 51.3333, long = 21.4667, }, { wikidata = "Q7901325", name = "Ursynów", text_display = "[[w:Ursynów|Ursynów]]", lat = 51.5833, long = 21.3833, }, { wikidata = "Q2363230", name = "Wolanów", text_display = "[[w:Wolanów|Wolanów]]", lat = 51.3797, long = 20.9775, }, { wikidata = "Q439", name = "Wąchock", text_display = "[[w:Wąchock|Wąchock]]", lat = 51.0742, long = 21.0136, }, { wikidata = "Q1897640", name = "Zwoleń", text_display = "[[w:Zwoleń|Zwoleń]]", lat = 51.3569, long = 21.5839, }, { wikidata = "Q8080414", name = "Łagów", text_display = "[[w:Łagów|Łagów]]", lat = 51.3667, long = 21.7667, }, }, { wikidata = "Q128395217", name = "Przemyśl", text_display = "[[w:Przemyśl dialect|Przemyśl]]", lat = 49.7835, long = 22.7842, { wikidata = "Q2933702", name = "Bóbrka", text_display = "[[w:Bóbrka|Bóbrka]]", lat = 49.6328, long = 21.6986, }, { wikidata = "Q1147627", name = "Brzozowskie", text_display = "[[w:Brzozowskie|Brzozowskie]]", lat = 49.6953, long = 22.0194, }, { wikidata = "Q2620290", name = "Chmiel", text_display = "[[w:Chmiel|Chmiel]]", lat = 49.2167, long = 22.6, }, { wikidata = "Q5286910", name = "Dobrzechów", text_display = "[[w:Dobrzechów|Dobrzechów]]", lat = 49.8833, long = 21.75, }, { wikidata = "Q5321015", name = "Dębno", text_display = "[[w:Dębno|Dębno]]", lat = 50.1978, long = 22.5169, }, { wikidata = "Q655412", name = "Iwonicz-Zdrój", text_display = "[[w:Iwonicz-Zdrój|Iwonicz-Zdrój]]", lat = 49.5833, long = 21.8, }, { wikidata = "Q983875", name = "Przeworsk", text_display = "[[w:Przeworsk|Przeworsk]]", lat = 50.0667, long = 22.5, }, { wikidata = "Q598", name = "Rzeszów", text_display = "[[w:Rzeszów|Rzeszów]]", lat = 50.0411, long = 21.9989, }, { wikidata = "Q1335628", name = "Rzeszów County", text_display = "[[w:Rzeszów County|Rzeszów County]]", lat = 50.0336, long = 22.0047, }, { wikidata = "Q216488", name = "San river", text_display = "[[w:San river|San river]]", lat = 49.0028, long = 22.875, }, { wikidata = "Q201729", name = "Sanok", text_display = "[[w:Sanok|Sanok]]", lat = 49.55, long = 22.2167, }, { wikidata = "Q1340594", name = "Sanok County", text_display = "[[w:Sanok County|Sanok County]]", lat = 49.55, long = 22.2167, }, { wikidata = "Q377994", name = "Sieniawa", text_display = "[[w:Sieniawa|Sieniawa]]", lat = 50.1781, long = 22.6106, }, { wikidata = "Q2653684", name = "Stary Dzików", text_display = "[[w:Stary Dzików|Stary Dzików]]", lat = 50.25, long = 22.9333, }, { wikidata = "Q867039", name = "Sokołów Małopolski", text_display = "[[w:Sokołów Małopolski|Sokołów Małopolski]]", lat = 50.2419, long = 22.1289, }, { wikidata = "Q777169", name = "Tarnogród", text_display = "[[w:Tarnogród|Tarnogród]]", lat = 50.3606, long = 22.7422, }, { wikidata = "Q7984092", name = "Wesoła", text_display = "[[w:Wesoła|Wesoła]]", lat = 49.8, long = 22.0833, }, { wikidata = "Q2363612", name = "Żołynia", text_display = "[[w:Żołynia|Żołynia]]", lat = 50.1667, long = 22.3167, }, }, { wikidata = "Q128395198", name = "Sieradz", text_display = "[[w:Sieradz dialect|Sieradz]]", lat = 51.5958, long = 18.73, { wikidata = "Q5119571", name = "Cielce", text_display = "[[w:Cielce|Cielce]]", lat = 51.7333, long = 18.5667, }, { wikidata = "Q5318820", name = "Dylów", text_display = "[[w:Dylów A|Dylów]]", lat = 51.1667, long = 18.9833, }, { wikidata = "Q325631", name = "Pajęczno", text_display = "[[w:Pajęczno|Pajęczno]]", lat = 51.15, long = 19, }, { wikidata = "Q7081738", name = "Okalew", text_display = "[[w:Okalew, Łódź Voivodeship|Okalew]]", lat = 51.3319, long = 18.5753, }, { wikidata = "Q2438519", name = "Krzepczów", text_display = "[[w:Krzepczów|Krzepczów]]", lat = 51.455, long = 19.5028, }, { wikidata = "Q6695305", name = "Lubień", text_display = "[[w:Lubień|Lubień]]", lat = 51.2667, long = 19.7833, }, { wikidata = "Q1144110", name = "Łask County", text_display = "[[w:Łask County|Łask County]]", lat = 51.5833, long = 19.1333, }, { wikidata = "Q8081114", name = "Łyskornia", text_display = "[[w:Łyskornia|Łyskornia]]", lat = 51.2667, long = 18.4, }, { wikidata = "Q6843895", name = "Mierzyn", text_display = "[[w:Mierzyn, Łódź Voivodeship|Mierzyn]]", lat = 51.25, long = 19.6833, }, { wikidata = "Q7041850", name = "Niwa", text_display = "[[w:Niwa|Niwa]]", lat = 51.365, long = 18.6506, }, { wikidata = "Q158589", name = "Pabianice", text_display = "[[w:Pabianice|Pabianice]]", lat = 51.6642, long = 19.35, }, { wikidata = "Q1144105", name = "Piotrków County", text_display = "[[w:Piotrków County|Piotrków County]]", lat = 51.4, long = 19.6833, }, { wikidata = "Q158004", name = "Piotrków Trybunalski", text_display = "[[w:Piotrków Trybunalski|Piotrków Trybunalski]]", lat = 51.4, long = 19.68333, }, { wikidata = "Q1416184", name = "Piotrków Voivodeship", text_display = "[[w:Piotrków Voivodeship|Piotrków Voivodeship]]", lat = 51.405, long = 19.6933, }, { wikidata = "Q158796", name = "Radomsko", text_display = "[[w:Radomsko|Radomsko]]", lat = 51.0667, long = 19.45, }, { wikidata = "Q2100357", name = "Rozprza", text_display = "[[w:Rozprza|Rozprza]]", lat = 51.3014, long = 19.6442, }, { wikidata = "Q15273696", name = "Rudlice", text_display = "[[w:Rudlice|Rudlice]]", lat = 51.3333, long = 18.6333, }, { wikidata = "Q7667038", name = "Sędzimirowice", text_display = "[[w:Sędzimirowice|Sędzimirowice]]", lat = 51.7167, long = 18.4333, }, { wikidata = "Q3301969", name = "Wadlew", text_display = "[[w:Wadlew|Wadlew]]", lat = 51.5167, long = 19.4167, }, { wikidata = "Q101530", name = "Wieluń", text_display = "[[w:Wieluń|Wieluń]]", lat = 51.2206, long = 18.57, }, { wikidata = "Q324907", name = "Wieruszów", text_display = "[[w:Wieruszów|Wieruszów]]", lat = 51.3, long = 18.15, }, { wikidata = "Q985845", name = "Wodzierady", text_display = "[[w:Wodzierady|Wodzierady]]", lat = 51.7167, long = 19.15, }, { wikidata = "Q8029600", name = "Wola Rudlicka", text_display = "[[w:Wola Rudlicka|Wola Rudlicka]]", lat = 51.3667, long = 18.6167, }, }, { wikidata = "Q11702959", name = "Western Kraków", text_display = "[[w:Western Kraków dialect|Western Kraków]]", lat = 50.0614, long = 19.9372, { wikidata = "Q4869523", name = "Batowice", text_display = "[[w:Batowice|Batowice]]", lat = 50.1117, long = 20.0164, }, { wikidata = "Q4902905", name = "Biały Kościół", text_display = "[[w:Biały Kościół, Lesser Poland Voivodeship|Biały Kościół]]", lat = 50.1675, long = 19.8275, }, { wikidata = "Q972886", name = "Będzin County", text_display = "[[w:Będzin County|Będzin County]]", lat = 50.3333, long = 19.1167, }, { wikidata = "Q4902707", name = "Biała Błotna", text_display = "[[w:Biała Błotna|Biała Błotna]]", lat = 50.6, long = 19.6333, }, { wikidata = "Q4919470", name = "Biórków Mały", text_display = "[[w:Biórków Mały|Biórków Mały]]", lat = 50.1667, long = 20.1833, }, { wikidata = "Q9174013", name = "Biórków Wielki", text_display = "[[w:Biórków Wielki|Biórków Wielki]]", lat = 50.1667, long = 20.1833, }, { wikidata = "Q4935887", name = "Bobolice", text_display = "[[w:Bobolice, Silesian Voivodeship|Bobolice]]", lat = 50.6106, long = 19.4925, }, { wikidata = "Q2337840", name = "Boguchwałowice", text_display = "[[w:Boguchwałowice|Boguchwałowice]]", lat = 50.45, long = 19.1667, }, { wikidata = "Q985653", name = "Bukowno", text_display = "[[w:Bukowno|Bukowno]]", lat = 50.2681, long = 19.4631, }, { wikidata = "Q1140756", name = "Chrzanów County", text_display = "[[w:Chrzanów County|Chrzanów County]]", lat = 50.1333, long = 19.4, }, { wikidata = "Q1998277", name = "Cianowice Duże", text_display = "[[w:Cianowice Duże|Cianowice Duże]]", lat = 50.2042, long = 19.8803, }, { wikidata = "Q2102217", name = "Czajowice", text_display = "[[w:Czajowice|Czajowice]]", lat = 50.2, long = 19.8, }, { wikidata = "Q103217", name = "Częstochowa", text_display = "[[w:Częstochowa|Częstochowa]]", lat = 50.8096, long = 19.1222, }, { wikidata = "Q1145567", name = "Częstochowa County", text_display = "[[w:Częstochowa County|Częstochowa County]]", lat = 50.8, long = 19.1167, }, { wikidata = "Q1499927", name = "Częstochowa Voivodeship", text_display = "[[w:Częstochowa Voivodeship|Częstochowa Voivodeship]]", lat = 50.8127, long = 19.1132, }, { wikidata = "Q5202196", name = "Czulice", text_display = "[[w:Czulice|Czulice]]", lat = 50.1333, long = 20.1833, }, { wikidata = "Q3489052", name = "Czyżyny", text_display = "[[w:Czyżyny|Czyżyny]]", lat = 50.0657, long = 20.0088, }, { wikidata = "Q5212386", name = "Damice", text_display = "[[w:Damice|Damice]]", lat = 50.2, long = 19.95, }, { wikidata = "Q5559750", name = "Giebułtów", text_display = "[[w:Giebułtów|Giebułtów]]", lat = 50.4042, long = 20.1667, }, { wikidata = "Q11708235", name = "Gęzyn", text_display = "[[w:Gęzyn|Gęzyn]]", lat = 50.6386, long = 19.2058, }, { wikidata = "Q5559753", name = "Giebło", text_display = "[[w:Giebło|Giebło]]", lat = 50.4808, long = 19.6033, }, { wikidata = "Q5626315", name = "Górna Wieś", text_display = "[[w:Górna Wieś|Górna Wieś]]", lat = 50.1619, long = 19.9367, }, { wikidata = "Q5627738", name = "Głębowice", text_display = "[[w:Głębowice, Lesser Poland Voivodeship|Głębowice]]", lat = 49.95, long = 19.3333, }, { wikidata = "Q2962943", name = "Hecznarowice", text_display = "[[w:Hecznarowice|Hecznarowice]]", lat = 49.9, long = 19.1667, }, { wikidata = "Q4537086", name = "Jaksice", text_display = "[[w:Jaksice|Jaksice]]", lat = 50.3269, long = 20.0019, }, { wikidata = "Q389860", name = "Kalwaria Zebrzydowska", text_display = "[[w:Kalwaria Zebrzydowska|Kalwaria Zebrzydowska]]", lat = 49.8667, long = 19.6833, }, { wikidata = "Q324934", name = "Kłobuck", text_display = "[[w:Kłobuck|Kłobuck]]", lat = 50.9008, long = 18.9367, }, { wikidata = "Q2791581", name = "Korzkiew", text_display = "[[w:Korzkiew|Korzkiew]]", lat = 50.1633, long = 19.8803, }, { wikidata = "Q555042", name = "Koziegłowy", text_display = "[[w:Koziegłowy|Koziegłowy]]", lat = 50.6008, long = 19.1647, }, { wikidata = "Q31487", name = "Krakow", text_display = "[[w:Krakow|Krakow]]", lat = 50.0614, long = 19.9372, }, { wikidata = "Q6436167", name = "Krasice", text_display = "[[w:Krasice, Silesian Voivodeship|Krasice]]", lat = 50.83, long = 19.3822, }, { wikidata = "Q11748283", name = "Kromołów", text_display = "[[w:Kromołów|Kromołów]]", lat = 50.495, long = 19.4936, }, { wikidata = "Q1005511", name = "Krzepice", text_display = "[[w:Krzepice|Krzepice]]", lat = 50.9706, long = 18.7289, }, { wikidata = "Q146509", name = "Krzeszowice", text_display = "[[w:Krzeszowice|Krzeszowice]]", lat = 50.1333, long = 19.6333, }, { wikidata = "Q6440422", name = "Krzęcin", text_display = "[[w:Krzęcin|Krzęcin]]", lat = 49.9432, long = 19.7416, }, { wikidata = "Q127505608", name = "Kuźnica Błędowska", text_display = "[[w:Kuźnica Błędowska|Kuźnica Błędowska]]", lat = 50.3517, long = 19.4661, }, { wikidata = "Q549862", name = "Liszki", text_display = "[[w:Liszki|Liszki]]", lat = 50.0386, long = 19.7683, }, { wikidata = "Q2169203", name = "Lgota", text_display = "[[w:Lgota|Lgota]]", lat = 49.9333, long = 19.5667, }, { wikidata = "Q2205894", name = "Luborzyca", text_display = "[[w:Luborzyca|Luborzyca]]", lat = 50.1367, long = 20.1144, }, { wikidata = "Q9394238", name = "Łobzów", text_display = "[[w:Łobzów|Łobzów]]", lat = 50.4044, long = 19.7678, }, { wikidata = "Q8080876", name = "Łuczyce", text_display = "[[w:Łuczyce, Lesser Poland Voivodeship|Łuczyce]]", lat = 50.1644, long = 20.0689, }, { wikidata = "Q6774056", name = "Marszowice", text_display = "[[w:Marszowice|Marszowice]]", lat = 50.1817, long = 20.0772, }, { wikidata = "Q6836102", name = "Michalowice", text_display = "[[w:Michalowice|Michalowice]]", lat = 50.1636, long = 19.9797, }, { wikidata = "Q324927", name = "Miechów", text_display = "[[w:Miechów|Miechów]]", lat = 50.3578, long = 20.0325, }, { wikidata = "Q1002714", name = "Mierzęcice", text_display = "[[w:Mierzęcice|Mierzęcice]]", lat = 50.4442, long = 19.1286, }, { wikidata = "Q2949921", name = "Modlnica", text_display = "[[w:Modlnica|Modlnica]]", lat = 50.1292, long = 19.8669, }, { wikidata = "Q11786400", name = "Mrzygłód", text_display = "[[w:Mrzygłód|Mrzygłód]]", lat = 50.5411, long = 19.3633, }, { wikidata = "Q2072590", name = "Mstów", text_display = "[[w:Mstów|Mstów]]", lat = 50.8278, long = 19.2872, }, { wikidata = "Q325550", name = "Myślenice", text_display = "[[w:Myślenice|Myślenice]]", lat = 49.8333, long = 19.9333, }, { wikidata = "Q989498", name = "Niepołomice", text_display = "[[w:Niepołomice|Niepołomice]]", lat = 50.0339, long = 20.2172, }, { wikidata = "Q842133", name = "Ojców", text_display = "[[w:Ojców|Ojców]]", lat = 50.2067, long = 19.8292, }, { wikidata = "Q1340613", name = "Olkusz County", text_display = "[[w:Olkusz County|Olkusz County]]", lat = 50.2833, long = 19.5667, }, { wikidata = "Q4557031", name = "Osieczan", text_display = "[[w:Osieczan|Osieczan]]", lat = 49.8408, long = 19.9792, }, { wikidata = "Q1780430", name = "Pieskowa Skała", text_display = "[[w:Pieskowa Skała|Pieskowa Skała]]", lat = 50.244167, long = 19.78, }, { wikidata = "Q555053", name = "Pilica", text_display = "[[w:Pilica|Pilica]]", lat = 50.4664, long = 19.6567, }, { wikidata = "Q7198203", name = "Pisarzowice", text_display = "[[w:Pisarzowice, Bielsko County|Pisarzowice]]", lat = 49.8833, long = 19.146, }, { wikidata = "Q11819697", name = "Pleszów", text_display = "[[w:Pleszów|Pleszów]]", lat = 50.0681, long = 20.1064, }, { wikidata = "Q2553877", name = "Podgórze", text_display = "[[w:Podgórze|Podgórze]]", lat = 50.0442, long = 19.9489, }, { wikidata = "Q3488696", name = "Prądnik", text_display = "[[w:Prądnik|Prądnik]]", lat = 50.0992, long = 19.9063, }, { wikidata = "Q7253454", name = "Przestańsko", text_display = "[[w:Przestańsko|Przestańsko]]", lat = 50.2333, long = 20.0167, }, { wikidata = "Q147874", name = "Rudawa", text_display = "[[w:Rudawa|Rudawa]]", lat = 50.1228, long = 19.7122, }, { wikidata = "Q7377105", name = "Rudniki", text_display = "[[w:Rudniki|Rudniki]]", lat = 50.5208, long = 19.4311, }, { wikidata = "Q7666969", name = "Sączów", text_display = "[[w:Sączów|Sączów]]", lat = 50.4333, long = 19.0167, }, { wikidata = "Q7664392", name = "Szczodrkowice", text_display = "[[w:Szczodrkowice|Szczodrkowice]]", lat = 50.1947, long = 19.8951, }, { wikidata = "Q989846", name = "Siewierz", text_display = "[[w:Siewierz|Siewierz]]", lat = 50.4733, long = 19.2331, }, { wikidata = "Q1280559", name = "Skała", text_display = "[[w:Skała|Skała]]", lat = 50.2333, long = 19.8667, }, { wikidata = "Q301924", name = "Skawina", text_display = "[[w:Skawina|Skawina]]", lat = 49.9753, long = 19.8275, }, { wikidata = "Q7543798", name = "Smardzowice", text_display = "[[w:Smardzowice|Smardzowice]]", lat = 50.2, long = 19.85, }, { wikidata = "Q302424", name = "Sosnowice", text_display = "[[w:Sosnowice|Sosnowice]]", lat = 49.94, long = 19.7151, }, { wikidata = "Q105060", name = "Sosnowiec", text_display = "[[w:Sosnowiec|Sosnowiec]]", lat = 50.3, long = 19.1667, }, { wikidata = "Q841380", name = "Sławków", text_display = "[[w:Sławków|Sławków]]", lat = 50.2994, long = 19.3897, }, { wikidata = "Q962472", name = "Stradom", text_display = "[[w:Stradom|Stradom]]", lat = 50.7859, long = 19.0864, }, { wikidata = "Q9359990", name = "Tonie", text_display = "[[w:Tonie|Tonie]]", lat = 50.0614, long = 19.9372, }, { wikidata = "Q7818517", name = "Tomaszowice", text_display = "[[w:Tomaszowice|Tomaszowice]]", lat = 50.1333, long = 19.85, }, { wikidata = "Q1983326", name = "Truskolasy", text_display = "[[w:Truskolasy, Silesian Voivodeship|Truskolasy]]", lat = 50.8669, long = 18.8271, }, { wikidata = "Q3487449", name = "Tyniec", text_display = "[[w:Tyniec|Tyniec]]", lat = 50.0108, long = 19.8203, }, { wikidata = "Q212856", name = "Wadowice", text_display = "[[w:Wadowice|Wadowice]]", lat = 49.8833, long = 19.5, }, { wikidata = "Q472621", name = "Wieliczka", text_display = "[[w:Wieliczka|Wieliczka]]", lat = 49.9894, long = 20.0661, }, { wikidata = "Q2405929", name = "Włodowice", text_display = "[[w:Włodowice|Włodowice]]", lat = 50.5556, long = 19.4516, }, { wikidata = "Q1906323", name = "Wolbrom", text_display = "[[w:Wolbrom|Wolbrom]]", lat = 50.3794, long = 19.7581, }, { wikidata = "Q8067096", name = "Zastów", text_display = "[[w:Zastów|Zastów]]", lat = 50.1217, long = 20.0536, }, { wikidata = "Q4305418", name = "Zebrzydowice", text_display = "[[w:Zebrzydowice|Zebrzydowice]]", lat = 49.9, long = 19.6333, }, { wikidata = "Q2273055", name = "Zielonki", text_display = "[[w:Zielonki|Zielonki]]", lat = 50.1209, long = 19.9216, }, { wikidata = "Q1280261", name = "Świątniki Górne", text_display = "[[w:Świątniki Górne|Świątniki Górne]]", lat = 49.9333, long = 19.95, }, { wikidata = "Q149411", name = "Żarki", text_display = "[[w:Żarki|Żarki]]", lat = 50.6281, long = 19.3703, }, }, { wikidata = "Q128395208", name = "Western Lublin", text_display = "[[w:Western Lublin dialect|Western Lublin]]", lat = 51.25, long = 22.5667, { wikidata = "Q9138477", name = "Abramowice", text_display = "[[w:Abramowice|Abramowice]]", lat = 51.1945, long = 22.5685, }, { wikidata = "Q248595", name = "Babin", text_display = "[[w:Babin|Babin]]", lat = 51.1749, long = 22.3407, }, { wikidata = "Q854624", name = "Bełżyce", text_display = "[[w:Bełżyce|Bełżyce]]", lat = 51.1743, long = 22.2802, }, { wikidata = "Q4953623", name = "Braciejowice", text_display = "[[w:Braciejowice|Braciejowice]]", lat = 51.1833, long = 21.8333, }, { wikidata = "Q4974020", name = "Bronowice", text_display = "[[w:Bronowice|Bronowice]]", lat = 51.45, long = 21.9167, }, { wikidata = "Q995820", name = "Bychawa", text_display = "[[w:Bychawa|Bychawa]]", lat = 51.0167, long = 22.5333, }, { wikidata = "Q5004572", name = "Bystrzejowice", text_display = "[[w:Bystrzejowice|Bystrzejowice]]", lat = 51.1586, long = 22.7594, }, { wikidata = "Q5103290", name = "Chmielnik", text_display = "[[w:Chmielnik|Chmielnik]]", lat = 51.2, long = 22.2, }, { wikidata = "Q2264237", name = "Chodel", text_display = "[[w:Chodel|Chodel]]", lat = 51.1119, long = 22.1331, }, { wikidata = "Q5119554", name = "Ciecierzyn", text_display = "[[w:Ciecierzyn|Ciecierzyn]]", lat = 51.3192, long = 22.6069, }, { wikidata = "Q124290938", name = "Czechów Północny", text_display = "[[w:Czechów Północny|Czechów Północny]]", lat = 51.2694, long = 22.5474, }, { wikidata = "Q5202142", name = "Czesławice", text_display = "[[w:Czesławice, Lublin Voivodeship|Czesławice]]", lat = 51.3064, long = 22.2672, }, { wikidata = "Q1954373", name = "Dys", text_display = "[[w:Dys|Dys]]", lat = 51.3167, long = 22.5667, }, { wikidata = "Q2031952", name = "Garbów", text_display = "[[w:Garbów|Garbów]]", lat = 51.3503, long = 22.34, }, { wikidata = "Q5529290", name = "Gałęzów", text_display = "[[w:Gałęzów|Gałęzów]]", lat = 50.9833, long = 22.5333, }, { wikidata = "Q2055291", name = "Gmina Serniki", text_display = "[[w:Gmina Serniki|Gmina Serniki]]", lat = 51.4333, long = 22.6667, }, { wikidata = "Q5577084", name = "Godziszów", text_display = "[[w:Godziszów|Godziszów]]", lat = 50.7525, long = 22.485, }, { wikidata = "Q5590883", name = "Grabówka", text_display = "[[w:Grabówka|Grabówka]]", lat = 51.1117, long = 22.3047, }, { wikidata = "Q908039", name = "Góra Puławska", text_display = "[[w:Góra Puławska|Góra Puławska]]", lat = 51.4, long = 21.9167, }, { wikidata = "Q5627488", name = "Głodno", text_display = "[[w:Głodno|Głodno]]", lat = 51.1833, long = 21.85, }, { wikidata = "Q9284340", name = "Głusk", text_display = "[[w:Głusk|Głusk]]", lat = 51.1897, long = 22.6025, }, { wikidata = "Q991840", name = "Janów Lubelski", text_display = "[[w:Janów Lubelski|Janów Lubelski]]", lat = 50.7, long = 22.4, }, { wikidata = "Q654050", name = "Janów Lubelski County", text_display = "[[w:Janów Lubelski County|Janów Lubelski County]]", lat = 50.7167, long = 22.4167, }, { wikidata = "Q940327", name = "Józefów", text_display = "[[w:Józefów, Lublin County|Józefów]]", lat = 51.32, long = 22.4019, }, { wikidata = "Q6321224", name = "Józwów", text_display = "[[w:Józwów|Józwów]]", lat = 50.9569, long = 22.4869, }, { wikidata = "Q130536", name = "Kamionka", text_display = "[[w:Kamionka|Kamionka]]", lat = 51.4716, long = 22.4627, }, { wikidata = "Q774098", name = "Kazimierz Dolny", text_display = "[[w:Kazimierz Dolny|Kazimierz Dolny]]", lat = 51.3222, long = 21.9475, }, { wikidata = "Q6406119", name = "Kijany", text_display = "[[w:Kijany|Kijany]]", lat = 51.3333, long = 22.7667, }, { wikidata = "Q2393521", name = "Klementowice", text_display = "[[w:Klementowice|Klementowice]]", lat = 51.35, long = 22.15, }, { wikidata = "Q6433000", name = "Kosarzew", text_display = "[[w:Kosarzew|Kosarzew]]", lat = 50.9833, long = 22.65, }, { wikidata = "Q1959", name = "Końskowola", text_display = "[[w:Końskowola|Końskowola]]", lat = 51.4089, long = 22.0528, }, { wikidata = "Q6436171", name = "Krasienin", text_display = "[[w:Krasienin|Krasienin]]", lat = 51.3603, long = 22.4564, }, { wikidata = "Q983723", name = "Kraśnik", text_display = "[[w:Kraśnik|Kraśnik]]", lat = 50.9214, long = 22.2208, }, { wikidata = "Q581500", name = "Krępiec", text_display = "[[w:Krępiec, Lublin Voivodeship|Krępiec]]", lat = 51.2, long = 22.7333, }, { wikidata = "Q2316", name = "Kurów", text_display = "[[w:Kurów|Kurów]]", lat = 51.3894, long = 22.185, }, { wikidata = "Q912706", name = "Lubartów County", text_display = "[[w:Lubartów County|Lubartów County]]", lat = 51.4667, long = 22.6, }, { wikidata = "Q37333", name = "Lublin", text_display = "[[w:Lublin|Lublin]]", lat = 51.25, long = 22.5667, }, { wikidata = "Q912777", name = "Lublin County", text_display = "[[w:Lublin County|Lublin County]]", lat = 51.1342, long = 22.4665, }, { wikidata = "Q9394542", name = "Ługów", text_display = "[[w:Ługów, Lublin Voivodeship|Ługów]]", lat = 51.3189, long = 22.3164, }, { wikidata = "Q6737560", name = "Majdan Starowiejski", text_display = "[[w:Majdan Starowiejski|Majdan Starowiejski]]", lat = 50.95, long = 22.4833, }, { wikidata = "Q786098", name = "Maszki", text_display = "[[w:Maszki|Maszki]]", lat = 51.25, long = 22.2667, }, { wikidata = "Q6917075", name = "Moszenki", text_display = "[[w:Moszenki|Moszenki]]", lat = 51.3, long = 22.35, }, { wikidata = "Q1935695", name = "Motycz", text_display = "[[w:Motycz|Motycz]]", lat = 51.2333, long = 22.3833, }, { wikidata = "Q6967783", name = "Nasutów", text_display = "[[w:Nasutów|Nasutów]]", lat = 51.3625, long = 22.5294, }, { wikidata = "Q1916952", name = "Nałęczów", text_display = "[[w:Nałęczów|Nałęczów]]", lat = 51.2833, long = 22.2167, }, { wikidata = "Q7032070", name = "Niezabitów", text_display = "[[w:Niezabitów|Niezabitów]]", lat = 51.25, long = 22.1333, }, { wikidata = "Q123386867", name = "Niezdów", text_display = "[[w:Niezdów|Niezdów]]", lat = 51.1477, long = 21.9407, }, { wikidata = "Q912974", name = "Opole Lubelskie County", text_display = "[[w:Opole Lubelskie County|Opole Lubelskie County]]", lat = 51.15, long = 21.9667, }, { wikidata = "Q7116835", name = "Ożarów, Lublin Voivodeship", text_display = "[[w:Ożarów, Lublin Voivodeship|Ożarów, Lublin Voivodeship]]", lat = 51.2956, long = 22.3033, }, { wikidata = "Q7127534", name = "Palikije Pierwsze", text_display = "[[w:Palikije Pierwsze|Palikije Pierwsze]]", lat = 51.2333, long = 22.3167, }, { wikidata = "Q7197045", name = "Piotrawin", text_display = "[[w:Piotrawin|Piotrawin]]", lat = 51.3258, long = 22.4283, }, { wikidata = "Q7197086", name = "Piotrowice", text_display = "[[w:Piotrowice|Piotrowice]]", lat = 51.0869, long = 22.4775, }, { wikidata = "Q7197116", name = "Piotrowice Wielkie", text_display = "[[w:Piotrowice Wielkie|Piotrowice Wielkie]]", lat = 51.3333, long = 22.4167, }, { wikidata = "Q280043", name = "Polanówka", text_display = "[[w:Polanówka|Polanówka]]", lat = 51.1333, long = 22.5333, }, { wikidata = "Q11823838", name = "Ponikwoda", text_display = "[[w:Ponikwoda|Ponikwoda]]", lat = 51.2672, long = 22.5867, }, { wikidata = "Q5289082", name = "Pożóg", text_display = "[[w:Pożóg|Pożóg]]", lat = 51.3831, long = 22.0731, }, { wikidata = "Q320007", name = "Puławy", text_display = "[[w:Puławy|Puławy]]", lat = 51.4166, long = 21.9694, }, { wikidata = "Q913353", name = "Puławy County", text_display = "[[w:Puławy County|Puławy County]]", lat = 51.4167, long = 21.9667, }, { wikidata = "Q1860696", name = "Rozkopaczew", text_display = "[[w:Rozkopaczew|Rozkopaczew]]", lat = 51.4167, long = 22.85, }, { wikidata = "Q9324071", name = "Rury", text_display = "[[w:Rury|Rury]]", lat = 51.2388, long = 22.5166, }, { wikidata = "Q138794", name = "Rzeczyca Księża", text_display = "[[w:Rzeczyca Księża|Rzeczyca Księża]]", lat = 50.8667, long = 22.2167, }, { wikidata = "Q7398132", name = "Sadurki", text_display = "[[w:Sadurki|Sadurki]]", lat = 51.2833, long = 22.2833, }, { wikidata = "Q21152399", name = "Serniki", text_display = "[[w:Serniki|Serniki]]", lat = 51.4333, long = 22.6667, }, { wikidata = "Q7536321", name = "Skorczyce", text_display = "[[w:Skorczyce|Skorczyce]]", lat = 51.0167, long = 22.2, }, { wikidata = "Q7636868", name = "Sułów", text_display = "[[w:Sułów|Sułów]]", lat = 50.9064, long = 22.3608, }, { wikidata = "Q7664277", name = "Szczekarków", text_display = "[[w:Szczekarków|Szczekarków]]", lat = 51.25, long = 21.8833, }, { wikidata = "Q2044194", name = "Urzędów", text_display = "[[w:Urzędów|Urzędów]]", lat = 50.9931, long = 22.1425, }, { wikidata = "Q631495", name = "Wilkołaz", text_display = "[[w:Wilkołaz|Wilkołaz]]", lat = 51.0056, long = 22.3361, }, { wikidata = "Q8029433", name = "Wola Gałęzowska", text_display = "[[w:Wola Gałęzowska|Wola Gałęzowska]]", lat = 50.9833, long = 22.55, }, { wikidata = "Q780470", name = "Wólka", text_display = "[[w:Wólka|Wólka]]", lat = 51.2667, long = 22.65, }, { wikidata = "Q8038684", name = "Wronów", text_display = "[[w:Wronów|Wronów]]", lat = 51.1667, long = 22.15, }, { wikidata = "Q9378172", name = "Wrotków", text_display = "[[w:Wrotków|Wrotków]]", lat = 51.2097, long = 22.55, }, { wikidata = "Q8038737", name = "Wrzelów", text_display = "[[w:Wrzelów|Wrzelów]]", lat = 51.2167, long = 21.85, }, { wikidata = "Q9379889", name = "Wylągi", text_display = "[[w:Wylągi|Wylągi]]", lat = 51.3133, long = 21.9913, }, { wikidata = "Q1947607", name = "Wąwolnica", text_display = "[[w:Wąwolnica|Wąwolnica]]", lat = 51.2944, long = 22.1472, }, { wikidata = "Q8041372", name = "Włostowice", text_display = "[[w:Włostowice|Włostowice]]", lat = 51.3941, long = 21.9772, }, { wikidata = "Q961950", name = "Zakrzówek", text_display = "[[w:Zakrzówek|Zakrzówek]]", lat = 50.9511, long = 22.3831, }, { wikidata = "Q8067101", name = "Zastów Polanowski", text_display = "[[w:Zastów Polanowski|Zastów Polanowski]]", lat = 51.3, long = 21.8833, }, { wikidata = "Q9390016", name = "Zemborzyce", text_display = "[[w:Zemborzyce|Zemborzyce]]", lat = 51.1706, long = 22.4967, }, { wikidata = "Q8071618", name = "Zielonka", text_display = "[[w:Zielonka|Zielonka]]", lat = 50.8333, long = 22.1667, }, { wikidata = "Q8072948", name = "Ziółków", text_display = "[[w:Ziółków|Ziółków]]", lat = 51.3, long = 22.8, }, { wikidata = "Q8081003", name = "Łukawka", text_display = "[[w:Łukawka|Łukawka]]", lat = 51.5167, long = 22.2333, }, { wikidata = "Q384433", name = "Łęczna", text_display = "[[w:Łęczna|Łęczna]]", lat = 51.3, long = 22.8833, }, { wikidata = "Q387387", name = "Świdnik", text_display = "[[w:Świdnik|Świdnik]]", lat = 51.2333, long = 22.7, }, { wikidata = "Q8082962", name = "Żabia Wola", text_display = "[[w:Żabia Wola|Żabia Wola]]", lat = 51.1633, long = 22.5869, }, { wikidata = "Q1971654", name = "Żyrzyn", text_display = "[[w:Żyrzyn|Żyrzyn]]", lat = 51.4978, long = 22.0975, }, { name = "Kocyjanów", text_display = "[[w:Kocyjanów|Kocyjanów]]", }, }, { name = "Western Lublin, Eastern Lublin", text_display = "[[w:Western Lublin, Eastern Lublin dialect|Western Lublin, Eastern Lublin]]", { wikidata = "Q54155", name = "Lublin Voivodeship", text_display = "[[w:Lublin Voivodeship|Lublin Voivodeship]]", lat = 51.2167, long = 22.9, }, }, { wikidata = "Q128395195", name = "Łęczyca", text_display = "[[w:Łęczyca dialect|Łęczyca]]", lat = 52.0583, long = 19.2, { wikidata = "Q5201954", name = "Czerchów", text_display = "[[w:Czerchów|Czerchów]]", lat = 51.9833, long = 19.3333, }, { wikidata = "Q986145", name = "Dłutów", text_display = "[[w:Dłutów|Dłutów]]", lat = 51.5586, long = 19.39, }, { wikidata = "Q2460198", name = "Gmina Ozorków", text_display = "[[w:Gmina Ozorków|Gmina Ozorków]]", lat = 51.9667, long = 19.2833, }, { wikidata = "Q985746", name = "Grabów", text_display = "[[w:Grabów|Grabów]]", lat = 52.1283, long = 19.0094, }, { wikidata = "Q6160458", name = "Jarochów", text_display = "[[w:Jarochów|Jarochów]]", lat = 52.1833, long = 19.1833, }, { wikidata = "Q999644", name = "Krośniewice", text_display = "[[w:Krośniewice|Krośniewice]]", lat = 52.2536, long = 19.17, }, { wikidata = "Q580", name = "Łódź", text_display = "[[w:Łódź|Łódź]]", lat = 51.75, long = 19.4667, }, { wikidata = "Q2063844", name = "Mazew", text_display = "[[w:Mazew|Mazew]]", lat = 52.1772, long = 19.1212, }, { wikidata = "Q7101582", name = "Orenice", text_display = "[[w:Orenice|Orenice]]", lat = 52.0833, long = 19.5167, }, { wikidata = "Q7105441", name = "Orłów", text_display = "[[w:Orłów, Łódź Voivodeship|Orłów]]", lat = 52.1334, long = 19.5706, }, { wikidata = "Q985854", name = "Parzęczew", text_display = "[[w:Parzęczew|Parzęczew]]", lat = 51.9406, long = 19.2056, }, { wikidata = "Q984274", name = "Piątek", text_display = "[[w:Piątek|Piątek]]", lat = 52.0689, long = 19.4799, }, { wikidata = "Q7191449", name = "Pieczew", text_display = "[[w:Pieczew|Pieczew]]", lat = 52.1333, long = 18.9333, }, { wikidata = "Q8081912", name = "Śliwniki", text_display = "[[w:Śliwniki|Śliwniki]]", lat = 51.9706, long = 19.2368, }, { wikidata = "Q403941", name = "Tuszyn", text_display = "[[w:Tuszyn|Tuszyn]]", lat = 51.6092, long = 19.53, }, { wikidata = "Q104407", name = "Zgierz", text_display = "[[w:Zgierz|Zgierz]]", lat = 51.8564, long = 19.4061, }, }, }, { name = "New mixed dialects", text_display = "Nowe dialekty mieszane", color = "var(--wikt-palette-cyan-1);color:inherit", }, { name = "Borderlands", color = "var(--wikt-palette-pink-1);color:inherit", { wikidata = "Q1865040", name = "Northern Borderlands", text_display = "[[w:Northern Borderlands dialect|Northern Borderlands]]", lat = 55.2, long = 24, { wikidata = "Q140147", name = "Brest", text_display = "[[w:Brest|Brest]]", lat = 52.0847, long = 23.6569, }, { wikidata = "Q173822", name = "Brześć area", text_display = "[[w:Brześć area|Brześć area]]", lat = 52.3825, long = 25.1998, }, { wikidata = "Q2294422", name = "Grodno Governorate", text_display = "[[w:Grodno Governorate|Grodno Governorate]]", lat = 53.6667, long = 23.8167, }, { wikidata = "Q4115712", name = "Kaunas", text_display = "[[w:Kaunas|Kaunas]]", lat = 54.9, long = 23.9333, }, { wikidata = "Q241475", name = "Lida", text_display = "[[w:Lida|Lida]]", lat = 53.8956, long = 25.2958, }, { wikidata = "Q37", name = "Lithuania", text_display = "[[w:Lithuania|Lithuania]]", lat = 55.2, long = 24, }, { wikidata = "Q5622", name = "Neman river", text_display = "[[w:Neman river|Neman river]]", lat = 53.4701, long = 27.3658, }, { wikidata = "Q826076", name = "Sejny", text_display = "[[w:Sejny|Sejny]]", lat = 54.1, long = 23.35, }, { wikidata = "Q6548102", name = "Šaŭry", text_display = "[[w:Šaŭry|Šaŭry]]", lat = 54.0824, long = 24.9138, }, { wikidata = "Q216", name = "Vilnius", text_display = "[[w:Vilnius|Vilnius]]", lat = 54.6872, long = 25.28, }, { wikidata = "Q6479906", name = "Vilnius County", text_display = "[[w:Vilnius County|Vilnius County]]", lat = 54.6872, long = 25.28, }, { wikidata = "Q137863", name = "Švenčionys", text_display = "[[w:Švenčionys|Švenčionys]]", lat = 55.1333, long = 26.1556, }, }, { wikidata = "Q9206938", name = "Southern Borderlands", text_display = "[[w:Southern Borderlands dialect|Southern Borderlands]]", lat = 50.45, long = 30.5236, { wikidata = "Q158821", name = "Drohobych", text_display = "[[w:Drohobych|Drohobych]]", lat = 49.35, long = 23.5, }, { wikidata = "Q3573883", name = "Eastern Galicia", text_display = "[[w:Eastern Galicia|Eastern Galicia]]", lat = 49.8419, long = 24.0315, }, { wikidata = "Q156821", name = "Rohatyn", text_display = "[[w:Rohatyn|Rohatyn]]", lat = 49.4167, long = 24.6167, }, { wikidata = "Q930449", name = "Horodok, Lviv Oblast", text_display = "[[w:Horodok, Lviv Oblast|Horodok, Lviv Oblast]]", lat = 49.7822, long = 23.6436, }, { wikidata = "Q193965", name = "Kamianets-Podilskyi", text_display = "[[w:Kamianets-Podilskyi|Kamianets-Podilskyi]]", lat = 48.6806, long = 26.5806, }, { wikidata = "Q52193", name = "Kolomyia", text_display = "[[w:Kolomyia|Kolomyia]]", lat = 48.5167, long = 25.0333, }, { wikidata = "Q4229334", name = "Komarovychi", text_display = "[[w:Komarovychi|Komarovychi]]", lat = 49.6264, long = 22.8547, }, { wikidata = "Q36036", name = "Lviv", text_display = "[[w:Lviv|Lviv]]", lat = 49.8425, long = 24.0322, }, { wikidata = "Q281973", name = "Plyskiv", text_display = "[[w:Plyskiv|Plyskiv]]", lat = 49.3692, long = 29.2847, }, { wikidata = "Q4465120", name = "Tulyholove", text_display = "[[w:Tulyholove|Tulyholove]]", lat = 49.5978, long = 23.6408, }, { wikidata = "Q212", name = "Ukraine", text_display = "[[w:Ukraine|Ukraine]]", lat = 50.45, long = 30.5236, }, { wikidata = "Q7530", name = "Volhynia", text_display = "[[w:Volhynia|Volhynia]]", lat = 50.7389, long = 25.3233, }, }, }, { name = "Goral", text_display = "[[w:Goral dialect|Goral]]", color = "var(--wikt-palette-brown-1);color:inherit", { wikidata = "Q131324996", name = "Babia Góra", text_display = "[[w:Babia Góra dialect|Babia Góra]]", lat = 49.5731, long = 19.5306, { wikidata = "Q984857", name = "Andrychów", text_display = "[[w:Andrychów|Andrychów]]", lat = 49.8667, long = 19.3333, }, { wikidata = "Q5612505", name = "Grzechynia", text_display = "[[w:Grzechynia|Grzechynia]]", lat = 49.7169, long = 19.66, }, { wikidata = "Q2972734", name = "Juszczyn", text_display = "[[w:Juszczyn|Juszczyn]]", lat = 49.6944, long = 19.6944, }, { wikidata = "Q1280822", name = "Maków Podhalański", text_display = "[[w:Maków Podhalański|Maków Podhalański]]", lat = 49.7306, long = 19.6808, }, { wikidata = "Q7534211", name = "Skawica", text_display = "[[w:Skawica|Skawica]]", lat = 49.6781, long = 19.6278, }, { wikidata = "Q167783", name = "Zawoja", text_display = "[[w:Zawoja|Zawoja]]", lat = 49.6667, long = 19.5667, }, }, { wikidata = "Q131325008", name = "Kliszczak", text_display = "[[w:Kliszczak dialect|Kliszczak]]", lat = 49.8333, long = 19.9333, { wikidata = "Q6439924", name = "Krzeczów", text_display = "[[w:Krzeczów|Krzeczów]]", lat = 49.6861, long = 19.9083, }, { wikidata = "Q2690943", name = "Osielec", text_display = "[[w:Osielec|Osielec]]", lat = 49.6833, long = 19.7667, }, { wikidata = "Q7686388", name = "Tarnawa", text_display = "[[w:Tarnawa|Tarnawa]]", lat = 49.8333, long = 20.3, }, }, { wikidata = "Q2076893", name = "Podhale", text_display = "[[w:Podhale dialect|Podhale]]", lat = 49.4793, long = 20.0291, { wikidata = "Q5103514", name = "Chochołów", text_display = "[[w:Chochołów|Chochołów]]", lat = 49.3679, long = 19.8175, }, { wikidata = "Q5202047", name = "Czerwienne", text_display = "[[w:Czerwienne|Czerwienne]]", lat = 49.3833, long = 19.9, }, { wikidata = "Q1833841", name = "Dzianisz", text_display = "[[w:Dzianisz|Dzianisz]]", lat = 49.3314, long = 19.8672, }, { wikidata = "Q7078348", name = "Odrowąż", text_display = "[[w:Odrowąż|Odrowąż]]", lat = 49.4974, long = 19.8538, }, { wikidata = "Q7191679", name = "Pieniążkowice", text_display = "[[w:Pieniążkowice|Pieniążkowice]]", lat = 49.498, long = 19.8804, }, { wikidata = "Q2217328", name = "Rabka Zaryte", text_display = "[[w:Rabka Zaryte|Rabka Zaryte]]", lat = 49.6267, long = 19.9928, }, { wikidata = "Q1005356", name = "Rabka-Zdrój", text_display = "[[w:Rabka-Zdrój|Rabka-Zdrój]]", lat = 49.6167, long = 19.9667, }, { wikidata = "Q289920", name = "Skawa", text_display = "[[w:Skawa|Skawa]]", lat = 49.6167, long = 19.9, }, { wikidata = "Q144786", name = "Zakopane", text_display = "[[w:Zakopane|Zakopane]]", lat = 49.2994, long = 19.9519, }, { wikidata = "Q8080751", name = "Łopuszna", text_display = "[[w:Łopuszna|Łopuszna]]", lat = 49.4833, long = 20.1333, }, { wikidata = "Q3260191", name = "Ząb", text_display = "[[w:Ząb, Lesser Poland Voivodeship|Ząb]]", lat = 49.3361, long = 19.9475, }, { wikidata = "Q4504184", name = "Żarnówka", text_display = "[[w:Żarnówka|Żarnówka]]", lat = 49.7289, long = 19.7272, }, }, { wikidata = "Q9283012", name = "Zagórze", text_display = "[[w:Zagórze dialect|Zagórze]]", lat = 49.7122, long = 21.1972, { wikidata = "Q749921", name = "Kasina Wielka", text_display = "[[w:Kasina Wielka|Kasina Wielka]]", lat = 49.7211, long = 20.1386, }, { wikidata = "Q7206968", name = "Podobin", text_display = "[[w:Podobin|Podobin]]", lat = 49.6333, long = 20.1, }, { wikidata = "Q7227836", name = "Ponice", text_display = "[[w:Ponice|Ponice]]", lat = 49.6, long = 19.9833, }, { wikidata = "Q2102990", name = "Poręba Wielka", text_display = "[[w:Poręba Wielka|Poręba Wielka]]", lat = 49.6106, long = 20.0625, }, }, { wikidata = "Q131325023", name = "Łącko", text_display = "[[w:Łącko dialect|Łącko]]", lat = 49.5583, long = 20.435, { wikidata = "Q2401784", name = "Zabrzeż", text_display = "[[w:Zabrzeż|Zabrzeż]]", lat = 49.544, long = 20.3955, }, }, { wikidata = "Q24942391", name = "Żywiec", text_display = "[[w:Żywiec dialect|Żywiec]]", lat = 49.6833, long = 19.2167, { wikidata = "Q7384825", name = "Rychwałdek", text_display = "[[w:Rychwałdek|Rychwałdek]]", lat = 49.6833, long = 19.2667, }, { wikidata = "Q7563188", name = "Sopotnia Mała", text_display = "[[w:Sopotnia Mała|Sopotnia Mała]]", lat = 49.6, long = 19.2667, }, }, }, { name = "Lach", text_display = "[[w:Lach dialect|Lach]]", { name = "Limanowa", text_display = "[[w:Limanowa dialect|Limanowa]]", lat = 49.7006, long = 20.4267, { wikidata = "Q1340585", name = "Limanowa County", text_display = "[[w:Limanowa County|Limanowa County]]", lat = 49.7006, long = 20.4267, }, { wikidata = "Q7571925", name = "Sowliny", text_display = "[[w:Sowliny|Sowliny]]", lat = 49.7333, long = 20.4167, }, }, { wikidata = "Q9283008", name = "Podegrodzie", text_display = "[[w:Podegrodzie dialect|Podegrodzie]]", lat = 49.5667, long = 20.5833, { wikidata = "Q9249252", name = "Dąbrówka Polska", text_display = "[[w:Dąbrówka Polska|Dąbrówka Polska]]", lat = 49.5906, long = 20.6915, }, { wikidata = "Q802", name = "Nowy Sącz", text_display = "[[w:Nowy Sącz|Nowy Sącz]]", lat = 49.625, long = 20.6956, }, { wikidata = "Q1280257", name = "Stary Sącz", text_display = "[[w:Stary Sącz|Stary Sącz]]", lat = 49.5636, long = 20.6349, }, { wikidata = "Q9387484", name = "Zawada", text_display = "[[w:Zawada|Zawada]]", lat = 49.58, long = 20.7319, }, }, }, } return export djmw8mo64t4l7p1s07qyjgy4yc6wyzq アトゥイ 0 393100 2350505 2345422 2026-05-06T15:18:25Z Hiyuune 50834 /* Cách phát âm */ 2350505 wikitext text/x-wiki =={{langname|ain}}== ==={{section|n}}=== {{head|ain|Danh từ|tr=atuy}} # {{lb|ain|Hokkaido|Sakhalin}} [[biển|Biển]], [[đại dương]]. # {{lb|ain|Kuril|Nam Kuril}} [[eo biển|Eo biển]] ===={{section|alt}}==== * {{alter|ain|アトゥイカ||phương ngữ, Kuril}} * {{alter|ain|アト゚ィ||Hokkaido|Sakhalin}} ===={{section|etym}}==== Từ tiếng Ainu nguyên thủy ''*atuy'' LL (“biển”).<ref>{{R:ain:Vovin:1993|page=81}}</ref> ===={{section|drv}}==== * {{l|ain|アトゥヨウシ|tr=atuyousi}} {{q|Sakhalin}} * {{l|ain|アトゥインネ|tr=atuinne}} ===={{section|pron}}==== * {{ain-IPA|'atúy}} [[File:MapOfAinuLanguage-Sea.svg|thumb|400px|Bản đồ phương ngữ tiếng Ainu: biển]] {|class="wikitable" |+ bảng phương ngữ của {{pagename}}: [[biển]] (1960)<ref>{{R:ain:HattoriAndChiri:1960}}</ref> ! địa danh !! cách phát âm |- ! Yakumo (八雲) | 'atúy |- ! Oshamambe (長万部) | 'atúy |- ! Horobetsu (幌別) | 'atúy |- ! Hiratori (平取) | 'atúy |- ! Nukkibetsu (貫気別) | 'atúy |- ! Niikappu (新冠) | 'atúy |- ! Samani (様似) | 'acuy |- ! Obihiro (帯広) | 'atúy |- ! Kushiro (釧路) | 'atúy |- ! Bihoro (美幌) | 'atúy |- ! Asahikawa (旭川) | 'atúy |- ! Nayoro (名寄) | 'atúy |- ! Soya (宗谷) | 'atúy |- ! Ochiho (落帆) | 'atúy |- ! Tarantomari (多蘭泊) | 'atúy |- ! Maoka (真岡) | 'atúy |- ! Shiraura (白浦) | 'atúy |- ! Raichishka (ライチシカ) | 'atúy |- ! Nairo (内路) | 'atúy |} ===={{section|syn}}==== {{dial syn|ain|アトゥイ}} ==={{section|ref}}=== <references/> :* https://www.translationdirectory.com/dictionaries/dictionary036.php :* {{R:ain:IshikariWordlist}} :* {{R:ain:KarafutoWordlist}} :* {{R:ain:BugaevaAndSato2021}} {{C|ain|Nước|Địa lý học}} oasr8w6d2ul2ttsr1cl0ab22l9xbpp4 नियंत्रण 0 395918 2350464 2350414 2026-05-06T13:50:23Z Hiyuune 50834 2350464 wikitext text/x-wiki =={{langname|hi}}== ==={{section|etym}}=== {{root|hi|ine-pro|*yem-}} {{root|hi|sa|यम्}} {{bor+|hi|sa|नियन्त्रण}}. {{surf|hi|नि-|यंत्रण}}. Xem thêm {{mention|hi|यंत्र}}. ==={{section|pron}}=== * {{hi-IPA}} ==={{section|n}}=== {{hi-head|Danh từ|m}} # [[kiểm soát|Kiểm soát]]. ===={{section|decl}}==== {{hi-ndecl|<M>}} ===={{section|drv}}==== * {{l|hi|नियंत्रण करना|t=kiểm soát}} ===={{section|rel}}==== * {{l|hi|नियंत्रित}} * {{l|hi|नियंत्रक}} =={{langname|mr}}== ==={{section|etym}}=== {{root|mr|ine-pro|*yem-}} {{root|mr|sa|यम्}} {{bor+|mr|sa|नियन्त्रण}}. ==={{section|pron}}=== * {{mr-IPA}} * {{hyph|mr|नि|यं|त्रण}} * {{rhyme|mr|əɳ|s=2}} ==={{section|n}}=== {{mr-noun|g=n}}<ref>{{R:mr:Amarkosh}}</ref><ref>{{R:mr:Berntsen}}</ref> # [[kiểm soát|Kiểm soát]]. #: {{syn|mr|ताबा}} #: {{uxa|mr|त्याने परिस्थितीवर पूर्ण '''नियंत्रण''' ठेवले.}} # [[cản trở|Cản trở]], [[ngăn cản]], [[kiểm chế]]. #: {{syn|mr|अंकुश|आवर}} #: {{uxa|mr|रागावर '''नियंत्रण''' ठेवता न आल्यामुळे त्याने आयुष्यात अनेकांना दुखावलं.|Vì không thể kiềm chế cơn giận của mình nên anh ấy đã làm tổn thương nhiều người trong cuộc đời.}} ===={{section|decl}}==== {{mr-ndecl|<N>}} ==={{section|ref}}=== {{reflist}} l9xy93r4y4senexa20wdaqtisc71ztr Bản mẫu:head/sandbox 10 395921 2350436 2026-05-06T12:07:07Z Kateru Zakuro 34522 Trang mới: “<includeonly>{{#invoke:headword/templates/sandbox|head_t}}<!-- --></includeonly><noinclude>{{head|und|nouns}}{{documentation}}</noinclude>” 2350436 wikitext text/x-wiki <includeonly>{{#invoke:headword/templates/sandbox|head_t}}<!-- --></includeonly><noinclude>{{head|und|nouns}}{{documentation}}</noinclude> dcg0qm3c4lu7qzeswhybnhvje3sxkkm アトゥイカ 0 395922 2350453 2026-05-06T12:43:31Z Hiyuune 50834 + ain 2350453 wikitext text/x-wiki =={{langname|ain}}== ==={{section|n}}=== [[File:MapOfAinuLanguage-Sea.svg|thumb|400px|Bản đồ phương ngữ tiếng Ainu: biển]] {{head|ain|Danh từ|tr=atuika, atuyka}} # {{lb|ain|Kuril|Nam Kuril}} [[biển|Biển]]. ===={{section|alt}}==== * {{alter|ain|アトゥイ||Hokkaido, Sakhalin}} * {{alter|ain|アトイカ||Kuril}} ===={{section|etym}}==== Từ tiếng Ainu nguyên thủy ''*atuy'' LL (“biển”).<ref>{{R:ain:Vovin:1993|page=81}}</ref> ===={{section|syn}}==== {{dial syn|ain|アトゥイ}} ==={{section|ref}}=== <references/> :* {{R:ain:Torii1903}} :* {{R:ain:Murayama1970}} :* {{R:ain:BugaevaAndSato2021}} {{c|ain|Water|Geography}} 91tuwk0zxq4h9754a3n91a9o5ld6hdt 2350456 2350453 2026-05-06T12:44:52Z Hiyuune 50834 /* Tiếng Ainu */ 2350456 wikitext text/x-wiki =={{langname|ain}}== ==={{section|n}}=== [[File:MapOfAinuLanguage-Sea.svg|thumb|400px|Bản đồ phương ngữ tiếng Ainu: biển]] {{head|ain|Danh từ|tr=atuika, atuyka}} # {{lb|ain|Kuril|Nam Kuril}} [[biển|Biển]]. ===={{section|alt}}==== * {{alter|ain|アトゥイ||Hokkaido, Sakhalin}} * {{alter|ain|アトイカ||Kuril}} ===={{section|etym}}==== Từ tiếng Ainu nguyên thủy ''*atuy'' LL (“biển”).<ref>{{R:ain:Vovin:1993|page=81}}</ref> ===={{section|syn}}==== {{dial syn|ain|アトゥイ}} ==={{section|ref}}=== <references/> :* {{R:ain:Torii1903}} :* {{R:ain:Murayama1970}} :* {{R:ain:BugaevaAndSato2021}} {{c|ain|Nước|Địa lý học}} l44yxh2nsfijfbr82v90pr95p8lzb0z 0 395923 2350458 2026-05-06T12:45:23Z Lcsnes 40261 Trang mới: “{{-Latn-}} ==={{ĐM|desction}}=== {{head|mul|Chữ cái|chữ hoa|W̓}} #[[chữ|Chữ]] '''[[w]] viết thường''' với dấu phẩy trên (◌̓). ==={{ĐM|see}}=== {{Latn-script}} =={{langname|acv}}== ==={{ĐM|pron}}=== *{{IPA4|acv|/wˀ/}} ==={{ĐM|symbol}}=== {{head|acv|Ký tự|chữ hoa|W̓}} #Chữ cái Latinh viết thường thể hiện phụ âm '''{{IPAchar|/wˀ/}}''' trong tiếng Achumawi. #:{{ux|acv|waasééya'''w̓'''i|[[cậu]], [[chú]], [[bác]]|inl…” 2350458 wikitext text/x-wiki {{-Latn-}} ==={{ĐM|desction}}=== {{head|mul|Chữ cái|chữ hoa|W̓}} #[[chữ|Chữ]] '''[[w]] viết thường''' với dấu phẩy trên (◌̓). ==={{ĐM|see}}=== {{Latn-script}} =={{langname|acv}}== ==={{ĐM|pron}}=== *{{IPA4|acv|/wˀ/}} ==={{ĐM|symbol}}=== {{head|acv|Ký tự|chữ hoa|W̓}} #Chữ cái Latinh viết thường thể hiện phụ âm '''{{IPAchar|/wˀ/}}''' trong tiếng Achumawi. #:{{ux|acv|waasééya'''w̓'''i|[[cậu]], [[chú]], [[bác]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=acv|sc=Latn|qual=Bảng chữ cái Latinh tiếng Achumawi|a|c|e|h|i|j|k|l|m|n|o|p|q|r|s|t|u|w|y|ʼ}} ==={{ĐM|ref}}=== *{{Chú thích web|en|editor=Bruce E. Nevin|work=Achumawi – English Dictionary|entry=w|year=2020|entryurl=https://www.webonary.org/odissi/browse/browse-vernacular/?key=acv-fonipa-x-emic&letter=W|publisher=SIL International}} =={{langname|dtd}}== ==={{ĐM|pron}}=== *{{IPA4|dtd|/ˀw/}} ==={{ĐM|letter}}=== {{head|dtd|Chữ cái|chữ hoa|W̓}} #Chữ cái thứ 44 viết thường trong bảng chữ cái Latinh tiếng Ditidaht. #:{{ux|dtd|č̓ałač̓ti'''w̓'''ad|có [[sọc]], có [[vằn]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=dtd|sc=Latn|qual=Bảng chữ cái Latinh tiếng Ditidaht|Aa|Aa/aa|Bb|B̓/b̓|Cc|C̓/c̓|Čč|Č̓/č̓|Dd|D̓/d̓|Ee|Ee/ee|Hh|Ḥḥ|Ii|Ii/ii|Kk|Kʷ/kʷ|K̓/k̓|K̓ʷ/k̓ʷ|Ll|L̓/l̓|Łł|Ƛ/ƛ|Ƛ̓/ƛ̓|Mm|M̓/m̓|Nn|N̓/n̓|Ŋŋ|Oo|Oo/oo|Pp|P̓/p̓|Qq|Qʷ/qʷ|Q̓/q̓|Q̓ʷ/q̓ʷ|Ss|Šš|Tt|T̓/t̓|Uu|Uu/uu|Ww|W̓/w̓|Xx|Xʷ/xʷ|X̣/x̣|X̣ʷ/x̣ʷ|Yy|Y̓/y̓|ʔ|ʕ}} ==={{ĐM|ref}}=== *{{Chú thích web|entryurl=https://www.firstvoices.com/diidiitidq/alphabet/startsWith?char=w%CC%93&types=word|entry=w̓|author=FirstVoices|year=2024|work=diiɁdiitidq}} =={{langname|has}}== ==={{ĐM|alt}}=== *{{l|has|wʼ}} ==={{ĐM|pron}}=== *{{IPA4|has|/wˀ/}} ==={{ĐM|letter}}=== {{head|has|Chữ cái|chữ hoa|W̓}} #Chữ cái Latinh viết thường thể hiện phụ âm '''{{IPAchar|/wˀ/}}''' trong tiếng Haisla. #:{{ux|has|'''w̓'''a'''w̓'''x°k°awa|[[người thân]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=has|sc=Latn|qual=Bảng chữ cái Latinh tiếng Haisla|Aa|(’A/’a)|Bb|Cc|(C̓/c̓)|Dd|Ee|(’E/’e)|Əə|Gg|Ḡ/ḡ|(Ḡ°/ḡ°)|(G°/g°)|Hh|Ii|(’I/’i)|Kk|(K̓/k̓)|(K̓°/k̓°)|(K°/k°)|Ll|(L̓̓̓̓̓̓/l̓)|Lh/lh|Mm|(M̓/m̓)|Nn|(N̓/n̓)|Oo|(’O/’o)|Pp|(P̓/p̓)|Qq|(Q̓/q̓)|(Q̓°/q̓°)|(Q°/q°)|Ss|Tt|(T̓/t̓)|Uu|(’U/’u)|Ww|(W̓/w̓)|Xx|X̄/x̄|(X̄°/x̄°)|(X°/x°)|Yy|(Y̓/y̓)|Zz|ˈ}} ==={{ĐM|ref}}=== *{{Chú thích web|entryurl=https://www.firstvoices.com/haisla/alphabet/startsWith?char=w%CC%93&types=word|entry=w̓|author=FirstVoices|year=2026|work=Haisla}} =={{langname|kwk}}== ==={{ĐM|alt}}=== *{{angbr|{{l|kwk|ʼw}}}} trong bảng chữ cái Uʼmista (Kwakʼwala chuẩn) ==={{ĐM|pron}}=== *{{IPA4|kwk|/wˀ/}} ==={{ĐM|letter}}=== {{head|kwk|Chữ cái|chữ hoa|W̓}} #Chữ cái thứ 41 viết thường trong bảng chữ cái phương ngữ Liqʼwala. ==={{ĐM|see}}=== *{{letters|lang=kwk|sc=Latn|qual=Bảng chữ cái Uʼmista|Aa|A̱/a̱|Bb|Dd|Dł/dł|Dz/dz|Ee|Gg|Gw/gw|G̱/g̱|G̱w/g̱w|Hh|Ii|Kk|Kw/kw|K̓/k̓|K̓w/k̓w|Ḵ/ḵ|Ḵw/ḵw|Ḵ̓/ḵ̓|Ḵ̓w/ḵ̓w|Ll|ʼL/ʼl|Łł|Mm|ʼM/ʼm|Nn|ʼN/ʼn|Oo|Pp|P̓/p̓|Ss|Tt|T̓/t̓|Tł/tł|T̓ł/t̓ł|Ts/ts|T̓s/t̓s|Uu|Ww|ʼW/ʼw|Xx|Xw/xw|X̱/x̱|X̱w/x̱w|Yy|ʼY/ʼy|ʼ}} *{{letters|lang=kwk|sc=Latn|qual=Bảng chữ cái phương ngữ Liq̓ʷala|Aa|Əə|Bb|Dd|Ꟛ/ꟛ|Dᶻ/dᶻ|Ee|Gg|Gʷ/gʷ|Ǧǧ|Ǧʷ/ǧʷ|Hh|Ii|Kk|Kʷ/kʷ|K̓/k̓|K̓ʷ/k̓ʷ|Qq|Qʷ/qʷ|Q̓/q̓|Q̓ʷ/q̓ʷ|Ll|L̓/l̓|Łł|Mm|M̓/m̓|Nn|N̓/n̓|Oo|Pp|P̓/p̓|Ss|Tt|T̓/t̓|Ƛ/ƛ|Ƛ̓/ƛ̓|Cc|C̓/c̓|Uu|Ww|W̓/w̓|Xx|Xʷ/xʷ|X̌/x̌|X̌ʷ/x̌ʷ|Yy|Y̓/y̓|ʔ}} ==={{ĐM|ref}}=== *{{Chú thích web|en|author=First Voices|work=Kwak̓wala|entry=ʼ|year=2000-2025|entryurl=https://www.firstvoices.com/kwakwala/alphabet/startsWith?char=%27&types=word}} =={{langname|ncg}}== ==={{ĐM|pron}}=== *{{IPA4|ncg|/wˀ/}} ==={{ĐM|letter}}=== {{head|ncg|Chữ cái|chữ hoa|W̓}} #Chữ cái Latinh viết thường thể hiện phụ âm '''{{IPAchar|/wˀ/}}''' trong tiếng Nisga'a. #:{{ux|ncg|'''w̓'''ii|[[to]], [[lớn]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=ncg|sc=Latn|qual=Bảng chữ cái Latinh tiếng Nisga'a|Aa|(Aa/aa)|Bb|Cc|Dd|Ee|(Ee/ee)|Gg|(Gw/gw)|G̱/g̱|Hh|(Hl/hl)|Ii|(Ii/ii)|Jj|Kk|(K'/k')|Ḵḵ|(Ḵ'/ḵ')|(Kw/kw)|(Kw'/kw')|Ll|(L̓/l̓)|Łł|Mm|(M̓/m̓)|Nn|(N̓/n̓)|Oo|(Oo/oo)|Pp|(P'/p')|Ss|Tt|(T'/t')|(Tl/tl)|(Tl'/tl')|(Ts/ts)|(Ts'/ts')|Uu|(Uu/uu)|Ww|(W̓/w̓)|Xx|X̱/x̱|(Xw/xw)|Yy|(Y̓/y̓)|Zz}} ==={{ĐM|ref}}=== *{{Chú thích web|en|author=First Voices|work=Nisga'a|entry=w̓|year=2000-2026|entryurl=https://www.firstvoices.com/nisgaa/alphabet/startsWith?char=w%CC%93&types=word}} =={{langname|nuk}}== ==={{ĐM|pron}}=== *{{IPA4|nuk|/wˀ/}} ==={{ĐM|letter}}=== {{head|nuk|Chữ cái|chữ hoa|W̓}} #Chữ cái thứ 44 viết thường trong bảng chữ cái Latinh tiếng Nuu-chah-nulth. #:{{ux|nuk|'''w̓'''aqʔuu|được [[mời]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=nuk|sc=Latn|qual=Bảng chữ cái Latinh tiếng Nuu-chah-nult|Aa|Aa/aa|Bb|Cc|C̓/c̓|Čč|Č̓/č̓|Dd|Ee|Ee/ee|Hh|Ḥḥ|Ii|Ii/ii|Kk|K̓/k̓|Kʷ/kʷ|K̓ʷ/k̓ʷ|Ll|L̓/l̓|Łł|Ƛ/ƛ|Ƛ̓/ƛ̓|Mm|M̓/m̓|Nn|N̓/n̓|Ŋŋ|Oo|Oo/oo|Pp|P̓/p̓|Qq|Q̓/q̓|Qʷ/qʷ|Q̓ʷ/q̓ʷ|Ss|Šš|Tt|T̓/t̓|Uu|Uu/uu|Ww|W̓/w̓|Xx|Xʷ/xʷ|X̣/x̣|X̣ʷ/x̣ʷ|Yy|Y̓/y̓|ʕ|ʔ}} ==={{ĐM|ref}}=== *{{Chú thích web|en|author=First Voices|work=t̓ukʷaaʔatḥ (Barkley West)|entry=w̓|year=2000-2026|entryurl=https://www.firstvoices.com/nuu-chah-nulth-barkley/alphabet/startsWith?char=w%CC%93&types=word}} =={{langname|oka}}== ==={{ĐM|alt}}=== *{{l|oka|wʼ}} ==={{ĐM|pron}}=== *{{IPA4|oka|/wˀ/}} ==={{ĐM|letter}}=== {{head|oka|Chữ cái|chữ hoa|W̓}} #Chữ cái thứ 40 trong bảng chữ cái Latinh tiếng Okanagan. #:{{ux|oka|'''w̓'''púlaʔxʷm̓|cọng [[rơm]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=oka|sc=Latn|qual=Bảng chữ cái Latinh tiếng Okanagan|Aa|Áá|Cc|C̓/c̓|Əə|Ə́/ə́|Ɣɣ|Ɣ̓/ɣ̓|Hh|Ḥḥ|Ii|Íí|Kk|K̓/k̓|Kʷ/kʷ|K̓ʷ/k̓ʷ|Ll|L̓/l̓|Łł|Ɬɬ|Ƛ̓/ƛ̓|Mm|M̓/m̓|Nn|N̓/n̓|Pp|P̓/p̓|Qq|Q̓/q̓|Qʷ/qʷ|Q̓ʷ/q̓ʷ|Rr|R̓/r̓|Ss|Tt|T̓/t̓|Uu|Úú|Ww|W̓/w̓|Xx|Xʷ/xʷ|X̌/x̌|X̌ʷ/x̌ʷ|Yy|Y̓/y̓|ʕ|ʕ̓|ʕʷ|ʕ̓ʷ|ʔ}} ==={{ĐM|ref}}=== *{{Chú thích web|en|author=First Voices|work=nsyilxcən - nqilxʷcn|entry=w̓|year=2000-2026|entryurl=https://www.firstvoices.com/nsyilxcen/alphabet/startsWith?char=w%CC%93&types=word}} =={{langname|tbk}}== ==={{ĐM|alt}}=== *{{l|tbk|w̱}} (trước năm 2004) ==={{ĐM|letter}}=== {{head|tbk|Chữ cái|chữ hoa|W̓}} #Chữ cái thứ 30 viết thường trong bảng chữ cái Latinh tiếng Tagbanwa Calamian. #:{{quote|tbk|a'''w̓'''ël|[[quần áo]], [[trang phục]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=tbk|sc=Latn|qual=Bảng chữ cái Latinh tiếng Tagbanwa Calamian|Aa|Bb|Cc|Dd|Ee|Ëë|Ff|Gg|G̓/g̓|Hh|Ii|Jj|Kk|Ll|Mm|Nn|Ññ|Ng/ng|Oo|Pp|Qq|Rr|Ss|S̃/s̃|Tt|T̃/t̃|Uu|Vv|Ww|W̓/w̓|Xx|Yy|Zz}} ==={{ĐM|ref}}=== *{{Chú thích web|en|editor=Ed Ruch|work=Calamian Tagbanwa – English Dictionary|entry=w̓|year=2020|entryurl=https://www.webonary.org/tagbanwa/browse/browse-vernacular/?key=tbk&letter=w%CC%93&lang=en|publisher=SIL International}} *{{Chú thích web|tbk|author=Wycliffe Bible Translators, Inc.|work=Tagbanwa, Calamian|entry=Juan 9|year=2008|entryurl=https://www.bible.com/bible/1438/JHN.9.34}} 9xe6q20p6ap6oop13dxgzn7fzaldid1 Bản mẫu:topic cat data submodule documentation 10 395924 2350465 2026-05-06T13:52:11Z Hiyuune 50834 Trang mới: “==Trang con== {{Special:PrefixIndex/Module:category tree/topic/|stripprefix=1}} <noinclude>{{documentation}}</noinclude>” 2350465 wikitext text/x-wiki ==Trang con== {{Special:PrefixIndex/Module:category tree/topic/|stripprefix=1}} <noinclude>{{documentation}}</noinclude> jtwk35cu7z8ic4qf35jgat93whp5pkh 2350466 2350465 2026-05-06T13:52:40Z Hiyuune 50834 2350466 wikitext text/x-wiki ==Trang con== {{Special:PrefixIndex/Mô đun:category tree/topic/|stripprefix=1}} <noinclude>{{documentation}}</noinclude> h718alrdjwv5n7elgso2qpnr9b1dzi4 Bản mẫu:tg-verb form 10 395925 2350468 2026-05-06T14:04:48Z Hiyuune 50834 Trang mới: “{{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|tg|Biến thể hình thái động từ|head={{{head|}}}|sort={{{sort|}}}<!-- -->|{{#if:{{{fa|}}}|chính tả Ba Tư}}<!-- -->|{{ll|fa|{{{fa|}}}}}<!-- -->|{{#if:{{{fa2|}}}|hoặc}}<!-- -->|{{ll|fa|{{{fa2|}}}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude>” 2350468 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|tg|Biến thể hình thái động từ|head={{{head|}}}|sort={{{sort|}}}<!-- -->|{{#if:{{{fa|}}}|chính tả Ba Tư}}<!-- -->|{{ll|fa|{{{fa|}}}}}<!-- -->|{{#if:{{{fa2|}}}|hoặc}}<!-- -->|{{ll|fa|{{{fa2|}}}}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> 3adfvn6wgak3nb8jegx1h1c56x6moml пӯш 0 395926 2350469 2026-05-06T14:06:16Z Hiyuune 50834 Trang mới: “=={{langname|tg}}== ==={{section|pron}}=== {{tg-IPA}} ==={{section|v}}=== {{tg-verb form|fa=پوش}} # ‌ {{inflection of|tg|пӯшидан||thân từ|pres}}” 2350469 wikitext text/x-wiki =={{langname|tg}}== ==={{section|pron}}=== {{tg-IPA}} ==={{section|v}}=== {{tg-verb form|fa=پوش}} # ‌ {{inflection of|tg|пӯшидан||thân từ|pres}} 26d8afzxp201el1mjlpn7cvr5sueuz9 рахунководитель 0 395927 2350471 2026-05-06T14:09:45Z Hiyuune 50834 Trang mới: “=={{langname|rsk}}== ==={{section|etym}}=== Từ {{affix|rsk|рахунок|-о-|водитель}}. {{clq|rsk|sh|рачуновођа//računovođa}}. ==={{section|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|itɛʎ|s=6}} * {{hyph|rsk|ра|хун|ко|во|ди|тель}} ==={{section|n}}=== {{rsk-noun|m-pr|f=рахунководителька}} # [[nhân viên|Nhân viên]] [[kế toán]]. #: {{syn|rsk|кнїжководитель|q1=phổ biến hơn}} ===={{section|dec…” 2350471 wikitext text/x-wiki =={{langname|rsk}}== ==={{section|etym}}=== Từ {{affix|rsk|рахунок|-о-|водитель}}. {{clq|rsk|sh|рачуновођа//računovođa}}. ==={{section|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|itɛʎ|s=6}} * {{hyph|rsk|ра|хун|ко|во|ди|тель}} ==={{section|n}}=== {{rsk-noun|m-pr|f=рахунководителька}} # [[nhân viên|Nhân viên]] [[kế toán]]. #: {{syn|rsk|кнїжководитель|q1=phổ biến hơn}} ===={{section|decl}}==== {{rsk-decl-noun-table|рахунководитель|рахунководителя|рахунководительови|рахунководителя|рахунководительом|рахунководительови|[[рахунководитель]] / [[рахунководителю]] |рахунководителє|рахунководительох|рахунководительом|рахунководительох|рахунководителями|рахунководительох|рахунководителє}} ===={{section|rel}}==== {{col|rsk|title=danh từ|рахунководство<g:n>}} ==={{section|ref}}=== * {{R:rsk:SRS|рачуновођа|416|2}} * {{R:rsk:RSS|+|741}} {{C|rsk|Nghề nghiệp}} 4dsvkwxvrlcubreplayhopwcpriloj9 Mô đun:chemical element list/data/pl 828 395928 2350472 2026-05-06T14:12:35Z Hiyuune 50834 Trang mới: “local export = {} export.elements = { [1] = { name = { "wodór", "wodoród<qq:không còn dùng>" } }, [2] = { name = "hel" }, [3] = { name = "lit" }, [4] = { name = "beryl" }, [5] = { name = "bor" }, [6] = { name = "węgiel" }, [7] = { name = "azot" }, [8] = { name = { "tlen", "kwasoród<qq:không còn dùng>" } }, [9] = { name = "fluor" }, [10] = { name = "neon" }, [11] = { name = "sód" }, [12] = { name = "magnez" }, [13] = { name = "glin" }, [14] = { na…” 2350472 Scribunto text/plain local export = {} export.elements = { [1] = { name = { "wodór", "wodoród<qq:không còn dùng>" } }, [2] = { name = "hel" }, [3] = { name = "lit" }, [4] = { name = "beryl" }, [5] = { name = "bor" }, [6] = { name = "węgiel" }, [7] = { name = "azot" }, [8] = { name = { "tlen", "kwasoród<qq:không còn dùng>" } }, [9] = { name = "fluor" }, [10] = { name = "neon" }, [11] = { name = "sód" }, [12] = { name = "magnez" }, [13] = { name = "glin" }, [14] = { name = "krzem" }, [15] = { name = "fosfor" }, [16] = { name = "siarka" }, [17] = { name = "chlor" }, [18] = { name = "argon" }, [19] = { name = "potas" }, [20] = { name = "wapń" }, [21] = { name = "skand" }, [22] = { name = "tytan" }, [23] = { name = "wanad" }, [24] = { name = "chrom" }, [25] = { name = "mangan" }, [26] = { name = "żelazo" }, [27] = { name = "kobalt" }, [28] = { name = "nikiel" }, [29] = { name = "miedź" }, [30] = { name = "cynk" }, [31] = { name = "gal" }, [32] = { name = "german" }, [33] = { name = "arsen" }, [34] = { name = "selen" }, [35] = { name = "brom" }, [36] = { name = "krypton" }, [37] = { name = "rubid" }, [38] = { name = "stront" }, [39] = { name = "itr" }, [40] = { name = "cyrkon" }, [41] = { name = "niob" }, [42] = { name = "molibden" }, [43] = { name = "technet" }, [44] = { name = "ruten" }, [45] = { name = "rod" }, [46] = { name = "pallad" }, [47] = { name = "srebro" }, [48] = { name = "kadm" }, [49] = { name = "ind" }, [50] = { name = "cyna" }, [51] = { name = "antymon" }, [52] = { name = "tellur" }, [53] = { name = "jod" }, [54] = { name = "ksenon" }, [55] = { name = "cez" }, [56] = { name = "bar" }, [57] = { name = "lantan" }, [58] = { name = "cer" }, [59] = { name = "prazeodym" }, [60] = { name = "neodym" }, [61] = { name = "promet" }, [62] = { name = "samar" }, [63] = { name = "europ" }, [64] = { name = "gadolin" }, [65] = { name = "terb" }, [66] = { name = "dysproz" }, [67] = { name = "holm" }, [68] = { name = "erb" }, [69] = { name = "tul" }, [70] = { name = "iterb" }, [71] = { name = "lutet" }, [72] = { name = "hafn" }, [73] = { name = "tantal" }, [74] = { name = "wolfram" }, [75] = { name = "ren" }, [76] = { name = "osm" }, [77] = { name = "iryd" }, [78] = { name = "platyna" }, [79] = { name = "złoto" }, [80] = { name = "rtęć" }, [81] = { name = "tal" }, [82] = { name = "ołów" }, [83] = { name = "bizmut" }, [84] = { name = "polon" }, [85] = { name = "astat" }, [86] = { name = "radon" }, [87] = { name = "frans" }, [88] = { name = "rad" }, [89] = { name = "aktyn" }, [90] = { name = "tor" }, [91] = { name = "protaktyn" }, [92] = { name = "uran" }, [93] = { name = "neptun" }, [94] = { name = "pluton" }, [95] = { name = "ameryk" }, [96] = { name = "kiur" }, [97] = { name = "berkel" }, [98] = { name = "kaliforn" }, [99] = { name = "einstein" }, [100] = { name = "ferm" }, [101] = { name = "mendelew" }, [102] = { name = "nobel" }, [103] = { name = "lorens" }, [104] = { name = { "rutherford", "kurczat<qq:không còn dùng>", "kurczatow<qq:không còn dùng>" } }, [105] = { name = "dubn" }, [106] = { name = "seaborg" }, [107] = { name = "bohr" }, [108] = { name = "has" }, [109] = { name = "meitner" }, [110] = { name = "darmsztadt" }, [111] = { name = "roentgen" }, [112] = { name = "kopernik" }, [113] = { name = "nihon" }, [114] = { name = "flerow" }, [115] = { name = "moskow" }, [116] = { name = "liwermor" }, [117] = { name = "tenes" }, [118] = { name = "oganeson" }, } return export r3xt973wwhtgg1x49ihr4fep2bwppss arsenu 0 395929 2350474 2026-05-06T14:15:59Z Hiyuune 50834 Trang mới: “=={{langname|pl}}== ==={{section|pron}}=== {{pl-pr}} ==={{section|n}}=== {{head|pl|Biến thể hình thái danh từ}} # {{infl of|pl|arsen||gen|s}} =={{langname|cs}}== ==={{section|pron}}=== * {{cs-IPA}} ==={{section|n}}=== {{head|cs|Biến thể hình thái danh từ}} # {{infl of|cs|arsen||gen//dat//loc|s}}” 2350474 wikitext text/x-wiki =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr}} ==={{section|n}}=== {{head|pl|Biến thể hình thái danh từ}} # {{infl of|pl|arsen||gen|s}} =={{langname|cs}}== ==={{section|pron}}=== * {{cs-IPA}} ==={{section|n}}=== {{head|cs|Biến thể hình thái danh từ}} # {{infl of|cs|arsen||gen//dat//loc|s}} 3qu1h1on429igixvpzm06t58b2pf2hh 2350476 2350474 2026-05-06T14:17:46Z Hiyuune 50834 /* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350476 wikitext text/x-wiki =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr}} ==={{section|n}}=== {{head|pl|Biến thể hình thái danh từ}} # {{infl of|pl|arsen||gen|s}} =={{langname|cs}}== ==={{section|pron}}=== * {{cs-IPA}} ==={{section|n}}=== {{head|cs|Biến thể hình thái danh từ}} # {{infl of|cs|arsen||gen//dat//loc|s}} =={{langname|pl}}== ==={{section|n}}=== {{sh-noun form}} # {{infl of|sh|arsen||dat//loc|s}} ebzivrjg68bzmpj3rplg9ldai9qcsna 2350477 2350476 2026-05-06T14:17:55Z Hiyuune 50834 /* Tiếng Ba Lan */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350477 wikitext text/x-wiki =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr}} ==={{section|n}}=== {{head|pl|Biến thể hình thái danh từ}} # {{infl of|pl|arsen||gen|s}} =={{langname|cs}}== ==={{section|pron}}=== * {{cs-IPA}} ==={{section|n}}=== {{head|cs|Biến thể hình thái danh từ}} # {{infl of|cs|arsen||gen//dat//loc|s}} =={{langname|sh}}== ==={{section|n}}=== {{sh-noun form}} # {{infl of|sh|arsen||dat//loc|s}} oyx1wawtt877djtjo9tcfpzt3mmr7if Thể loại:Vần:Tiếng Ba Lan/ɛnu/3 âm tiết 14 395930 2350475 2026-05-06T14:16:14Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2350475 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Bản mẫu:sl-decl-adj 10 395931 2350478 2026-05-06T14:26:13Z Hiyuune 50834 Trang mới: “{{#invoke:sl-adjectives|show|regular}}<noinclude>{{documentation}}</noinclude>” 2350478 wikitext text/x-wiki {{#invoke:sl-adjectives|show|regular}}<noinclude>{{documentation}}</noinclude> adjwm9t302l9dj18tif56pg8ydn2t5y chithunzithunzi 0 395932 2350479 2026-05-06T14:33:22Z TheHighFighter2 42988 Trang mới: “=={{langname|ny}}== ==={{ĐM|etym}}=== Từ {{affix|ny|chi-|mthunzi}}, được láy lại để phân biệt với {{mention|ny|chithunzi}}. ==={{ĐM|pron}}=== * {{ny-IPA|chithúnzíthunzí}} ==={{ĐM|noun}}=== {{ny-noun|chithúnzíthunzí|7}} # Cái [[bóng]]. ===={{ĐM|rel}}==== * {{l|ny|chithúnzi}} * {{l|ny|mthúnzi}} ==={{ĐM|ref}}=== * {{R:ny:Paas:2016|page=89}}” 2350479 wikitext text/x-wiki =={{langname|ny}}== ==={{ĐM|etym}}=== Từ {{affix|ny|chi-|mthunzi}}, được láy lại để phân biệt với {{mention|ny|chithunzi}}. ==={{ĐM|pron}}=== * {{ny-IPA|chithúnzíthunzí}} ==={{ĐM|noun}}=== {{ny-noun|chithúnzíthunzí|7}} # Cái [[bóng]]. ===={{ĐM|rel}}==== * {{l|ny|chithúnzi}} * {{l|ny|mthúnzi}} ==={{ĐM|ref}}=== * {{R:ny:Paas:2016|page=89}} 0oazuzs7l2fgc7np3kuozfrmqqmhugn Mô đun:sl-adjectives 828 395933 2350480 2026-05-06T14:36:41Z Hiyuune 50834 Trang mới: “local export = {} local lang = require("Module:languages").getByCode("sl") -- Within this module, inflections are the functions that do the actual inflecting -- by creating the forms of an adjective. They are defined further down. local inflections = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) PAGENAME = mw.loadData("Module:headword/data").pagename NAMESPACE = mw.title.getCurrentTitle().nsT…” 2350480 Scribunto text/plain local export = {} local lang = require("Module:languages").getByCode("sl") -- Within this module, inflections are the functions that do the actual inflecting -- by creating the forms of an adjective. They are defined further down. local inflections = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) PAGENAME = mw.loadData("Module:headword/data").pagename NAMESPACE = mw.title.getCurrentTitle().nsText local infl_type = frame.args[1] or error("Loại biến tố không được chỉ rõ.") local args = frame:getParent().args local data = {forms = {}, info = nil, categories = {}} if inflections[infl_type] then inflections[infl_type](args, data) else error("Không rõ loại biến tố '" .. infl_type .. "'") end return make_table(data) end -- Hard stem adjective inflections["regular"] = function(args, data) local stem = args[1]; if not stem or stem == "" then if NAMESPACE == "Bản_mẫu" then stem = "-" else error("Tham số đầu tiên (thân từ) không được chỉ rõ.") end end local final = args[2]; if final == "" then final = nil end local def = args["def"] -- Create the full stem, which is used when endings are added local full_stem = stem if final then full_stem = full_stem .. final else full_stem = make_long(full_stem) end -- If the given stem doesn't contain any accent marks, flag the entry for attention if not require("Module:sl-common").has_accents(full_stem) then table.insert(data.categories, "Yêu cầu trọng âm tính từ tiếng Slovene") end -- Is this a hard stem or a soft stem? local oe = "o" data.info = "cứng" if require("Module:sl-common").is_soft(full_stem) then oe = "e" data.info = "mềm" end -- Masculine singular if def == "1" then data.forms["nom_sg_m"] = {full_stem .. "i"} elseif def == "0" then data.forms["nom_sg_m"] = {stem .. (final and "e" .. final or "")} else data.forms["nom_sg_m"] = {stem .. (final and "e" .. final or "")} data.forms["nom_sg_m_def"] = {full_stem .. "i"} end -- acc_sg_m depends on animacy data.forms["gen_sg_m"] = {full_stem .. "ega"} data.forms["dat_sg_m"] = {full_stem .. "emu"} data.forms["loc_sg_m"] = {full_stem .. "em"} data.forms["ins_sg_m"] = {full_stem .. "im"} -- Feminine singular data.forms["nom_sg_f"] = {full_stem .. "a"} data.forms["acc_sg_f"] = {full_stem .. "o"} data.forms["gen_sg_f"] = {full_stem .. "e"} data.forms["dat_sg_f"] = {full_stem .. "i"} data.forms["loc_sg_f"] = {full_stem .. "i"} data.forms["ins_sg_f"] = {full_stem .. "o"} -- Neuter singular data.forms["nom_sg_n"] = {full_stem .. oe} data.forms["acc_sg_n"] = {full_stem .. oe} data.forms["gen_sg_n"] = {full_stem .. "ega"} data.forms["dat_sg_n"] = {full_stem .. "emu"} data.forms["loc_sg_n"] = {full_stem .. "em"} data.forms["ins_sg_n"] = {full_stem .. "im"} -- Masculine dual data.forms["nom_du_m"] = {full_stem .. "a"} data.forms["acc_du_m"] = {full_stem .. "a"} data.forms["gen_du_m"] = {full_stem .. "ih"} data.forms["dat_du_m"] = {full_stem .. "ima"} data.forms["loc_du_m"] = {full_stem .. "ih"} data.forms["ins_du_m"] = {full_stem .. "ima"} -- Feminine dual data.forms["nom_du_f"] = {full_stem .. "i"} data.forms["acc_du_f"] = {full_stem .. "i"} data.forms["gen_du_f"] = {full_stem .. "ih"} data.forms["dat_du_f"] = {full_stem .. "ima"} data.forms["loc_du_f"] = {full_stem .. "ih"} data.forms["ins_du_f"] = {full_stem .. "ima"} -- Neuter dual data.forms["nom_du_n"] = {full_stem .. "i"} data.forms["acc_du_n"] = {full_stem .. "i"} data.forms["gen_du_n"] = {full_stem .. "ih"} data.forms["dat_du_n"] = {full_stem .. "ima"} data.forms["loc_du_n"] = {full_stem .. "ih"} data.forms["ins_du_n"] = {full_stem .. "ima"} -- Masculine plural data.forms["nom_pl_m"] = {full_stem .. "i"} data.forms["acc_pl_m"] = {full_stem .. "e"} data.forms["gen_pl_m"] = {full_stem .. "ih"} data.forms["dat_pl_m"] = {full_stem .. "im"} data.forms["loc_pl_m"] = {full_stem .. "ih"} data.forms["ins_pl_m"] = {full_stem .. "imi"} -- Feminine plural data.forms["nom_pl_f"] = {full_stem .. "e"} data.forms["acc_pl_f"] = {full_stem .. "e"} data.forms["gen_pl_f"] = {full_stem .. "ih"} data.forms["dat_pl_f"] = {full_stem .. "im"} data.forms["loc_pl_f"] = {full_stem .. "ih"} data.forms["ins_pl_f"] = {full_stem .. "imi"} -- Neuter plural data.forms["nom_pl_n"] = {full_stem .. "a"} data.forms["acc_pl_n"] = {full_stem .. "a"} data.forms["gen_pl_n"] = {full_stem .. "ih"} data.forms["dat_pl_n"] = {full_stem .. "im"} data.forms["loc_pl_n"] = {full_stem .. "ih"} data.forms["ins_pl_n"] = {full_stem .. "imi"} end function make_long(stem) local vowel_repl = { ["à"] = "á", ["è"] = "ê", ["ì"] = "í", ["ò"] = "ô", ["ù"] = "ú"} function repl(vowel, rest) return (vowel_repl[vowel] or vowel) .. rest end return mw.ustring.gsub(stem, "([àèìòù])([^aeiouàèìòùáéíóúêô]+)$", repl) end function make_table(data) local function repl(param) local accel = false -- Temporary local no_store = false if param == "info" then return mw.getContentLanguage():ucfirst(data.info or "") elseif string.sub(param, 1, 1) == "!" then no_store = true param = string.sub(param, 2) elseif string.sub(param, 1, 1) == "#" then accel = false param = string.sub(param, 2) end local forms = data.forms[param] if not forms then return "&mdash;" end local ret = {} for key, subform in ipairs(forms) do table.insert(ret, require("Module:links").full_link({lang = lang, term = subform, accel = accel and {form = param, no_store = no_store} or nil})) end return table.concat(ret, "<br/>") end local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'sl-non-tonal', args = { intro = 'section' } } .. '\n' .. [=[ {| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: 1px solid var(--wikt-palette-grey, #9e9e9e);" |- style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; text-align: left;" ! class="vsToggleElement" colspan="4" | {{{info}}} |- class="vsShow" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 9em;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | feminine ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | neuter |- class="vsShow" ! style="width: 11em; background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative]] số ít | style="width: 11em;" | {{{!nom_sg_m}}} | style="width: 11em;" | {{{!nom_sg_f}}} | style="width: 11em;" | {{{!nom_sg_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số ít |- class="vsHide" ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_sg_m}}}]=] .. (data.forms["nom_sg_m_def"] and ' <sup style="cursor:help" title="indefinite">ind</sup><br/>{{{nom_sg_m_def}}} <sup style="cursor:help" title="definite">def</sup>' or "") .. [=[ | {{{nom_sg_f}}} | {{{nom_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_sg_m}}} | {{{gen_sg_f}}} | {{{gen_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_sg_m}}} | {{{dat_sg_f}}} | {{{dat_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | ''[[nominative|danh cách]]''<sup style="cursor:help" title="vô sinh">inan</sup>'' hoặc<br/>[[genitive|sinh cách]]''<sup style="cursor:help" title="hữu sinh">anim</sup> | {{{acc_sg_f}}} | {{{acc_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_sg_m}}} | {{{loc_sg_f}}} | {{{loc_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_sg_m}}} | {{{ins_sg_f}}} | {{{ins_sg_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số đôi |- class="vsHide" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_du_m}}} | {{{nom_du_f}}} | {{{nom_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_du_m}}} | {{{gen_du_f}}} | {{{gen_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_du_m}}} | {{{dat_du_f}}} | {{{dat_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | {{{acc_du_m}}} | {{{acc_du_f}}} | {{{acc_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_du_m}}} | {{{loc_du_f}}} | {{{loc_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_du_m}}} | {{{ins_du_f}}} | {{{ins_du_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số nhiều |- class="vsHide" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_pl_m}}} | {{{nom_pl_f}}} | {{{nom_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_pl_m}}} | {{{gen_pl_f}}} | {{{gen_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_pl_m}}} | {{{dat_pl_f}}} | {{{dat_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | {{{acc_pl_m}}} | {{{acc_pl_f}}} | {{{acc_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_pl_m}}} | {{{loc_pl_f}}} | {{{loc_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_pl_m}}} | {{{ins_pl_f}}} | {{{ins_pl_n}}} |}]=] return mw.ustring.gsub(wikicode, "{{{([^}]+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang) end return export nb5agpk4k5bd8m4tdoa755tspar32ro 2350482 2350480 2026-05-06T14:38:31Z Hiyuune 50834 2350482 Scribunto text/plain local export = {} local lang = require("Module:languages").getByCode("sl") -- Within this module, inflections are the functions that do the actual inflecting -- by creating the forms of an adjective. They are defined further down. local inflections = {} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) PAGENAME = mw.loadData("Module:headword/data").pagename NAMESPACE = mw.title.getCurrentTitle().nsText local infl_type = frame.args[1] or error("Loại biến tố không được chỉ rõ.") local args = frame:getParent().args local data = {forms = {}, info = nil, categories = {}} if inflections[infl_type] then inflections[infl_type](args, data) else error("Không rõ loại biến tố '" .. infl_type .. "'") end return make_table(data) end -- Hard stem adjective inflections["regular"] = function(args, data) local stem = args[1]; if not stem or stem == "" then if NAMESPACE == "Bản_mẫu" then stem = "-" else error("Tham số đầu tiên (thân từ) không được chỉ rõ.") end end local final = args[2]; if final == "" then final = nil end local def = args["def"] -- Create the full stem, which is used when endings are added local full_stem = stem if final then full_stem = full_stem .. final else full_stem = make_long(full_stem) end -- If the given stem doesn't contain any accent marks, flag the entry for attention if not require("Module:sl-common").has_accents(full_stem) then table.insert(data.categories, "Yêu cầu trọng âm tính từ tiếng Slovene") end -- Is this a hard stem or a soft stem? local oe = "o" data.info = "cứng" if require("Module:sl-common").is_soft(full_stem) then oe = "e" data.info = "mềm" end -- Masculine singular if def == "1" then data.forms["nom_sg_m"] = {full_stem .. "i"} elseif def == "0" then data.forms["nom_sg_m"] = {stem .. (final and "e" .. final or "")} else data.forms["nom_sg_m"] = {stem .. (final and "e" .. final or "")} data.forms["nom_sg_m_def"] = {full_stem .. "i"} end -- acc_sg_m depends on animacy data.forms["gen_sg_m"] = {full_stem .. "ega"} data.forms["dat_sg_m"] = {full_stem .. "emu"} data.forms["loc_sg_m"] = {full_stem .. "em"} data.forms["ins_sg_m"] = {full_stem .. "im"} -- Feminine singular data.forms["nom_sg_f"] = {full_stem .. "a"} data.forms["acc_sg_f"] = {full_stem .. "o"} data.forms["gen_sg_f"] = {full_stem .. "e"} data.forms["dat_sg_f"] = {full_stem .. "i"} data.forms["loc_sg_f"] = {full_stem .. "i"} data.forms["ins_sg_f"] = {full_stem .. "o"} -- Neuter singular data.forms["nom_sg_n"] = {full_stem .. oe} data.forms["acc_sg_n"] = {full_stem .. oe} data.forms["gen_sg_n"] = {full_stem .. "ega"} data.forms["dat_sg_n"] = {full_stem .. "emu"} data.forms["loc_sg_n"] = {full_stem .. "em"} data.forms["ins_sg_n"] = {full_stem .. "im"} -- Masculine dual data.forms["nom_du_m"] = {full_stem .. "a"} data.forms["acc_du_m"] = {full_stem .. "a"} data.forms["gen_du_m"] = {full_stem .. "ih"} data.forms["dat_du_m"] = {full_stem .. "ima"} data.forms["loc_du_m"] = {full_stem .. "ih"} data.forms["ins_du_m"] = {full_stem .. "ima"} -- Feminine dual data.forms["nom_du_f"] = {full_stem .. "i"} data.forms["acc_du_f"] = {full_stem .. "i"} data.forms["gen_du_f"] = {full_stem .. "ih"} data.forms["dat_du_f"] = {full_stem .. "ima"} data.forms["loc_du_f"] = {full_stem .. "ih"} data.forms["ins_du_f"] = {full_stem .. "ima"} -- Neuter dual data.forms["nom_du_n"] = {full_stem .. "i"} data.forms["acc_du_n"] = {full_stem .. "i"} data.forms["gen_du_n"] = {full_stem .. "ih"} data.forms["dat_du_n"] = {full_stem .. "ima"} data.forms["loc_du_n"] = {full_stem .. "ih"} data.forms["ins_du_n"] = {full_stem .. "ima"} -- Masculine plural data.forms["nom_pl_m"] = {full_stem .. "i"} data.forms["acc_pl_m"] = {full_stem .. "e"} data.forms["gen_pl_m"] = {full_stem .. "ih"} data.forms["dat_pl_m"] = {full_stem .. "im"} data.forms["loc_pl_m"] = {full_stem .. "ih"} data.forms["ins_pl_m"] = {full_stem .. "imi"} -- Feminine plural data.forms["nom_pl_f"] = {full_stem .. "e"} data.forms["acc_pl_f"] = {full_stem .. "e"} data.forms["gen_pl_f"] = {full_stem .. "ih"} data.forms["dat_pl_f"] = {full_stem .. "im"} data.forms["loc_pl_f"] = {full_stem .. "ih"} data.forms["ins_pl_f"] = {full_stem .. "imi"} -- Neuter plural data.forms["nom_pl_n"] = {full_stem .. "a"} data.forms["acc_pl_n"] = {full_stem .. "a"} data.forms["gen_pl_n"] = {full_stem .. "ih"} data.forms["dat_pl_n"] = {full_stem .. "im"} data.forms["loc_pl_n"] = {full_stem .. "ih"} data.forms["ins_pl_n"] = {full_stem .. "imi"} end function make_long(stem) local vowel_repl = { ["à"] = "á", ["è"] = "ê", ["ì"] = "í", ["ò"] = "ô", ["ù"] = "ú"} function repl(vowel, rest) return (vowel_repl[vowel] or vowel) .. rest end return mw.ustring.gsub(stem, "([àèìòù])([^aeiouàèìòùáéíóúêô]+)$", repl) end function make_table(data) local function repl(param) local accel = false -- Temporary local no_store = false if param == "info" then return mw.getContentLanguage():ucfirst(data.info or "") elseif string.sub(param, 1, 1) == "!" then no_store = true param = string.sub(param, 2) elseif string.sub(param, 1, 1) == "#" then accel = false param = string.sub(param, 2) end local forms = data.forms[param] if not forms then return "&mdash;" end local ret = {} for key, subform in ipairs(forms) do table.insert(ret, require("Module:links").full_link({lang = lang, term = subform, accel = accel and {form = param, no_store = no_store} or nil})) end return table.concat(ret, "<br/>") end local wikicode = mw.getCurrentFrame():expandTemplate{ title = 'sl-non-tonal', args = { intro = 'section' } } .. '\n' .. [=[ {| class="inflection-table vsSwitcher" data-toggle-category="inflection" style="border: 1px solid var(--wikt-palette-grey, #9e9e9e);" |- style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; text-align: left;" ! class="vsToggleElement" colspan="4" | {{{info}}} |- class="vsShow" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 9em;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | giống cái ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit; width: 10em;" | giống trung |- class="vsShow" ! style="width: 11em; background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] số ít | style="width: 11em;" | {{{!nom_sg_m}}} | style="width: 11em;" | {{{!nom_sg_f}}} | style="width: 11em;" | {{{!nom_sg_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số ít |- class="vsHide" ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="width: 11em; background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_sg_m}}}]=] .. (data.forms["nom_sg_m_def"] and ' <sup style="cursor:help" title="indefinite">ind</sup><br/>{{{nom_sg_m_def}}} <sup style="cursor:help" title="definite">def</sup>' or "") .. [=[ | {{{nom_sg_f}}} | {{{nom_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_sg_m}}} | {{{gen_sg_f}}} | {{{gen_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_sg_m}}} | {{{dat_sg_f}}} | {{{dat_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | ''[[nominative|danh cách]]''<sup style="cursor:help" title="vô sinh">inan</sup>'' hoặc<br/>[[genitive|sinh cách]]''<sup style="cursor:help" title="hữu sinh">anim</sup> | {{{acc_sg_f}}} | {{{acc_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_sg_m}}} | {{{loc_sg_f}}} | {{{loc_sg_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_sg_m}}} | {{{ins_sg_f}}} | {{{ins_sg_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số đôi |- class="vsHide" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_du_m}}} | {{{nom_du_f}}} | {{{nom_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_du_m}}} | {{{gen_du_f}}} | {{{gen_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_du_m}}} | {{{dat_du_f}}} | {{{dat_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | {{{acc_du_m}}} | {{{acc_du_f}}} | {{{acc_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_du_m}}} | {{{loc_du_f}}} | {{{loc_du_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_du_m}}} | {{{ins_du_f}}} | {{{ins_du_n}}} |- class="vsHide" ! colspan="4" style="background: var(--wikt-palette-blue-4, #bbd0fa);color:inherit;" | số nhiều |- class="vsHide" ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống đực ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống cái ! style="background: var(--wikt-palette-lightblue, #d9ebff);color:inherit;" | giống trung |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[nominative|danh cách]] | {{{nom_pl_m}}} | {{{nom_pl_f}}} | {{{nom_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[genitive|sinh cách]] | {{{gen_pl_m}}} | {{{gen_pl_f}}} | {{{gen_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[dative|dữ cách]] | {{{dat_pl_m}}} | {{{dat_pl_f}}} | {{{dat_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[accusative|đối cách]] | {{{acc_pl_m}}} | {{{acc_pl_f}}} | {{{acc_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[locative|định vị cách]] | {{{loc_pl_m}}} | {{{loc_pl_f}}} | {{{loc_pl_n}}} |- class="vsHide" ! style="background: var(--wikt-palette-lighterblue, #ebf4ff);color:inherit;" | [[instrumental|cách công cụ]] | {{{ins_pl_m}}} | {{{ins_pl_f}}} | {{{ins_pl_n}}} |}]=] return mw.ustring.gsub(wikicode, "{{{([^}]+)}}}", repl) .. require("Module:utilities").format_categories(data.categories, lang) end return export jcwtnrc1bdo42hmf0xx79zqtp6sgktc Taki 0 395934 2350481 2026-05-06T14:36:59Z WhoAlone 40420 Trang mới: “{{also|taki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|たき}}” 2350481 wikitext text/x-wiki {{also|taki}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|たき}} lnrm0z35w7rb3zpge7q2ulrof90bw80 多喜 0 395935 2350483 2026-05-06T14:39:08Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|た|き|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|たき}} # {{given name|ja|nữ|sort=たき}} ===={{ĐM|see also}}==== * {{ja-r|多喜二|^たきじ}}” 2350483 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|た|き|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|たき}} # {{given name|ja|nữ|sort=たき}} ===={{ĐM|see also}}==== * {{ja-r|多喜二|^たきじ}} kdt30dypebwj7p8ddfhdj8i1b44zfza Thể loại:Từ đánh vần với 多 là た tiếng Nhật 14 395936 2350484 2026-05-06T14:39:45Z WhoAlone 40420 Trang mới: “{{auto cat|on}}” 2350484 wikitext text/x-wiki {{auto cat|on}} irnidilxpyzph26fxce9qlrz5zy5gor Thể loại:Từ đánh vần với 多 tiếng Nhật 14 395937 2350485 2026-05-06T14:41:02Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350485 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ đánh vần với 多 theo ngôn ngữ 14 395938 2350487 2026-05-06T14:41:44Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350487 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Danh từ lớp 7 tiếng Chichewa 14 395939 2350493 2026-05-06T14:54:37Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350493 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Danh từ theo lớp tiếng Chichewa 14 395940 2350494 2026-05-06T14:55:48Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350494 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx biillaacha 0 395941 2350495 2026-05-06T15:03:53Z Kelly zhrm 58416 Trang mới: “=={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Biến thể hình thái danh từ}} # Con [[bướm]]. {{C|om|Bướm ngày}}” 2350495 wikitext text/x-wiki =={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Biến thể hình thái danh từ}} # Con [[bướm]]. {{C|om|Bướm ngày}} 58qfglbuapu0j5r945wm3bomwpwssv6 2350496 2350495 2026-05-06T15:04:12Z Kelly zhrm 58416 2350496 wikitext text/x-wiki =={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # Con [[bướm]]. {{C|om|Bướm ngày}} iuhxva2m8ati4vih5um6f8dp47xpuno baaduu 0 395942 2350497 2026-05-06T15:08:53Z Kelly zhrm 58416 Trang mới: “=={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # [[phô mai|Phô mai]], [[pho mát]]. {{C|om|Chế phẩm sữa}}” 2350497 wikitext text/x-wiki =={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # [[phô mai|Phô mai]], [[pho mát]]. {{C|om|Chế phẩm sữa}} j75jam1z2uyooxo3prfiknkjhiegscw Mô đun:dialect synonyms/pl/numer 828 395943 2350498 2026-05-06T15:10:05Z Hiyuune 50834 Trang mới: “local export = {} export.title = "" export.meaning = "số" export.note = "" export.syns = { ["Standard"] = { "numer" }, ["Middle Polish"] = { "numer" }, ["Poznań"] = { "numer<t:điểm số; mức điểm>" }, ["Wieluń"] = { "nomer" }, ["Radomsko"] = { "nomer" }, ["Pisarzowice"] = { "lumero" }, ["Zebrzydowice"] = { "lumero", "lumer" }, ["Łuczyce"] = { "lumer" }, ["Krzęcin"] = { "lumer" }, ["Kuźnica Błędowska"] = { "lumer" }, ["Ciecierzyn"] = { "lumer"…” 2350498 Scribunto text/plain local export = {} export.title = "" export.meaning = "số" export.note = "" export.syns = { ["Standard"] = { "numer" }, ["Middle Polish"] = { "numer" }, ["Poznań"] = { "numer<t:điểm số; mức điểm>" }, ["Wieluń"] = { "nomer" }, ["Radomsko"] = { "nomer" }, ["Pisarzowice"] = { "lumero" }, ["Zebrzydowice"] = { "lumero", "lumer" }, ["Łuczyce"] = { "lumer" }, ["Krzęcin"] = { "lumer" }, ["Kuźnica Błędowska"] = { "lumer" }, ["Ciecierzyn"] = { "lumer" }, ["Podhale"] = { "lumer" }, ["Bychawa"] = { "rumer" }, ["Janów Lubelski County"] = { "rumer" }, ["Brzeziny"] = { "rumer" }, ["San river"] = { "umer" }, } return export qbuzh3g7vq0z2zjjgrfmwednbvrqjd1 bokkaa 0 395944 2350499 2026-05-06T15:12:03Z Kelly zhrm 58416 Trang mới: “==={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # [[mưa|Mưa]]. {{C|om|Mưa}}” 2350499 wikitext text/x-wiki ==={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # [[mưa|Mưa]]. {{C|om|Mưa}} n368n8rxpkr98n431o1btf6vx0jmx4v 2350500 2350499 2026-05-06T15:12:16Z Kelly zhrm 58416 /* ={{langname|om}} */ 2350500 wikitext text/x-wiki =={{langname|om}}== ==={{ĐM|n}}=== {{head|om|Danh từ}} # [[mưa|Mưa]]. {{C|om|Mưa}} 2oazg3jnaao3bdbhdmgv5hx7jhjqvus gwing 0 395945 2350502 2026-05-06T15:14:10Z TheHighFighter2 42988 Trang mới: “=={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/kwiŋ˧/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[xanh dương|Xanh dương]]. ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu xanh dương.” 2350502 wikitext text/x-wiki =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/kwiŋ˧/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[xanh dương|Xanh dương]]. ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu xanh dương. 751odxg9nhliclu1rp1r53hobwi5i1c 2350503 2350502 2026-05-06T15:14:49Z TheHighFighter2 42988 2350503 wikitext text/x-wiki =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/kwiŋ˧/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[xanh dương|Xanh dương]]. ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu xanh dương. {{C|raw|Màu sắc}} o0g3jita49z90mud7y8x95bvb7aztsb Thể loại:Tính từ tiếng Rawang 14 395946 2350504 2026-05-06T15:15:19Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350504 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx mvshè 0 395947 2350507 2026-05-06T15:22:29Z TheHighFighter2 42988 Trang mới: “=={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/mə(˧).ɕɛ˧˩/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[đỏ|Đỏ]]. ===={{ĐM|syn}}==== * {{l|raw|shè}} ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu đỏ.” 2350507 wikitext text/x-wiki =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/mə(˧).ɕɛ˧˩/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[đỏ|Đỏ]]. ===={{ĐM|syn}}==== * {{l|raw|shè}} ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu đỏ. km1vploys72vztzm1eaoqz8uq9050ux 2350509 2350507 2026-05-06T15:23:01Z TheHighFighter2 42988 /* Danh từ */ 2350509 wikitext text/x-wiki =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/mə(˧).ɕɛ˧˩/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[đỏ|Đỏ]]. ===={{ĐM|syn}}==== * {{l|raw|shè}} ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu đỏ. {{C|raw|Màu sắc}} 3n8vz95ptb1muivk238aipwy1ihg8g0 Thể loại:raw:Màu sắc 14 395948 2350511 2026-05-06T15:24:08Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350511 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx shè 0 395949 2350513 2026-05-06T15:32:54Z TheHighFighter2 42988 Trang mới: “{{also|Phụ lục:Biến thể của "she"}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|厙}}. # {{cmn-pinyin of|射}}. # {{cmn-pinyin of|韘|弽|attn=1}}. # {{cmn-pinyin of|懾|慴}}. # {{cmn-pinyin of|攝|摂}}. # {{cmn-pinyin of|朿}}. # {{cmn-pinyin of|栙}}. # {{cmn-pinyin of|欇}}. # {{cmn-pinyin of|歙}}. # {{cmn-pinyin of|涉|渉|attn=1}}. # {{cmn-pinyin of|灄}}. # {{cmn-pinyin of|猞}}. # {{cmn-pinyin of|社}}. # {{cmn-pinyin of|…” 2350513 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "she"}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|厙}}. # {{cmn-pinyin of|射}}. # {{cmn-pinyin of|韘|弽|attn=1}}. # {{cmn-pinyin of|懾|慴}}. # {{cmn-pinyin of|攝|摂}}. # {{cmn-pinyin of|朿}}. # {{cmn-pinyin of|栙}}. # {{cmn-pinyin of|欇}}. # {{cmn-pinyin of|歙}}. # {{cmn-pinyin of|涉|渉|attn=1}}. # {{cmn-pinyin of|灄}}. # {{cmn-pinyin of|猞}}. # {{cmn-pinyin of|社}}. # {{cmn-pinyin of|舍}}. # {{cmn-pinyin of|葇}}. # {{cmn-pinyin of|蔎}}. # {{cmn-pinyin of|蠂}}. # {{cmn-pinyin of|設}}. # {{cmn-pinyin of|讁}}. # {{cmn-pinyin of|赦}}. # {{cmn-pinyin of|騄}}. # {{cmn-pinyin of|㒤}}. # {{cmn-pinyin of|麝}}. =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/ɕɛ˧˩/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[đỏ|Đỏ]]. ===={{ĐM|syn}}==== * {{l|raw|mvshè}} {{C|raw|Màu sắc}} =={{langname|unm}}== ==={{ĐM|pron}}=== * {{IPA4|unm|[ʃɛ]}} ==={{ĐM|adv}}=== {{head|unm|adverb}} # [[đây|Đây]]. ==={{ĐM|ref}}=== * {{R:unm:LTD|shè}} 6spkdvja9ires33nx20jt9yr41t9gqr Thể loại:Mục từ có cách phát âm IPA tiếng Unami 14 395950 2350517 2026-05-06T15:38:31Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350517 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Bảo trì mục từ tiếng Unami 14 395951 2350519 2026-05-06T15:38:58Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350519 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Mục từ tiếng Unami 14 395952 2350520 2026-05-06T15:40:02Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350520 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Phó từ tiếng Unami 14 395953 2350521 2026-05-06T15:40:27Z TheHighFighter2 42988 Trang mới: “{{auto cat}}” 2350521 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Bản mẫu:R:unm:LTD 10 395954 2350522 2026-05-06T15:46:22Z TheHighFighter2 42988 Trang mới: “{{#invoke:quote|call_template |template=cite-web |last=Rementer |first=Jim |coauthors=Pearson, Bruce L. |editors=Grant Leneaux; Raymond Whritenour |entry={{{head|{{{1|}}}}}} |entryurl={{#if:{{{head|{{{1|}}}}}}|http://talk-lenape.org/results?query={{{head|{{{1|}}}}}}&lang=lenape|http://talk-lenape.org/}} |work=The Lenape Talking Dictionary |publisher=The Lenape Language Preservation Project |year=2005 |allowparams=head,1 }}<!-- --><n…” 2350522 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-web |last=Rementer |first=Jim |coauthors=Pearson, Bruce L. |editors=Grant Leneaux; Raymond Whritenour |entry={{{head|{{{1|}}}}}} |entryurl={{#if:{{{head|{{{1|}}}}}}|http://talk-lenape.org/results?query={{{head|{{{1|}}}}}}&lang=lenape|http://talk-lenape.org/}} |work=The Lenape Talking Dictionary |publisher=The Lenape Language Preservation Project |year=2005 |allowparams=head,1 }}<!-- --><noinclude>{{documentation}}</noinclude> 2lfubcvn6h0kn6qoy5h95dhig842oq6 mvshǿng 0 395955 2350523 2026-05-06T15:54:54Z TheHighFighter2 42988 Trang mới: “=={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/mə(˧).ɕɯŋ˥/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[xanh lục|Xanh lục]]. ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu xanh lục. {{C|raw|Màu sắc}}” 2350523 wikitext text/x-wiki =={{langname|raw}}== ==={{ĐM|pron}}=== * {{IPA4|raw|/mə(˧).ɕɯŋ˥/}} ==={{ĐM|adj}}=== {{head|raw|adjective}} # [[xanh lục|Xanh lục]]. ==={{ĐM|noun}}=== {{head|raw|noun}} # Màu xanh lục. {{C|raw|Màu sắc}} bv3yo8blqju9lonhxx6soktmf67zcqs Mô đun:headword/sandbox 828 395956 2350549 2026-05-07T02:28:33Z Kateru Zakuro 34522 Trang mới: “local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages"…” 2350549 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = #data.heads > 1 for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and #data.genders > 0 then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if #parts > 0 then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return parts_label .. parts_output, any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and #data.inflections > 0 then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if #data.categories > 0 then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or data.lang:hasType("reconstructed") -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 6a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 6b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 6c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 671z5dm9v06as6sqjbl5k8v0rrwvgdy 2350554 2350549 2026-05-07T02:36:38Z Kateru Zakuro 34522 2350554 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export eqpllaiimz4nrolmqjwd5dl5ttmd18j 2350555 2350554 2026-05-07T02:41:07Z Kateru Zakuro 34522 2350555 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 3es2t5p21f7nbzlk35h2zljix1iyyal 2350556 2350555 2026-05-07T02:53:48Z Kateru Zakuro 34522 2350556 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Internal error: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>or</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Appendix:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title(langname .. " transliteration", "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title(langname .. " transliteration", "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[please provide]</small>" insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries") else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, data.lang:getFullName() .. " " .. plpos .. " with red links in their headword lines") return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pluralize(pos) end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "lemma" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "lemma" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "non-lemma form" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "non-lemma form" elseif best_guess then return plpos:find(" forms$") and "non-lemma form" or "lemma" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys") end if different then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = full_langname .. " " .. data.pos_category -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Translingual Han characters" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, full_langname .. " " .. postype .. "s") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, full_langname .. " alternative forms") end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, full_langname .. " terms in nonstandard scripts") end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, full_langname .. " terms with redundant script codes") else insert(data.categories, full_langname .. " terms with non-redundant manual script codes") end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, full_langname .. " terms with redundant transliterations") else insert(data.categories, full_langname .. " terms with non-redundant manual transliterations") end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>transliteration needed</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Requests for transliteration of " .. full_langname .. " terms") else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Reconstruction" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Reconstruction:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, full_langname .. " " .. data.pos_category .. " in " .. head.sc:getDisplayForm()) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Reconstruction" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, full_langname .. " terms written in multiple scripts") end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, full_langname .. " terms spelled with numbers") num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, full_langname .. " terms spelled with emoji") else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, full_langname .. " terms spelled with " .. char) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic .. "◌") end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, full_langname .. " terms spelled with " .. character) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, full_langname .. " palindromes") end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export a1tj6jcwhsatn9lc5vqhlukl7oqrj6q 2350557 2350556 2026-05-07T02:54:14Z Kateru Zakuro 34522 2350557 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Internal error: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>or</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Appendix:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title(langname .. " transliteration", "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title(langname .. " transliteration", "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[please provide]</small>" insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries") else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pluralize(pos) end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "lemma" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "lemma" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "non-lemma form" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "non-lemma form" elseif best_guess then return plpos:find(" forms$") and "non-lemma form" or "lemma" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys") end if different then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = full_langname .. " " .. data.pos_category -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Translingual Han characters" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, full_langname .. " " .. postype .. "s") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, full_langname .. " alternative forms") end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, full_langname .. " terms in nonstandard scripts") end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, full_langname .. " terms with redundant script codes") else insert(data.categories, full_langname .. " terms with non-redundant manual script codes") end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, full_langname .. " terms with redundant transliterations") else insert(data.categories, full_langname .. " terms with non-redundant manual transliterations") end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>transliteration needed</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Requests for transliteration of " .. full_langname .. " terms") else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Reconstruction" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Reconstruction:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, full_langname .. " " .. data.pos_category .. " in " .. head.sc:getDisplayForm()) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Reconstruction" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, full_langname .. " terms written in multiple scripts") end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, full_langname .. " terms spelled with numbers") num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, full_langname .. " terms spelled with emoji") else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, full_langname .. " terms spelled with " .. char) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic .. "◌") end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, full_langname .. " terms spelled with " .. character) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, full_langname .. " palindromes") end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export pkhvtki3ya7fctfn6ndqk9kqwf3emqx 2350558 2350557 2026-05-07T02:54:40Z Kateru Zakuro 34522 2350558 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Internal error: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>or</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Appendix:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title(langname .. " transliteration", "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title(langname .. " transliteration", "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[please provide]</small>" insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries") else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pluralize(pos) end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "lemma" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "lemma" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "non-lemma form" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "non-lemma form" elseif best_guess then return plpos:find(" forms$") and "non-lemma form" or "lemma" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys") end if different then insert(lang_cats, lang:getFullName() .. " terms with non-redundant non-automated sortkeys") end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, canonical .. " entries with incorrect language header") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = full_langname .. " " .. data.pos_category -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Translingual Han characters" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, full_langname .. " " .. postype .. "s") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, full_langname .. " alternative forms") end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, full_langname .. " terms in nonstandard scripts") end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, full_langname .. " terms with redundant script codes") else insert(data.categories, full_langname .. " terms with non-redundant manual script codes") end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, full_langname .. " terms with redundant transliterations") elseif not head.tr_fail then insert(data.categories, full_langname .. " terms with non-redundant manual transliterations") end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>transliteration needed</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Requests for transliteration of " .. full_langname .. " terms") else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Reconstruction" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Reconstruction:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, full_langname .. " " .. data.pos_category .. " in " .. head.sc:getDisplayForm()) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Reconstruction" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, full_langname .. " terms written in multiple scripts") end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, full_langname .. " terms spelled with numbers") num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, full_langname .. " terms spelled with emoji") else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, full_langname .. " terms spelled with " .. char) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic .. "◌") end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, full_langname .. " terms spelled with " .. character) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, full_langname .. " palindromes") end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export iixqgs2hd2myfj9h33hka3d0sqdkuv2 2350559 2350558 2026-05-07T02:55:05Z Kateru Zakuro 34522 Hồi sửa về bản sửa đổi 2350555 của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|talk]]) 2350559 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 3es2t5p21f7nbzlk35h2zljix1iyyal 2350560 2350559 2026-05-07T02:57:57Z Kateru Zakuro 34522 2350560 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export d6c15a5md0lesr6yxdhr22asxmkjjxz 2350561 2350560 2026-05-07T03:00:08Z Kateru Zakuro 34522 2350561 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export fgcqg8nai4hwpens6q27xacr0s91sgb 2350562 2350561 2026-05-07T03:01:53Z Kateru Zakuro 34522 2350562 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export gxeyfrc85bbwsxwc0203muywnar996c 2350563 2350562 2026-05-07T03:03:52Z Kateru Zakuro 34522 2350563 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. format_inflections = function(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export b54ewoak9wdjnogeph8t80jwxmc7f1i 2350564 2350563 2026-05-07T03:18:21Z Kateru Zakuro 34522 2350564 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, data.lang:getFullName() .. " " .. plpos .. " with red links in their headword lines") return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 376fmyxbqeymxypc6tec3o55r33nbat 2350565 2350564 2026-05-07T03:20:39Z Kateru Zakuro 34522 2350565 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, data.lang:getFullName() .. " " .. plpos .. " with red links in their headword lines") return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " multiword terms") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export d0oa9qpfig2m17jl58323ow3lpa6bzt 2350568 2350565 2026-05-07T05:18:44Z Kateru Zakuro 34522 2350568 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export edn21u2w3s07zhra02fbvpc480bmyk8 2350569 2350568 2026-05-07T05:21:00Z Kateru Zakuro 34522 2350569 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export 3j1zibehjqe1bzlz4wu4j73o801nya2 2350570 2350569 2026-05-07T05:28:31Z Kateru Zakuro 34522 2350570 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Lỗi nội bộ: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Lỗi nội bộ: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, plpos .. " có liên kết đỏ trong dòng tên mục từ " .. data.lang:getFullName()) return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pos end --[==[ return "Mục từ" if the given POS is a lemma, "Mục từ biến thể hình thái" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Lỗi nội bộ: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Lỗi nội bộ: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Lỗi nội bộ: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getFullName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Lỗi nội bộ: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Lỗi nội bộ: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = page.namespace ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Lỗi nội bộ: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Lỗi nội bộ: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) else insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Từ dài " .. full_langname) end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export rwwxv7jgv66ft2vvv0kra5cqx1yoa35 Mô đun:headword/templates/sandbox 828 395957 2350551 2026-05-07T02:30:26Z Kateru Zakuro 34522 Trang mới: “local export = {} local debug_track_module = "Module:debug/track" local headword_module = "Module:headword/sandbox" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local yesno_module = "Module:yesno" local insert = table.insert local require = require local tostring = tostring local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function process_params(...)…” 2350551 Scribunto text/plain local export = {} local debug_track_module = "Module:debug/track" local headword_module = "Module:headword/sandbox" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local yesno_module = "Module:yesno" local insert = table.insert local require = require local tostring = tostring local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function track(page) debug_track("headword/templates/" .. page) return true end local function get_args(frame) local boolean = {type = "boolean"} local boolean_list_allow_holes = {type = "boolean", list = true, allow_holes = true} local list_allow_holes = {list = true, allow_holes = true} return process_params(frame:getParent().args, { [1] = {required = true, type = "language", template_default = "und"}, sc = {type = "script"}, sort = true, [2] = {required = true, template_default = "nouns"}, sccat = boolean, noposcat = boolean, nomultiwordcat = boolean, nogendercat = boolean, nopalindromecat = boolean, nolinkhead = boolean, autotrinfl = boolean, altform = boolean, -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] checkredlinks = true, cat2 = true, cat3 = true, cat4 = true, cat5 = true, cat6 = true, cat7 = true, pagename = true, head = list_allow_holes, image = true, id = true, tr = list_allow_holes, ts = list_allow_holes, gloss = true, g = {list = true, type = "genders", flatten = true}, ["g\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <q:...> or <l:...> inline modifier on a gender"}, [3] = list_allow_holes, ["f\1accel-form"] = list_allow_holes, ["f\1accel-translit"] = list_allow_holes, ["f\1accel-lemma"] = list_allow_holes, ["f\1accel-lemma-translit"] = list_allow_holes, ["f\1accel-gender"] = list_allow_holes, ["f\1accel-nostore"] = boolean_list_allow_holes, ["f\1request"] = list_allow_holes, ["f\1alt"] = list_allow_holes, ["f\1lang"] = {list = true, allow_holes = true, type = "language"}, ["f\1sc"] = {list = true, allow_holes = true, type = "script"}, ["f\1id"] = list_allow_holes, ["f\1tr"] = list_allow_holes, ["f\1ts"] = list_allow_holes, ["f\1t"] = list_allow_holes, ["f\1lit"] = list_allow_holes, ["f\1pos"] = list_allow_holes, ["f\1ng"] = list_allow_holes, ["f\1g"] = {list = true, allow_holes = true, type = "genders"}, ["f\1q"] = {list = true, allow_holes = true, type = "qualifier"}, ["f\1qq"] = {list = true, allow_holes = true, type = "qualifier"}, ["f\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use fNq= or fNl="}, ["f\1l"] = {list = true, allow_holes = true, type = "labels"}, ["f\1ll"] = {list = true, allow_holes = true, type = "labels"}, ["f\1ref"] = {list = true, allow_holes = true, type = "references"}, ["f\1autotr"] = boolean_list_allow_holes, ["f\1nolink"] = boolean_list_allow_holes, }) end function export.head_t(frame) local m_headword = require(headword_module) local args = get_args(frame) -- Get language and script information local data = {} data.lang = args[1] data.sc = args.sc data.sccat = args.sccat data.sort_key = args.sort data.heads = args.head data.image = args.image data.pagename = args.pagename data.id = args.id data.translits = args.tr data.transcriptions = args.ts data.gloss = args.gloss data.genders = args.g -- TODO should throw an error if data.heads gets overwritten if data.image then data.heads = {"[[File:" .. data.image .. "|class=skin-invert-image]]"} end -- This shouldn't really happen. for i = 1, args.head.maxindex do if not args.head[i] then track("head-with-holes") end end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] data.altform = args.altform -- Part-of-speech category local pos_category = args[2] data.noposcat = args.noposcat -- Check for headword aliases and then pluralize if the POS term does not have an invariable plural. data.pos_category = m_headword.canonicalize_pos(pos_category) -- Additional categories. local categories = {} data.whole_page_categories = {} data.nomultiwordcat = args.nomultiwordcat data.nogendercat = args.nogendercat data.nopalindromecat = args.nopalindromecat -- FIXME: add a minimum_index spec to [[Module:parameters]] list specs, so -- that `cat` can be changed to a list parameter starting at index 2. if args.cat2 then insert(categories, args.cat2 .. " " .. data.lang:getFullName()) end if args.cat3 then insert(categories, args.cat3 .. " " .. data.lang:getFullName()) end if args.cat4 then insert(categories, args.cat4 .. " " .. data.lang:getFullName()) end if args.cat5 then insert(categories, args.cat5 .. " " .. data.lang:getFullName()) end if args.cat6 then insert(categories, args.cat6 .. " " .. data.lang:getFullName()) end if args.cat7 then insert(categories, args.cat7 .. " " .. data.lang:getFullName()) end data.categories = categories if args.checkredlinks then data.checkredlinks = require(yesno_module)(args.checkredlinks, args.checkredlinks) end -- Headword linking data.nolinkhead = args.nolinkhead -- Inflected forms data.inflections = {enable_auto_translit = args.autotrinfl} local forms = args[3] local n = forms.maxindex / 2 for i = 1, n + n % 1 do local infl_part = { label = forms[i * 2 - 1], accel = args["faccel-form"][i] and { form = args["faccel-form"][i], translit = args["faccel-translit"][i], lemma = args["faccel-lemma"][i], lemma_translit = args["faccel-lemma-translit"][i], gender = args["faccel-gender"][i], nostore = args["faccel-nostore"][i], } or nil, request = args.frequest[i], enable_auto_translit = args.fautotr[i], } local form = { term = forms[i * 2], alt = args.falt[i], genders = args.fg[i], id = args.fid[i], lang = args.flang[i], nolinkinfl = args.fnolink[i], q = args.fq[i], qq = args.fqq[i], l = args.fl[i], ll = args.fll[i], refs = args.fref[i], sc = args.fsc[i], tr = args.ftr[i], ts = args.fts[i], gloss = args.ft[i], lit = args.flit[i], pos = args.fpos[i], ng = args.fng[i], } -- If no term or alt is given, then the label is shown alone. if form.term or form.alt then insert(infl_part, form) end if infl_part.label == "hoặc" then -- Append to the previous inflection part, if one exists if #infl_part > 0 and data.inflections[1] then insert(data.inflections[#data.inflections], form) end elseif infl_part.label then -- Add a new inflection part insert(data.inflections, infl_part) end end return m_headword.full_headword(data) end function export.canonicalize_pos(frame) local iargs = process_params(frame.args, { [1] = {required = true}, }) return require(headword_module).canonicalize_pos(iargs[1]) end return export c68rvolk3a8jf3d5qz5rpnodjyorzyi 2350552 2350551 2026-05-07T02:36:09Z Kateru Zakuro 34522 2350552 Scribunto text/plain local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) end --[==[ Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==] local m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Lỗi nội bộ: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Lỗi nội bộ: Wrong type for `part.%s`=%s, should be \"table\""):format(field, mw.dumpObject(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>hoặc</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^Phụ lục:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Tiêu đề không được hỗ trợ/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>hoặc</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title("chuyển tự " .. langname, "Wiktionary") if transliteration_page and transliteration_page.exists then translits_formatted = " [[Wiktionary:Chuyển tự " .. langname .. "|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end local function format_inflection_parts(data, parts) local any_part_translit = false for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. part.label .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). local tr = part.translit or (not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil) if tr ~= "-" then any_part_translit = true end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.transcription, accel = partaccel or parts.accel, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[vui lòng chỉ định]</small>" insert(data.categories, "Yêu cầu biến cách cho mục từ " .. data.lang:getFullName()) else parts_output = "" end local parts_label = parts.label and ("<i>" .. parts.label .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1), any_part_translit end -- Format the inflections following the headword. local function format_inflections(data) local any_part_translit = false if data.inflections and data.inflections[1] then -- Format each inflection individually. for key, infl in ipairs(data.inflections) do local this_any_part_translit data.inflections[key], this_any_part_translit = format_inflection_parts(data, infl) if this_any_part_translit then any_part_translit = true end end local concat_result = concat(data.inflections, ", ") return " (" .. concat_result .. ")" else return "" end end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local isLemma = (m_data or get_data()).lemmas -- Is it a lemma category? if isLemma[plpos] then return "Mục từ" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "Mục từ" end -- Is it a nonlemma category? local isNonLemma = (m_data or get_data()).nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "Mục từ biến thể hình thái" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "Mục từ biến thể hình thái" elseif best_guess then return plpos:find(" forms$") and "Mục từ biến thể hình thái" or "Mục từ" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local data = m_data or get_data() if data.pos_aliases[pos] then pos = data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (data.pos_aliases[pos] or pos) .. " forms" end return pos end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, "Mục từ có mã sắp xếp thừa " .. lang:getCanonicalName()) end if different then insert(lang_cats, "Mục từ có mã sắp xếp thủ công không thừa " .. lang:getFullName()) end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName2() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with topic categories using raw markup") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " entries with language name categories using raw markup") end if get_current_L2() ~= canonical then insert(lang_cats, "Mục từ " .. lang:getCanonicalName() .. " có đề mục ngôn ngữ không đúng") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename, page = data.pagename if raw_pagename and raw_pagename ~= (m_data or get_data()).pagename then -- for testing, doc pages, etc. page = process_page(raw_pagename) else page = (m_data or get_data()).page end -- Check the namespace against the language type. local namespace = page.namespace if namespace == "" then if data.lang:hasType("reconstructed") then error("Entries in " .. langname .. " must be placed in the Từ tái tạo: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("`data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = data.pos_category .. " " .. full_langname -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Ký tự Chữ Hán đa ngữ" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, postype .. " " .. full_langname .. "") end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, "Dạng viết khác " .. full_langname) end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if term is reconstructed local is_reconstructed = namespace == "Từ tái tạo" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = (m_data or get_data()).no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ local namespace = page.namespace if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, "Mục từ có chữ viết không chuẩn " .. full_langname) end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then insert(data.categories, "Mục từ có mã chữ viết thừa " .. full_langname) else insert(data.categories, "Mục từ có mã chữ viết thủ công không thừa " .. full_langname) end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = (m_data or get_data()).notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr, tr_categories automated_tr, head.tr_fail, tr_categories = data.lang:transliterate(text, head.sc) if automated_tr or head.tr_fail then local manual_tr = head.tr if manual_tr then if (remove_links(manual_tr) == remove_links(automated_tr)) and (not head.tr_fail) then insert(data.categories, "Mục từ có chuyển tự thừa " .. full_langname) elseif not head.tr_fail then insert(data.categories, "Mục từ có chuyển tự thủ công không thừa " .. full_langname) end end if not manual_tr then head.tr = automated_tr extend(data.categories, tr_categories) end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>cần chuyển tự</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Yêu cầu chuyển tự mục từ " .. full_langname) else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 7. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Tiêu đề không được hỗ trợ/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Tiêu đề không được hỗ trợ/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and (m_data or get_data()).toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Từ tái tạo" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Từ tái tạo:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 8. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then insert(data.categories, "Mục từ có tham số head thừa " .. full_langname) end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "Mục từ" then local no_multiword_cat = (m_data or get_data()).no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = (m_data or get_data()).hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." if umatch(page.pagename, checkpattern) and not non_categorizable(page.full_raw_pagename) then insert(data.categories, "Mục từ có chứa nhiều từ " .. full_langname) end end end if data.sccat then for _, head in ipairs(data.heads) do insert(data.categories, data.pos_category .. " dùng " .. head.sc:getDisplayForm() .. " " .. full_langname) end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Từ tái tạo" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "α", -- Penobscot ["acy"] = "δθ", -- Cypriot Arabic ["anc"] = "γ", -- Ngas ["aou"] = "χ", -- A'ou ["awg"] = "β", -- Anguthimri ["bhp"] = "β", -- Bima ["byk"] = "θ", -- Biao ["cdy"] = "θ", -- Chadong ["clm"] = "χ", -- Klallam ["col"] = "χ", -- Colombia-Wenatchi ["coo"] = "χ", -- Comox; FIXME: others? E.g. Greek theta (θ)? ["ets"] = "θ", -- Yekhee ["gmw-gts"] = "χ", -- Gottscheerish ["hur"] = "θ", -- Halkomelem ["izh"] = "ь", -- Ingrian ["kic"] = "θ", -- Kickapoo ["lil"] = "χ", -- Lillooet ["mhz"] = "β", -- Mor (Austronesian) ["neg"]= "ӡ", -- Negidal (normally in Cyrillic) ["oui"] = "γβ", -- Old Uyghur: FIXME: others? E.g. Greek delta (δ)? ["pox"] = "χ", -- Polabian ["rom"] = "Θθ", -- Romani: International Standard; two different thetas??? ["sah"] = "ь", -- Yakut (1929 - 1939 Latin spelling) ["sjw"] = "θ", -- Shawnee ["squ"] = "χ", -- Squamish ["str"] = "χθ", -- Saanich; uses two Greek letters ["twa"] = "χ", -- Twana ["yha"] = "θ", -- Baha ["za"] = "зч", -- Zhuang; 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names ["zng"] = "θ", -- Mang } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, "Mục từ được viết bằng nhiều chữ viết " .. full_langname) end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, "Từ đánh vần với số " .. full_langname) num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, "Từ đánh vần với emoji " .. full_langname) else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, "Từ đánh vần với " .. char .. " " .. full_langname) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. " " .. full_langname) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, "Từ đánh vần với ◌" .. diacritic .. "◌ " .. full_langname) end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, "Từ đánh vần với " .. character .. " " .. full_langname) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Từ tái tạo" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, "Mục từ viết xuôi ngược đều giống nhau " .. full_langname) end if namespace == "" and not data.lang:hasType("Từ tái tạo") then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 9. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export eqpllaiimz4nrolmqjwd5dl5ttmd18j 2350553 2350552 2026-05-07T02:36:23Z Kateru Zakuro 34522 Đã lùi lại sửa đổi [[Special:Diff/2350552|2350552]] của [[Special:Contributions/Kateru Zakuro|Kateru Zakuro]] ([[User talk:Kateru Zakuro|thảo luận]]) 2350553 Scribunto text/plain local export = {} local debug_track_module = "Module:debug/track" local headword_module = "Module:headword/sandbox" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local yesno_module = "Module:yesno" local insert = table.insert local require = require local tostring = tostring local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function process_params(...) process_params = require(parameters_module).process return process_params(...) end local function track(page) debug_track("headword/templates/" .. page) return true end local function get_args(frame) local boolean = {type = "boolean"} local boolean_list_allow_holes = {type = "boolean", list = true, allow_holes = true} local list_allow_holes = {list = true, allow_holes = true} return process_params(frame:getParent().args, { [1] = {required = true, type = "language", template_default = "und"}, sc = {type = "script"}, sort = true, [2] = {required = true, template_default = "nouns"}, sccat = boolean, noposcat = boolean, nomultiwordcat = boolean, nogendercat = boolean, nopalindromecat = boolean, nolinkhead = boolean, autotrinfl = boolean, altform = boolean, -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] checkredlinks = true, cat2 = true, cat3 = true, cat4 = true, cat5 = true, cat6 = true, cat7 = true, pagename = true, head = list_allow_holes, image = true, id = true, tr = list_allow_holes, ts = list_allow_holes, gloss = true, g = {list = true, type = "genders", flatten = true}, ["g\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <q:...> or <l:...> inline modifier on a gender"}, [3] = list_allow_holes, ["f\1accel-form"] = list_allow_holes, ["f\1accel-translit"] = list_allow_holes, ["f\1accel-lemma"] = list_allow_holes, ["f\1accel-lemma-translit"] = list_allow_holes, ["f\1accel-gender"] = list_allow_holes, ["f\1accel-nostore"] = boolean_list_allow_holes, ["f\1request"] = list_allow_holes, ["f\1alt"] = list_allow_holes, ["f\1lang"] = {list = true, allow_holes = true, type = "language"}, ["f\1sc"] = {list = true, allow_holes = true, type = "script"}, ["f\1id"] = list_allow_holes, ["f\1tr"] = list_allow_holes, ["f\1ts"] = list_allow_holes, ["f\1t"] = list_allow_holes, ["f\1lit"] = list_allow_holes, ["f\1pos"] = list_allow_holes, ["f\1ng"] = list_allow_holes, ["f\1g"] = {list = true, allow_holes = true, type = "genders"}, ["f\1q"] = {list = true, allow_holes = true, type = "qualifier"}, ["f\1qq"] = {list = true, allow_holes = true, type = "qualifier"}, ["f\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use fNq= or fNl="}, ["f\1l"] = {list = true, allow_holes = true, type = "labels"}, ["f\1ll"] = {list = true, allow_holes = true, type = "labels"}, ["f\1ref"] = {list = true, allow_holes = true, type = "references"}, ["f\1autotr"] = boolean_list_allow_holes, ["f\1nolink"] = boolean_list_allow_holes, }) end function export.head_t(frame) local m_headword = require(headword_module) local args = get_args(frame) -- Get language and script information local data = {} data.lang = args[1] data.sc = args.sc data.sccat = args.sccat data.sort_key = args.sort data.heads = args.head data.image = args.image data.pagename = args.pagename data.id = args.id data.translits = args.tr data.transcriptions = args.ts data.gloss = args.gloss data.genders = args.g -- TODO should throw an error if data.heads gets overwritten if data.image then data.heads = {"[[File:" .. data.image .. "|class=skin-invert-image]]"} end -- This shouldn't really happen. for i = 1, args.head.maxindex do if not args.head[i] then track("head-with-holes") end end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] data.altform = args.altform -- Part-of-speech category local pos_category = args[2] data.noposcat = args.noposcat -- Check for headword aliases and then pluralize if the POS term does not have an invariable plural. data.pos_category = m_headword.canonicalize_pos(pos_category) -- Additional categories. local categories = {} data.whole_page_categories = {} data.nomultiwordcat = args.nomultiwordcat data.nogendercat = args.nogendercat data.nopalindromecat = args.nopalindromecat -- FIXME: add a minimum_index spec to [[Module:parameters]] list specs, so -- that `cat` can be changed to a list parameter starting at index 2. if args.cat2 then insert(categories, args.cat2 .. " " .. data.lang:getFullName()) end if args.cat3 then insert(categories, args.cat3 .. " " .. data.lang:getFullName()) end if args.cat4 then insert(categories, args.cat4 .. " " .. data.lang:getFullName()) end if args.cat5 then insert(categories, args.cat5 .. " " .. data.lang:getFullName()) end if args.cat6 then insert(categories, args.cat6 .. " " .. data.lang:getFullName()) end if args.cat7 then insert(categories, args.cat7 .. " " .. data.lang:getFullName()) end data.categories = categories if args.checkredlinks then data.checkredlinks = require(yesno_module)(args.checkredlinks, args.checkredlinks) end -- Headword linking data.nolinkhead = args.nolinkhead -- Inflected forms data.inflections = {enable_auto_translit = args.autotrinfl} local forms = args[3] local n = forms.maxindex / 2 for i = 1, n + n % 1 do local infl_part = { label = forms[i * 2 - 1], accel = args["faccel-form"][i] and { form = args["faccel-form"][i], translit = args["faccel-translit"][i], lemma = args["faccel-lemma"][i], lemma_translit = args["faccel-lemma-translit"][i], gender = args["faccel-gender"][i], nostore = args["faccel-nostore"][i], } or nil, request = args.frequest[i], enable_auto_translit = args.fautotr[i], } local form = { term = forms[i * 2], alt = args.falt[i], genders = args.fg[i], id = args.fid[i], lang = args.flang[i], nolinkinfl = args.fnolink[i], q = args.fq[i], qq = args.fqq[i], l = args.fl[i], ll = args.fll[i], refs = args.fref[i], sc = args.fsc[i], tr = args.ftr[i], ts = args.fts[i], gloss = args.ft[i], lit = args.flit[i], pos = args.fpos[i], ng = args.fng[i], } -- If no term or alt is given, then the label is shown alone. if form.term or form.alt then insert(infl_part, form) end if infl_part.label == "hoặc" then -- Append to the previous inflection part, if one exists if #infl_part > 0 and data.inflections[1] then insert(data.inflections[#data.inflections], form) end elseif infl_part.label then -- Add a new inflection part insert(data.inflections, infl_part) end end return m_headword.full_headword(data) end function export.canonicalize_pos(frame) local iargs = process_params(frame.args, { [1] = {required = true}, }) return require(headword_module).canonicalize_pos(iargs[1]) end return export c68rvolk3a8jf3d5qz5rpnodjyorzyi dōngtiān 0 395958 2350567 2026-05-07T03:25:27Z Kelly zhrm 58416 Trang mới: “{{also|dòngtiān}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|冬天}}” 2350567 wikitext text/x-wiki {{also|dòngtiān}} =={{langname|cmn}}== ==={{ĐM|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|冬天}} r6c4xodfw9hc7znmg58rtrbbfvdapei rumer 0 395959 2350579 2026-05-07T06:01:14Z Hiyuune 50834 Trang mới: “{{also|Rumer}} =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr|-|WL=#|bie=#}} ==={{section|n}}=== {{pl-noun|m-in}} # {{lb|pl|Western Lublin|Bychawa|Janów Lubelski County|Biecz|Brzeziny}} {{alt form|pl|numer}} ==={{section|further}}=== * {{R:pl:Łopaciński:1893||244|4}} * {{R:pl:SGP1900|numer|339|3}}” 2350579 wikitext text/x-wiki {{also|Rumer}} =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr|-|WL=#|bie=#}} ==={{section|n}}=== {{pl-noun|m-in}} # {{lb|pl|Western Lublin|Bychawa|Janów Lubelski County|Biecz|Brzeziny}} {{alt form|pl|numer}} ==={{section|further}}=== * {{R:pl:Łopaciński:1893||244|4}} * {{R:pl:SGP1900|numer|339|3}} gd2jdq3feluqz5zy418y4y4sv473zvf 2350581 2350579 2026-05-07T06:01:36Z Hiyuune 50834 /* Tiếng Ba Lan */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350581 wikitext text/x-wiki {{also|Rumer}} =={{langname|pl}}== ==={{section|pron}}=== {{pl-pr|-|WL=#|bie=#}} ==={{section|n}}=== {{pl-noun|m-in}} # {{lb|pl|Tây Lublin|Bychawa|Janów Lubelski|Biecz|Brzeziny}} {{alt form|pl|numer}} ==={{section|further}}=== * {{R:pl:Łopaciński:1893||244|4}} * {{R:pl:SGP1900|numer|339|3}} ign4zqxqrc3i0xrrgopseumvn31iwsk 傢具 0 395960 2350588 2026-05-07T06:11:01Z Hiyuune 50834 Trang mới: “{{also|傢俱|家俱|家具}} =={{langname|zh}}== {{zh-see|家具|v}}” 2350588 wikitext text/x-wiki {{also|傢俱|家俱|家具}} =={{langname|zh}}== {{zh-see|家具|v}} s4id0wumxlmkjrxqft22uoxla6529ks 家俱 0 395961 2350589 2026-05-07T06:11:38Z Hiyuune 50834 Trang mới: “{{also|家具|傢俱|傢具}} =={{langname|zh}}== {{zh-see|家具|v}}” 2350589 wikitext text/x-wiki {{also|家具|傢俱|傢具}} =={{langname|zh}}== {{zh-see|家具|v}} 3jp2o9283n6e5mon8bpdwoca6j0ke7f ka-kū 0 395962 2350590 2026-05-07T06:12:06Z Hiyuune 50834 Trang mới: “=={{langname|nan-hbl}}== {{zh-see|家具|poj}}” 2350590 wikitext text/x-wiki =={{langname|nan-hbl}}== {{zh-see|家具|poj}} 52ctu66eutlpazx54ebfpwxhtaepp0c kee-kī 0 395963 2350591 2026-05-07T06:12:37Z Hiyuune 50834 Trang mới: “=={{langname|nan-hbl}}== {{zh-see|家具|poj}}” 2350591 wikitext text/x-wiki =={{langname|nan-hbl}}== {{zh-see|家具|poj}} 52ctu66eutlpazx54ebfpwxhtaepp0c ka-khū 0 395964 2350592 2026-05-07T06:12:41Z Hiyuune 50834 Trang mới: “=={{langname|nan-hbl}}== {{zh-see|家具|poj}}” 2350592 wikitext text/x-wiki =={{langname|nan-hbl}}== {{zh-see|家具|poj}} 52ctu66eutlpazx54ebfpwxhtaepp0c kee-kīr 0 395965 2350593 2026-05-07T06:12:44Z Hiyuune 50834 Trang mới: “=={{langname|nan-hbl}}== {{zh-see|家具|poj}}” 2350593 wikitext text/x-wiki =={{langname|nan-hbl}}== {{zh-see|家具|poj}} 52ctu66eutlpazx54ebfpwxhtaepp0c -yka 0 395967 2350599 2026-05-07T06:16:52Z Hiyuune 50834 Trang mới: “{{also|yka|-yką}} =={{langname|pl}}== {{etymon|pl|id=-ics|:from|pl:-ika<id:-ics>}} ==={{section|pron}}=== {{pl-pr}} ==={{section|suffix}}=== {{head|pl|suffix|g=f}} # {{alt form|pl|-ika}} #: {{suffixusex|pl|akord|akordyka}} ===={{section|decl}}==== {{pl-decl-noun-f|tantum=s}} ===={{section|drv}}==== {{suffixsee|pl}} ==={{section|further}}=== * {{R:pl:PWN}}” 2350599 wikitext text/x-wiki {{also|yka|-yką}} =={{langname|pl}}== {{etymon|pl|id=-ics|:from|pl:-ika<id:-ics>}} ==={{section|pron}}=== {{pl-pr}} ==={{section|suffix}}=== {{head|pl|suffix|g=f}} # {{alt form|pl|-ika}} #: {{suffixusex|pl|akord|akordyka}} ===={{section|decl}}==== {{pl-decl-noun-f|tantum=s}} ===={{section|drv}}==== {{suffixsee|pl}} ==={{section|further}}=== * {{R:pl:PWN}} 5c08fw32ozdq1his1lfbld1wqhpc8h3 2350600 2350599 2026-05-07T06:17:00Z Hiyuune 50834 /* Hậu tố */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2350600 wikitext text/x-wiki {{also|yka|-yką}} =={{langname|pl}}== {{etymon|pl|id=-ics|:from|pl:-ika<id:-ics>}} ==={{section|pron}}=== {{pl-pr}} ==={{section|suffix}}=== {{head|pl|Hậu tố|g=f}} # {{alt form|pl|-ika}} #: {{suffixusex|pl|akord|akordyka}} ===={{section|decl}}==== {{pl-decl-noun-f|tantum=s}} ===={{section|drv}}==== {{suffixsee|pl}} ==={{section|further}}=== * {{R:pl:PWN}} od5ej2uqqhh1qvlb25cpsffwz3gfenr Thể loại:Hậu tố tiếng Ba Lan 14 395968 2350602 2026-05-07T06:17:14Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2350602 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx robotyki 0 395969 2350604 2026-05-07T06:27:07Z Hiyuune 50834 + pl 2350604 wikitext text/x-wiki =={{langname|pl}}== ==={{section|n}}=== {{head|pl|Biến thể hình thái danh từ}} # {{infl of|pl|robotyka||gen|s}} jwar1oculs5yeeqxcoeja9b106at1up Mô đun:zh/data/dial-syn/家具 828 395970 2350605 2026-05-07T06:28:18Z Hiyuune 50834 Trang mới: “local export = {} export.list = { ["meaning"] = "đồ nội thất", ["note"] = "", ["Classical"] = { "家生", "家俬" }, ["Formal"] = { "" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "家具" }, ["Beijing-PG"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "家具" }, ["Tianji…” 2350605 Scribunto text/plain local export = {} export.list = { ["meaning"] = "đồ nội thất", ["note"] = "", ["Classical"] = { "家生", "家俬" }, ["Formal"] = { "" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "家具" }, ["Beijing-PG"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "家具" }, ["Tianjin-WQ"] = { "" }, ["Langfang"] = { "家具" }, ["Chengde"] = { "" }, ["Ulan Hot"] = { "" }, ["Tongliao"] = { "" }, ["Chifeng"] = { "家具" }, ["Hailar"] = { "家具" }, ["Heihe"] = { "" }, ["Nenjiang"] = { "" }, ["Mohe"] = { "" }, ["Qiqihar"] = { "" }, ["Tailai"] = { "" }, ["Jixian-HLJ"] = { "" }, ["Lanxi-M"] = { "" }, ["Boli"] = { "" }, ["Jiayin"] = { "" }, ["Muling"] = { "" }, ["Dongning"] = { "" }, ["Ning'an"] = { "" }, ["Linkou"] = { "" }, ["Zhaozhou"] = { "" }, ["Zhaodong"] = { "" }, ["Jixi-M"] = { "" }, ["Mishan"] = { "" }, ["Harbin"] = { "家具", "家什" }, ["Shangzhi"] = { "" }, ["Yingchengzi"] = { "" }, ["Jiamusi"] = { "" }, ["Tongjiang-M"] = { "" }, ["Baicheng"] = { "" }, ["Da'an"] = { "" }, ["Songyuan"] = { "" }, ["Changchun"] = { "" }, ["Yushu"] = { "" }, ["Jilin"] = { "" }, ["Siping"] = { "" }, ["Liaoyuan"] = { "" }, ["Dunhua"] = { "" }, ["Hunchun"] = { "" }, ["Baishan"] = { "" }, ["Tonghua"] = { "" }, ["Shenyang"] = { "家具" }, ["Anshan"] = { "" }, ["Tieling"] = { "" }, ["Jinzhou"] = { "" }, ["Malaysia-M"] = { "" }, ["Singapore-M"] = { "" }, ["Taz"] = { "" }, ["Tianjin"] = { "家具", "擺飾" }, ["Tianjin-JZ"] = { "" }, ["Tianjin-BD"] = { "" }, ["Tianjin-NH"] = { "" }, ["Tianjin-HG"] = { "" }, ["Tianjin-TG"] = { "" }, ["Tianjin-DG"] = { "" }, ["Tianjin-JN"] = { "" }, ["Tianjin-DL"] = { "" }, ["Tianjin-JH"] = { "" }, ["Tianjin-XQ"] = { "" }, ["Tianjin-BC"] = { "" }, ["Tangshan"] = { "家具" }, ["Qinhuangdao"] = { "" }, ["Cangzhou"] = { "家具" }, ["Xianxian"] = { "" }, ["Xianxian-XY"] = { "" }, ["Baoding"] = { "家具", "家伙" }, ["Dingxing"] = { "" }, ["Xiong'an"] = { "" }, ["Shijiazhuang"] = { "家具" }, ["Xingtai"] = { "" }, ["Hengshui"] = { "" }, ["Lijin"] = { "" }, ["Binzhou"] = { "" }, ["Wudi"] = { "" }, ["Weicheng"] = { "" }, ["Fangzi"] = { "" }, ["Changle-WF"] = { "" }, ["Shouguang"] = { "" }, ["Rizhao"] = { "" }, ["Wulian"] = { "" }, ["Jinan"] = { "家具", "家什兒" }, ["Zhangqiu"] = { "" }, ["Liaocheng"] = { "" }, ["Dezhou"] = { "" }, ["Tai'an"] = { "" }, ["Xintai"] = { "" }, ["Zibo"] = { "" }, ["Zichuan"] = { "" }, ["Boshan"] = { "" }, ["Yinan"] = { "" }, ["Dalian"] = { "" }, ["Dandong"] = { "" }, ["Yantai"] = { "" }, ["Muping"] = { "" }, ["Laizhou"] = { "" }, ["Weihai"] = { "" }, ["Rongcheng"] = { "" }, ["Qingdao"] = { "家具" }, ["Hanting"] = { "" }, ["Changyi"] = { "" }, ["Gaomi"] = { "" }, ["Zhucheng"] = { "" }, ["Anqiu"] = { "" }, ["Linqu"] = { "" }, ["Qingzhou"] = { "" }, ["Yishui"] = { "" }, ["Hulin-XL"] = { "" }, ["Linjiang"] = { "" }, ["Ji'an-M"] = { "" }, ["Luoyang"] = { "家什" }, --家什? ["Luoning"] = { "" }, ["Sanmenxia"] = { "" }, ["Lingbao"] = { "" }, ["Luohe"] = { "" }, ["Zhumadian"] = { "" }, ["Biyang"] = { "" }, ["Zhoukou"] = { "" }, ["Dancheng"] = { "" }, ["Xuchang"] = { "" }, ["Changge"] = { "" }, ["Pingdingshan"] = { "" }, ["Lushan-M"] = { "" }, ["Nanyang"] = { "" }, ["Xixia"] = { "" }, ["Dengzhou"] = { "" }, ["Zaozhuang"] = { "" }, ["Ningyang"] = { "" }, ["Jining-M"] = { "" }, ["Linyi"] = { "" }, ["Heze"] = { "" }, ["Daming"] = { "家具" }, ["Yuncheng"] = { "" }, ["Wenxi"] = { "" }, ["Longxing"] = { "" }, ["Yongji"] = { "" }, ["Wanrong"] = { "家具" }, ["Ronghe"] = { "" }, ["Linfen"] = { "" }, ["Jixian"] = { "" }, ["Huozhou"] = { "" }, ["Hongtong"] = { "" }, ["Shangqiu"] = { "" }, ["Yongcheng"] = { "" }, ["Yuanyang"] = { "" }, ["Zhengzhou"] = { "家具" }, ["Kaifeng"] = { "" }, ["Lankao"] = { "" }, ["Changyuan"] = { "" }, ["Xunxian"] = { "" }, ["Puyang"] = { "" }, ["Fanxian"] = { "" }, ["Xinyang"] = { "" }, ["Gushi"] = { "" }, ["Shangluo"] = { "" }, ["Luonan"] = { "" }, ["Danfeng"] = { "" }, ["Shangnan"] = { "" }, ["Shanyang"] = { "" }, ["Zhen'an"] = { "" }, ["Hanbin"] = { "" }, ["Hanbin-XH"] = { "" }, ["Baihe"] = { "" }, ["Baihe-MP"] = { "" }, ["Pingli"] = { "" }, ["Xunyang"] = { "" }, ["Lueyang"] = { "" }, ["Mianxian"] = { "" }, ["Yangxian"] = { "" }, ["Xi'an"] = { "家具" }, ["Weiyang"] = { "" }, ["Baqiao"] = { "" }, ["Yanliang"] = { "" }, ["Lintong"] = { "" }, ["Chang'an"] = { "" }, ["Huyi"] = { "" }, ["Gaoling"] = { "" }, ["Zhouzhi"] = { "" }, ["Lantian"] = { "" }, ["Xianyang"] = { "" }, ["Xingping"] = { "" }, ["Wugong"] = { "" }, ["Qianxian"] = { "" }, ["Liquan"] = { "" }, ["Jingyang"] = { "" }, ["Sanyuan-M"] = { "" }, ["Yongshou"] = { "" }, ["Changwu"] = { "" }, ["Tongchuan"] = { "" }, ["Yaozhou"] = { "" }, ["Yijun"] = { "" }, ["Weinan"] = { "" }, ["Weinan-HZ"] = { "" }, ["Hancheng"] = { "" }, ["Huayin"] = { "" }, ["Tongguan"] = { "" }, ["Dali-SX"] = { "" }, ["Heyang"] = { "" }, ["Chengcheng"] = { "" }, ["Baishui"] = { "" }, ["Pucheng-M"] = { "" }, ["Fuping"] = { "" }, ["Huanglong"] = { "" }, ["Yichuan"] = { "" }, ["Huangling"] = { "" }, ["Luochuan"] = { "" }, ["Fuxian"] = { "" }, ["Dingbian"] = { "" }, ["Baoji"] = { "" }, ["Baoji-CC"] = { "" }, ["Fengxiang"] = { "" }, ["Qishan"] = { "" }, ["Fufeng"] = { "" }, ["Meixian-M"] = { "" }, ["Taibai"] = { "" }, ["Fengxian-SX"] = { "" }, ["Qianyang"] = { "" }, ["Longxian"] = { "" }, ["Linyou"] = { "" }, ["Tongxin"] = { "" }, ["Yanchi"] = { "" }, ["Guyuan"] = { "" }, ["Xiji"] = { "" }, ["Longde"] = { "" }, ["Jingyuan"] = { "" }, ["Tianshui"] = { "" }, ["Xining"] = { "家具" }, ["Menyuan"] = { "" }, ["Yanqi"] = { "" }, ["Xuzhou"] = { "家具" }, ["Xuzhou-JW"] = { "" }, ["Pizhou"] = { "" }, ["Suining"] = { "" }, ["Peixian"] = { "" }, ["Xinyi-M"] = { "" }, ["Fengxian-M"] = { "" }, ["Suqian"] = { "" }, ["Ganyu"] = { "" }, ["Donghai"] = { "" }, ["Fuyang"] = { "" }, ["Bengbu"] = { "" }, ["Suzhou-M"] = { "" }, ["Huaibei"] = { "" }, ["Bozhou"] = { "" }, ["Guangde-QC"] = { "" }, ["Qimen-AL-Jun"] = { "" }, ["Anji-HN"] = { "" }, ["Gansu-DG"] = { "" }, ["Shaanxi-DG"] = { "" }, ["Yinchuan"] = { "家具", "家什" }, ["Wuzhong"] = { "" }, ["Zhongwei"] = { "" }, ["Bayanhot"] = { "" }, ["Lanzhou"] = { "家具" }, ["Jiuquan"] = { "" }, ["Dunhuang"] = { "" }, ["Shandan"] = { "" }, ["Tianzhu"] = { "" }, ["Hami"] = { "" }, ["Changji"] = { "" }, ["Ürümqi"] = { "家具", "家巴什" }, ["Dabancheng-XG"] = { "" }, ["Midong-CSZ"] = { "" }, ["Ürümqi-BFG"] = { "" }, ["Jimsar"] = { "" }, ["Chengdu"] = { "家具" }, ["Xindu"] = { "" }, ["Xindu-XF"] = { "" }, ["Huayang"] = { "" }, ["Pidu"] = { "" }, ["Wenjiang"] = { "" }, ["Shuangliu"] = { "" }, ["Xinjin"] = { "" }, ["Jintang"] = { "" }, ["Pengzhou"] = { "" }, ["Dujiangyan"] = { "" }, ["Chongzhou"] = { "" }, ["Dayi"] = { "" }, ["Pujiang-M"] = { "" }, ["Qionglai"] = { "" }, ["Jianyang-M"] = { "" }, ["Xiaojin"] = { "" }, ["Jinchuan"] = { "" }, ["Songpan"] = { "" }, ["Maoxian"] = { "" }, ["Lixian"] = { "" }, ["Wenchuan"] = { "" }, ["Deyang"] = { "" }, ["Luojiang"] = { "" }, ["Mianzhu"] = { "" }, ["Shifang"] = { "" }, ["Guanghan"] = { "" }, ["Zhongjiang"] = { "" }, ["Ziyang-SC"] = { "" }, ["Anyue"] = { "" }, ["Lezhi"] = { "" }, ["Mianyang"] = { "" }, ["Anzhou"] = { "" }, ["Zitong"] = { "" }, ["Jiangyou"] = { "" }, ["Jiangyou-ZM"] = { "" }, ["Pingwu"] = { "" }, ["Beichuan"] = { "" }, ["Yanting"] = { "" }, ["Santai"] = { "" }, ["Guangyuan"] = { "" }, ["Zhaohua"] = { "" }, ["Cangxi"] = { "" }, ["Jiange"] = { "" }, ["Meishan"] = { "" }, ["Pengshan"] = { "" }, ["Danling"] = { "" }, ["Hongya"] = { "" }, ["Qingshen"] = { "" }, ["Renshou"] = { "" }, ["Luzhou"] = { "" }, ["Naxi"] = { "" }, ["Luxian"] = { "" }, ["Xuyong"] = { "" }, ["Gulin"] = { "" }, ["Hejiang"] = { "" }, ["Yibin"] = { "" }, ["Nanxi"] = { "" }, ["Pingshan-M"] = { "" }, ["Gaoxian"] = { "" }, ["Changning-M"] = { "" }, ["Gongxian"] = { "" }, ["Xingwen-GS"] = { "" }, ["Xingwen-BWS"] = { "" }, ["Jiang'an"] = { "" }, ["Junlian"] = { "" }, ["Leshan"] = { "" }, ["Jiajiang"] = { "" }, ["Emeishan"] = { "" }, ["Ebian"] = { "" }, ["Qianwei"] = { "" }, ["Mabian"] = { "" }, ["Jingyan"] = { "" }, ["Neijiang"] = { "" }, ["Zizhong"] = { "" }, ["Weiyuan"] = { "" }, ["Longchang"] = { "" }, ["Suining-SC"] = { "" }, ["Pengxi"] = { "" }, ["Shehong"] = { "" }, ["Guang'an"] = { "" }, ["Yuechi"] = { "" }, ["Wusheng"] = { "" }, ["Linshui"] = { "" }, ["Nanchong"] = { "" }, ["Nanbu"] = { "" }, ["Langzhong"] = { "" }, ["Yilong"] = { "" }, ["Yingshan"] = { "" }, ["Peng'an"] = { "" }, ["Dazhou"] = { "" }, ["Dazhu"] = { "" }, ["Kaijiang"] = { "" }, ["Wanyuan"] = { "" }, ["Xuanhan"] = { "" }, ["Bazhong"] = { "" }, ["Tongjiang"] = { "" }, ["Nanjiang"] = { "" }, ["Hanyuan"] = { "" }, ["Xichang"] = { "" }, ["Zigong"] = { "" }, ["Fushun"] = { "" }, ["Rongxian-M"] = { "" }, ["Muli"] = { "" }, ["Leibo"] = { "" }, ["Chongqing"] = { "家具" }, ["Chongqing-JB"] = { "" }, ["Chongqing-JLP"] = { "" }, ["Chongqing-DDK"] = { "" }, ["Chongqing-SPB"] = { "" }, ["Chongqing-BN"] = { "" }, ["Chongqing-NA"] = { "" }, ["Chongqing-QIJ"] = { "" }, ["Chongqing-QJ-WS"] = { "" }, ["Chongqing-YB"] = { "" }, ["Chongqing-BB"] = { "" }, ["Chongqing-NC"] = { "" }, ["Chongqing-WL"] = { "" }, ["Chongqing-DZ"] = { "" }, ["Chongqing-RC"] = { "" }, ["Chongqing-YC"] = { "" }, ["Chongqing-BS"] = { "" }, ["Chongqing-TL"] = { "" }, ["Chongqing-TN"] = { "" }, ["Chongqing-HC"] = { "" }, ["Chongqing-CS"] = { "" }, ["Chongqing-FL"] = { "" }, ["Chongqing-JJ"] = { "" }, ["Chongqing-WZ"] = { "" }, ["Chongqing-SZ"] = { "" }, ["Chongqing-KZ"] = { "" }, ["Chongqing-CK"] = { "" }, ["Chongqing-DJ"] = { "" }, ["Chongqing-LP"] = { "" }, ["Chongqing-FD"] = { "" }, ["Chongqing-ZX"] = { "" }, ["Chongqing-QJ"] = { "" }, ["Chongqing-PS"] = { "" }, ["Chongqing-YY"] = { "" }, ["Chongqing-XS"] = { "" }, ["Chongqing-YNY"] = { "" }, ["Chongqing-WX"] = { "" }, ["Chongqing-FJ"] = { "" }, ["Chongqing-WS"] = { "" }, ["Wuhan"] = { "家業", "家具" }, ["Jiangxia"] = { "" }, ["Caidian"] = { "" }, ["Xinzhou-HB"] = { "" }, ["Huangpi"] = { "" }, ["Hanchuan"] = { "" }, ["Suizhou"] = { "" }, ["Suixian"] = { "" }, ["Yichang"] = { "" }, ["Dangyang"] = { "" }, ["Zhijiang"] = { "" }, ["Yidu"] = { "" }, ["Changyang"] = { "" }, ["Xingshan"] = { "" }, ["Zigui"] = { "" }, ["Wufeng"] = { "" }, ["Enshi"] = { "" }, ["Hefeng"] = { "" }, ["Badong"] = { "" }, ["Xuan'en"] = { "" }, ["Laifeng"] = { "" }, ["Lichuan-M"] = { "" }, ["Jianshi"] = { "" }, ["Xianfeng"] = { "" }, ["Xiangyang"] = { "" }, ["Laohekou"] = { "" }, ["Baokang"] = { "" }, ["Nanzhang"] = { "" }, ["Zaoyang"] = { "" }, ["Yicheng"] = { "" }, ["Gucheng"] = { "" }, ["Jingzhou"] = { "" }, ["Jingzhou-SS"] = { "" }, ["Jiangling"] = { "" }, ["Shishou"] = { "" }, ["Gong'an"] = { "" }, ["Songzi"] = { "" }, ["Jingmen"] = { "" }, ["Zhongxiang"] = { "" }, ["Jingshan"] = { "" }, ["Tianmen"] = { "" }, ["Xiantao"] = { "" }, ["Qianjiang"] = { "" }, ["Shennongjia"] = { "" }, ["Shiyan"] = { "" }, ["Zhuxi"] = { "" }, ["Zhushan"] = { "" }, ["Yunxi"] = { "" }, ["Yunyang"] = { "" }, ["Danjiangkou"] = { "" }, ["Fangxian"] = { "" }, ["Lhasa"] = { "" }, ["Guiyang"] = { "家具" }, ["Huaxi"] = { "" }, ["Zunyi"] = { "" }, ["Tongzi"] = { "" }, ["Renhuai"] = { "" }, ["Bijie"] = { "" }, ["Jinsha-M"] = { "" }, ["Dafang"] = { "" }, ["Weining"] = { "" }, ["Liupanshui"] = { "" }, ["Liuzhi"] = { "" }, ["Xingyi"] = { "" }, ["Anshun"] = { "" }, ["Duyun"] = { "" }, ["Pingtang"] = { "" }, ["Fuquan"] = { "" }, ["Weng'an"] = { "" }, ["Kaili"] = { "" }, ["Liping-GZ"] = { "" }, ["Zhenyuan"] = { "" }, ["Tongren"] = { "" }, ["Sinan"] = { "" }, ["Yuping"] = { "" }, ["Liping"] = { "" }, ["Zhaotong"] = { "" }, ["Baoshan-M"] = { "" }, ["Dali"] = { "" }, ["Kunming"] = { "家具", "家什" }, ["Qujing"] = { "" }, ["Wenshan"] = { "" }, ["Mengzi"] = { "" }, ["Lancang"] = { "" }, ["Weixi"] = { "" }, ["Pu'er"] = { "" }, ["Lincang"] = { "" }, ["Guilin"] = { "家具" }, ["Lingui"] = { "" }, ["Guanyang"] = { "" }, ["Lipu"] = { "" }, ["Pingle"] = { "" }, ["Yangshuo"] = { "" }, ["Liuzhou"] = { "家私", "家具" }, ["Liuzhou-LR"] = { "" }, ["Luzhai"] = { "" }, ["Sanjiang-DZ"] = { "" }, ["Nanning-M"] = { "" }, ["Yongning-FJ"] = { "" }, ["Wuming"] = { "" }, ["Wuming-FC"] = { "" }, ["Binyang-M"] = { "" }, ["Shanglin"] = { "" }, ["Yizhou"] = { "" }, ["Jinchengjiang"] = { "" }, ["Luocheng"] = { "" }, ["Fengshan"] = { "" }, ["Tianlin-LP"] = { "" }, ["Tianlin-PT"] = { "" }, ["Leye"] = { "" }, ["Lingyun"] = { "" }, ["Longlin"] = { "" }, ["Xilin"] = { "" }, ["Xiangzhou-NL"] = { "" }, ["Qinzhou-M"] = { "" }, ["Jishou"] = { "" }, ["Changde"] = { "" }, ["Zhangjiajie"] = { "" }, ["Yongzhou"] = { "" }, ["Chenzhou"] = { "" }, ["Huaihua"] = { "" }, ["Huitong"] = { "" }, ["Xiangtan-JN"] = { "" }, ["Ganzhou-M"] = { "" }, ["Shiquan"] = { "" }, ["Ziyang"] = { "" }, ["Ningshan"] = { "" }, ["Langao"] = { "" }, ["Zhenping"] = { "" }, ["Hanzhong"] = { "" }, ["Nanzheng"] = { "" }, ["Ningqiang"] = { "" }, ["Liuba"] = { "" }, ["Chenggu"] = { "" }, ["Foping"] = { "" }, ["Xixiang"] = { "" }, ["Zhenba"] = { "" }, ["Anji-HB"] = { "" }, ["Kokang"] = { "" }, ["Dagudi"] = { "" }, ["Reshuitang"] = { "" }, ["Mae Salong"] = { "" }, ["Mae Sai"] = { "" }, ["Oudomxay"] = { "" }, ["Siantar"] = { "" }, ["Nanjing"] = { "家具" }, ["Pukou"] = { "" }, ["Luhe-M"] = { "" }, ["Lishui-M"] = { "" }, ["Yangzhou"] = { "家具" }, ["Jiangdu"] = { "" }, ["Baoying"] = { "" }, ["Gaoyou"] = { "" }, ["Yizheng"] = { "" }, ["Taizhou-M"] = { "" }, ["Taixing"] = { "" }, ["Jiangyan"] = { "" }, ["Jingjiang-DX"] = { "" }, ["Zhenjiang"] = { "" }, ["Jurong"] = { "" }, ["Yangzhong"] = { "" }, ["Lianyungang"] = { "" }, ["Haizhou"] = { "" }, ["Guanyun"] = { "" }, ["Guannan"] = { "" }, ["Huai'an"] = { "" }, ["Huai'an-HA"] = { "" }, ["Huaiyin"] = { "" }, ["Hongze"] = { "" }, ["Lianshui"] = { "" }, ["Xuyi"] = { "" }, ["Jinhu"] = { "" }, ["Xinghua"] = { "" }, ["Nantong"] = { "家具" }, ["Rugao"] = { "" }, ["Rudong"] = { "" }, ["Hai'an"] = { "" }, ["Yancheng"] = { "" }, ["Dongtai"] = { "" }, ["Binhai"] = { "" }, ["Sheyang"] = { "" }, ["Dafeng"] = { "" }, ["Funing"] = { "" }, ["Jianhu"] = { "" }, ["Xiangshui"] = { "" }, ["Shuyang"] = { "" }, ["Sihong"] = { "" }, ["Siyang"] = { "" }, ["Anqing"] = { "" }, ["Tongcheng"] = { "" }, ["Zongyang"] = { "" }, ["Chizhou"] = { "" }, ["Qingyang"] = { "" }, ["Wuhu"] = { "" }, ["Wuhu-QS"] = { "" }, ["Wanzhi"] = { "" }, ["Jinghu"] = { "" }, ["Fanchang"] = { "" }, ["Wuwei"] = { "" }, ["Hanshan"] = { "" }, ["Hexian"] = { "" }, ["Ma'anshan"] = { "" }, ["Dangtu"] = { "" }, ["Xuancheng"] = { "" }, ["Tongling"] = { "" }, ["Hefei"] = { "家具" }, ["Feidong"] = { "" }, ["Feixi"] = { "" }, ["Chaohu"] = { "" }, ["Lujiang"] = { "" }, ["Changfeng"] = { "" }, ["Huainan"] = { "" }, ["Lu'an"] = { "" }, ["Jin'an-QSH"] = { "" }, ["Shucheng"] = { "" }, ["Huoshan"] = { "" }, ["Chuzhou"] = { "" }, ["Lai'an"] = { "" }, ["Quanjiao"] = { "" }, ["Mingguang"] = { "" }, ["Tianchang"] = { "" }, ["Echeng"] = { "" }, ["Huangshi"] = { "" }, ["Huanggang"] = { "" }, ["Hong'an"] = { "" }, ["Macheng"] = { "" }, ["Luotian"] = { "" }, ["Yingshan-HB"] = { "" }, ["Xishui"] = { "" }, ["Huangmei"] = { "" }, ["Wuxue"] = { "" }, ["Qichun"] = { "" }, ["Xiaogan"] = { "" }, ["Anlu"] = { "" }, ["Yingcheng"] = { "" }, ["Yunmeng"] = { "" }, ["Dawu"] = { "" }, ["Guangshui"] = { "" }, ["Zhashui"] = { "" }, ["Jiujiang"] = { "" }, ["Ruichang"] = { "" }, ["Anji-AQ"] = { "" }, ["Najiahu"] = { "" }, ["Dianbai-Jun"] = { "" }, ["Ningguo-GK"] = { "" }, ["Langxi"] = { "" }, ["Changle-QJ"] = { "" }, ["Yanping"] = { "" }, ["Jiangshan-M-NBD"] = { "" }, ["Kaihua-M-HB"] = { "" }, ["Yushan-M-HY"] = { "" }, ["Juexi"] = { "" }, ["Taiyuan"] = { "家具", "擺紮" }, ["Jiancaoping"] = { "" }, ["Jinyuan"] = { "" }, ["Qingxu"] = { "" }, ["Loufan"] = { "" }, ["Taigu"] = { "" }, ["Pingyao"] = { "" }, ["Heshun"] = { "" }, ["Qixian"] = { "" }, ["Yangyuan"] = { "" }, ["Datong"] = { "" }, ["Yunzhou"] = { "" }, ["Yunzhou-XCT"] = { "" }, ["Tianzhen"] = { "" }, ["Guangling"] = { "" }, ["Shuozhou"] = { "" }, ["Shanyin"] = { "" }, ["Pinglu"] = { "" }, ["Pingding"] = { "" }, ["Xinzhou"] = { "家具" }, ["Wutai"] = { "" }, ["Daixian"] = { "" }, ["Wuzhai"] = { "" }, ["Lishi"] = { "" }, ["Shilou"] = { "" }, ["Fenyang"] = { "" }, ["Lanxian"] = { "" }, ["Linxian"] = { "" }, ["Wenshui"] = { "" }, ["Xiaoyi"] = { "" }, ["Fenxi"] = { "" }, ["Xixian"] = { "" }, ["Changzhi"] = { "" }, ["Tunliu"] = { "" }, ["Baochang"] = { "" }, ["Linhe"] = { "家具" }, ["Pingshun"] = { "" }, ["Zhangzi"] = { "" }, ["Qinxian"] = { "" }, ["Jincheng"] = { "" }, ["Lingchuan"] = { "" }, ["Yangcheng"] = { "" }, ["Gaoping"] = { "" }, ["Jining"] = { "家具" }, ["Liangcheng"] = { "" }, ["Hohhot"] = { "家具" }, ["Baotou"] = { "家具" }, ["Dongsheng"] = { "" }, ["Haibowan"] = { "" }, ["Erenhot"] = { "" }, ["Pingshan"] = { "" }, ["Zhangjiakou"] = { "家具" }, ["Chongli"] = { "" }, ["Handan"] = { "家具" }, ["Linzhang"] = { "" }, ["Anyang"] = { "" }, ["Linzhou"] = { "" }, ["Hebi"] = { "" }, ["Xinxiang"] = { "" }, ["Jiaozuo"] = { "" }, ["Qinyang"] = { "" }, ["Wenxian"] = { "" }, ["Wuzhi"] = { "" }, ["Jiyuan"] = { "" }, ["Suide"] = { "" }, ["Zizhou"] = { "" }, ["Mizhi"] = { "" }, ["Jiaxian"] = { "" }, ["Wubu"] = { "" }, ["Shenmu"] = { "" }, ["Fugu"] = { "" }, ["Yulin-J"] = { "" }, ["Hengshan-J"] = { "" }, ["Jingbian"] = { "" }, ["Yan'an"] = { "" }, ["Ansai"] = { "" }, ["Ganquan"] = { "" }, ["Zhidan"] = { "" }, ["Wuqi-J"] = { "" }, ["Qingjian"] = { "" }, ["Zichang"] = { "" }, ["Yanchuan"] = { "" }, ["Yanchang"] = { "" }, ["Shanghai"] = { "家具", "家生" }, ["Yangpu"] = { "" }, ["Xinzhuang"] = { "" }, ["Zhenru"] = { "" }, ["Songjiang"] = { "" }, ["Chuansha"] = { "" }, ["Nanhui"] = { "" }, ["Zhoupu"] = { "" }, ["Huinan"] = { "" }, ["Fengxian"] = { "" }, ["Jinshan"] = { "" }, ["Qingpu"] = { "" }, ["Jiading"] = { "" }, ["Baoshan-SCD"] = { "" }, ["Baoshan-LD"] = { "" }, ["Baoshan-YP"] = { "" }, ["Chongming"] = { "" }, ["Suzhou"] = { "家生" }, ["Shengpu"] = { "" }, ["Xishan"] = { "" }, ["Wujiang-SL"] = { "" }, ["Wujiang-LL"] = { "" }, ["Wujiang-SZ"] = { "" }, ["Wuxi"] = { "" }, ["Changshu"] = { "" }, ["Kunshan"] = { "" }, ["Taicang"] = { "" }, ["Zhangjiagang"] = { "" }, ["Tongzhou"] = { "" }, ["Qidong"] = { "" }, ["Qidong-LS"] = { "" }, ["Haimen"] = { "" }, ["Haimen-SJ"] = { "" }, ["Rudong-W"] = { "" }, ["Jiaxing"] = { "" }, ["Jiashan"] = { "" }, ["Pinghu"] = { "" }, ["Haining-YG"] = { "" }, ["Haining-XS"] = { "" }, ["Tongxiang"] = { "" }, ["Haiyan"] = { "" }, ["Changzhou"] = { "" }, ["Liyang"] = { "" }, ["Jintan"] = { "" }, ["Yixing"] = { "" }, ["Danyang"] = { "家具" }, ["Danyang-TJQ"] = { "" }, ["Jingjiang"] = { "" }, ["Jiangyin"] = { "" }, ["Gaochun"] = { "" }, ["Gaochun-ZB"] = { "" }, ["Huzhou"] = { "" }, ["Huzhou-SL"] = { "" }, ["Changxing"] = { "" }, ["Anji"] = { "" }, ["Anji-XF"] = { "" }, ["Deqing-W"] = { "" }, ["Deqing-GT"] = { "" }, ["Hangzhou"] = { "家具" }, ["Yuhang"] = { "" }, ["Lin'an"] = { "" }, ["Lin'an-CH"] = { "" }, ["Lin'an-YQ"] = { "" }, ["Fuyang-W"] = { "" }, ["Fuyang-XD"] = { "" }, ["Xiaoshan"] = { "" }, ["Tonglu"] = { "" }, ["Fenshui-WS"] = { "" }, ["Shaoxing"] = { "" }, ["Shaoxing-KQ"] = { "" }, ["Shangyu"] = { "" }, ["Zhuji"] = { "" }, ["Zhuji-WJJ"] = { "" }, ["Shengzhou"] = { "" }, ["Shengzhou-CR"] = { "" }, ["Shengzhou-TP"] = { "" }, ["Xinchang"] = { "" }, ["Ningbo"] = { "家私", "家具" }, ["Zhenhai"] = { "" }, ["Fenghua"] = { "" }, ["Beilun"] = { "" }, ["Yinzhou"] = { "" }, ["Yuyao"] = { "" }, ["Cixi"] = { "" }, ["Xiangshan"] = { "" }, ["Ninghai"] = { "" }, ["Zhoushan"] = { "" }, ["Dinghai"] = { "" }, ["Daishan"] = { "" }, ["Shengsi"] = { "" }, ["Jiaojiang"] = { "" }, ["Huangyan"] = { "" }, ["Tiantai"] = { "" }, ["Xianju"] = { "" }, ["Sanmen"] = { "" }, ["Linhai"] = { "" }, ["Wenling"] = { "" }, ["Yuhuan"] = { "" }, ["Yuhuan-DMY"] = { "" }, ["Yuhuan-CM"] = { "" }, ["Wenzhou"] = { "間底", "家生" }, ["Yueqing"] = { "" }, ["Yongjia"] = { "" }, ["Yongjia-FL"] = { "" }, ["Rui'an"] = { "" }, ["Longgang"] = { "" }, ["Dongtou"] = { "" }, ["Cangnan-JX"] = { "" }, ["Pingyang"] = { "" }, ["Taishun"] = { "" }, ["Wencheng"] = { "" }, ["Lishui"] = { "" }, ["Qingtian"] = { "" }, ["Jinyun"] = { "" }, ["Xuanping"] = { "" }, ["Songyang-XP"] = { "" }, ["Songyang-GS"] = { "" }, ["Yunhe"] = { "" }, ["Jingning"] = { "" }, ["Qingyuan-W"] = { "" }, ["Longquan"] = { "" }, ["Quzhou"] = { "" }, ["Qujiang-DZ"] = { "" }, ["Suichang"] = { "" }, ["Jiangshan"] = { "" }, ["Changshan"] = { "" }, ["Kaihua"] = { "" }, ["Longyou"] = { "" }, ["Jinhua"] = { "家具" }, ["Tangxi"] = { "" }, ["Yiwu"] = { "" }, ["Yongkang"] = { "" }, ["Pujiang"] = { "" }, ["Dongyang"] = { "" }, ["Pan'an"] = { "" }, ["Wuyi"] = { "" }, ["Lanxi"] = { "" }, ["Shangrao"] = { "" }, ["Shangrao-Rail"] = { "" }, ["Guangfeng"] = { "" }, ["Yushan"] = { "" }, ["Xuancheng-YC"] = { "" }, ["Xuancheng-JP"] = { "" }, ["Wuhu-LL"] = { "" }, ["Tongling-W"] = { "" }, ["Nanling"] = { "" }, ["Yi'an-WS"] = { "" }, ["Huangshan"] = { "" }, ["Jingxian"] = { "" }, ["Jingxian-ZJ"] = { "" }, ["Shitai-JZ"] = { "" }, ["Pucheng"] = { "" }, ["Changsha"] = { "家具", "家私" }, ["Yiyang-X"] = { "" }, ["Liuyang-YA"] = { "" }, ["Xiangtan"] = { "" }, ["Miluo-CL"] = { "" }, ["Xiangxiang"] = { "" }, ["Xiangxiang-MQ"] = { "" }, ["Loudi"] = { "家私" }, ["Shuangfeng"] = { "家私" }, ["Xinhua"] = { "" }, ["Lianyuan"] = { "" }, ["Shaoyang"] = { "" }, ["Lengshuitan"] = { "" }, ["Zhuzhou"] = { "" }, ["Longhui"] = { "" }, ["Suining-X"] = { "" }, ["Dongkou-HQ"] = { "" }, ["Wugang"] = { "" }, ["Hengyang"] = { "" }, ["Hengshan"] = { "" }, ["Hengshan-BG"] = { "" }, ["Qiyang"] = { "" }, ["Quanzhou-X"] = { "" }, ["Guanyang-X"] = { "" }, ["Qinglong-CL"] = { "" }, ["Nanchong-CL"] = { "" }, ["Nanchang"] = { "家具" }, ["Xinjian-WC"] = { "" }, ["Nanchang-TC"] = { "" }, ["Anyi"] = { "" }, ["Hukou"] = { "" }, ["Lushan"] = { "" }, ["Yongxiu"] = { "" }, ["Gongqingcheng-JY"] = { "" }, ["Xiushui"] = { "" }, ["Pengze"] = { "" }, ["Duchang"] = { "" }, ["Duchang-TT"] = { "" }, ["Duchang-YF"] = { "" }, ["Wuning-QK"] = { "" }, ["Poyang"] = { "" }, ["Poyang-MT"] = { "" }, ["Yugan"] = { "" }, ["Wannian"] = { "" }, ["Yiyang"] = { "" }, ["Hengfeng"] = { "" }, ["Yanshan-HK"] = { "" }, ["Yanshan-YP"] = { "" }, ["Shangrao-SX"] = { "" }, ["Shangrao-HM"] = { "" }, ["Jingdezhen"] = { "" }, ["Leping"] = { "" }, ["Yichun"] = { "" }, ["Yifeng"] = { "" }, ["Gao'an"] = { "" }, ["Fengxin"] = { "" }, ["Shanggao"] = { "" }, ["Wanzai"] = { "" }, ["Fengcheng"] = { "" }, ["Fengcheng-ST"] = { "" }, ["Xinyu"] = { "" }, ["Fuzhou-G"] = { "" }, ["Linchuan-SDD"] = { "" }, ["Dongxiang"] = { "" }, ["Nancheng"] = { "" }, ["Nanfeng"] = { "" }, ["Yihuang"] = { "" }, ["Lichuan"] = { "" }, ["Chongren"] = { "" }, ["Pingxiang"] = { "家具" }, ["Lianhua"] = { "" }, ["Luxi"] = { "" }, ["Ji'an"] = { "" }, ["Jishui-LT"] = { "" }, ["Yongfeng"] = { "" }, ["Taihe"] = { "" }, ["Xiajiang"] = { "" }, ["Yongxin"] = { "" }, ["Yingtan"] = { "" }, ["Yujiang"] = { "" }, ["Guixi"] = { "" }, ["Susong"] = { "" }, ["Susong-HT"] = { "" }, ["Susong-GL"] = { "" }, ["Wangjiang"] = { "" }, ["Qianshan"] = { "" }, ["Huaining"] = { "" }, ["Huaining-SP"] = { "" }, ["Yuexi"] = { "" }, ["Taihu"] = { "" }, ["Dongzhi"] = { "" }, ["Shitai"] = { "" }, ["Yangxin"] = { "" }, ["Yangxin-GH"] = { "" }, ["Daye"] = { "" }, ["Xianning"] = { "" }, ["Xianning-MQ"] = { "" }, ["Jiayu"] = { "" }, ["Chongyang"] = { "" }, ["Chibi"] = { "" }, ["Tongshan"] = { "" }, ["Tongcheng-G"] = { "" }, ["Jianli"] = { "" }, ["Yueyang"] = { "" }, ["Yueyang-BX"] = { "" }, ["Linxiang"] = { "" }, ["Pingjiang-XJ"] = { "" }, ["Pingjiang-NJ"] = { "" }, ["Liuyang"] = { "" }, ["Liuyang-DY"] = { "" }, ["Liuyang-FY"] = { "" }, ["Liling-BTT"] = { "" }, ["Liling-BS"] = { "" }, ["Youxian"] = { "" }, ["Chaling"] = { "" }, ["Changning"] = { "" }, ["Changning-TS"] = { "" }, ["Leiyang"] = { "" }, ["Anren"] = { "" }, ["Zixing-XN"] = { "" }, ["Longhui-LDZ"] = { "" }, ["Dongkou"] = { "" }, ["Dongkou-SJ"] = { "" }, ["Jianning"] = { "" }, ["Taining"] = { "" }, ["Hanbin-NT"] = { "" }, ["Jinxian"] = { "" }, ["Jinxi"] = { "" }, ["Le'an"] = { "" }, ["Guangchang"] = { "" }, ["Anfu"] = { "" }, ["Suichuan"] = { "" }, ["Wan'an"] = { "" }, ["Jing'an"] = { "" }, ["Zhangshu"] = { "" }, ["Xingan"] = { "" }, ["Fenyi"] = { "" }, ["Meixian"] = { "家私" }, ["Xingning"] = { "家私" }, ["Dabu-XH"] = { "家私" }, ["Dabu-GB"] = { "" }, ["Fengshun-TK"] = { "" }, ["Fengshun-LH"] = { "" }, ["Fengshun-HJ"] = { "" }, ["Fengshun-FL"] = { "" }, ["Fengshun-PT"] = { "" }, ["Huizhou"] = { "" }, ["Huizhou-SK"] = { "" }, ["Huizhou-HL"] = { "" }, ["Huiyang"] = { "" }, ["Huidong-PS"] = { "" }, ["Huidong-DL"] = { "" }, ["Dongguan-H"] = { "" }, ["Longmen-PL"] = { "" }, ["Longmen-LX"] = { "" }, ["Boluo"] = { "" }, ["Shenzhen-H"] = { "" }, ["Shenzhen-H-LH"] = { "" }, ["Zengcheng-ZG"] = { "" }, ["Zhongshan-WGS"] = { "" }, ["Zhongshan-NLHS"] = { "" }, ["Wuhua-SZ"] = { "" }, ["Wuhua-HC"] = { "" }, ["Wuhua-CB"] = { "" }, ["Wuhua-MY"] = { "" }, ["Wuhua-ML"] = { "" }, ["Heyuan"] = { "" }, ["Zijin"] = { "" }, ["Zijin-GZ"] = { "" }, ["Longchuan-TC"] = { "" }, ["Longchuan-SD"] = { "" }, ["Heping-LZ"] = { "" }, ["Lianping"] = { "" }, ["Lianping-ZX"] = { "" }, ["Lianping-LJ"] = { "" }, ["Wengyuan"] = { "" }, ["Nanxiong-ZJ"] = { "" }, ["Qujiang"] = { "" }, ["Xinfeng-MT"] = { "" }, ["Xinfeng-DX"] = { "" }, ["Xiaosanjiang"] = { "" }, ["Liannan"] = { "" }, ["Conghua-H"] = { "" }, ["Jiexi"] = { "" }, ["Luhe"] = { "" }, ["Raoping-XF"] = { "" }, ["Xiuzhuan"] = { "" }, ["Pinghe-JF"] = { "" }, ["Nanjing-ML"] = { "" }, ["Nanjing-BL"] = { "" }, ["Changting"] = { "" }, ["Shanghang"] = { "" }, ["Yongding"] = { "" }, ["Yongding-XY"] = { "" }, ["Yongding-GB"] = { "" }, ["Yongding-HK"] = { "" }, ["Wuping"] = { "" }, ["Wuping-ZS"] = { "" }, ["Wuping-Y"] = { "" }, ["Wuping-WD"] = { "" }, ["Pingyu"] = { "" }, ["Liancheng"] = { "" }, ["Liancheng-PT"] = { "" }, ["Liancheng-JX"] = { "" }, ["Liancheng-ZB"] = { "" }, ["Liancheng-LY"] = { "" }, ["Ninghua"] = { "" }, ["Qingliu"] = { "" }, ["Yudu"] = { "家具" }, ["Ningdu"] = { "" }, ["Ruijin"] = { "" }, ["Shicheng"] = { "" }, ["Shangyou"] = { "" }, ["Sandu"] = { "" }, ["Ganzhou-PL"] = { "" }, ["Nankang"] = { "" }, ["Dayu"] = { "" }, ["Quannan"] = { "" }, ["Dingnan"] = { "" }, ["Longnan"] = { "" }, ["Xunwu"] = { "" }, ["Anyuan"] = { "" }, ["Huichang"] = { "" }, ["Chongyi"] = { "" }, ["Xingguo"] = { "" }, ["Yunhe-JST"] = { "" }, ["Tonggu"] = { "" }, ["Fengxin-ZX"] = { "" }, ["Taoyuan"] = { "" }, ["Miaoli"] = { "家具" }, ["Zaoqiao"] = { "" }, ["Touwu"] = { "" }, ["Nanzhuang"] = { "" }, ["Shitan"] = { "" }, ["Sanwan"] = { "" }, ["Toufen"] = { "" }, ["Gongguan"] = { "" }, ["Zhuolan-SX"] = { "" }, ["Liudui"] = { "家具" }, ["Wuluo"] = { "" }, ["Meinong"] = { "" }, ["Shanlin"] = { "" }, ["Hsinchu"] = { "家具" }, ["Dongshi"] = { "家具" }, ["Raoping"] = { "家具" }, ["Zhuolan-RP"] = { "" }, ["Yunlin"] = { "家具" }, ["Guoxing"] = { "" }, ["Hong Kong-H"] = { "家私" }, ["Tangkou"] = { "" }, ["Sanjia"] = { "" }, ["Sihe"] = { "" }, ["Qianpai"] = { "" }, ["Xindong"] = { "" }, ["Shalang"] = { "" }, ["Xin'an"] = { "" }, ["Shijiao"] = { "" }, ["Qingping"] = { "" }, ["Xihe"] = { "" }, ["Fumian-XS"] = { "" }, ["Luchuan-LC"] = { "" }, ["Luchuan-DQ"] = { "" }, ["Luchuan-SH"] = { "" }, ["Bobai-SH"] = { "" }, ["Bobai-LT"] = { "" }, ["Bobai-LP"] = { "" }, ["Bobai-LJ"] = { "" }, ["Bobai-CT"] = { "" }, ["Tang'an"] = { "" }, ["Beiliu-GH"] = { "" }, ["Beiliu-MM"] = { "" }, ["Xingye-GF"] = { "" }, ["Rongxian-XD"] = { "" }, ["Mashan-PL"] = { "" }, ["Binyang-WL"] = { "" }, ["Hengxian-XY"] = { "" }, ["Lingui-H-XJ"] = { "" }, ["Lipu-SDT"] = { "" }, ["Lipu-DSG"] = { "" }, ["Pingle-H"] = { "" }, ["Yangshuo-JB"] = { "" }, ["Tianlin-GL"] = { "" }, ["Qinzhou-H"] = { "" }, ["Guidong"] = { "" }, ["Rongchang-PL"] = { "" }, ["Chengdu-H-LT"] = { "" }, ["Longquanyi-H-SL"] = { "" }, ["Qingbaijiang-H-LW"] = { "" }, ["Xindu-H-SBT"] = { "" }, ["Xindu-H-HXC"] = { "" }, ["Xindu-H-XD"] = { "" }, ["Weiyuan-H"] = { "" }, ["Yilong-H"] = { "" }, ["Xichang-H"] = { "" }, ["Sabah-B"] = { "" }, ["Sabah-L"] = { "" }, ["Sabah-HY"] = { "" }, ["Sabah-HP"] = { "" }, ["Kuala Lumpur-H-HY"] = { "" }, ["Kuala Lumpur-H"] = { "家私" }, ["Senai"] = { "家私" }, ["Senai-JX"] = { "" }, ["Kuching"] = { "" }, ["Sungai Tapang"] = { "" }, ["Singkawang"] = { "" }, ["Pontianak-MX"] = { "" }, ["Mempawah"] = { "" }, ["Metal"] = { "" }, ["Singapore-MX"] = { "" }, ["Singapore-DB"] = { "" }, ["Belait-H"] = { "" }, ["Bangkok-MX"] = { "" }, ["Bangkok-FS"] = { "" }, ["Bangkok-JX"] = { "" }, ["Yangon-H"] = { "" }, ["Ho Chi Minh City-H"] = { "" }, ["Jixi"] = { "家具" }, ["Shexian"] = { "家具", "木器家沙" }, ["Shexian-XG"] = { "" }, ["Shexian-DGY"] = { "" }, ["Tunxi"] = { "" }, ["Huizhou-HZ"] = { "" }, ["Xiuning"] = { "" }, ["Yixian"] = { "" }, ["Qimen"] = { "" }, ["Qimen-AL-Min"] = { "" }, ["Wuyuan"] = { "" }, ["Fuliang"] = { "" }, ["Dexing"] = { "" }, ["Jingde"] = { "" }, ["Zhanda"] = { "" }, ["Chun'an"] = { "" }, ["Sui'an"] = { "" }, ["Jiande"] = { "" }, ["Shouchang"] = { "" }, ["Guangzhou"] = { "家私" }, ["Hong Kong"] = { "家私" }, ["HK Weitou"] = { "家私", "家生" }, ["Kam Tin"] = { "" }, ["Shek Pik"] = { "" }, ["Ting Kok"] = { "家私" }, ["Tung Ping Chau"] = { "家私" }, ["Macau"] = { "家私" }, ["Panyu"] = { "" }, ["Huadu"] = { "" }, ["Conghua"] = { "" }, ["Zengcheng"] = { "" }, ["Foshan"] = { "" }, ["Nanhai"] = { "" }, ["Shunde"] = { "" }, ["Sanshui"] = { "" }, ["Gaoming"] = { "" }, ["Zhongshan"] = { "" }, ["Zhongshan-HC"] = { "" }, ["Zhongshan-NL"] = { "" }, ["Zhongshan-CKM"] = { "" }, ["Zhongshan-XL"] = { "" }, ["Zhongshan-DS"] = { "" }, ["Zhongshan-TB"] = { "" }, ["Zhongshan-HL"] = { "" }, ["Zhongshan-DF"] = { "" }, ["Zhongshan-NT"] = { "" }, ["Zhongshan-FS"] = { "" }, ["Zhongshan-SL"] = { "" }, ["Zhongshan-GK"] = { "" }, ["Zhongshan-HP"] = { "" }, ["Zhongshan-SJ"] = { "" }, ["Zhongshan-LW"] = { "" }, ["Zhongshan-MZ"] = { "" }, ["Zhongshan-GZ"] = { "" }, ["Zhongshan-BF"] = { "" }, ["Zhongshan-TZ"] = { "" }, ["Zhuhai"] = { "" }, ["Doumen-T"] = { "" }, ["Doumen-S"] = { "" }, ["Jiangmen"] = { "" }, ["Xinhui"] = { "" }, ["Taishan"] = { "家私" }, --家具? ["Taishan-GH"] = { "" }, ["Kaiping"] = { "" }, ["Enping"] = { "" }, ["Heshan"] = { "" }, ["Malan"] = { "" }, ["Malan-BTQ"] = { "" }, ["Malan-MHD"] = { "" }, ["Malan-SZP"] = { "" }, ["Malan-BLH"] = { "" }, ["Dongguan"] = { "家私" }, ["Shenzhen-C-LH"] = { "" }, ["Bao'an"] = { "" }, ["Dapeng"] = { "" }, ["Shenzhen-PD"] = { "" }, ["Pingshan-ZM"] = { "" }, ["Ebu-ZM"] = { "" }, ["Qingyuan"] = { "" }, ["Fogang"] = { "" }, ["Yingde"] = { "" }, ["Yangshan"] = { "" }, ["Lianshan"] = { "" }, ["Lianshan-YH"] = { "" }, ["Lianzhou"] = { "" }, ["Shaoguan"] = { "" }, ["Qujiang-C"] = { "" }, ["Renhua"] = { "" }, ["Lechang"] = { "" }, ["Gaoyao"] = { "" }, ["Sihui"] = { "" }, ["Guangning"] = { "" }, ["Deqing"] = { "" }, ["Huaiji"] = { "" }, ["Fengkai"] = { "" }, ["Yunfu"] = { "" }, ["Xinxing"] = { "" }, ["Luoding"] = { "" }, ["Yunan"] = { "" }, ["Yangjiang"] = { "家私" }, ["Yangdong"] = { "" }, ["Yangdong-YS"] = { "" }, ["Yangchun"] = { "" }, ["Yangxi"] = { "" }, ["Xinyi"] = { "" }, ["Maoming"] = { "" }, ["Maoming-YJ"] = { "" }, ["Gaozhou"] = { "" }, ["Huazhou"] = { "" }, ["Huazhou-CQ"] = { "" }, ["Zhanjiang"] = { "" }, ["Lianjiang"] = { "" }, ["Wuchuan"] = { "" }, ["Nanning"] = { "" }, ["Nanning-Tanka"] = { "" }, ["Wuzhou"] = { "" }, ["Cangwu-LB"] = { "" }, ["Yulin"] = { "" }, ["Rongxian"] = { "" }, ["Hepu"] = { "" }, ["Hepu-ST"] = { "" }, ["Guiping"] = { "" }, ["Guiping-JT"] = { "" }, ["Guiping-JK"] = { "" }, ["Guiping-MD"] = { "" }, ["Guiping-ML"] = { "" }, ["Pingnan-PN"] = { "" }, ["Pingnan-DZ"] = { "" }, ["Mengshan"] = { "" }, ["Mengshan-XX"] = { "" }, ["Mengshan-CT"] = { "" }, ["Guigang-GC"] = { "" }, ["Guigang-NJ"] = { "" }, ["Guigang-PD"] = { "" }, ["Beiliu"] = { "" }, ["Beiliu-TL"] = { "" }, ["Beiliu-XL"] = { "" }, ["Baise"] = { "" }, ["Tiandong"] = { "" }, ["Tiandong-LF"] = { "" }, ["Tianyang"] = { "" }, ["Pingguo"] = { "" }, ["Pingguo-SX"] = { "" }, ["Bobai"] = { "" }, ["Lingshan"] = { "" }, ["Pubei"] = { "" }, ["Qinzhou"] = { "" }, ["Qinzhou-XD"] = { "" }, ["Qinzhou-CT"] = { "" }, ["Qinzhou-NS"] = { "" }, ["Qinzhou-XNJ"] = { "" }, ["Beihai"] = { "家什" }, ["Beihai-NK"] = { "" }, ["Beihai-YP"] = { "" }, ["Beihai-QG"] = { "家具" }, ["Beihai-QG-CB"] = { "家具" }, ["Ningming"] = { "" }, ["Hengxian"] = { "" }, ["Pumen"] = { "" }, ["Fangchenggang-FC"] = { "家具" }, ["Dongxing"] = { "" }, ["Chongzuo-LT"] = { "" }, ["Fusui-QJ"] = { "" }, ["Lingchuan-C-YJ"] = { "" }, ["Pingle-C-MJ"] = { "" }, ["Pingle-C-SS"] = { "" }, ["Lipu-ZC"] = { "" }, ["Danzhou"] = { "" }, ["Sanya-YL"] = { "" }, ["Kuala Lumpur"] = { "家私" }, ["Penang-C"] = { "" }, ["Ipoh"] = { "" }, ["Sarikei-C"] = { "" }, ["Singapore-C"] = { "" }, ["Jakarta-C"] = { "" }, ["Ho Chi Minh City"] = { "家私" }, ["Mong Cai"] = { "家私" }, --私 written as 俬 ["Phnom Penh-C"] = { "" }, ["Yangon-C"] = { "" }, ["Mandalay-C"] = { "" }, ["Bangkok-C"] = { "" }, ["Betong"] = { "" }, ["Manila-C"] = { "" }, ["Nanning-P"] = { "家私" }, ["Nanning-P-SJ"] = { "" }, ["Nanning-P-GJY"] = { "" }, ["Nanning-P-ZGL"] = { "" }, ["Nanning-P-XXJD"] = { "" }, ["Nanning-P-SL"] = { "" }, ["Nanning-P-XX"] = { "" }, ["Nanning-P-SC"] = { "" }, ["Binyang"] = { "" }, ["Binyang-XQ"] = { "" }, ["Hengxian-P"] = { "" }, ["Wuxuan-JJ"] = { "" }, ["Chongzuo-P"] = { "" }, ["Liucheng-P"] = { "" }, ["Liucheng-P-GZ"] = { "" }, ["Yizhou-P-DS"] = { "" }, ["Luocheng-P"] = { "" }, ["Guilin-P"] = { "" }, ["Guilin-P-CY"] = { "" }, ["Guilin-P-DBZ"] = { "" }, ["Guilin-P-ZY"] = { "" }, ["Guilin-P-DB"] = { "" }, ["Guilin-P-YJ"] = { "" }, ["Guilin-P-QJ"] = { "" }, ["Lingui-P-WT"] = { "" }, ["Lingui-P-HS"] = { "" }, ["Lingui-P-LJ"] = { "" }, ["Lingui-P-LT"] = { "" }, ["Lingchuan-P"] = { "" }, ["Lingchuan-P-GQ"] = { "" }, ["Lingchuan-P-GD"] = { "" }, ["Lingchuan-P-TX"] = { "" }, ["Lingchuan-P-SZ"] = { "" }, ["Lingchuan-P-GP"] = { "" }, ["Lingchuan-P-LT"] = { "" }, ["Guanyang-P"] = { "" }, ["Quanzhou-P"] = { "" }, ["Pingle-P"] = { "" }, ["Pingle-P-XTM"] = { "" }, ["Yangshuo-P"] = { "" }, ["Yangshuo-P-PT"] = { "" }, ["Yongfu-P-JX"] = { "" }, ["Yongfu-P-CS"] = { "" }, ["Zhongshan-GA"] = { "" }, ["Xiamen"] = { "家私", "家私頭" }, ["Xiamen-HS"] = { "" }, ["Tong'an"] = { "" }, ["Quanzhou"] = { "家私", "家私頭" }, ["Jinjiang"] = { "" }, ["Nan'an"] = { "" }, ["Shishi"] = { "" }, ["Hui'an"] = { "" }, ["Anxi"] = { "" }, ["Yongchun"] = { "" }, ["Dehua"] = { "" }, ["Zhangzhou"] = { "家私", "家私頭" }, ["Longhai"] = { "" }, ["Changtai"] = { "" }, ["Hua'an"] = { "" }, ["Nanjing-MN"] = { "" }, ["Pinghe"] = { "" }, ["Zhangpu"] = { "" }, ["Yunxiao"] = { "" }, ["Zhao'an"] = { "" }, ["Zhao'an-SD"] = { "" }, ["Zhao'an-TY"] = { "" }, ["Zhao'an-WS"] = { "" }, ["Dongshan"] = { "" }, ["Taipei"] = { "" }, --Wanhua 家具 ["Wanhua"] = { "" }, ["Tamsui"] = { "" }, ["Sanxia"] = { "" }, ["Pingxi"] = { "" }, ["Kaohsiung"] = { "家具" }, ["Cijin"] = { "" }, ["Hongmaogang"] = { "" }, ["Dalinpu"] = { "" }, ["Tianliao"] = { "" }, ["Yilan"] = { "家私" }, ["Luodong"] = { "" }, ["Toucheng"] = { "" }, ["Lukang"] = { "家具" }, ["Yongjing-MN"] = { "" }, ["Taichung"] = { "家具" }, ["Wuqi"] = { "家具" }, ["Tainan"] = { "家具" }, ["Anping"] = { "" }, ["Shanhua"] = { "" }, ["Taitung"] = { "家具" }, ["Green Island"] = { "" }, ["Hsinchu-MN"] = { "家具" }, ["Miaoli-MN"] = { "" }, ["Mailiao"] = { "" }, ["Chiayi"] = { "" }, ["Chiayi-DS"] = { "" }, ["Baoli"] = { "" }, ["Liuqiu"] = { "" }, ["Kinmen"] = { "" }, ["Jinsha"] = { "" }, ["Magong"] = { "家用品" }, ["Pengnan"] = { "" }, ["Xiyu"] = { "" }, ["Huxi"] = { "" }, ["Wangan"] = { "" }, ["Cimei"] = { "" }, ["Huayu"] = { "" }, ["Zhongtun"] = { "" }, ["Houliao"] = { "" }, ["Tongliang"] = { "" }, ["Jibei"] = { "" }, ["Malaysia-MN"] = { "" }, ["Melaka"] = { "" }, ["Labuan"] = { "" }, ["Singapore-MN"] = { "家私" }, ["Philippine-MN"] = { "" }, ["Medan"] = { "" }, ["Seri Begawan"] = { "" }, ["Ho Chi Minh City-MN"] = { "" }, ["Yangon-MN"] = { "" }, ["Longyan"] = { "" }, ["Zhangping"] = { "" }, ["Yongfu"] = { "" }, ["Datian"] = { "" }, ["Datian-GP"] = { "" }, ["Youxi-JM"] = { "" }, ["Youxi-XQ"] = { "" }, ["Shunchang-PS"] = { "" }, ["Pingnan"] = { "" }, ["Pingnan-PT"] = { "" }, ["Pingnan-SJ"] = { "" }, ["Guiping-XW"] = { "" }, ["Guiping-DS"] = { "" }, ["Guilin-MN-BYG"] = { "" }, ["Pingle-MN"] = { "" }, ["Qinzhou-MN"] = { "" }, ["Lechang-TT"] = { "" }, ["Renhua-CSB"] = { "" }, ["Yingde-YZ"] = { "" }, ["Yunan-LT"] = { "" }, ["Hangzhou-PF"] = { "" }, ["Cangnan-MN"] = { "" }, ["Yuhuan-KM"] = { "" }, ["Wenling-RS"] = { "" }, ["Yixing-SB"] = { "" }, ["Langxi-FL"] = { "" }, ["Chaozhou"] = { "家私" }, ["Raoping-MN-T"] = { "" }, ["Shantou"] = { "家私" }, ["Chenghai"] = { "" }, ["Chenghai-DX"] = { "" }, ["Chaoyang"] = { "" }, ["Nan'ao-HZ"] = { "" }, ["Nan'ao-YA"] = { "" }, ["Jieyang"] = { "家私" }, ["Puning"] = { "" }, ["Lufeng"] = { "" }, ["Haifeng"] = { "" }, ["Fengshun-MN-LH"] = { "" }, ["Fengshun-MN-HJ"] = { "" }, ["Yuen Chau Tsai-MN"] = { "" }, ["Sha Tau Kok-MN"] = { "" }, ["Thailand-MN-T"] = { "家具" }, ["Chiang Mai-MN-T"] = { "" }, ["Hat Yai-MN-T"] = { "" }, ["Cambodia-MN-T"] = { "" }, ["Ho Chi Minh City-MN-T"] = { "" }, ["Vientiane-MN-T"] = { "" }, ["Johor Bahru"] = { "家私" }, ["Penang-MN-T"] = { "" }, ["Singapore-MN-T"] = { "" }, ["Batam-MN-T"] = { "" }, ["Pontianak-MN-T"] = { "" }, ["Leizhou"] = { "家私" }, ["Dianbai-XD"] = { "" }, ["Wenchang"] = { "" }, ["Haikou"] = { "" }, ["Chengmai"] = { "" }, ["Qionghai"] = { "" }, ["Wanning"] = { "" }, ["Tunchang"] = { "" }, ["Singapore-MN-H"] = { "" }, ["Belait-MN-H"] = { "" }, ["Putian"] = { "家私" }, ["Putian-DH"] = { "" }, ["Putian-JK"] = { "" }, ["Putian-NR"] = { "" }, ["Xianyou"] = { "" }, ["Xianyou-FT"] = { "" }, ["Xianyou-YY"] = { "" }, ["Fuding-AY"] = { "" }, ["Shaxi"] = { "" }, ["Sanxiang"] = { "" }, ["Fuzhou"] = { "家私", "閑架" }, ["Changle"] = { "家私" }, ["Lianjiang-MD"] = { "" }, ["Fuqing"] = { "家私" }, ["Pingtan"] = { "" }, ["Yongtai"] = { "家私" }, ["Minqing"] = { "" }, ["Gutian"] = { "家私" }, ["Pingnan-MD"] = { "" }, ["Luoyuan"] = { "" }, ["Fu'an"] = { "家私" }, ["Ningde"] = { "家私" }, ["Xiapu"] = { "" }, ["Zherong"] = { "" }, ["Shouning"] = { "行頭" }, ["Zhouning"] = { "家私頭" }, ["Fuding"] = { "家私" }, ["Youxi"] = { "" }, ["Youxi-XY"] = { "" }, ["Youxi-YZ"] = { "" }, ["Youxi-TC"] = { "" }, ["Youxi-ZX"] = { "" }, ["Matsu"] = { "" }, ["Taishun-MD"] = { "" }, ["Cangnan-MD"] = { "" }, ["Guanhaiwei"] = { "" }, ["Singapore-MD-FQ"] = { "" }, ["Sitiawan-MD-GT"] = { "" }, ["Sibu-MD-MQ"] = { "" }, ["Jian'ou"] = { "房間裡", "家私" }, ["Dikou"] = { "" }, ["Yanping-XY"] = { "" }, ["Songxi"] = { "" }, ["Zhenghe"] = { "" }, ["Zhenqian"] = { "" }, ["Shunchang-YD"] = { "" }, ["Jianyang"] = { "" }, ["Huangkeng"] = { "" }, ["Wuyishan"] = { "" }, ["Shibei"] = { "" }, ["Yong'an"] = { "" }, ["Sanyuan"] = { "" }, ["Shaxian"] = { "" }, ["Yanping-WT"] = { "" }, ["Shaowu"] = { "" }, ["Guangze"] = { "" }, ["Jiangle"] = { "" }, ["Mingxi"] = { "" }, ["Shunchang"] = { "" }, ["Ningde-She"] = { "" }, ["Fu'an-She"] = { "" }, ["Fuding-She"] = { "" }, ["Zhouning-She"] = { "" }, ["Xiapu-She"] = { "" }, ["Shouning-She"] = { "" }, ["Gutian-She"] = { "" }, ["Luoyuan-She"] = { "" }, ["Sanming-She"] = { "" }, ["Shunchang-She"] = { "" }, ["Hua'an-She"] = { "" }, ["Guixi-She"] = { "" }, ["Yanshan-She"] = { "" }, ["Cangnan-She"] = { "" }, ["Jingning-She"] = { "" }, ["Jingning-ZK-She"] = { "" }, ["Lishui-She"] = { "" }, ["Longyou-She"] = { "" }, ["Lin'an-She"] = { "" }, ["Jiande-She"] = { "" }, ["Ningguo-She"] = { "" }, ["Chaozhou-She"] = { "" }, ["Fengshun-She"] = { "" }, ["Guzhang-WX"] = { "" }, ["Yuanling-WX"] = { "" }, ["Luxi-WX"] = { "" }, ["Luxi-WX-LJT"] = { "" }, ["Luxi-WX-LJT-2"] = { "" }, ["Chengbu-WX"] = { "" }, ["Jiande-JXYM"] = { "" }, ["Jinhua-JXYM"] = { "" }, ["Lanxi-JXYM"] = { "" }, ["Tunxi-JXYM"] = { "" }, ["Jiangyong"] = { "" }, ["Dong'an"] = { "" }, ["Qujiang-DC"] = { "" }, ["Wujiang-XY"] = { "" }, ["Zhenjiang-SB"] = { "" }, ["Renhua-ZT"] = { "" }, ["Renhua-ST"] = { "" }, ["Ruyuan-GT"] = { "" }, ["Lechang-CL"] = { "" }, ["Lechang-BX"] = { "" }, ["Lechang-HP"] = { "" }, ["Lechang-GT"] = { "" }, ["Lechang-SX"] = { "" }, } return export 4j6rc7cz0itgm8opncdmidt0146km63 New Delhi 0 395971 2350610 2026-05-07T06:34:06Z Hiyuune 50834 Trang mới: “=={{langname|en}}== {{wp|en:}} {{commonscat}} ==={{section|etym}}=== Từ {{com|en|new|Delhi|alt1=New}}. ==={{section|pron}}=== * {{IPA4|en|/n(j)uː ˈdɛli/}} * {{audio|en|New Delhi.ogg|a=India}} ==={{section|pr-noun}}=== {{en-proper noun|head={{U|new}} [[Delhi]]}} # {{senseid|vi|Q987}}{{place|en|thành phố thủ đô|c/Ấn Độ}} # {{place|en|huyện|uterr/Delhi|c/Ấn Độ}}. # {{lb|en|figurative|metonym}} [[chính phủ|Chính phủ]] [[Ấn Độ]].” 2350610 wikitext text/x-wiki =={{langname|en}}== {{wp|en:}} {{commonscat}} ==={{section|etym}}=== Từ {{com|en|new|Delhi|alt1=New}}. ==={{section|pron}}=== * {{IPA4|en|/n(j)uː ˈdɛli/}} * {{audio|en|New Delhi.ogg|a=India}} ==={{section|pr-noun}}=== {{en-proper noun|head={{U|new}} [[Delhi]]}} # {{senseid|vi|Q987}}{{place|en|thành phố thủ đô|c/Ấn Độ}} # {{place|en|huyện|uterr/Delhi|c/Ấn Độ}}. # {{lb|en|figurative|metonym}} [[chính phủ|Chính phủ]] [[Ấn Độ]]. ido2m16ua9qv70vjr8xyczjzwyl46m2 Bản mẫu:gu-proper noun 10 395972 2350611 2026-05-07T06:36:06Z Hiyuune 50834 Trang mới: “{{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|gu|Danh từ riêng|sort={{{sort|}}}|head={{{head|}}}|tr={{{tr|}}} |g={{{g|?}}}|g2={{{g2|}}}|g3={{{g3|}}} |{{#ifeq:{{{pl|}}}|-|chỉ có số ít}}| |{{#switch:{{{pl|}}}|-|=|#default=số nhiều}}|{{{pl|}}} |{{#if:{{{m|}}}|giống đực tương đương}}|{{{m}}} |{{#if:{{{f|}}}|giống cái tương đương}}|{{{f}}} |{{#if:{{{n|}}}|giống trung tương đương}}|{{{n}}} |cat2={{#if:{{{m|}}}{{{f…” 2350611 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|gu|Danh từ riêng|sort={{{sort|}}}|head={{{head|}}}|tr={{{tr|}}} |g={{{g|?}}}|g2={{{g2|}}}|g3={{{g3|}}} |{{#ifeq:{{{pl|}}}|-|chỉ có số ít}}| |{{#switch:{{{pl|}}}|-|=|#default=số nhiều}}|{{{pl|}}} |{{#if:{{{m|}}}|giống đực tương đương}}|{{{m}}} |{{#if:{{{f|}}}|giống cái tương đương}}|{{{f}}} |{{#if:{{{n|}}}|giống trung tương đương}}|{{{n}}} |cat2={{#if:{{{m|}}}{{{f|}}}{{{n|}}}|danh từ khác giống tương đương}} }}<noinclude>{{documentation}}{{tcat|hw}}</noinclude> d135hafn1x8s1iiwp8q6x42ohdqw1eg નવી દિલ્હી 0 395973 2350612 2026-05-07T06:36:48Z Hiyuune 50834 Trang mới: “=={{langname|gu}}== {{wp|gu:}} ==={{section|etym}}=== {{calque|gu|hi|नई दिल्ली}}. ==={{section|pron}}=== * {{gu-IPA}} ==={{section|pr-noun}}=== {{gu-proper noun|g=f}} # {{tcl|gu|New Delhi|id=Q987}}” 2350612 wikitext text/x-wiki =={{langname|gu}}== {{wp|gu:}} ==={{section|etym}}=== {{calque|gu|hi|नई दिल्ली}}. ==={{section|pron}}=== * {{gu-IPA}} ==={{section|pr-noun}}=== {{gu-proper noun|g=f}} # {{tcl|gu|New Delhi|id=Q987}} o87q4tbz3vo5ugdjzslghfyyd323jjf Савиноселєц 0 395974 2350613 2026-05-07T06:38:55Z Hiyuune 50834 Trang mới: “=={{langname|rsk}}== ==={{section|etym}}=== Từ {{affix|rsk|Савине Село|-о-|Савине Село|-єц|alt1=Савине|alt3=Село}}. {{clq|rsk|sh|Savinoselac}}. ==={{section|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|ɛʎɛt͡s|s=5}} * {{hyph|rsk|Са|ви|но|се|лєц}} ==={{section|n}}=== {{rsk-noun|m-pr|f=Савиноселка|adj=савиноселски}} # [[người|Người]] đến từ {{w|Savino Selo}} #: {{syn|rsk|Торжанєц|q1=th…” 2350613 wikitext text/x-wiki =={{langname|rsk}}== ==={{section|etym}}=== Từ {{affix|rsk|Савине Село|-о-|Савине Село|-єц|alt1=Савине|alt3=Село}}. {{clq|rsk|sh|Savinoselac}}. ==={{section|pron}}=== * {{rsk-IPA}} * {{rhymes|rsk|ɛʎɛt͡s|s=5}} * {{hyph|rsk|Са|ви|но|се|лєц}} ==={{section|n}}=== {{rsk-noun|m-pr|f=Савиноселка|adj=савиноселски}} # [[người|Người]] đến từ {{w|Savino Selo}} #: {{syn|rsk|Торжанєц|q1=thường là từ ngữ lịch sử, gần như không còn dùng}} ===={{section|decl}}==== {{rsk-decl-noun-table|Савиноселєц|Савиноселца|Савиноселцови|Савиноселца|Савиноселцом|Савиноселцови|Савиноселцу |Савиноселци|Савиноселцох|Савиноселцом|Савиноселцох|Савиноселцами|Савиноселцох|Савиноселци}} {{C|rsk|Tên gọi dân cư|Người đàn ông}} {{cln|rsk|Danh từ thân từ rút gọn}} cjsesqfpmfgbvbcavaffigtcs9nbqh9 plum grape 0 395975 2350619 2026-05-07T06:43:18Z Hiyuune 50834 Trang mới: “=={{langname|en}}== ==={{ĐM|n}}=== {{en-noun}} # {{synonym of|en|fox grape}}” 2350619 wikitext text/x-wiki =={{langname|en}}== ==={{ĐM|n}}=== {{en-noun}} # {{synonym of|en|fox grape}} n7gn8e2v6cyivuatg7pm98e5snnd4bc fox grape 0 395976 2350620 2026-05-07T06:44:05Z Hiyuune 50834 Trang mới: “=={{langname|en}}== [[File:Vitis vulpina NRCS-1.jpg|thumb|'''fox grape''' ({{taxfmt|Vitis vulpina|loài}}) leaf]] [[Image:ConcordGrapes.jpg|thumb|'''fox grapes''' ({{taxfmt|Vitis labrusca|loài}}) on the vine]] ==={{section|n}}=== {{en-noun}} # {{taxfmt|Vitis labrusca|loài}}. # {{taxfmt|Vitis vulpina|loài}}. #: {{syn|en|frost grape|plum grape|winter grape}} ==={{section|ref}}=== * {{pedia}} * {{specieslite|Vitis vulpina|i=1}} * {{specieslite|Vitis labrusca|i=1}} * {{…” 2350620 wikitext text/x-wiki =={{langname|en}}== [[File:Vitis vulpina NRCS-1.jpg|thumb|'''fox grape''' ({{taxfmt|Vitis vulpina|loài}}) leaf]] [[Image:ConcordGrapes.jpg|thumb|'''fox grapes''' ({{taxfmt|Vitis labrusca|loài}}) on the vine]] ==={{section|n}}=== {{en-noun}} # {{taxfmt|Vitis labrusca|loài}}. # {{taxfmt|Vitis vulpina|loài}}. #: {{syn|en|frost grape|plum grape|winter grape}} ==={{section|ref}}=== * {{pedia}} * {{specieslite|Vitis vulpina|i=1}} * {{specieslite|Vitis labrusca|i=1}} * {{comcatlite|Vitis vulpina|i=1}} * {{comcatlite|Vitis labrusca|i=1}} * {{R:USDA Plants|VIVU|Vitis vulpina}} * {{R:USDA Plants|VILA8|Vitis labrusca}} jgoffp27aube19cvuc0bd0fgfhzwvhj 多岐 0 395977 2350826 2026-05-07T08:10:49Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|た|き|yomi=o}} ==={{ĐM|pron}}=== {{ja-pron|たき|acc=1|acc_ref=DJR}} ==={{ĐM|adj}}=== {{ja-adj|たき|infl=na|hhira=たき}} # [[đa dạng]]. #: {{ja-usex|'''多岐'''に[[渡る]][[役柄]]|'''たき''' に わたる やくがら|nhiều vai trò '''khác nhau'''}} ===={{ĐM|inflection}}==== {{ja-na|たき}} ==={{ĐM|noun}}=== {{ja-noun|たき|hhira=たき}} # Sự [[đa dạng]]. ==={{ĐM|ref}}=== <references /> :* {{R:Kanj…” 2350826 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|た|き|yomi=o}} ==={{ĐM|pron}}=== {{ja-pron|たき|acc=1|acc_ref=DJR}} ==={{ĐM|adj}}=== {{ja-adj|たき|infl=na|hhira=たき}} # [[đa dạng]]. #: {{ja-usex|'''多岐'''に[[渡る]][[役柄]]|'''たき''' に わたる やくがら|nhiều vai trò '''khác nhau'''}} ===={{ĐM|inflection}}==== {{ja-na|たき}} ==={{ĐM|noun}}=== {{ja-noun|たき|hhira=たき}} # Sự [[đa dạng]]. ==={{ĐM|ref}}=== <references /> :* {{R:Kanjipedia Kotoba|0004397500}} 0iwi57ankoip40wz13kp6pcqypmi5kx Thể loại:Từ đánh vần với 岐 là き tiếng Nhật 14 395978 2350832 2026-05-07T08:14:26Z WhoAlone 40420 Trang mới: “{{auto cat|kan'on}}” 2350832 wikitext text/x-wiki {{auto cat|kan'on}} clmo3b09zci1t12px7gti5vw1yfsq0y Thể loại:Từ đánh vần với 岐 tiếng Nhật 14 395979 2350835 2026-05-07T08:15:34Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350835 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ đánh vần với 岐 theo ngôn ngữ 14 395980 2350840 2026-05-07T08:17:39Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350840 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 多幾 0 395981 2350841 2026-05-07T08:20:08Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|た|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|たき}} # {{surname|ja|sort=たき}}” 2350841 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|た|き}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|たき}} # {{surname|ja|sort=たき}} 5sqtfgvouet15w1hfcx18f5l5om01ub Thể loại:Từ đánh vần với 幾 là き tiếng Nhật 14 395982 2350842 2026-05-07T08:22:22Z WhoAlone 40420 Trang mới: “{{auto cat|kan'on}}” 2350842 wikitext text/x-wiki {{auto cat|kan'on}} clmo3b09zci1t12px7gti5vw1yfsq0y Thể loại:Từ đánh vần với 幾 tiếng Nhật 14 395983 2350843 2026-05-07T08:23:23Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350843 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ đánh vần với 幾 theo ngôn ngữ 14 395984 2350844 2026-05-07T08:25:14Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2350844 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 0 395986 2351083 2026-05-07T11:05:39Z Lcsnes 40261 Trang mới: “{{also|ʔ|Ɂ|ɂ|ˀ}} {{minitoc}} {{-Deva-}} {{character info}} ==={{ĐM|pron}}=== *{{IPA4|mul|/ʔ/}} ==={{ĐM|desction}}=== {{head|mul|Chữ cái}} #Chữ Devanagari thể hiện âm tắc thanh hầu. =={{langname|bhj}}== ==={{ĐM|pron}}=== *{{IPA4|bhj|[ʔ]}} ==={{ĐM|letter}}=== {{head|bhj|Chữ cái|tr=ʔ}} #{{n-g|Phụ âm thứ 30 (cuối cùng) trong tiếng Bahing, viết bằng chữ Devanagari.}} ==={{ĐM|see}}=== *{{letters|lang=bhj|sc=Deva|qual=Chữ Devanagar…” 2351083 wikitext text/x-wiki {{also|ʔ|Ɂ|ɂ|ˀ}} {{minitoc}} {{-Deva-}} {{character info}} ==={{ĐM|pron}}=== *{{IPA4|mul|/ʔ/}} ==={{ĐM|desction}}=== {{head|mul|Chữ cái}} #Chữ Devanagari thể hiện âm tắc thanh hầu. =={{langname|bhj}}== ==={{ĐM|pron}}=== *{{IPA4|bhj|[ʔ]}} ==={{ĐM|letter}}=== {{head|bhj|Chữ cái|tr=ʔ}} #{{n-g|Phụ âm thứ 30 (cuối cùng) trong tiếng Bahing, viết bằng chữ Devanagari.}} ==={{ĐM|see}}=== *{{letters|lang=bhj|sc=Deva|qual=Chữ Devanagari tiếng Bahing|अ|आ|इ|उ|उ़|ए|ओ|क|ख|ग|घ|ङ|च|छ|ज|झ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|स|ह|ॽ}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Dr. Netra Mani Dumi Rai|work=Bahing – Nepali – English Dictionary|year=2023|publisher=SIL International|entryurl=https://www.webonary.org/bahing/browse/browse-vernacular-nepali/?key=bhj&letter=%E0%A4%A2&lang=en|entry=ढ}} =={{langname|dus}}== ==={{ĐM|pron}}=== *{{IPA4|dus|[ʔ]}} ==={{ĐM|letter}}=== {{head|dus|Chữ cái|tr=ʔ}} #Chữ cái Devanagari thể hiện phụ âm '''{{IPAchar|/ʔ/}}''' trong tiếng Dumi. #:{{ux|dus|'''ॽ'''वाक्‍ना|tr='''ʌ̣'''wakna|[[bực bội]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Dumi'') [[अ#Tiếng_Dumi|अ]], [[आ#Tiếng_Dumi|आ]], [[इ#Tiếng_Dumi|इ]], [[उ#Tiếng_Dumi|उ]], [[उ़#Tiếng_Dumi|उ़]], [[ए#Tiếng_Dumi|ए]], [[ओ#Tiếng_Dumi|ओ]], [[क#Tiếng_Dumi|क]], [[ख#Tiếng_Dumi|ख]], [[ग#Tiếng_Dumi|ग]], [[घ#Tiếng_Dumi|घ]], [[ङ#Tiếng_Dumi|ङ]], [[च#Tiếng_Dumi|च]], [[छ#Tiếng_Dumi|छ]], [[ज#Tiếng_Dumi|ज]], [[झ#Tiếng_Dumi|झ]], [[ट#Tiếng_Dumi|ट]], [[ठ#Tiếng_Dumi|ठ]], [[ड#Tiếng_Dumi|ड]], [[ढ#Tiếng_Dumi|ढ]], [[त#Tiếng_Dumi|त]], [[थ#Tiếng_Dumi|थ]], [[द#Tiếng_Dumi|द]], [[ध#Tiếng_Dumi|ध]], [[न#Tiếng_Dumi|न]] ([[ऩ#Tiếng_Dumi|ऩ]]), [[प#Tiếng_Dumi|प]], [[फ#Tiếng_Dumi|फ]], [[ब#Tiếng_Dumi|ब]], [[भ#Tiếng_Dumi|भ]], [[म#Tiếng_Dumi|म]], [[य#Tiếng_Dumi|य]], [[र#Tiếng_Dumi|र]], [[ल#Tiếng_Dumi|ल]], [[व#Tiếng_Dumi|व]], [[स#Tiếng_Dumi|स]], [[ह#Tiếng_Dumi|ह]], [[ॽ#Tiếng_Dumi|ॽ]] ==={{ĐM|ref}}=== *{{Chú thích web|editor=Dr. Netra Mani Dumi Rai|work=Dumi – Nepali – English Dictionary|entryurl=https://www.webonary.org/dumi/browse/browse-vernacular-nepali/?key=dus&letter=%E0%A5%BD&lang=en|entry=ॽ|year=2016|publisher=SIL International}} =={{langname|ybh}}== ==={{ĐM|pron}}=== *{{IPA4|ybh|[ʔ]}} ==={{ĐM|letter}}=== {{head|ybh|Chữ cái|tr=bhä}} #{{n-g|Phụ âm thứ nhất trong tiếng Yakkha, viết bằng chữ Devanagari.}} #:{{ux|ybh|हा'''ॽ'''मा|tr=ha'''ʔ'''ma|[[cắn]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Yakkha'') [[आ#Tiếng_Yakkha|आ]], [[इ#Tiếng_Yakkha|इ]], [[उ#Tiếng_Yakkha|उ]], [[ए#Tiếng_Yakkha|ए]], [[ओ#Tiếng_Yakkha|ओ]], [[ॽ#Tiếng_Yakkha|ॽ]], [[क#Tiếng_Yakkha|क]], [[ख#Tiếng_Yakkha|ख]], [[ग#Tiếng_Yakkha|ग]], [[घ#Tiếng_Yakkha|घ]], [[ङ#Tiếng_Yakkha|ङ]], [[च#Tiếng_Yakkha|च]], [[छ#Tiếng_Yakkha|छ]], [[ज#Tiếng_Yakkha|ज]], [[झ#Tiếng_Yakkha|झ]], [[ट#Tiếng_Yakkha|ट]], [[ठ#Tiếng_Yakkha|ठ]], [[ड#Tiếng_Yakkha|ड]], [[ढ#Tiếng_Yakkha|ढ]], [[त#Tiếng_Yakkha|त]], [[थ#Tiếng_Yakkha|थ]], [[द#Tiếng_Yakkha|द]], [[ध#Tiếng_Yakkha|ध]], [[न#Tiếng_Yakkha|न]], [[प#Tiếng_Yakkha|प]], [[फ#Tiếng_Yakkha|फ]], [[ब#Tiếng_Yakkha|ब]], [[भ#Tiếng_Yakkha|भ]], [[म#Tiếng_Yakkha|म]], [[य#Tiếng_Yakkha|य]], [[र#Tiếng_Yakkha|र]], [[ल#Tiếng_Yakkha|ल]], [[व#Tiếng_Yakkha|व]], [[ह्व#Tiếng_Yakkha|ह्व]], [[स#Tiếng_Yakkha|स]], [[ह#Tiếng_Yakkha|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Jiban Yakkha|work=Yakkha – Nepali – English Dictionary|year=2015|publisher=SIL International|entryurl=https://www.webonary.org/yakkha/browse/browse-vernacular-nepali/?key=ybh&letter=%E0%A4%B9&lang=en|entry=ह}} =={{langname|ybi}}== ==={{ĐM|pron}}=== *{{IPA4|ybi|[ʔ]}} ==={{ĐM|letter}}=== {{head|ybi|Chữ cái|tr=ʔ}} #{{n-g|Phụ âm thứ 30 (cuối cùng) trong tiếng Yamphu, viết bằng chữ Devanagari.}} #:{{ux|ybi|अरा'''ॽ'''वा|tr=ʌra'''ʔ'''wa|[[quạ]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Yamphu'') [[अ#Tiếng_Yamphu|अ]], [[आ#Tiếng_Yamphu|आ]], [[ए#Tiếng_Yamphu|ए]], [[ए़#Tiếng_Yamphu|ए़]], [[ओ#Tiếng_Yamphu|ओ]], [[इ#Tiếng_Yamphu|इ]], [[उ#Tiếng_Yamphu|उ]], [[आः#Tiếng_Yamphu|आः]], [[एः#Tiếng_Yamphu|एः]], [[ए़:#Tiếng_Yamphu|ए़:]], [[ओः#Tiếng_Yamphu|ओः]], [[इः#Tiếng_Yamphu|इः]], [[उः#Tiếng_Yamphu|उः]], [[क#Tiếng_Yamphu|क]], [[ख#Tiếng_Yamphu|ख]], [[ग#Tiếng_Yamphu|ग]], [[घ#Tiếng_Yamphu|घ]], [[ङ#Tiếng_Yamphu|ङ]], [[च#Tiếng_Yamphu|च]], [[छ#Tiếng_Yamphu|छ]], [[ज#Tiếng_Yamphu|ज]], [[झ#Tiếng_Yamphu|झ]], [[ट#Tiếng_Yamphu|ट]], [[ठ#Tiếng_Yamphu|ठ]], [[ड#Tiếng_Yamphu|ड]], [[ढ#Tiếng_Yamphu|ढ]], [[त#Tiếng_Yamphu|त]], [[थ#Tiếng_Yamphu|थ]], [[द#Tiếng_Yamphu|द]], [[ध#Tiếng_Yamphu|ध]], [[न#Tiếng_Yamphu|न]], [[प#Tiếng_Yamphu|प]], [[फ#Tiếng_Yamphu|फ]], [[ब#Tiếng_Yamphu|ब]], [[भ#Tiếng_Yamphu|भ]], [[म#Tiếng_Yamphu|म]], [[य#Tiếng_Yamphu|य]], [[र#Tiếng_Yamphu|र]], [[ल#Tiếng_Yamphu|ल]], [[व#Tiếng_Yamphu|व]], [[स#Tiếng_Yamphu|स]], [[ह#Tiếng_Yamphu|ह]], [[ॽ#Tiếng_Yamphu|ॽ]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Yamphu Kirat Society|work=Yamphu - Nepali – English Dictionary|year=2019|publisher=SIL International|entryurl=https://www.webonary.org/yamphu/g3cfcefa9-0e70-486a-af92-3aa7742d12be/?lang=en|entry=अराॽवा}} [[Thể loại:Khối ký tự Devanagari|7D]] 3v0pk2ft4ndyodjhxs82qbju4blm26j Mô đun:ybi-translit 828 395987 2351084 2026-05-07T11:25:55Z TheHighFighter2 42988 Trang mới: “local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['घ'] = 'gh', ['ङ'] = 'ṅ', ['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['झ'] = 'jh', ['ञ'] = 'ñ', ['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ढ'] = 'ḍh', ['ण'] = 'ṇ', ['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['ध'] = 'dh', ['न'] = 'n', ['प'] = 'p', ['फ'] =…” 2351084 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local conv = { -- consonants ['क'] = 'k', ['ख'] = 'kh', ['ग'] = 'g', ['घ'] = 'gh', ['ङ'] = 'ṅ', ['च'] = 'c', ['छ'] = 'ch', ['ज'] = 'j', ['झ'] = 'jh', ['ञ'] = 'ñ', ['ट'] = 'ṭ', ['ठ'] = 'ṭh', ['ड'] = 'ḍ', ['ढ'] = 'ḍh', ['ण'] = 'ṇ', ['त'] = 't', ['थ'] = 'th', ['द'] = 'd', ['ध'] = 'dh', ['न'] = 'n', ['प'] = 'p', ['फ'] = 'ph', ['ब'] = 'b', ['भ'] = 'bh', ['म'] = 'm', ['य'] = 'y', ['र'] = 'r', ['ल'] = 'l', ['व'] = 'w', ['श'] = 'ś', ['ष'] = 'ṣ', ['स'] = 's', ['ह'] = 'h', ['क़'] = 'q', ['ख़'] = 'x', ['ग़'] = 'ġ', ['ऴ'] = 'ḻ', ['ळ'] = 'ḷ', ['ज़'] = 'z', ['श़'] = 'ž', ['झ़'] = 'ž', ['ड़'] = 'ṛ', ['ढ़'] = 'ṛh', ['फ़'] = 'f', ['थ़'] = 'θ', ['द़'] = 'ð', ['ऩ'] = 'ṉ', ['ऱ'] = 'ṟ', ['ॽ'] = "'", ['व़'] = 'V', ['ॹ'] = 'ž', -- vowel diacritics ['ि'] = 'i', ['ु'] = 'u', ['े'] = 'e', ['ो'] = 'o', ['ा'] = 'ā', ['ी'] = 'ī', ['ू'] = 'ū', ['ृ'] = 'r̥', ['ॄ'] = 'r̥̄', ['ॢ'] = 'l̥', ['ॣ'] = 'l̥̄', ['ै'] = 'ai', ['ौ'] = 'au', ['ॉ'] = 'ŏ', ['ॅ'] = 'ĕ', -- vowel signs ['अ'] = 'a', ['इ'] = 'i', ['उ'] = 'u', ['ए'] = 'e', ['ओ'] = 'o', ['आ'] = 'ā', ['ई'] = 'ī', ['ऊ'] = 'ū', ['ऋ'] = 'r̥', ['ॠ'] = 'r̥̄', ['ऌ'] = 'l̥', ['ॡ'] = 'l̥̄', ['ऐ'] = 'ai', ['औ'] = 'au', ['ऑ'] = 'ŏ', ['ॲ'] = 'ĕ', ['ऍ'] = 'ĕ', -- chandrabindu ['ँ'] = '̃', -- anusvara ['ं'] = 'ṃ', -- visarga (length) ['ः'] = ':', -- virama ['्'] = '', -- om ['ॐ'] = 'om̐', -- zero width joiner ['‍'] = '', -- zero width non joiner ['‌'] = '', -- numerals ['०'] = '0', ['१'] = '1', ['२'] = '2', ['३'] = '3', ['४'] = '4', ['५'] = '5', ['६'] = '6', ['७'] = '7', ['८'] = '8', ['९'] = '9', -- punctuation ['।'] = '.', -- danda ['॥'] = '.', -- double danda ['+'] = '', -- compound separator -- abbreviation sign ['॰'] = '.', } local nasal_assim = { ['क'] = 'ङ', ['ख'] = 'ङ', ['ग'] = 'ङ', ['घ'] = 'ङ', ['च'] = 'ञ', ['छ'] = 'ञ', ['ज'] = 'ञ', ['झ'] = 'ञ', ['ट'] = 'ण', ['ठ'] = 'ण', ['ड'] = 'ण', ['ढ'] = 'ण', ['प'] = 'म', ['फ'] = 'म', ['ब'] = 'म', ['भ'] = 'म', ['म'] = 'म', ['त'] = 'न', ['थ'] = 'न', ['द'] = 'न', ['ध'] = 'न', ['न'] = 'न', ['ष'] = 'न', ['श'] = 'ङ', ['स'] = 'न', ['य'] = 'म', ['र'] = 'म', ['ल'] = 'ँ', ['व'] = 'म', ['ह'] = 'ङ', } local perm_cl = { ['ज्न'] = true, ['ज्ञ'] = true, ['ट्र'] = true, ['ड्र'] = true, ['ट्स'] = true, ['ड्स'] = true, ['स्ड'] = true } local all_cons, special_cons = 'कखगघङचछजझञटठडढणतथदधनपफबभमयरलवसशषह', 'कखगघचछजझटठडढणतथदधनपफबभमयरलवशषसह' local vowel, vowel_sign = 'aिुृेोाीूैौॉॅॆॊॄॢॣ', 'अइउएओआईऊऋॠॡऌऐऔऑऍ' local function rev_string(text) local result, length = {}, mw.ustring.len(text) for i = length, 1, -1 do table.insert(result, mw.ustring.sub(text, i, i)) end return table.concat(result) end function export.tr(text, lang, sc) text = gsub(text, '([' .. all_cons .. ']़?)([' .. vowel .. '्]?)', function(c, d) return c .. (d == "" and 'a' or d) end) for word in mw.ustring.gmatch(text, "[ऀ-ॿa]+") do local orig_word = word word = rev_string(word) word = gsub(word, '^a(़?)([' .. all_cons .. '])(.)(.?)', function(opt, first, second, third) return (((match(first, '[' .. special_cons .. ']') and match(second, 'ं') or match(first, '[' .. special_cons .. ']') and match(second, '्') and not perm_cl[first .. second .. third]) or match(first .. second, 'य[aिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]') or match(first .. second, 'ह[अaिुृेोाीूैौॉॅॆॊआईउऊइएऐओऔ]')) and 'a' or "") .. opt .. first .. second .. third end) word = gsub(word, '(.?)ं(.)', function(succ, prev) return succ .. (succ .. prev == "a" and "्म" or (succ == "" and match(prev, '[' .. vowel .. ']') and "̃" or nasal_assim[succ] or "ṃ")) .. prev end) local escaped_orig_word = gsub(orig_word, "%+", "") text = gsub(text, orig_word, rev_string(word)) text = gsub(text, 'ज्ञ', 'gy') text = gsub(text, 'े़', 'ê') text = gsub(text, 'ए़', 'ê') end text = gsub(text, '.़?', conv) text = gsub(text, 'a([iu])̃', 'a͠%1') text = gsub(text, "[<>]", "") text = gsub(text, "ॱ", "") text = gsub(text, 'e़', 'ê') text = gsub(text, 'rh̥', 'hr̥') text = mw.ustring.toNFC(text) return text end return export 2zhg9sww70dkia7pqpdfgk27mvh8tz7