Wiktionary viwiktionary https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh MediaWiki 1.47.0-wmf.21 case-sensitive Phương tiện Đặc biệt Thảo luận Thành viên Thảo luận Thành viên Wiktionary Thảo luận Wiktionary Tập tin Thảo luận Tập tin MediaWiki Thảo luận MediaWiki Bản mẫu Thảo luận Bản mẫu Trợ giúp Thảo luận Trợ giúp Thể loại Thảo luận Thể loại Phụ lục Thảo luận Phụ lục TimedText TimedText talk Mô đun Thảo luận Mô đun Sự kiện Thảo luận Sự kiện duur 0 2803 2566471 2536929 2026-09-25T15:45:06Z WhoAlone 40420 2566471 wikitext text/x-wiki {{-nld-}} {{nl-biến danh|duren|duurtje}} {{-noun-}} {{nl-noun-old|m|duren|duurtje}} # khoảng [[thời gian]] {{-syn-}} [[periode]], [[tijd]] {{-drv-}} [[op den duur]] ---- {{nl-biến tính|dure|duurder|duurst}} {{-adj-}} {{nl-adj-old|dure|duurder}} # [[đắt]]: mà nên [[trả]] nhiều [[tiền]] {{-ant-}} [[goedkoop]] {{-zns-}} {{-pron-}} * {{IPA4|zns|[dùːr]}} {{-noun-}} {{head|zns|Danh từ}} # [[kỳ đà]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Bò sát}} {{-som-}} {{-noun-}} {{pn}} # [[rừng]]. {{catname|Danh từ|tiếng Somali}} ox5bg8cugm7dwxcqgi1rfrah7a6sjwr 2566472 2566471 2026-09-25T15:45:16Z WhoAlone 40420 2566472 wikitext text/x-wiki {{-nld-}} {{nl-biến danh|duren|duurtje}} {{-noun-}} {{nl-noun-old|m|duren|duurtje}} # khoảng [[thời gian]] {{-syn-}} [[periode]], [[tijd]] {{-drv-}} [[op den duur]] ---- {{nl-biến tính|dure|duurder|duurst}} {{-adj-}} {{nl-adj-old|dure|duurder}} # [[đắt]]: mà nên [[trả]] nhiều [[tiền]] {{-ant-}} [[goedkoop]] {{-zns-}} {{-pron-}} * {{IPA4|zns|[dùːr]}} {{-noun-}} {{head|zns|Danh từ}} # [[kỳ đà]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Lớp Bò sát}} {{-som-}} {{-noun-}} {{pn}} # [[rừng]]. {{catname|Danh từ|tiếng Somali}} hrqx306mmtga9rpv2x0pb2z1rh5pjbt ren 0 29237 2566534 2565630 2026-09-25T16:06:15Z Hiyuune 50834 2566534 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "ren"}} {{minitoc}} =={{langname|mul}}== ==={{section|etym}}=== {{clip|mul|en:'''Ren'''gao}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|3}} =={{langname|vi}}== ==={{section|etym}}=== Từ {{bor|vi|pt|renda}} ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun|[[蓮]], [[𨕡]]}} # [[tấm|Tấm]] [[đan]] [[bằng]] chỉ [[mỏng]], có [[hình]] [[trang trí]], thường có [[hình]] [[răng cưa]] ở [[mép]]. #: {{ux|vi|Đường viền bằng '''ren'''.}} # [[rãnh|Rãnh]] [[xoắn ốc]] [[sít]] [[liền]] [[nhau]] trong [[các]] [[chi tiết]] của [[dụng cụ]], [[máy móc]]. #: {{ux|vi|Ốc trờn '''ren'''.}} ==={{section|v}}=== {{vi-verb|[[蓮]], [[𨕡]]}} # [[tạo|Tạo]] cho có [[ren]], làm thành [[ren]]. ==={{section|nôm}}=== {{col|vi|title=chữ Nôm|蓮<t:lên, ren, sen, liên>}} ==={{section|ref}}=== * {{R:FVDP}} * {{R:WinVNKey:Lê Sơn Thanh}} =={{langname|en}}== {{wp|en:}} ==={{section|pron}}=== * {{IPA|en|/ɹɛn/|/ɹiːn/}} * {{rhymes|en|ɛn|s=1}} * {{homophone|en|wren}} ==={{section|etym}} 1=== {{lbor|en|la|rēn}}. {{doublet|en|rein|t1=thận|id1=thận}}. ===={{section|n}}==== {{en-noun|es}} # {{lb|en|anatomy}} [[thận|Thận]]. ====={{section|rel}}===== * {{l|en|renal}} ==={{section|etym}} 2=== {{lbor|en|egy|rn}}, {{egy-h|r:n-A2}} ===={{section|n}}==== {{en-noun}} # {{lb|en|Egyptian mythology}} Tên [[người]], một phần của linh hồn trong thần thoại Ai Cập cổ đại. ==={{section|ana}}=== * {{anagrams|en|a=enr|ner|NER|NRE|ern|-ern|RNE|ENR|-ner-|Ern}} =={{langname|ang}}== ==={{section|n}}=== * {{ang-IPA|rēn}} * {{rhymes|ang|eːn|s=1}} ==={{section|n}}=== {{ang-noun|m|head=rēn}} # {{alternative form of|ang|reġn}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|var=1}} # {{alt form|enm|reyn|t=mưa|id=mưa}} =={{langname|ia}}== ==={{section|n}}=== {{ia-noun|renes}} # [[thận|Thận]]. =={{langname|ca}}== {{wp|ca:}} ==={{section|etym}}=== {{etymon|ca|id=tuần lộc|:bor|fr:renne<id:tuần lộc>|tree=1}} {{bor+|ca|fr|renne}}. ==={{section|pron}}=== * {{ca-IPA|ê}} * {{audio|ca|LL-Q7026 (cat)-Marvives-ren.wav|a=Barcelona}} ==={{section|n}}=== {{ca-noun|m}} # [[tuần lộc|Tuần lộc]]. {{C|ca|Họ Huơu nai}} =={{langname|gv}}== ==={{section|v}}=== {{head|gv|Biến thể hình thái động từ}} # {{inflection of|gv|jean||past}} =={{langname|wuh}}== ==={{section|etym}}=== Từ {{der|wuh|cmn|人}}. ==={{section|pron}}=== * {{IPA|wuh|[ɻə̃]}} ==={{section|n}}=== {{head|wuh|Danh từ}} # [[người|Người]]. ==={{section|ref}}=== * {{R:wuh:Sandman}} {{c|wuh|Con người}} =={{langname|ja}}== ==={{section|rom}}=== {{ja-romaji}} # {{ja-romanization of|れん}} =={{langname|pms}}== ==={{section|pron}}=== * {{IPA|pms|/rɛŋ/}} ==={{section|n}}=== {{head|pms|Danh từ|g=m}} # [[thận|Thận]]. =={{langname|cmn}}== ==={{section|rom}}=== {{cmn-pinyin|notr=1}} # {{nonstandard spelling of|cmn|sc=Latn|rén}} # {{nonstandard spelling of|cmn|sc=Latn|rěn}} # {{nonstandard spelling of|cmn|sc=Latn|rèn}} =={{langname|ro}}== {{wp|ro:}} [[Image:Caribou.jpg|thumbnail|right|Un ren]] ==={{section|etym}}=== {{etymon|ro|id=tuần lộc|:bor|fr:renne<id:tuần lộc>|tree=1}} {{bor+|ro|fr|renne}}. ==={{section|pron}}=== * {{IPA|ro|/ren/}} ==={{section|n}}=== {{ro-noun|m|reni}} # [[tuần lộc|Tuần lộc]]. ===={{section|decl}}==== {{ro-noun-m}} {{C|ro|Họ Hươu nai}} =={{langname|sh}}== ==={{section|etym}}=== {{inh+|sh|sla-pro|*xrěnъ}}. ==={{section|pron}}=== * {{IPA|sh|/rên/}} ==={{section|n}}=== {{sh-noun|rȅn|m-in}} # [[cây|Cây]] [[cải ngựa]] ===={{section|decl}}==== {{sh-decl-noun-unc |rȅn |rèna |renu |ren |rene |renu |renom }} {{C|sh|Rau}} =={{langname|tpi}}== ==={{section|etym}}=== Từ {{inh|tpi|en|rain}}. ==={{section|n}}=== {{head|tpi|Danh từ}} # [[mưa|Mưa]]. {{C|tpi|Tự nhiên}} 7bsphzeuac0h3tum11dj7rlaxjg4prn Wiktionary:Thảo luận 4 103948 2566628 2566323 2026-09-26T09:46:38Z Helirium333 61987 Every 2566628 wikitext text/x-wiki {{Wiktionary:Thảo luận/Đầu}} == Thêm một vấn đề lớn nữa ở Wiktionary tiếng Việt == Sau khi kiểm tra [[Đặc biệt:Trang ngắn]], tôi phát hiện đặc điểm của các trang có dung lượng rất ngắn này gồm thiếu liên kết, không có thể loại là chủ yếu. Do số lượng mục từ kiểu này khá nhiều nên nó đã trở thành một vấn đề lớn nữa ở Wiktionary tiếng Việt. Mong các bạn dành thời gian cải thiện lại chúng. 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>]] 13:24, ngày 9 tháng 2 năm 2022 (UTC) :Đây là những mục từ được tạo trong thời gian năm 2017, thời gian gần như không ai quản lý Wiktionary nên cũng không trách đượ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]]) 03:57, ngày 11 tháng 2 năm 2022 (UTC) ::Tôi không có ý trách ai cả. Quan trọng là có ai đủ thời gian để cải thiện lại chúng. Tôi thì hiện nay không dùng máy tính nhiều nên không thể làm hết được. – [[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>]] 13:59, ngày 11 tháng 2 năm 2022 (UTC) : Hiện tại phần lớn các mục từ dung lượng ngắn đều là các mục từ dùng với ja-see và zh-see. Phần lớn chúng đã được xếp thể loại tương ứng. [[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>]]) 10:04, ngày 30 tháng 7 năm 2026 (UTC) == Phát hiện trường hợp ngôn ngữ không có mã ISO 639: Saanich == Kiểm tra trên trang web chính thức của ISO 639-3, [https://iso639-3.sil.org/search/content/Saanich không có kết quả]. Wikipedia tiếng Anh cho rằng mã ISO 15924 của ngôn ngữ này cũng là “Latn”. Vậy trường hợp này nên giải quyết thế nào? 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>]] 11:37, ngày 22 tháng 2 năm 2022 (UTC) :{{u|Ccv2020}} Theo tôi, thì có thể dùng mã "-saan-" (viết tắt của 4 chữ cái đầu)--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:39, ngày 24 tháng 2 năm 2022 (UTC) :@[[Thành viên:Ccv2020|Ccv2020]]: Tiếng Saanich trực thuộc [[w:en:North Straits Salish language|tiếng Salish eo bắc]] có mã ISO&nbsp;639 là "str". [https://www.ethnologue.com/language/str] Wiktionary tiếng Anh sử dụng mã này trong [[:en:Module:languages/canonical names]]. ISO&nbsp;15924 là "Latn" chỉ có nghĩa rằng ngôn ngữ này được viết bằng chữ Latinh. – [[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> 22:47, ngày 21 tháng 5 năm 2022 (UTC) ::{{u|Mxn}}: Cảm ơn bạn đã hỗ trợ. [[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>]] 02:15, ngày 22 tháng 5 năm 2022 (UTC) == [[𥜥]] == [[MediaWiki:Gadget-TabbedLanguages.js|Gadget TabbedLanguages]] hình như không hoạt động tốt với bảng nổi. Liên kết đến Đặc biệt:Tiền tố không nhấp được. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 09:23, ngày 24 tháng 4 năm 2022 (UTC) :{{u|NguoiDungKhongDinhDanh}}: Tôi thấy nó vẫn hoạt động bình thường. Bạn thử kiểm tra xem lỗi do xung đột tiện ích nào. [[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>]] 10:42, ngày 24 tháng 4 năm 2022 (UTC) ::{{ping|Ccv2020}} Tôi đã thử bật safemode. Kết quả vẫn vậy. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 10:48, ngày 24 tháng 4 năm 2022 (UTC) :::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Có cài [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets|tiện ích wiki]] khác nào khô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> 22:38, ngày 21 tháng 5 năm 2022 (UTC) ::::{{ping|Mxn}} Một số, nhưng có vẻ không liên quan. Anh có thể thử tải [[MediaWiki:Gadget-TabbedLanguages.js|gadget]] bằng bảng điều khiển của trình duyệt khi [{{fullurl:𥜥|safemode=1}} bật safemode]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 22:43, ngày 21 tháng 5 năm 2022 (UTC) :::::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Chế độ safemode tắt tất cả các tiện ích, kể cả TabbedLanguages, nên dĩ nhiên nó không hoạt động. Đọc lại hình như bạn báo cáo về {{LKBM|zho-prefix}} chiếm cả một bên trang. Theo tôi, bản mẫu này nên được đưa bên dưới {{LKBM|-Hani-}} vì nó có liên quan đến phần đó. Nếu không thì tiện ích nên đưa hộp này tới đâu? – [[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> 22:52, ngày 21 tháng 5 năm 2022 (UTC) ::::::{{ping|Mxn}} ...và vì thế nên tôi mới tải thủ công bằng bảng điều khiển trình duyệt. Ngoài ra, lỗi chỉ tái hiện được nếu mục lục bị ẩn. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 23:00, ngày 21 tháng 5 năm 2022 (UTC) == Lỗi hiển thị liên kết? == Gần đây, khi tôi vừa tạo trang mới thì vẫn thấy xuất hiện liên kết đỏ. Cụ thể là sau khi thêm liên kết đó vào một trang rồi tạo trang đó, sau khi tải lại trang thì liên kết đỏ vẫn xuất hiện, trong khi thực tế trang đã tồn tại. Không rõ đây có phải lỗi hay không, nhưng khi làm mới trang hoàn toàn thì không thấy xuất hiện liên kết đỏ nữa. Ai đó xin giải thích giúp mình với, 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>]] 02:20, ngày 27 tháng 4 năm 2022 (UTC) :Ngắn gọn: Do bộ nhớ đệm. Dài dòng: [[:en:Cache (computing)]]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 15:15, ngày 5 tháng 5 năm 2022 (UTC) == Dữ liệu từ điển học từ Wikidata == Hôm nay nhóm phát triển phần mềm đã [[d:Wikidata talk:Lexicographical data#You can now reuse Wikidata Lexemes on all wikis|kích hoạt chức năng]] lấy [[d:Wikidata:Lexicographical data/vi|dữ liệu từ điển học từ Wikidata]] (''Wikidata lexicographical data'') tại wiki này. Chúng ta có thể lưu trữ các siêu dữ liệu về ngữ nghĩa, từ đồng nghĩa/trái nghĩa, dịch thuật, chữ Nôm, v.v. tại Wikidata dưới dạng có cấu trúc, có sẵn giao diện đàng hoàng thay vì phải nhớ cú pháp mã wiki chính xác. Như vầy các phiên bản Wiktionary có thể dùng chung các dữ liệu và phát triển cùng nhau. Xem thí dụ các từ vị (''lexeme'') sau: * {{LKTT|L1867}} * {{LKTT|L2297}} * {{LKTT|L619034}} Dữ liệu tiếng Việt [[d:Wikidata:Lexicographical coverage#vi|còn thiếu]] đối với các ngôn ngữ khác, hiện tại [[d:Wikidata:Lexicographical data/Statistics/Counts of various things by language|xếp hạng thứ 61]] sau những ngôn ngữ nhỏ tí như Phạn, Mân Nam, Klingon. Chúng ta có thể sử dụng các công cụ như Dịch vụ Truy vấn Wikidata và [[d:Wikidata:QuickStatements|QuickStatements]] để truy vấn và tự động sửa đổi hàng loạt từ vị: * [https://w.wiki/5MbB Tất cả các từ vị tiếng Việt hiện tại, sắp xếp theo từ loại] * [https://ordia.toolforge.org/language/Q9199 Các biểu đồ về từ vị tiếng Việt] Chúng ta có thể xây dựng các mô đun và bản mẫu để tự động tạo ra nội dung của mục từ. Tương lai thí dụ nếu muốn tạo mục từ tiếng Anh mới, chỉ việc dịch các ngữ nghĩa bên Wikidata và đưa ID từ vị (''lexeme ID'') vào mục từ là tất cả nội dung sẽ xuất hiện, không cần biết cách chia động từ hoặc liệt kê các từ đồng nghĩa thủ công. Ngoài ra, Wikisource tiếng Việt cũng có thể tạo các tham khảo chéo trong các cuốn từ điển cổ như [[s:Từ điển Việt–Bồ–La|Từ điển Việt–Bồ–La]]. Hôm nay tôi thử [[Mô đun:Thử/Mxn/Từ vị|xây một mô đun]] và [[Bản mẫu:Thử/Mxn/nôm|bản mẫu]] tự động liệt kê các chữ Nôm ứng với một ID từ vị: chỉ việc đưa {{LKBM|Thử/Mxn/nôm|L1867}} vào [[bánh#Tiếng Việt]] để chèn danh sách này. Một số phiên bản Wiktionary khác đã bắt đầu xây dựng các bản mẫu phức tạp hơn. {{tracked|T236593}} {{tracked|T180345}} Lưu ý rằng phần mềm Wikidata vẫn đang được phát triển tích cực. Trong tiếng Việt, chúng ta [[d:Wikidata talk:Lexicographical data#Forms in Vietnamese|rất cần]] phần mềm [[phab:T236593|cho phép một từ vị ứng với hơn một chữ Nôm]]. Tạm thời chúng ta đang lạm dụng các "dạng" để lưu trữ các chữ Nôm. Chúng ta cũng [[phab:T180345|chờ đợi]] nhóm phát triển kích hoạt mã ngôn ngữ <code>vi-Hani</code> để nhắc đến chữ Nôm thay vì mã tạm <code>vi-x-Q8201</code>. (Chữ nho đã có mã <code>lzh</code>.) Đây chỉ là bước đầu tiên trong một quá trình rất lớn. Cộng đồng Wikidata có nhiều người chuyên môn về kỹ thuật này muốn giúp chúng ta tích hợp Wikidata thành công. Nếu có thắc mắc hoặc yêu cầu nào đó, tôi sẽ ủng hộ các bạn và bảo đảm rằng nhóm phát triển hiểu về những điều cần cải thiện trong hệ thống mới. &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> 01:00, ngày 22 tháng 6 năm 2022 (UTC) :Tôi đã cấu trúc lại các từ vị để chia ra các chữ Nôm thành từ vị riêng được liên kết với các từ vị quốc ngữ như "cách biên dịch". Như vậy có lẽ dễ hiểu hơn và không bị nhầm lẫn với dạng ngữ pháp bởi các phần mềm chuyên môn về các ngôn ngữ phương Tây. – [[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> 18:19, ngày 27 tháng 6 năm 2022 (UTC) == [https://meta.wikimedia.org/wiki/Grants:Conference/Wikimedia_Australia/ESEAP_Conference_2022 Hội thảo ESEAP 2022] == Chào các bạn, hội thảo vùng ESEAP năm nay sẽ tổ chức ở Australia từ ngày 18 đến ngày 20 tháng 11 năm 2022, hạn chót vào '''ngày 24 tháng 7 năm 2022'''. [https://meta.wikimedia.org/wiki/Vietnam_Wikimedians_User_Group Nhóm người dùng Việt Nam chắc] '''2 suất''' để tham dự hội nghị để phát triển cộng đồng đại diện cho các dự án bằng ngôn ngữ Tiếng Việt. Ngoài ra các suất khác có thể đăng ký thêm bằng đường dẫn sau [https://docs.google.com/forms/d/e/1FAIpQLScPeV3e-xOGyRyvhYj7lpAQs-2DGRCgxgw6HmVNLwesWJa-WA/viewform?fbclid=IwAR2zOt-5TpMExI83LbKGiCoA_OkMnLX28tNSO8mDEI5w5Ov-Qfd2zmepWSs], không có giới hạn về suất đăng ký cho mỗi dự án ngôn ngữ, có thể 4-5 suất cũng được. Tinh thần càng đông càng vui. Những ứng viên tham gia nên có tiếng Anh speaking tốt một chút để có thể theo kịp các hoạt động thảo luận ở hội thảo này. Xin đề cử 1 số cái tên nổi bật trong việc phát triển cộng đồng và có tham gia/có kinh nghiệm các hoạt động ở Meta như {{u|Bluetpp}}, {{u|NguoiDungKhongDinhDanh}}, {{u|Trần Nguyễn Minh Huy}}?, {{u|Tuanminh01}}? và các ứng viên trẻ tuổi khác, không rõ trình độ tiếng Anh các bạn trẻ ra sao? Nếu các bạn tham gia theo tư cách nhóm người dùng xin reply ở đây hoặc email cho tôi. Nhóm người dùng có thể được lập bằng 3 thành viên chung 1 dự án bất kỳ và đề nghị thành lập với Meta, lưu ý phải tiết lộ danh tính. Nếu các bạn muốn thành lập thêm các nhóm khác, có thể tham vấn tôi để biết cách thành lập. Nhận tiện, Wikimania 2022 đã chọn Singapore là nơi tổ chức hội nghị. [[User:Alphama|<span style="background:#16BCDA;color:white;border-radius:2px;">&nbsp;<b>A</b> l p h a m a&nbsp;</span>]]&nbsp;<sup>[[User talk:Alphama|Thảo luận]]</sup> 02:03, ngày 18 tháng 7 năm 2022 (UTC) == Cuộc thi chụp ảnh cho Wiki Commons == Mời các bạn quan tâm cho ý kiến về cuộc thi này ở [[meta:Talk:Vietnam Wikimedians User Group]]. [[Thành viên:Alphama|Alphama]] ([[Thảo luận Thành viên:Alphama|thảo luận]]) 11:46, ngày 6 tháng 8 năm 2022 (UTC) == Một số bản mẫu trùng tên với mã ISO 639-3 == Một số bản mẫu trùng tên với mã ISO 639-3: * {{LKBM|-adj-}}: [https://iso639-3.sil.org/code/adj] * {{LKBM|-syn-}}: [https://iso639-3.sil.org/code/syn] * {{LKBM|-see-}}: [https://iso639-3.sil.org/code/see] * {{LKBM|-rel-}}: [https://iso639-3.sil.org/code/rel] * {{LKBM|-var-}}: [https://iso639-3.sil.org/code/var] * {{LKBM|-ant-}}: [https://iso639-3.sil.org/code/ant] * {{LKBM|-dem-}}: [https://iso639-3.sil.org/code/dem] * {{LKBM|-num-}}: [https://iso639-3.sil.org/code/num] Tôi xin lấy ý kiến cộng đồng về giải pháp cho vấn đề này. Xin cảm ơn!<br/>--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:16, ngày 3 tháng 9 năm 2022 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]]: Bạn và những người khác có thể đề xuất những tên mới phù hợp để tránh trùng. Tên mới khi được đề xuất cũng cần xem xét một số yếu tố khác như việc nó có nằm trong các đoạn javascript không. Sau cùng, khi mà tên mới đã được thống nhất, ta sẽ sử dụng bot đi thay thế. :Tuy nhiên, đôi khi không làm gì cũng là một giải pháp. Những ngôn ngữ này không phổ biến lắm, cho nên tôi nghĩ cứ bỏ qua chúng là được. 😉 – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:20, ngày 3 tháng 9 năm 2022 (UTC) :Trường hợp này em nghĩ vì sự phổ biến, chúng ta không nên dùng bot thay đổi mà nên giữ nguyên hiện tại, thay vào đó tạo ra những bản mẫu ngôn ngữ thay thế có tên khác kiểu adj-lang để tránh nhầm lẫn với những bản mẫu hiện có, ghi chú rõ trong tài liệu để mọi người biết là đượ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]]) 09:44, ngày 4 tháng 9 năm 2022 (UTC) ::Nếu làm như vậy sẽ thiếu sự đồng bộ đối với tên bản mẫu của các ngôn ngữ khác. Theo tôi nên đổi thành cách viết đầy đủ kiểu như: adjective, synonym,...--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:46, ngày 4 tháng 9 năm 2022 (UTC) == [[Thành viên:Iosraia]] == Hiện tại, thành viên này đã không còn hoạt động trong hơn 2 năm nay (tác vụ cuối vào 07:18, ngày 1 tháng 5 năm 2020). Theo quy định, thành viên này sẽ bị gỡ quyền bảo quản viên. Mời các bạn cho ý kiến để tôi thực hiện gỡ quyền, 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>]] 14:21, ngày 6 tháng 10 năm 2022 (UTC) * {{yk}} Đồng ý theo quy định trên [[Wiktionary:Bảo quản viên]] (Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền), nhưng sau khi gỡ quyền không biết các BQV có nên cấp quyền Lùi sửa cho thành viên không do những năm trước thành viên có tích cực. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 14:37, ngày 10 tháng 10 năm 2022 (UTC) ::Tạm thời chưa thể gỡ quyền bảo quản viên. Có thể phải chờ sang năm mới thực hiện được. [[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>]] 05:54, ngày 11 tháng 10 năm 2022 (UTC) ::Chính xác ra là quy định của Meta. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) * {{yk}} Nên gỡ quyền, đã quá lâu rồi. Nhưng nếu chưa gỡ quyền được ngay thì có thể đợi đến hết năm cũng đượ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]]) 15:07, ngày 18 tháng 11 năm 2022 (UTC) * {{yk}} Tôi đã báo lên Meta để ngay lập tức rút quyền vì đã quá thời hạn quy định. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) :: @{{noping|Tryvix1509}} Tôi nghĩ bảo một hành chính viên để gỡ quyền quyền thay vì báo lên Meta để rút quyền có thể sẽ nhanh hơn. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 13:33, ngày 19 tháng 12 năm 2022 (UTC) ::: À quên, tôi chưa đọc kỹ trang [[Wiktionary:Hành chính viên]]. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 22:36, ngày 8 tháng 2 năm 2023 (UTC) {{tick}} Thành viên đã được gỡ quyền theo quy định AAR. [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:15, ngày 13 tháng 9 năm 2026 (UTC) == Thay logo Tết == Xin chào các thành viên của cộng đồng Wiktionary. Để tránh rườm rà và không cần thiết, cũng như đảm bảo phù hợp với tình hình hiện tại của dự án, tôi xin được thông báo logo Tết năm 2023 của dự án Wiktionary sẽ được dùng lại từ 2022. Mong mọi người cho ý kiến đề xuất về việc này. 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>]] 11:39, ngày 17 tháng 1 năm 2023 (UTC) :👍 Hoàn toàn nhất trí--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:45, ngày 19 tháng 1 năm 2023 (UTC) ==Lời chúc năm mới xuân Quý Mão 2023== {| style="width:100%; background-color:#fc3; border:3px solid #ac6600;" padding: 5px; text-align:left;" |align="center"|[[File:Fxemoji u1F386.svg|75px]] |<span style="font-size:120%;">'''Nhân dịp xuân Quý Mão 2023, kính chúc toàn thể cộng đồng Wiktionary tiếng Việt một năm mới nhiều sức khỏe và hạnh phúc'''.</span><br /> Năm Nhâm Dần 2022 đã chứng kiến một sự thay đổi mạnh mẽ đối với dự án Wiktionary tiếng Việt. Nhiều ngôn ngữ mới đã xuất hiện, nhiều phần giao diện cũ đã được sửa lại. Chúng ta đã, đang và sẽ tiếp tục thay đổi để đưa từ điển mở này đến với nhiều người hơn, không ngừng đổi mới để phát triển. Năm Quý Mão 2023 đã gõ cửa khắp nơi, xin chúc cộng đồng từ điển mở Wiktionary tiếng Việt sẽ luôn luôn phát triển, đưa dự án chúng ta lên những cột mốc mới, những tầm cao mới. Chúng ta hãy cùng nhau để đi lê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>]] 03:12, ngày 22 tháng 1 năm 2023 (UTC) :Năm nay là năm con mèo. Cho nên tôi xin tặng đại gia đình Wiktionary tiếng Việt một con mèo Maneki-neko. '''CHÚC MỌI NGƯỜI NĂM MỚI LUÔN MAY MẮN'''! :[[Tập tin:Manekineko1003.jpg|nhỏ|giữa]] :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:36, ngày 22 tháng 1 năm 2023 (UTC) ::Rất cảm ơn một món quà đầy ý nghĩa của bạn. Cùng tiến lên để dự án phát triển nha! – [[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>]] 02:37, ngày 23 tháng 1 năm 2023 (UTC) == MediaWiki:Gadget-start.js == Em không có kinh nghiệm sửa js nên xin phép nhờ một số anh em nào có kinh nghiệm có thể sửa lỗi cái [[MediaWiki:Gadget-start.js]] để sửa một số lỗi như sau: * Phần biến cách bị mất nội dung sau khi nhập sang phần ngữ nghĩa hoặc bất kỳ phần nào khác (nhập vào "abc" thì nó sẽ tự động quay về giá trị mặc định nếu nhập sang phần khác). * Phần ngữ nghĩa bị sẽ bị lỗi undefined khi xuất nếu có quá nhiều ngữ nghĩa nhập vào, khuyến nghị chỉ nên để tối đa 5 ngữ nghĩa. * (Không bắt buộc), đổi giao diện sang OOUI cho hiện đại Xin phép mọi người giúp em ạ, 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]]) 02:46, ngày 26 tháng 1 năm 2023 (UTC) == Global ban for PlanespotterA320/RespectCE == Per the [[m:Global bans|Global bans]] policy, I'm informing the project of this request for comment: [[m:Requests for comment/Global ban for PlanespotterA320 (2) ]] about banning a member from your community. Thank you.--[[User:Lemonaka|Lemonaka]] ([[User talk:Lemonaka|talk]]) 21:40, ngày 6 tháng 2 năm 2023 (UTC) <!-- Tin nhắn của Thành viên:Zabe@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Lemonaka/Massmessagelist&oldid=24501599 --> :{{tick}} He's now banned by the Office. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:13, ngày 13 tháng 9 năm 2026 (UTC) == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:Stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # Iosraia (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, [[Thành viên:Uncitoyen|Uncitoyen]] ([[Thảo luận Thành viên:Uncitoyen|thảo luận]]) 09:09, ngày 24 tháng 2 năm 2023 (UTC) == Tin buồn == Tình hình là Web tratu.soha.vn đã bị sập, không rõ là web đang nâng cấp hay đóng hẳn rồi, mà thay vì xuất hiện trang chủ thì lại xuất hiện Apache 2 Test Page. Mọi người nếu muốn Import từ mới từ trang này vui lòng vào google để import, nên lấy '''những từ nào cần thiết vì có quá nhiều, google có thể xoá hết bản lưu sau vài tháng, lúc đó chúng ta không còn nội dung nhập sẫn vì vậy hãy nhanh chóng'''. Thật sự vô cùng tiếc vì đây là kho dữ liệu từ điển mở rất tốt. [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:34, ngày 28 tháng 2 năm 2023 (UTC) === Hướng dẫn === # Nhập tìm kiếm google "[Tên mục từ] Tratu", tìm đến dòng tìm kiếm đúng của tra từ, chọn bản lưu để ra bản lưu trước khi web bị sập.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:46, ngày 28 tháng 2 năm 2023 (UTC) #:{{ping|Kateru Zakuro}} Tôi tìm thấy trang [https://www.rung.vn/ này], hình như nó cũng lấy dữ liệu từ Tratu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:23, ngày 1 tháng 3 năm 2023 (UTC) #::Trang này có lấy nhưng không đầy đủ bác ạ, nhưng mà bản quyền ở đưới để "© 2023" thì không ổn lắm, nếu trích nguồn thì đưa vào được. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:25, ngày 1 tháng 3 năm 2023 (UTC) #::{{ping|TheHighFighter2}} Cập nhật lại là Website Tratu không bị sập, nhưng nó bị lỗi hệ thống (chắc do máy chủ quá cũ) dẫn đến bị lỗi 403 không truy cập được. Nhưng nó chỉ là vẻ bề ngoài, thực chất chúng ta vẫn có thể "lách luật" được mã lỗi 403 bằng cách load lại trang mục từ liên tục (ví dụ http://tratu.soha.vn/dict/vn_vn/Bo%C3%B3ng), nó sẽ cứ lỗi 403 thì lúc đó tiếp tục cứ load lại bằng CTRL + R hoặc nhấn tải lại trang, tự khắc 1 lúc nào đó web sẽ phản hồi và truy cập được vào trang mục từ. Cách này bị khó chịu nhưng đây là cách duy nhất để vào trang Tratu hiện tại, còn nếu thấy mất thời gian quá thì tra bản sao trên Google để nhập vào.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:33, ngày 1 tháng 3 năm 2023 (UTC) #:: Em để link ở đây để vào cái danh sách mục từ cho dễ (trang chủ nó bị lỗi nên phải dùng liên kết này) #::* [http://tratu.soha.vn/dict/vn_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Việt] #::* [http://tratu.soha.vn/dict/vn_en/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Anh] #::* [http://tratu.soha.vn/dict/en_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Anh-Việt] #::* [http://tratu.soha.vn/dict/fr_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Pháp-Việt] #::* [http://tratu.soha.vn/dict/vn_fr/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Pháp] #::* [http://tratu.soha.vn/dict/ja_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Nhật-Việt] #::* [http://tratu.soha.vn/dict/vn_ja/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Nhật] #::--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:41, ngày 1 tháng 3 năm 2023 (UTC) {{tick}} '''Tin vui''' Máy chủ đã hoạt động trở lại nên giờ đã có thể truy cập được vào website [http://tratu.soha.vn tratu.soha.vn] --[[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 18:02, ngày 23 tháng 4 năm 2023 (UTC) == Chú ý == Để ý nhiều mục từ tiếng Việt gần đây, nhiều biên tập viên sao chép nội dung từ trang Tratu hoặc nguồn tự do nào đó khác thường chép vào mà không ghi rõ nguồn từ đâu. Trừ khi biên tập viên tự diễn nghĩa, đề nghị các biên tập viên sao chép nội dung nhớ ghi nguồn bên dưới, để tránh trường hợp vô tình vi phạm bản quyền. Cảm ơn. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 23:02, ngày 21 tháng 3 năm 2023 (UTC) == Di động == Có ai dùng Wiktionary tiếng Việt trên thiết bị di động không? Với thiết kết CSS khung mới, tất cả nội dung không hiển thị được khi xem qua điện thoại Pixel của tôi. [[Thành viên:DHN|DHN]] ([[Thảo luận Thành viên:DHN|thảo luận]]) 16:39, ngày 13 tháng 7 năm 2023 (UTC) :@[[Thành viên:DHN|DHN]] Tôi cũng dùng Wiktionary trên thiết bị di động và đúng thật là cả nội dung cũng không thể đọc được. Chỉ có thể xem hoặc chỉnh sửa trên thiết bị di động khi chỉnh nó về phiên bản cho máy tính thôi nhưng việc chuyển qua chuyển lại như thế điện thoại chạy rất chậm đôi khi bị liệt. [[Thành viên:DANG GIAO|Phong Đăng]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 06:36, ngày 14 tháng 7 năm 2023 (UTC) :{{ý kiến}} Lỗi này đã được bàn luận tại trang [[Thảo luận thành viên:Kateru Zakuro#Về bản cập nhật có lỗi trên dự án]], nhưng hiện nay vẫn chưa được vá lại. @[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] mong anh cho ý kiến về lỗi nà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:23, ngày 14 tháng 7 năm 2023 (UTC) ::Nguyên nhân là do cái này: [[m:Tech/News/2023/27/vi]]: "Từ tuần này tất cả các tiện ích được tải tự động trên cả trang web di động lẫn máy tính. Nếu bạn có thấy bất cứ vấn đề gì về các tiện ích trên các wiki, vui lòng điều chỉnh [[mw:Special:MyLanguage/Extension:Gadgets#Options|tùy chọn tiện ích]] trong tệp định nghĩa tiện ích của bạn." Vậy cho nên trong [[Mediawiki:Gadgets-definition]], cần định nghĩa lại tiện ích TabbedLanguages để cho nó chỉ hoạt động trên giao diện máy tính thôi. Tương tự đối với tiện ích AVIM (bộ gõ tiếng Việt), cần định nghĩa lại để cho nó chỉ hoạt động trên máy tính. Nếu không thì vào [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets]], tắt 2 tiện ích "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "AVIM" đi. [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:20, ngày 26 tháng 7 năm 2023 (UTC) :::Wiktionary tiếng Việt ở [[Mediawiki:Gadgets-definition]] dùng cờ default cho tiện ích TabbedLanguages, trong khi Wiktionary tiếng Anh ở [[:en:Mediawiki:Gadgets-definition]] không dùng cờ default cho tiện ích TabbedLanguages. Vậy cách giải quyết là 1 BQV gỡ cờ default ra khỏi tiện ích TabbedLanguages trong [[Mediawiki:Gadgets-definition]], để ai thích dùng tiện ích này thì bật lên chứ không kích hoạt theo mặc định nữa (và khi dùng tiện ích TabbedLanguages thì phải chấp nhận là nó chỉ hiển thị được nội dung trên giao diện máy tính chứ không hiển thị được nội dung trên giao diện di động). [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:50, ngày 26 tháng 7 năm 2023 (UTC) :::Rất cảm ơn bạn Tranminh đã giúp sửa lỗi này. Nhưng tôi thấy không cần thiết lắm để phải tắt tính năng AVIM đi vì lỗi ở đây không phải là do tính năng AVIM (Bộ gõ tiếng Việt) mà là do hai tính năng "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "Hộp Gõ tiếng Việt ở thanh bên cung cấp các tùy chọn AVIM" tôi nghĩ chỉ cần tắt hai tính năng ấy đi là được. – [[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>]]) 12:29, ngày 6 tháng 8 năm 2023 (UTC) {{xong}} [[Đặc biệt:So sánh di động/2120542|BQV Kateru Zakuro đã sửa]]. [[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>]]) 16:52, ngày 21 tháng 8 năm 2023 (UTC) == [[Thành viên:Tuanminh01|Tuanminh01]] == {{BQ|KQ={{tick}} Biểu quyết bất tín nhiệm thành công với 2 phiếu thuận và 0 phiếu chống. Và theo quy định AAR, tiếp viên {{u|Superpes15}} đã chính thức thu hồi quyền quản trị đối với {{u|Tuanminh01}} vào ngày 11 tháng 2 năm 2024 trên dự án Wiktionary tiếng Việ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>]]) 06:49, ngày 12 tháng 3 năm 2024 (UTC)|ND= {{status|start=0}} Tác vụ cuối của thành viên này là [[Đặc biệt:Nhật trình/Tuanminh01|08:46, ngày 26 tháng 1 năm 2021 (UTC)]] (tức là đã hai năm rồi thành viên chưa hoạt động) và thông qua quy định tại trang [[Wiktionary:Bảo quản viên]] "Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền." nên do đó thành viên sẽ được thu hồi quyền BQV trên dự án này. Mời các bạn cho ý kiến về việc này, xin trân trọng cảm ơn. – [[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>]]) 11:30, ngày 26 tháng 7 năm 2023 (UTC) :#{{ok}} – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:57, ngày 2 tháng 12 năm 2023 (UTC) :#{{ok}} Tôi nghĩ Tuanminh có vẻ bất lực sau vụ BTN tại Wikipedia, đã quá 2 năm rồi mà tv chưa đóng góp trên đây, hơn nữa tv đóng góp ít trên đây và cũng có mắc nhiều lỗi trên Wikipedia nên tôi không mấy tin tưởng lắm, tôi ủng hộ việc gỡ quyền tv trên dự án này. [[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>]]) 00:50, ngày 5 tháng 2 năm 2024 (UTC) }} == Các mục từ cần nhất theo mục từ liên kết đến nó == Tôi dùng trang này để tạo mới một số mục từ thì nhận ra rằng trong trang này có một vài mục từ đã được tạo nhưng trang vẫn còn liên kết đỏ. Trang này không biết có bị khoá không vì tôi không sửa được. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:20, ngày 12 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Bạn có thể đưa link trang đó ra đây không?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:43, ngày 12 tháng 8 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Bạn xem ở [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_c%E1%BA%A7n_thi%E1%BA%BFt&limit=50&offset=100 Đây]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 02:54, ngày 13 tháng 8 năm 2023 (UTC) :::{{ping|P. ĐĂNG}} Trang đó sẽ được hệ thống cập nhật 2 lần một tháng--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:16, ngày 13 tháng 8 năm 2023 (UTC) == Lỗi == Khi tôi đang tạo hoặc sửa đổi mục từ tôi thấy có 2 lỗi này: <gallery> Lỗi1.png|200px|Lỗi thứ nhất Lỗi2.png|200px|Lỗi thứ hai </gallery> Có ai bị giống tôi không? – [[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:15, ngày 21 tháng 8 năm 2023 (UTC) :[[Thành viên:Nguyên Hưng Trần]] Máy tính tôi không gặp lỗi này, không biết các tv khác có hay không. Bạn dùng soạn thảo mã nguồn 2017 à?. Rất có thể là do lỗi máy tính nếu các tv khác không cùng gặp lỗi 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:49, ngày 21 tháng 8 năm 2023 (UTC) :Chắc do lỗi giao diện. Tôi đã thử chuyển sang chế độ laptop để sửa đổi một số mục từ và cũng bặt gặp lỗi y như lỗi bạn miêu tả ở hình 1. Nhưng không hiểu sao khi sửa các trang trợ giúp Wiktionary thì không thấy có lỗi đó hiện lên. Tôi nghĩ đó là tính năng mục lục của dự án trong soạn thảo trực quan lúc đang sửa mục từ hơn là lỗi, tôi nghĩ vậy do lỗi trên không ảnh hưởng gì nhiều đến công việc sửa đổi. @[[Thành viên:Tranminh360|Tranminh360]] Mong bạn cho ý kiến. – [[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>]]) 00:09, ngày 22 tháng 8 năm 2023 (UTC) :Đây là một lỗi do bản thân cái mục lục này đã có từ năm 2012 và CSS của nó không còn tương thích với giao diện mới nữa, em cố gắng sửa CSS của nó nhưng vẫn không được.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:15, ngày 13 tháng 9 năm 2023 (UTC) == Tính trung lập == {{Đóng thảo luận |KQ = ✔ Đã giải quyết xong |ND = Tôi và TheHighFighter2 đã có phần thảo luận về tình trạng tính trung lập của Wiktionary đang vướng phải. Tôi xin đưa thảo luận ra đây như thành viên Tiến Minh đã khởi xuất để mọi thành viên có thể thảo luận tránh ý nghiêng về một phía. Nội dung thảo luận dưới đây: Về một số sửa đổi của bạn gần đây, như tại [[khả năng]], [[chứng minh]], ... Nếu phần định nghĩa có các từ kiểu như "nước ta", "nhân dân ta", ... thì ta nên thay bằng các từ khác hoặc xóa đi. Còn nếu nó có ở phần vd thì không cần xóa do phần này chấp nhận chứa các từ như vậy--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:48, ngày 16 tháng 9 năm 2023 (UTC) === Thảo luận chung === :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Đúng vậy, tôi đã xoá chúng đi vì Wiktionary:Thái độ trung lập. Wiktionary có quy định về phần vd được phép ngoại lệ này không?. Tôi đã có nói chuyện với HCV Mxn về điều này. Tôi khẳng định nó không trung lập và xoá đi là cần thiết, và sẽ bổ sung phần ví dụ mới vào. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:19, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Hiện tại trên dự án không có trang nào tên là [[Wiktionary:Thái độ trung lập]]. Chả là bạn muốn tìm trang quy định liên quan tới vấn đề chăng? – [[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>]]) 14:29, ngày 16 tháng 9 năm 2023 (UTC) :::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Chưa có chứ không phải không. Các dự án Wikipedia đều hoạt động hướng đến chung là thái độ trung lập. Wiktionary tiếng Việt không phải Wiktionary Việt Nam. HCV Mxn cũng đi xoá những thứ này. Khi dùng từ như "dân ta, nhân dân ta", khi người nước ngoài đọc, bạn nghĩ sao về điều này? Chúng ta hướng đến một dự án phục vụ mọi người, mọi chủng tộc và quốc gia, không phải riêng một đất nước nào. Vì vậy, mỗi dòng viết ra phải dựa trên thái độ trung lập. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:36, ngày 16 tháng 9 năm 2023 (UTC) ::::Bạn nói cũng đúng vì theo quy định bên Wiktionary tiếng Anh "all entries must be written from a '''neutral point of view''', representing views fairly and without bias" (tạm dịch: Mọi nội dung được đưa vào đều phải được viết từ một cái nhìn trung lập, thể hiện cái nhìn công bằng và không thiên kiến). Nhưng tôi nghĩ cũng không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV vì nội dung không trung lập thường nó cũng không ảnh hưởng gì nhiều đến dự án lắm. – [[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>]]) 14:46, ngày 16 tháng 9 năm 2023 (UTC) :::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Đây là điều đương nhiên. Chúng ta đang hoạt động trên đâu? Wiktionary là dự án bách khoa, nó ưu tiên thái độ trung lập, nơi mà một người Mỹ có thể qua đọc bài viết của một Wikimedia tiếng Đức, tiếng Việt hay tiếng Trung. Khi không trung lập, bạn nói không nhất thiết sửa lại là sao?. Đến nay tôi mới phát hiện Wiktionary tiếng Việt đang có văn phong không trung lập rất nhiều, trích câu Hồ Chí Minh, dùng thơ... Tôi cần BQV TheHighFighter2 phản hồi điều này, lẽ ra phải thảo luận với tôi trước khi lùi sửa, thứ mang tính chất mâu thuẫn. Nếu có quy định nào nói phần ví dụ ta được ngoại lệ thì tôi sẽ xem lại sửa đổi của mình. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:53, ngày 16 tháng 9 năm 2023 (UTC) ::::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi dám chắc là không có quy định nào về ngoại lệ này cả. Không trung lập mới là đi ngược với quy định của bách khoa. Nội dung trên đây vốn đa phần được sao chép từ FVDP một dự án không có quy định tính trung lập, khi dùng nó đưa vô thì phải xem xét ở một vài khía cạnh chứ không copy là xong được. Wiktionary không phải từ điển của Việt Nam, nó cũng không phải sách giáo khoa, không dùng văn phong thiên vị một phía, thêm thơ lại không trung lập. Bạn sang các Wiktionary tiếng khác xem, có nền tảng wiki nào dùng những câu ví dụ như "nhân dân ta chiến đấu bảo vệ tổ quốc" "chiến tranh chống đế quốc Mỹ", có xuất hiện không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:58, ngày 16 tháng 9 năm 2023 (UTC) 1. Bên en có rất nhiều mục có vd chứa các từ "[https://en.wiktionary.org/w/index.php?search=%22our+country%22&title=Special:Search&profile=advanced&fulltext=1&ns0=1 our country]", "[https://en.wiktionary.org/w/index.php?search=%22n%C6%B0%E1%BB%9Bc+ta%22&title=Special:Search&ns0=1&searchToken=12thcn782xmsjc7aixwau68ok nước ta]; bên fr có "[https://fr.wiktionary.org/w/index.php?search=%22notre+pays%22&title=Sp%C3%A9cial:Recherche&profile=advanced&fulltext=1&searchengineselect=mediawiki&ns0=1&ns100=1&ns106=1&ns110=1&searchToken=vol8t2pu9urr4hv60l40oom8 notre pays]" (đất nước chúng tôi) 2. Khi lấy vd cho mục "[[Đảng ta]]", "[[Mĩ nguỵ]]", "[[ba que]]" thì ta nên lấy vd như nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:57, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin gửi bạn một phần tin nhắn của tôi với HCV Mxn: "tất cả các câu thí dụ này được nhập từ Dự án Từ điển tiếng Việt miễn phí (FVDP), dự án này sao chép nguyên cả lời định nghĩa từ một số từ điển khác, có lẽ bao gồm những cuốn từ điển trong nước. (FVDP cũng có nhiều danh ngôn của Hồ Chí Minh.) Mấy năm nay tôi cũng muốn gạt đi những câu thí dụ không trung lập hoặc sửa lại theo thuật ngữ trung lập hơn. Đây chỉ là một trong rất nhiều điều thiếu sót của việc nhập FVDP. Nếu bạn có thể giúp dọn dẹp các câu thí dụ và danh ngôn thì tốt quá". Những từ tiếng Việt được xây dựng bên en cũng đa phần dùng bot và người mở rộng có cả những tv người Việt (từ ngoại quốc có thể không bị kiểm duyệt gắt gao khi người kiểm duyệt không am hiểu thứ tiếng, giống như có tv nào tạo bài tiếng phạn hay chữ Hán bên đây chúng ta thì có thể tỷ lệ phần trăm sai phạm bị bỏ qua sẽ nhiều hơn các từ hệ chữ chúng ta dùng). Còn bên fr, bạn xem ví dụ của họ có liên quan đến chủ thể cỡ nào? Nó đáng bao nhiêu phần trăm? Rõ ràng như Wiktionary vi không?. Về trường hợp lấy ví dụ của các từ như "Đảng ta" "Mĩ ngụy" thì đây là một từ, trích quy định "Tất cả các bài viết và các nội dung bách khoa khác tại Wikipedia phải được viết trên một quan điểm trung lập (QDTL), thể hiện một cách công bằng và không thiên vị" tôi nghĩ bạn đủ khả năng tự suy ra hướng tôi đang muốn nói. Khi bạn dùng từ này vô trường hợp như "Mĩ ngụy xâm chiếm nước ta" --> ám chỉ rõ ràng đây là dự án tiếng Việt và nước ta là Việt Nam. Bản chất từ tôi không nói nó vi phạm thái độ trung lập, nhưng tùy ngữ cảnh mà bạn đưa vào là một vấn đề đấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:18, ngày 16 tháng 9 năm 2023 (UTC) :Thì thế tôi mới nói "không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV" đó. Nội dung không trung lập không có nghĩa là nội dung đó không hữu ích. Nói chung là tùy trường hợp, hợp lý là được miễn sao nội dung đó không quá khích. – [[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>]]) 16:12, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Bạn có biết đang nói cái gì không vậy? Không trung lập = vi phạm quy định. Sửa đổi sai đang cần sửa nhưng bạn lại nói không cần thiết?. WP:Thái độ trung lập là một trong những trụ cột của Wikimedia, cho dù đó là sửa đổi thiện chí nhưng vi phạm thì cũng không cần. Dự án chúng ta các tv đã không còn khả năng sửa điều này? Nếu không, tại sao chấp nhận nó?. Sao có thể nhưng không thay bằng một nội dung vừa hữu ích vừa phù hợp với chính sách của ta hơn. Tôi không hiểu bạn Tiến Minh nói không nhất thiết giải quyết những điều này là gì? Bên Wikipedia có nhiều tk bị cấm vì thái độ trung lập đấy và thành viên không kiểm soát được điều này nên mấy tk này quay lại và thành rối nằm vùng. Phần nội dung hiện rõ lên vậy, bạn lại nói là không quá khích. Thế nào là quá khích, đủ để các tv bắt tay vào làm? Tôi xin nhắc lại, Wiktionary tiếng Việt không phải Wiktionary Việt Nam. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:26, ngày 16 tháng 9 năm 2023 (UTC) Nếu các thành viên vẫn cho sửa đổi của là sai khi nói nội dung đó vi phạm trung lập thì hãy giải thích cho câu hỏi này "Wiktionary có quy định về phần vd được phép ngoại lệ này không?". Bên Wiktionary en có trang [https://en.wiktionary.org/wiki/Wiktionary:Neutral_point_of_view Wiktionary:Neutral point of view] rõ ràng. Và khi nói rằng nó thật hữu ích và chưa quá khích để chúng ta bắt tay vào sửa thì khi nào là quá khích? Những câu ví dụ vi phạm đó có là duy nhất không thể thay thế không? Nếu câu trả lời là không, thì nó nên bị xóa để thay thế nội dung khác vào. Nếu có quy định nào được chỉ ra tôi xóa chúng đi là sai, tôi sẽ xem xét lại sửa đổi của mình, còn không, sau thảo luận tôi sẽ dọn tất cả những nội dung này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:57, ngày 16 tháng 9 năm 2023 (UTC) Hướng giải quyết: Nếu 1 mục từ bình thường có vd chứa các từ như trên: thay thế vd khác. Còn các từ liên quan đến chính trị, trường hợp đặc biệt khác, thì có thể lấy vd chứa những từ như trên. Bạn thấy thế nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:53, ngày 16 tháng 9 năm 2023 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin phiền bạn đưa phần tin nhắn này ra trang thảo luận vì Tiến Minh đã gửi thư nên tôi đã di chuyển nó ra thảo luận để mọi người có thể cùng nhau giải quyết. 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]]) 17:00, ngày 16 tháng 9 năm 2023 (UTC) :<p>Đúng rồi, vấn đề là các câu thí dụ không có liên quan đến chính trị mà lại nhắc đến chủ đề nhạy cảm hoặc dùng thuật ngữ không trung lập về mặt chính trị. Chẳng ai biết rõ ràng các câu này dẫn xuất từ đâu nhưng có vẻ giống tuyên truyền ngày xưa. Thực sự không cần dùng các thuật ngữ này để dạy ngôn ngữ. Tuy nhiên, có khi các danh ngôn của Hồ Chí Minh v.v. thật là đáng kể, thì bỏ qua chúng cũng không trung lập lắm.<p>Về mặt kỹ thuật, việc thay thế nội dung từ FVDP bằng nội dung khác cũng có ích cho Wiktionary. Không phải chỉ Wiktionary nhập nguyên văn FVDP đâu. Nội dung nào khác với TraTu v.v. sẽ làm Wiktionary nổi bật hơn, thu hút nhiều người đóng góp hơn.<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> 01:56, ngày 17 tháng 9 năm 2023 (UTC) {{yk}} Tôi ủng hộ cách giải quyết của Đăng. Wiktionary cũng cần phải trung lập. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:53, ngày 16 tháng 9 năm 2023 (UTC) '''Kết thúc:''' Cảm ơn hai HCV Nguyễn Xuân Minh và Phú, cũng như BQV TheHighFighter2 và thành viên DefenderTienMinh07 đã cùng nhau đưa ra phản hồi. Sau cuộc thảo luận trên, tôi nghĩ tất cả các thành viên Wiktionary chúng ta đã nắm được vấn đề. Đây có nói là thiếu sót dễ gây hiểu nhầm do Wiktionary vi chưa được dịch đầy đủ các trang về quy định. Tôi khuyến khích các thành viên đang cần, sang Wikipedia vi tham khảo các quy định này. Nếu cuộc thảo luận các thành viên không có ý kiến gì thêm, tôi xin được yêu cầu kết thúc cuộc bàn thảo tại đây để tôi có thể sớm bắt tay vào dọn dẹp tất cả như đã nói trước đó. Kính chúc cộng đồng ta ngày mớ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]]) 07:35, ngày 17 tháng 9 năm 2023 (UTC) }} == Không gian tên == Hiện tại có 4 không gian tên bên en chưa được tạo tại đây: Từ tái tạo, Vần, Thesaurus, Kho ngữ liệu. Cho nên nếu ai đó biết cày mấy cái này thì xin đề xuất chúng lên Phabricator vớ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>]] 14:35, ngày 22 tháng 10 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Bạn làm xong chưa?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:06, ngày 28 tháng 10 năm 2023 (UTC) ::{{ping|P. ĐĂNG}} Không biết làm bạn ơi, tôi chưa biết cày cái Phabricator. – [[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>]] 07:02, ngày 28 tháng 10 năm 2023 (UTC) :::@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Tôi cần xem qua các link bên en trong bốn không gian mà bạn dẫn ra. Bạn có không vì tôi tìm bên đó không thấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:25, ngày 28 tháng 10 năm 2023 (UTC) ::::{{ping|P. ĐĂNG}} À, 4 cái không gian tên đó tương đương bên en lần lượt là "Reconstruction", "Rhymes", "Thesaurus", và "Citations". Nhưng mà trước khi đề xuất lên Phabricator thì phải tạo một biểu quyết cái đã rồi mới làm được, như hồi đó là {{u|Ccv2020}} tạo một biểu quyết tạo không gian tên "Phụ lục" (tương đương với bên en là "Appendix", bạn có thể [[#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt|xem mục này bên trên]]). – [[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>]] 13:34, ngày 28 tháng 10 năm 2023 (UTC) ::::Rất hy vọng [[Thành viên:Ccv2020|Ccv2020]] có thể phụ giúp cộng đồng ta làm lại một lần nữa. Tôi sẽ cố gắng tích thêm kinh nghiệm để nối tiếp điều này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:13, ngày 28 tháng 10 năm 2023 (UTC) :::::À, cảm ơn đã nhắc mình nhé. Tuy nhiên thì có lẽ mình không còn thời gian để làm việc này nữa bạn à. Thực sự mình vẫn còn chút quan tâm dự án nhưng có lẽ mình xin nhường lại việc này cho một BQV khác. – [[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:47, ngày 29 tháng 10 năm 2023 (UTC) : Cần đẩy nhanh tiến độ đồng thuận đối với 4 không gian trên. [[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>]] 12:26, ngày 17 tháng 12 năm 2024 (UTC) ::Thảo luận này đã kết thúc từ năm 2023. Tôi có nhắn hỏi Ccv2020 tại trang các nhân từ một năm trước nhưng bận nên chưa thấy hồi đáp. Chắc đành mời thêm [[Thành viên:TheHighFighter2|TheHighFighter2]] xem qua trường hợp này. Thú thật tôi vẫn có ý định làm thay, nhưng cần có người hướng dẫn cho lần đầu tiên. Thiết nghĩ ưu tiên độ chính xác. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:32, ngày 17 tháng 12 năm 2024 (UTC) :::{{ping|P. ĐĂNG}} Tôi tìm được trang hướng dẫn này [[:meta:Requesting wiki configuration changes]], bạn có thể tham khảo--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:15, ngày 18 tháng 12 năm 2024 (UTC) ::::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Yêu cầu thì đơn giản, nhưng vấn đề là cộng đồng ở đây có đồng thuận không. – [[Thành viên:Hide on Rosé|Hide on Rosé]] ([[Thảo luận Thành viên:Hide on Rosé|thảo luận]]) 10:30, ngày 15 tháng 6 năm 2025 (UTC) : Chắc là phải tạo biểu quyết đồng thuận đối với 4 không gian tên "Từ tái tạo", "Vần", "Kho từ vựng" (Thesaurus), "Kho ngữ liệu" (Citations). Nhưng dự án ít người hoạt động thế này bỏ phiếu kiểu gì. [[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>]] 15:43, ngày 3 tháng 1 năm 2026 (UTC) == Lỗi không hiển thị được mục lục khi đang sửa đổi hoặc tạo mục từ == Hôm nay tôi mới thấy Wiktionary đổi giao diện mặc định thành Vector (2022), mà khi đang sửa đổi mục từ thì tôi không nhìn thấy được mục lục phía bên phải của cái hộp sửa đổi. Có ai bị lỗi này giống tôi không? – [[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:50, ngày 30 tháng 11 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Chào bạn, bạn có thể vui lòng cung cấp hình ảnh cái mục lục bên phải ở phiên bản Vector cũ được không ạ? Cảm ơn bạn nhiều. – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:58, ngày 2 tháng 12 năm 2023 (UTC) == Vector 2022 == Vào ngày 30/11 vừa rồi, Vector 2022 đã được triển khai tại Wikiquote. Không biết các bạn cảm thấy thế nào với giao diện Vector 2022? Nếu bạn gặp phải bất cứ vấn đề gì hoặc phát hiện lỗi với Vector 2022, xin hãy tag tôi. Xin cảm ơn! – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 15:12, ngày 2 tháng 12 năm 2023 (UTC) == Các cải thiện đối với định dạng của Vector 2022 == [[Tập_tin:Vector_2022_pre-Zebra_visual_changes_logged_out.jpg|nhỏ|Trước (<code>?vectorzebradesign=0</code>)]] [[Tập_tin:Vector_2022_Zebra_visual_changes_logged_out.jpg|nhỏ|Sau (<code>?vectorzebradesign=1</code>)]] Chào mọi người. Nhóm Web của Wikimedia Foundation đã giới thiệu những cải tiến về định dạng của giao diện Vector 2022. Đối với những người theo dõi các cập nhật của chúng tôi, bạn có thể nhận ra một số trong số này là một subset của [[mw:Reading/Web/Desktop_Improvements/Updates#May_2023:_Continuing_work_on_Vector_2022,_and_making_plans_for_the_new_fiscal_year|nguyên mẫu phân tách nội dung (Zebra) đã được thử nghiệm trước đây]]. Cụ thể, những thay đổi gần đây bao gồm: # Màu sắc nền mới cho menu chính, giờ đây đã phù hợp với phần còn lại của menu # Định dạng mới cho nút ấn và hiện của các menu # In đậm tiêu đề menu Bạn có thể tìm thấy [[mw:Reading/Web/Desktop Improvements/Updates/en#November_2023:_Visual_changes,_more_deployments,_and_shifting_focus|thêm chi tiết về lần thay đổi này tại trang cập nhật dự án trên MediaWiki.org]]. Những thay đổi này cũng sẽ giải quyết một số lỗi gần đây với mục lục, chẳng hạn như [[phab:T352464|phiếu ghi lỗi]] về các yếu tố có thể cuộn được này. Xin vui lòng cho chúng tôi biết bạn nghĩ gì về những điều chỉnh này và cả những thắc mắc mà bạn đang có! [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 11:06, ngày 17 tháng 12 năm 2023 (UTC) == IMPORTANT: Admin activity review == Hello. A policy regarding the removal of "advanced rights" (administrator, bureaucrat, interface administrator, etc.) was adopted by [[:m:Requests for comment/Activity levels of advanced administrative rights holders|global community consensus]] in 2013. According to this policy, the [[:m:stewards|stewards]] are reviewing administrators' activity on all Wikimedia Foundation wikis with no inactivity policy. To the best of our knowledge, your wiki does not have a formal process for removing "advanced rights" from inactive accounts. This means that the stewards will take care of this according to the [[:m:Admin activity review|admin activity review]]. We have determined that the following users meet the inactivity criteria (no edits and no logged actions for more than 2 years): # [[Special:Contributions/Tuanminh01|Tuanminh01]] (administrator) These users will receive a notification soon, asking them to start a community discussion if they want to retain some or all of their rights. If the users do not respond, then their advanced rights will be removed by the stewards. However, if you as a community would like to create your own activity review process superseding the global one, want to make another decision about these inactive rights holders, or already have a policy that we missed, then please notify the [[:m:Stewards' noticeboard|stewards on Meta-Wiki]] so that we know not to proceed with the rights review on your wiki. Thanks, – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 23:42, ngày 7 tháng 2 năm 2024 (UTC) :@[[Thành viên:Superpes15|Superpes15]] when his admin right removed on here if needed, could you also remove the autopatrolled right on his account in both Meta and Mediawiki pls cuz he'll go inactive forever and he's now untrusted by viwiki community due to his block on Abuse filter and other users (as I've mentioned [[Thảo luận thành viên:Nguyentrongphu#Về việc gỡ quyền BQV đối với Tuanminh01|here]]). – [[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>]]) 02:25, ngày 29 tháng 2 năm 2024 (UTC) ::Hi [[User:DefenderTienMinh07|DefenderTienMinh07]] and thanks for your request. I don't think we can remove autopatrolled flag just because they left wiki! Also, I'm not a sysop on mediawiki, and there's no reason to remove the flag there if they didn't do anything bad there. Thanks :) – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 00:40, ngày 7 tháng 3 năm 2024 (UTC) == Mục từ nghi vấn độ nổi bật == {{Đầu biểu quyết|KQ={{tick}} Đã giải quyết xong (xem thêm [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]]). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:11, ngày 18 tháng 4 năm 2024 (UTC)}} Chào các bạn, có một số mục từ được thành viên [[Thành viên:Dragon Immortal (Rồng Tiên)| Dragon Immortal (Rồng Tiên)]] (và các tài khoản phụ) khởi tạo, tôi tạm thống kê trong trang [[Thành viên:P. ĐĂNG/Nháp/Lưu 1|này]]. Dựa vào quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Names of specific entities] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Fictional universes] của Wiktionary bên en. Các mục từ này, theo tôi là nằm trong vòng lặp nghi vấn đề độ nổi bât. Tôi muốn lấy ý kiến chung để giải quyết các mục từ này vì độ nổi bật như tôi nói là không rõ ràng nên cần sự đồng thuận (giữ/xóa). Mời các bạn cho ý kiến. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :Tag các bạn: [[Thành viên:TheHighFighter2|TheHighFighter2]], [[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] và [[Thành viên:WhoAlone|WhoAlone]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :{{Ý kiến}} {{ping|P. ĐĂNG}} Hiện tôi đã liệt kê hết các trang tạo bởi chính thành viên này rồi, mời bạn xem tại [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối|đây]]. – <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> 02:52, ngày 13 tháng 4 năm 2024 (UTC) ::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Dựa theo quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Tên của các thực thể cụ thể], [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Place_names Tên địa danh] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Tên hư cấu]. Tại dòng " if they have three citations of figurative use that fulfill attestation requirements" và "Such terms which have three citations in separate works, but which do not have three citations that are independent of reference to that universe, may be included only in appendices of words from that universe, and not in the main dictionary space." Tôi đã xóa một số trang vì không đáp ứng tiêu chí được nhắc đến thông qua các trích dẫn đáp ứng theo điều kiện. Còn một số bài giữ lại, mời bạn cải thiện chất lượng cùng tôi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:14, ngày 13 tháng 4 năm 2024 (UTC) {{Kết biểu quyết}} == {{u|Dragon Immortal (Rồng Tiên)}} == Mấy ngày nay do tôi dịch truyện nên đôi khi giám sát thay đổi gần đây. Khi đang giám sát thì tôi vẫn thấy thành viên {{u|Dragon Immortal (Rồng Tiên)}} vẫn tiếp tục tạo những tài khoản phụ/rối khác dù đã nhắc nhở lần một. Tôi tạm liệt kê các tài khoản mới như sau: * {{u|Heavenly Immortals (Thiên Tiên)}} (mở tài khoản ngày 19 tháng 4 năm 2024) * {{u|Maitrī-karuṇā (benevolence and compassion)}} (mở tài khoản ngày 26 tháng 5 năm 2024) * {{u|Golden Immortal (Kim Tiên)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Nhân từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Tâm từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) Tôi có nên cấm các tài khoản này hay là chỉ nhắc thành viên thôi? – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:18, ngày 28 tháng 5 năm 2024 (UTC) :Tagging: {{ping|P. ĐĂNG|TheHighFighter2|WhoAlone}} – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:19, ngày 28 tháng 5 năm 2024 (UTC) ::Khi bạn nhắc nhở, các tài khoản này có phản hồi không hay chỉ tiếp tục tạo trang? – [[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:21, ngày 28 tháng 5 năm 2024 (UTC) :::{{ping|WhoAlone}} Chắc họ sẽ không phản hồi đâu bạn, chỉ tiếp tục sửa đổi hoặc tạo trang thôi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:29, ngày 28 tháng 5 năm 2024 (UTC) ::::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]], [[Thành viên:WhoAlone]] Chính sách quy định Wikimedia không cấm tv dùng nhiều hơn 1 tk với điều kiện công khai và không dùng cho lách luật. Tk [[Thành viên:Dragon Immortal (Rồng Tiên)|Dragon Immortal (Rồng Tiên)]] là tk chính đã được nhắc vào ngày 13/4/2024. Tính sau ngày này, kiểm tra qua các sửa đổi bao gồm tk rối, nếu có sai phạm như cũ các tk phụ và chính sẽ bị xử lí. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:51, ngày 28 tháng 5 năm 2024 (UTC) {{tick}} Đã xem qua các sửa đổi (bao gồm các tk phụ). Các tk phụ không có hành vi đáng lo ngại, sửa đổi thêm nội dung bình thường chủ yếu lấy từ web thuvienhoasen. Tk chính tiếp tục có hành vi tạo bài chất lượng kém. Tv có cải thiện ở các bài đã tạo khác nên lần này tôi dừng lại ở việc nhắc nhở. Tv này và các tk phụ sẽ cần chúng ta theo dõi thêm. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 10:57, ngày 31 tháng 5 năm 2024 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] @[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Mới quay lại sau những tháng ngày wikibreak kaka, nhân tiện tôi thấy 1 trong số tk bạn Nguyên nêu có 1 tk bị khóa toàn cục, vậy có nên cấm hết số chúng ko nhỉ? – [[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>]]) 03:05, ngày 26 tháng 7 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} "Hưng", không phải "Nguyên". Tất cả các tài khoản này đã bị cấm toàn cục do chúng là rối của Trân đấy thôi, nên là không cần cấm nữa. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 03:26, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Nguyên Hưng Trần}} Tôi có check trang [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]] thấy bạn có bỏ sót {{u|Fairy (đồng tính nam)}}. Một điều nữa, số tk này được cho là rối của Trân? Tôi khá bất ngờ ko biết từ trước nay Trân đã làm gì? [[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>]]) 03:34, ngày 26 tháng 7 năm 2024 (UTC) ::::Đã cấm. [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Số tk này tạo bài clk, thêm nội dung sai, tách lên đến trên 1 chục tk. Tiếp viên đã checkuser và xác nhận là Trân + khóa toàn cục các tk này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:13, ngày 26 tháng 7 năm 2024 (UTC) :::::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] tiếp viên checkuser xác nhận là Trân? Theo 1 tiếp viên trên SGC thông thường họ sẽ có quyền kiểm định tại trang loginwiki và chỉ vạch trần được các tài khoản đã log in hoặc được tạo dưới danh nghĩa cùng chung 1 địa chỉ IP, nếu checkuser của tiếp viên mạnh vậy thì cũng ko cần đến KĐV làm gì, phải chứ. Tôi vẫn tin rằng đây ko phải là Trân. Đó có thể là kẻ nào đó do tôi chưa xác định được IP nên ko thức sự chắc và chưa thể biết rằng đây là ai và có phải là Trân hay ko vì "Trân rất hiếm khi hoặc không đóng góp Wiktionary", trong khi quá rõ ràng Rồng Tiên khi lập acc xong đóng góp luôn trên đây. Theo tiếp viên EPIC Trân thường dùng nhà mạng Viettel, như vậy tv Rồng Tiên phải dùng nhà mạng Viettel, vpn/proxy hay cùng 1 thiết bị tôi mới khẳng định được đây là Trân được. Tôi nói thật là trước đây từng đang trong nỗi trầm cảm ko sao thoát được vì vụ lùm xùm bên vi tôi có tìm và làm quen Trân vì Trân giống tôi chỗ "đóng góp cho dự án khác trong khi bị cấm bên vi" và đã có nhiều BCB bên en cộng thêm hồi Trân chưa bị cấm từng là thiên địch của TTS nên tôi luôn tin tưởng Trân kaka, nhưng sau khi Trân bị cấm bên en thì tôi tạm gạt đi để bảo toàn uy tín, tâm đức và trí huệ của mình kaka nếu đây là Trân thật thì tôi sẽ cắt đứt cái mác best friend forever, đề cao cảnh giác, và sẵn lòng xử lý Trân vì hành vi múa rối sau tháng ngày tôi vắng kaka tôi có nói hơi quá ko nhỉ do 1 chút hướng nội và trình độ văn 5 điểm. – [[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>]]) 08:39, ngày 26 tháng 7 năm 2024 (UTC) ::::::[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Các tk trên chưa liệt kê đầy đủ (như tôi đã nói trên 1 chục tk đã được tạo; con số chính xác có thể gần 20 tk). Vì việc rối này tiền lệ rất hiếm hoạt động tại đây nên việc ngăn chặn đã diễn ra khá vòng vo vì chủ quan như vậy. Nếu xem kĩ, bạn sẽ nhận thấy cách đặt tên các tk này đều có điểm tương đồng. Một trong số tk đó có hoạt động bên Wikipedia Vi hoặc cả dự án khác... và bị một tuần tra viên khác wiki vi báo lên Meta với lý do rối Trân. Tôi đã trao đổi với tiếp viên Meta để xác nhận có dùng CU để xử lý yêu cầu đó không, và được tiếp viên trực tiếp cấm xác nhận có. Chính tôi là người sau đó chịu tránh nhiệm báo cáo các tk của rối này còn lại đã từng hoạt động tại Wiktionary. Tv này vẫn tiếp tục đang hoạt động bên wiki vi hiện tại và hàng loạt tk rối đã được báo lên để cấm taị wiki và Meta. Các vấn đề cá nhân tôi xin phép không thảo luận đến và khép lại vụ việc ở đây vì tất cả đã được xử lý. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:28, ngày 27 tháng 7 năm 2024 (UTC) : Mặc dù sự việc này đã xảy ra hơn 1 năm nhưng đống rác mục từ do nhóm rối này tạo vẫn chưa xử lý xong. [[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:10, ngày 31 tháng 12 năm 2025 (UTC) == Mã hóa dấu sóng trong Unicode == Xin mọi người xem xét [[s:Wikisource:Thảo luận/Mã hóa dấu sóng trong Unicode|tin tức về vụ mã hóa dấu sóng]] của bảng chữ cái quốc ngữ gốc trong Unicode. Nếu chuẩn hóa dấu này thì sẽ có thể xây dựng phần [[:Thể loại:Mục từ tiếng Việt trung cổ|tiếng Việt trung cổ]] dễ dàng hơn. – [[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:41, ngày 2 tháng 7 năm 2024 (UTC) == Có vấn đề tại [[Wiktionary:Trang Chính|Trang chính của Wiktionary tiếng Việt]] == Khi vào trang chính, nó có lỗi hiển thị số lượng ngôn ngữ. Ví dụ: * Hiện chúng ta có '''[[Đặc biệt:Thống kê|277,219 từ]]''' thuộc về '''[[Phụ lục:Ngôn ngữ|0 ngôn ngữ]]''' * Phần đề mục "Mục từ mới" hiển thị: '''-2 ngôn ngữ khá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>]] 04:39, ngày 16 tháng 10 năm 2024 (UTC) :Vấn đề bảo trì này xin mời BQV giao diện [[Thành viên:TheHighFighter2|TheHighFighter2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:47, ngày 16 tháng 10 năm 2024 (UTC) == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] như ở trang [https://vi.wiktionary.org/w/index.php?title=subsidiaries&oldid=1922998 subsidiaries], [https://vi.wiktionary.org/w/index.php?title=wheels&oldid=1946583 wheels]…[[Đặc biệt:Contributions/118.68.140.41|118.68.140.41]] ([[Thảo luận Thành viên:118.68.140.41|thảo luận]]) 05:40, ngày 21 tháng 11 năm 2024 (UTC) : {{ping|Trong Dang|TheHighFighter2}} Cảm ơn hai bạn đã sửa giúp ở [https://vi.wiktionary.org/w/index.php?title=subsidiaries&diff=prev&oldid=2190258 đây] và [https://vi.wiktionary.org/w/index.php?title=wheels&diff=prev&oldid=2190315 đây]. Việc thiếu tham số en còn tồn tại ở hàng loạt bài khác như [https://vi.wiktionary.org/w/index.php?title=cookies&oldid=1817694 cookies], [https://vi.wiktionary.org/w/index.php?title=quizzes&oldid=1901703 quizzes]… Có cách nào để giải quyết hàng loạt chứ sửa thủ công cũng mắc công mọi người.[[Đặc biệt:Contributions/1.52.135.108|1.52.135.108]] ([[Thảo luận Thành viên:1.52.135.108|thảo luận]]) 03:13, ngày 4 tháng 12 năm 2024 (UTC) == <span lang="en" dir="ltr">Migration to Parsoid</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Hello everyone! I am glad to inform you that as the next step in the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, Parsoid will soon be turned on as the default article renderer on your Wiktionary. We are gradually increasing the number of wikis using Parsoid, with the intention of making it the default wikitext parser for MediaWiki's next long-term support release. This will make our wikis more reliable and consistent for editors, readers, and tools to use, as well as making the development of future wikitext features easier. If this transition disrupts your workflow, don’t worry! You can still opt out through a user preference or turn Parsoid off on the current page using the Tools submenu, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation. There is [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Confidence_Framework|more information about our roll-out strategy]] available, including the testing done before we turn on Parsoid for a new wiki. To report bugs and issues, please look at our [[mw:Special:MyLanguage/Parsoid/Parser Unification/Known Issues|known issues]] documentation and if you found a new bug please create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]]. <section end="announcement-content" /> </div> <em>[[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Parsoid Read Views/Wiktionary Announcement|{{MediaWiki:Please-translate}}]]</em> <bdi lang="en" dir="ltr">[[mw:User:CAnanian (WMF)|C. Scott Ananian]] (Parsoid technical lead)</bdi> 20:48, ngày 12 tháng 2 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:CAnanian (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Wikimedia_Foundation/Product_and_Technology/Parsoid_Read_Views/2025-02-12_Wiktionaries&oldid=28256121 --> == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # [[User:ThiênĐế98]] (bảo quản viên) # [[User:Trần Nguyễn Minh Huy]] (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, – [[Thành viên:EPIC|EPIC]] ([[Thảo luận Thành viên:EPIC|thảo luận]]) 23:16, ngày 22 tháng 2 năm 2025 (UTC) == Các bản mẫu lỗi thời == {{Wiktionary:Thảo luận/Các bản mẫu lỗi thời}} == Số mục từ == Theo tiêu chuẩn, các trang nội dung trong không gian chính có thể chứa hơn một mục từ theo ngôn ngữ, nhưng phần mềm không tính các mục từ này, chỉ tính số trang thôi. Trong nhiều năm trước đây, {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary/A|Mô đun:Thống kê Wiktionary]] sử dụng các từ khóa <code>pagesincategory:</code> để cộng lại số trang trong các thể loại con của [[:Thể loại:Mục từ theo ngôn ngữ]]. Đây là tổng số được trình bày rất đáng kể trên Trang Chính và [[Đặc biệt:Thống kê|trang thống kê]]. Cách đây khoảng 2 năm, hệ thống này [[Thảo luận Mô đun:Thống kê Wiktionary/A#Sự cố do mức độ xử lý cao|bị vỡ]] khi thêm nhiều ngôn ngữ quá mức vào hệ thống bản mẫu. Vì chúng ta vẫn tiếp tục thêm nhiều ngôn ngữ, phương pháp cũ không còn có lý nữa, nhưng chúng ta vẫn nên phân biệt các mục từ theo ngôn ngữ để cho các độc giả biết kích cỡ thật của từ điển này. Hôm qua tôi tái tạo {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary]] tính theo một [[c:Data:Vietnamese Wiktionary language category statistics.tab|bảng dữ liệu]] ở Wikimedia Commons. Vì API đã có thể cho ra các tên thể loại, chúng ta không cần phải quản lý danh sách thể loại ngôn ngữ thủ công như trước. Tạm thời tôi sẽ cố gắng cập nhật bảng này thường xuyên một cách thủ công. Hy vọng rằng chúng ta sẽ tìm cách để chạy bot để cập nhật nó một cách tự động, hoặc liên lạc với chuyên gia về bot để cập nhật giùm. Xin thử hệ thống này cho một thời gian, nếu không được thì có thể tìm cách khác để xác định số mục từ thật. Cám ơn sự kiên nhẫn của các bạn. &nbsp;&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> 13:17, ngày 11 tháng 7 năm 2025 (UTC) == Đợt cải cách thể chế == Các bạn trong nước có lẽ đang bận cập nhật các bài Wikipedia về [[:w:vi:Danh sách đơn vị hành chính Việt Nam trong đợt cải cách thể chế 2024–2025|đợt cải cách thể chế]] mấy tháng nay. Xin đừng bỏ lỡ Wiktionary. Hình như [[Thành viên:MuDavid|MuDavid]] đã cập nhật hàng loạt mục từ bên Wiktionary tiếng Anh, nhưng bên đây chưa được cập nhật. Ngoài ra, các mục từ tên huyện, quận cũng chưa được cập nhật. Có cần tự động hóa các thay đổi này không, hoặc nên cập nhật thủ công từng địa danh một? – [[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> 17:31, ngày 11 tháng 7 năm 2025 (UTC) :[[Thành viên:Mxn|Mxn]] Tôi quên tất việc Wiktionary cũng cần được cập nhật một số thông tin mới này. Nếu được, tôi nghĩ nên hỗ trợ phần nào bằng việc tự động hóa các mục từ trong [[:Thể loại:Địa danh tiếng Việt]] (vì chúng ta chưa kể còn thể loại các danh sách địa danh tên riêng có tiếng Việt). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:45, ngày 11 tháng 7 năm 2025 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]]: Tự động hóa có nghĩa cấu trúc lại bằng {{LKBM|place}} phải không? [[Mô đun:place/placetypes]] đại khái vẫn chưa được dịch sang tiếng Việt. Chắc cần để ý đến cả ngữ pháp đối với mô đun này, thí dụ xóa các trường hợp số nhiều. Sau đó có thể chạy bot thay thế các định nghĩa theo biểu thức chính quy. Có lẽ việc này có thể xảy ra cùng lúc với việc thủ công thêm nhãn {{LKBM|@|sử}} hay {{LKBM|nhãn|vi|historical}} và định nghĩa mới. – [[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> 22:51, ngày 16 tháng 7 năm 2025 (UTC) :::Rất xin lỗi [[Thảo luận Thành viên:Mxn|Mxn]] vì phản hồi trễ. Bạn có thể trình bày một số ý tưởng tự động hóa bằng bot không? Hiện tại, sau khi nghĩ kỹ, tôi nhận thấy việc cập nhật mục từ có ảnh hưởng từ đợt cải cách này chủ yếu sẽ thực hiện "định nghĩa mới" (nội dung). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:54, ngày 24 tháng 7 năm 2025 (UTC) : @[[Thành viên:Mxn|Mxn]] Tôi nghĩ đề xuất tên thể loại đối với địa danh, chẳng hạn như [[:Thể loại:Địa danh của Việt Nam]], [[:Thể loại:Tỉnh của Nhật Bản]], [[:Thể loại:Khu tự quản của Slovenia]]. [[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:55, ngày 27 tháng 7 năm 2025 (UTC) : Bản chất [[:Thể loại:Địa danh tiếng Việt]] nó thuộc về thể loại này ([[:en:Category:vi:Places]]) [[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:57, ngày 27 tháng 7 năm 2025 (UTC) == Thông báo: FVDP đã bị xóa == Tin buồn cách đây vài tháng nhưng không ai để ý đó là từ điển FVDP [https://www.informatik.uni-leipzig.de/~duc/Dict/ gốc], một tài liệu từ điển mở là nền móng đầu tiên của Wiktionary tiếng Việt ngày nay đã bị trường đại học ở leipzig xóa, khả năng là web quá cũ và quá lâu nên xóa để cập nhật. Tất cả nguồn khác đã die từ rất lâu: Hiện từ điển này vẫn còn lưu trữ trên một số trang sau: * Wayback ** [https://web.archive.org/web/*/https://www.informatik.uni-leipzig.de/~duc/Java/J2ME/MobiPocket/* Từ điển offline MobiPocket Reader], có một số bản từ điển Anh-Việt (bản đầy đủ), Pháp Việt và Việt Pháp. ** [https://dict.quehuong.org quehuong.org], bản này có vẻ như lấy từ FVDP. Cảm ơn đã xem và cảm ơn, trân trọng kính báo. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:09, ngày 19 tháng 7 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]]: Thật buồn quá. Tôi đã cập nhật {{LKBM|R:FVDP}} để liên kết đến các gói dữ liệu DICT gốc được lưu trữ tại Wayback Machine. (Các gói này cũng bao gồm một số từ điển song ngữ và rất nhiều mục từ tiếng Việt chưa được nhập vào đây.) Ngày nào có thì giờ tôi tính thiết lập máy chủ DICT để mirror FVDP tại [[Wikitech:Portal:Toolforge|Toolforge]] để dễ tham khảo hơn. – [[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:53, ngày 22 tháng 7 năm 2025 (UTC) == 📢 Thông báo: Quy tắc mới cho Mô đun:Category tree == Để thống nhất cách đặt tên thể loại và đảm bảo '''Mô đun:Category tree''' hoạt động chính xác, kể từ nay vui lòng tuân thủ các quy tắc sau: === 1️⃣ Quy tắc chung === * Tên thể loại có dạng: <pre> Label + tên ngôn ngữ </pre> ;Ví dụ: * ''Danh từ tiếng Việt'' * ''Động từ tiếng Anh'' * ''Thành ngữ tiếng Pháp'' === 2️⃣ Quy tắc cho các chủ đề === * Với các thể loại đang có dạng: <pre> Chủ đề\Tên Ngôn ngữ </pre> hãy chuyển toàn bộ về: <pre> Mã ngôn ngữ:Tên chủ đề </pre> ;Ví dụ: * <code>Động vật\Tiếng Anh</code> → <code>en:Động vật</code> * <code>Ẩm thực\Tiếng Việt</code> → <code>vi:Ẩm thực</code> === 3️⃣ Quy tắc cho tên có chứa ngôn ngữ ở giữa === * Áp dụng khi tên thể loại có '''tên ngôn ngữ''' không nằm ở đầu hay cuối, mà xuất hiện bên trong cụm từ. * Trường hợp phổ biến: <pre> Thể loại:Từ tiếng [Ngôn ngữ] theo từ nguyên </pre> hãy đổi thành: <pre> Thể loại:Từ theo từ nguyên tiếng [Ngôn ngữ] </pre> ;Ví dụ: * <code>Thể loại:Từ tiếng Việt theo từ nguyên</code> → <code>Thể loại:Từ theo từ nguyên tiếng Việt</code> '''💡 Lưu ý:''' * Mã ngôn ngữ cần tuân thủ thứ tự ưu tiên sau: ** Ưu tiên 1: chuẩn ISO&nbsp;639-1 (hai ký tự, nếu có). ** Ưu tiên 2: chuẩn ISO&nbsp;639-2 (ba ký tự, nếu không có ISO&nbsp;639-1). ** Ưu tiên 3: chuẩn ISO&nbsp;639-3 (ba ký tự, khi không có 639-1 hoặc 639-2). * Cập nhật liên kết trong các trang con khi đổi tên để tránh lỗi hiển thị. * Do hạn chế về bản mẫu, một số thể loại con hiện vẫn chưa thể thêm được module này; xin vui lòng thêm thể loại đó bằng tay. ---- ✨ '''Kính mời mọi người giúp đỡ''' trong việc rà soát và áp dụng các quy tắc trên, nhằm giữ cho hệ thống thể loại luôn rõ ràng và đồng bộ.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:17, ngày 14 tháng 9 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]], @[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] Bên en có 2 thể loại khác nhau là [[:en:Category:English numbers]] và [[:en:Category:English numerals]]. Nên thống nhất dịch "numbers" là "số", còn "numerals" là "số từ" để sửa lại liên kết Wikidata và những nội dung khác liên quan--.--[[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:49, ngày 14 tháng 9 năm 2025 (UTC) :: @[[Thành viên:TheHighFighter2|TheHighFighter2]] Sẽ mất rất nhiều thời gian để sửa lại các vấn đề liên quan đến số và số từ. [[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:15, ngày 30 tháng 10 năm 2025 (UTC) :::@[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] "Cứ từ từ rồi khoai nó cũng nhừ" --.--[[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:50, ngày 30 tháng 10 năm 2025 (UTC) : @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Tôi đề xuất thêm đổi thể loại liên quan đến vần. Ví dụ như đổi [[:Thể loại:Vần tiếng Estonia/aht]] thành [[:Thể loại:Vần:Tiếng Estonia/aht]]. [[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>]]) 08:59, ngày 18 tháng 9 năm 2025 (UTC) ::Hình như chúng ta chưa có thể loại vần mà nhỉ, em thấy nhiều mục từ có tiêu đề rõ ràng là không đúng quy tắc – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:03, ngày 18 tháng 9 năm 2025 (UTC) ::: @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Nhắc mới nhớ dự án chúng ta chưa có không gian tên Rhymes (Vần). [[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>]]) 09:07, ngày 18 tháng 9 năm 2025 (UTC) ::::Khả năng phải gọi @[[Thành viên:Mxn|Mxn]] ra ý kiến thôi – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:23, ngày 18 tháng 9 năm 2025 (UTC) == Thông báo: Twinkle đã hoạt động == Wiktionary tiếng Việt hiện đã có Twinkle, Các thành viên có thể sử dụng bằng cách bật trong tùy chọn. :'''Lưu ý''': Hiện đang dịch sang tiếng Việt và do thiếu bản mẫu, có thể một số tính năng không hoạt động đúng. Tuy nhiên so với bản của Hide of Roze thì bản này là bản từ Wikipedia tiếng Anh nên tất cả tính năng được xác nhận là hoạt động được, chỉ là thiếu bản mẫu mà thôi. :BQV nào rảnh có thể qua dịch cù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]]) 16:36, ngày 5 tháng 10 năm 2025 (UTC) == Từ điển giấy == Thân tặng mọi người ''Từ điển tiếng Việt'' [https://archive.org/details/1BkF0KZgSGksZHbQzxaWVqrF7VV8hvnJjcozsFGyULH2/page/n3/mode/2up bản năm 2021] của Hoàng Phê để phát triển dự án. – [[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]]) 22:38, ngày 26 tháng 10 năm 2025 (UTC) :Cảm ơn bác nhiều nhé. Cái này em sẽ đưa vào bản mẫu tham khảo để trích dẫn các từ có dẫn lại định nghĩa từ từ điển này (có viết lạ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]]) 02:49, ngày 27 tháng 10 năm 2025 (UTC) == Biểu quyết tước quyền == Đáng tiếc, tôi [[Wiktionary:Biểu quyết#Tước quyền hành chính viên, bảo quản viên của Nguyentrongphu|đề nghị tước các quyền đặc biệt]] của hành chính viên [[Thành viên:Nguyentrongphu|Nguyentrongphu]] vào lúc đã bị cấm toàn cục. Xin tham gia cuộc biểu quyết. – [[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:59, ngày 29 tháng 10 năm 2025 (UTC) == [[Mô đun:cs-sk-headword/testcases]] misuse == "Mô đun:*/testcases" pages should only be used for unit tests. This page should be renamed to a new title without the "/testcases" suffix. – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 04:15, ngày 11 tháng 11 năm 2025 (UTC) :@[[Thành viên:Public class|Public class]] Thanks for your noticed. I already updated main module ([[Mô đun:cs-sk-headword]]). – [[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:36, ngày 11 tháng 11 năm 2025 (UTC) == Lỗi hiển thị liên kết (2) == Tôi vừa thêm thông tin vào [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ]]. Có liên kết. Viết liên kết xong nó xem trước và xem chính thức gì nó cũng biến mất cả đoạn trong dấu ngoặc vuông luôn. Mà tạo liên kết ở mấy trang khác như trang này thì rất ok. Không biết lỗi gì đây. – [[Thành viên:NHNAnh|NHNAnh]] ([[Thảo luận Thành viên:NHNAnh|thảo luận]]) 10:02, ngày 19 tháng 2 năm 2026 (UTC) :@[[Thành viên:NHNAnh|NHNAnh]] Bạn phải thêm dấu hai chấm vào trước, vd: <syntaxhighlight lang="javascript">[[:Thể loại:Mục từ tiếng Anh|Tiếng Anh]]</syntaxhighlight> :Ngoài ra, thay vì thêm thông tin vào trang chính, hãy đưa vào các trang con xếp theo bảng chữ cái, như trang [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ/A]]. :Tôi vừa xem qua, trên di động không hiển thị bảng mục lục chữ cái giống như trên máy tính. Tôi sẽ sớm khắc phục vấn đề này. :--.--[[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]]) 12:45, ngày 19 tháng 2 năm 2026 (UTC) == Thông báo vê tratu.soha.vn == Sau một thời gian theo dõi và đánh giá, em nhận thấy hiện tại '''không nên sử dụng vào tratu.soha.vn để sao chép, tra cứu hay tham khảo nội dung'''. Nguyên nhân là do trang này dùng MediaWiki quá cũ hiện đang tỏ ra rất thiếu ổn định. Qua kiểm tra các thay đổi gần đây, có thể xác nhận rằng tratu.soha.vn thường xuyên bị tấn công. Trong vài tháng trở lại đây, trung bình mỗi tháng trang này đều phải hứng chịu ít nhất một đợt tấn công dẫn đến gián đoạn. Đợt tấn công không chiếm được toàn bộ hệ thống, nhưng đã gây ra tình trạng sập trang web tạm thời, chèn link quảng cáo, spam nội dung trong một số trang wiki, mục từ thì không thấy bị sao. Sau ngày 3 tháng 6, có vẻ như quản trị web đã quyết định áp dụng biện pháp giới hạn lượng truy cập nhằm bảo vệ hệ thống dẫn đến hệ lụy tạm thời hay gặp các lỗi 502 (Bad Gateway) hoặc 503 (Service Unavailable), khiến việc truy cập trở nên khó khăn và không đáng tin cậy. Vì những lý do trên, em nghĩ hãy sử dụng các nguồn tra cứu thay thế uy tín hơn. Em đã xác nhận một số nguồn sau đây có vẻ như là sao chép từ tratu hoặc có nội dung tương tự. * https://tudientv.com/ trang này là chuyên về từ điển tiếng Việt, trên website có nói nội dung hầu hết từ "Từ điển Soha. Đây là nguồn dữ liệu chính do Vietlex biên soạn (Hoàng Phê chủ biên)", đã kiểm tra và xác nhận, tra cứu rất nhanh và ổn định nhưng có vấn đề là nội dung không đầy đủ, một số mục từ mất nội dung do quá trình trích xuất bị thiếu những nội dung ngoài lập trình. * https://v2.rung.vn/ hình như là bản sao của Tratu nhưng có các mục từ mới, dẫn đến một số kho mục từ cao hơn trang gốc * Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học phiên bản 2018 và 2021 - 2 cái này hình như phần lớn có nội dung tương tự tratu, có thể tham khảo được. Vietlex thì họ không xuất bản từ điển online. Phiên bản sau năm 2008 không có trên mạng, chỉ có bán sách. Bản 2008 hình như chỉ có trên Tratu. Vì vậy nên dùng Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học. Các bác biên tập mục từ chú ý nhé. Cập nhật: Trang tratu.soha.vn tạm thời offline hoàn toàn, không còn truy cập được nữa, báo lỗi 503, có vẻ là máy chủ đã bị down hoặc quá tả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]]) 16:45, ngày 10 tháng 6 năm 2026 (UTC) :'''Update''': Website đã quay lại. Mọi người có thể dùng bình thườ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]]) 10:11, ngày 12 tháng 6 năm 2026 (UTC) : Thấy mấy trang trong thông báo không thấy trang nào đạt "uy tín". Nếu bên Soha Tra từ có trục trặc, thì nên tiến hành archive dần các liên kết. Tất nhiên có thể Wiktionary có tiêu chuẩn nguồn khác Wikipedia, nên là "chắc dùng cũng được". [[Thành viên:Plantaest|Plantaest]] ([[Thảo luận Thành viên:Plantaest|thảo luận]]) 17:37, ngày 19 tháng 6 năm 2026 (UTC) == Yummie == Nếu như bên viwiki thì bơ luôn Yummie để các BQV toàn cục cấm và các tiếp viên khóa hoặc cấm toàn cục + dừng tạo trang với biển rối vì nếu đặt biển rối thì hắn sẽ trở nên "nổi tiếng", thì bên viwikt cũng nên làm như vậy. Có ai đồng ý với tôi không? – [[Thành viên:Higashizakura|<span style="color:black; font-family:Noto Serif JP, serif;">'''Đông Anh'''🌸</span>]]<sup style="font-family:Noto Serif JP, serif">[[Thảo luận Thành viên:Higashizakura|話す]]</sup> 01:08, ngày 5 tháng 9 năm 2026 (UTC) : Cách tốt nhất đối phó tên này là bơ đi và cứ xử lý cấm tài khoản vô hạn như thường. Sau đó xóa các phiên bản do rối phá hoại. Cấm TKTT chỉ tác dụng một phần, tìm IP trong TKTT và phải cấm cả dải 32/48 (IPv6) hoặc dải 16/20 (IPv4). [[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>]]) 10:59, ngày 5 tháng 9 năm 2026 (UTC) ::WHAT ARE YOU DOING! – [[Thành viên:Helirium333|Helirium333]] ([[Thảo luận Thành viên:Helirium333|thảo luận]]) 09:46, ngày 26 tháng 9 năm 2026 (UTC) == Quyền người tự đánh dấu tuần tra == Lưu ý là quyền hạn người tự đánh dấu tuần tra và tuần tra viên hiện không có sẵn một cách riêng biệt tại dự án và chỉ được phân công, giao cho bảo quản viên phụ trách tôi có nhắc đến ở [https://vi.wiktionary.org/w/index.php?title=Wiktionary:Ng%C6%B0%E1%BB%9Di_t%E1%BB%B1_%C4%91%C3%A1nh_d%E1%BA%A5u_tu%E1%BA%A7n_tra&diff=prev&oldid=2562855 đây] và [https://vi.wiktionary.org/w/index.php?title=Wiktionary:B%E1%BA%A3o_qu%E1%BA%A3n_vi%C3%AAn&diff=prev&oldid=2562859 đây]. Tôi muốn quyền này được thêm riêng vào dự án hoặc sẵn tiện cấp phát thẳng vào quyền người lùi sửa để rút ngắn thời gian làm việc của bảo quản viên trong công tác tuần tra (tôi biết là có thể phải thông qua một số quy trình phức tạp trên Phabricator hoặc tư vấn với tiếp viên bên meta), mong mọi người hỗ trợ. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 22:19, ngày 12 tháng 9 năm 2026 (UTC) == Cập nhật == Hiện tại [[Mô đun:headword]] bên en có một số chức năng mới cập nhật. Do đó mô đun này sẽ được cập nhật lại, nếu phát hiện lỗi xin vui lòng báo lại tại đây. Một số trang có thể gặp lỗi do chức năng altform=1 sẽ sớm thay bằng var=1. Note: [[Mô đun:pron qualifier]] (cũ) và [[Mô đun:decorations]] (mới) sẽ để riêng, tạm thời chưa xóa cái pron qualifier. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:27, ngày 25 tháng 9 năm 2026 (UTC) : Đề nghị xóa [[Mô đun:headword/util]] do không còn dùng bất kỳ chức năng gọi mô đun chính của headword. [[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>]]) 08:14, ngày 25 tháng 9 năm 2026 (UTC) pfd4f5yrnjdwvtq249fobayrv6pmlwz 2566629 2566628 2026-09-26T09:47:19Z Quinlan83 46637 Đã lùi lại sửa đổi của [[Special:Contributions/Helirium333|Helirium333]] ([[User talk:Helirium333|thảo luận]]) quay về phiên bản cuối của [[User:Hiyuune|Hiyuune]] 2566323 wikitext text/x-wiki {{Wiktionary:Thảo luận/Đầu}} == Thêm một vấn đề lớn nữa ở Wiktionary tiếng Việt == Sau khi kiểm tra [[Đặc biệt:Trang ngắn]], tôi phát hiện đặc điểm của các trang có dung lượng rất ngắn này gồm thiếu liên kết, không có thể loại là chủ yếu. Do số lượng mục từ kiểu này khá nhiều nên nó đã trở thành một vấn đề lớn nữa ở Wiktionary tiếng Việt. Mong các bạn dành thời gian cải thiện lại chúng. 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>]] 13:24, ngày 9 tháng 2 năm 2022 (UTC) :Đây là những mục từ được tạo trong thời gian năm 2017, thời gian gần như không ai quản lý Wiktionary nên cũng không trách đượ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]]) 03:57, ngày 11 tháng 2 năm 2022 (UTC) ::Tôi không có ý trách ai cả. Quan trọng là có ai đủ thời gian để cải thiện lại chúng. Tôi thì hiện nay không dùng máy tính nhiều nên không thể làm hết được. – [[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>]] 13:59, ngày 11 tháng 2 năm 2022 (UTC) : Hiện tại phần lớn các mục từ dung lượng ngắn đều là các mục từ dùng với ja-see và zh-see. Phần lớn chúng đã được xếp thể loại tương ứng. [[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>]]) 10:04, ngày 30 tháng 7 năm 2026 (UTC) == Phát hiện trường hợp ngôn ngữ không có mã ISO 639: Saanich == Kiểm tra trên trang web chính thức của ISO 639-3, [https://iso639-3.sil.org/search/content/Saanich không có kết quả]. Wikipedia tiếng Anh cho rằng mã ISO 15924 của ngôn ngữ này cũng là “Latn”. Vậy trường hợp này nên giải quyết thế nào? 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>]] 11:37, ngày 22 tháng 2 năm 2022 (UTC) :{{u|Ccv2020}} Theo tôi, thì có thể dùng mã "-saan-" (viết tắt của 4 chữ cái đầu)--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:39, ngày 24 tháng 2 năm 2022 (UTC) :@[[Thành viên:Ccv2020|Ccv2020]]: Tiếng Saanich trực thuộc [[w:en:North Straits Salish language|tiếng Salish eo bắc]] có mã ISO&nbsp;639 là "str". [https://www.ethnologue.com/language/str] Wiktionary tiếng Anh sử dụng mã này trong [[:en:Module:languages/canonical names]]. ISO&nbsp;15924 là "Latn" chỉ có nghĩa rằng ngôn ngữ này được viết bằng chữ Latinh. – [[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> 22:47, ngày 21 tháng 5 năm 2022 (UTC) ::{{u|Mxn}}: Cảm ơn bạn đã hỗ trợ. [[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>]] 02:15, ngày 22 tháng 5 năm 2022 (UTC) == [[𥜥]] == [[MediaWiki:Gadget-TabbedLanguages.js|Gadget TabbedLanguages]] hình như không hoạt động tốt với bảng nổi. Liên kết đến Đặc biệt:Tiền tố không nhấp được. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 09:23, ngày 24 tháng 4 năm 2022 (UTC) :{{u|NguoiDungKhongDinhDanh}}: Tôi thấy nó vẫn hoạt động bình thường. Bạn thử kiểm tra xem lỗi do xung đột tiện ích nào. [[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>]] 10:42, ngày 24 tháng 4 năm 2022 (UTC) ::{{ping|Ccv2020}} Tôi đã thử bật safemode. Kết quả vẫn vậy. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 10:48, ngày 24 tháng 4 năm 2022 (UTC) :::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Có cài [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets|tiện ích wiki]] khác nào khô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> 22:38, ngày 21 tháng 5 năm 2022 (UTC) ::::{{ping|Mxn}} Một số, nhưng có vẻ không liên quan. Anh có thể thử tải [[MediaWiki:Gadget-TabbedLanguages.js|gadget]] bằng bảng điều khiển của trình duyệt khi [{{fullurl:𥜥|safemode=1}} bật safemode]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 22:43, ngày 21 tháng 5 năm 2022 (UTC) :::::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Chế độ safemode tắt tất cả các tiện ích, kể cả TabbedLanguages, nên dĩ nhiên nó không hoạt động. Đọc lại hình như bạn báo cáo về {{LKBM|zho-prefix}} chiếm cả một bên trang. Theo tôi, bản mẫu này nên được đưa bên dưới {{LKBM|-Hani-}} vì nó có liên quan đến phần đó. Nếu không thì tiện ích nên đưa hộp này tới đâu? – [[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> 22:52, ngày 21 tháng 5 năm 2022 (UTC) ::::::{{ping|Mxn}} ...và vì thế nên tôi mới tải thủ công bằng bảng điều khiển trình duyệt. Ngoài ra, lỗi chỉ tái hiện được nếu mục lục bị ẩn. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 23:00, ngày 21 tháng 5 năm 2022 (UTC) == Lỗi hiển thị liên kết? == Gần đây, khi tôi vừa tạo trang mới thì vẫn thấy xuất hiện liên kết đỏ. Cụ thể là sau khi thêm liên kết đó vào một trang rồi tạo trang đó, sau khi tải lại trang thì liên kết đỏ vẫn xuất hiện, trong khi thực tế trang đã tồn tại. Không rõ đây có phải lỗi hay không, nhưng khi làm mới trang hoàn toàn thì không thấy xuất hiện liên kết đỏ nữa. Ai đó xin giải thích giúp mình với, 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>]] 02:20, ngày 27 tháng 4 năm 2022 (UTC) :Ngắn gọn: Do bộ nhớ đệm. Dài dòng: [[:en:Cache (computing)]]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 15:15, ngày 5 tháng 5 năm 2022 (UTC) == Dữ liệu từ điển học từ Wikidata == Hôm nay nhóm phát triển phần mềm đã [[d:Wikidata talk:Lexicographical data#You can now reuse Wikidata Lexemes on all wikis|kích hoạt chức năng]] lấy [[d:Wikidata:Lexicographical data/vi|dữ liệu từ điển học từ Wikidata]] (''Wikidata lexicographical data'') tại wiki này. Chúng ta có thể lưu trữ các siêu dữ liệu về ngữ nghĩa, từ đồng nghĩa/trái nghĩa, dịch thuật, chữ Nôm, v.v. tại Wikidata dưới dạng có cấu trúc, có sẵn giao diện đàng hoàng thay vì phải nhớ cú pháp mã wiki chính xác. Như vầy các phiên bản Wiktionary có thể dùng chung các dữ liệu và phát triển cùng nhau. Xem thí dụ các từ vị (''lexeme'') sau: * {{LKTT|L1867}} * {{LKTT|L2297}} * {{LKTT|L619034}} Dữ liệu tiếng Việt [[d:Wikidata:Lexicographical coverage#vi|còn thiếu]] đối với các ngôn ngữ khác, hiện tại [[d:Wikidata:Lexicographical data/Statistics/Counts of various things by language|xếp hạng thứ 61]] sau những ngôn ngữ nhỏ tí như Phạn, Mân Nam, Klingon. Chúng ta có thể sử dụng các công cụ như Dịch vụ Truy vấn Wikidata và [[d:Wikidata:QuickStatements|QuickStatements]] để truy vấn và tự động sửa đổi hàng loạt từ vị: * [https://w.wiki/5MbB Tất cả các từ vị tiếng Việt hiện tại, sắp xếp theo từ loại] * [https://ordia.toolforge.org/language/Q9199 Các biểu đồ về từ vị tiếng Việt] Chúng ta có thể xây dựng các mô đun và bản mẫu để tự động tạo ra nội dung của mục từ. Tương lai thí dụ nếu muốn tạo mục từ tiếng Anh mới, chỉ việc dịch các ngữ nghĩa bên Wikidata và đưa ID từ vị (''lexeme ID'') vào mục từ là tất cả nội dung sẽ xuất hiện, không cần biết cách chia động từ hoặc liệt kê các từ đồng nghĩa thủ công. Ngoài ra, Wikisource tiếng Việt cũng có thể tạo các tham khảo chéo trong các cuốn từ điển cổ như [[s:Từ điển Việt–Bồ–La|Từ điển Việt–Bồ–La]]. Hôm nay tôi thử [[Mô đun:Thử/Mxn/Từ vị|xây một mô đun]] và [[Bản mẫu:Thử/Mxn/nôm|bản mẫu]] tự động liệt kê các chữ Nôm ứng với một ID từ vị: chỉ việc đưa {{LKBM|Thử/Mxn/nôm|L1867}} vào [[bánh#Tiếng Việt]] để chèn danh sách này. Một số phiên bản Wiktionary khác đã bắt đầu xây dựng các bản mẫu phức tạp hơn. {{tracked|T236593}} {{tracked|T180345}} Lưu ý rằng phần mềm Wikidata vẫn đang được phát triển tích cực. Trong tiếng Việt, chúng ta [[d:Wikidata talk:Lexicographical data#Forms in Vietnamese|rất cần]] phần mềm [[phab:T236593|cho phép một từ vị ứng với hơn một chữ Nôm]]. Tạm thời chúng ta đang lạm dụng các "dạng" để lưu trữ các chữ Nôm. Chúng ta cũng [[phab:T180345|chờ đợi]] nhóm phát triển kích hoạt mã ngôn ngữ <code>vi-Hani</code> để nhắc đến chữ Nôm thay vì mã tạm <code>vi-x-Q8201</code>. (Chữ nho đã có mã <code>lzh</code>.) Đây chỉ là bước đầu tiên trong một quá trình rất lớn. Cộng đồng Wikidata có nhiều người chuyên môn về kỹ thuật này muốn giúp chúng ta tích hợp Wikidata thành công. Nếu có thắc mắc hoặc yêu cầu nào đó, tôi sẽ ủng hộ các bạn và bảo đảm rằng nhóm phát triển hiểu về những điều cần cải thiện trong hệ thống mới. &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> 01:00, ngày 22 tháng 6 năm 2022 (UTC) :Tôi đã cấu trúc lại các từ vị để chia ra các chữ Nôm thành từ vị riêng được liên kết với các từ vị quốc ngữ như "cách biên dịch". Như vậy có lẽ dễ hiểu hơn và không bị nhầm lẫn với dạng ngữ pháp bởi các phần mềm chuyên môn về các ngôn ngữ phương Tây. – [[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> 18:19, ngày 27 tháng 6 năm 2022 (UTC) == [https://meta.wikimedia.org/wiki/Grants:Conference/Wikimedia_Australia/ESEAP_Conference_2022 Hội thảo ESEAP 2022] == Chào các bạn, hội thảo vùng ESEAP năm nay sẽ tổ chức ở Australia từ ngày 18 đến ngày 20 tháng 11 năm 2022, hạn chót vào '''ngày 24 tháng 7 năm 2022'''. [https://meta.wikimedia.org/wiki/Vietnam_Wikimedians_User_Group Nhóm người dùng Việt Nam chắc] '''2 suất''' để tham dự hội nghị để phát triển cộng đồng đại diện cho các dự án bằng ngôn ngữ Tiếng Việt. Ngoài ra các suất khác có thể đăng ký thêm bằng đường dẫn sau [https://docs.google.com/forms/d/e/1FAIpQLScPeV3e-xOGyRyvhYj7lpAQs-2DGRCgxgw6HmVNLwesWJa-WA/viewform?fbclid=IwAR2zOt-5TpMExI83LbKGiCoA_OkMnLX28tNSO8mDEI5w5Ov-Qfd2zmepWSs], không có giới hạn về suất đăng ký cho mỗi dự án ngôn ngữ, có thể 4-5 suất cũng được. Tinh thần càng đông càng vui. Những ứng viên tham gia nên có tiếng Anh speaking tốt một chút để có thể theo kịp các hoạt động thảo luận ở hội thảo này. Xin đề cử 1 số cái tên nổi bật trong việc phát triển cộng đồng và có tham gia/có kinh nghiệm các hoạt động ở Meta như {{u|Bluetpp}}, {{u|NguoiDungKhongDinhDanh}}, {{u|Trần Nguyễn Minh Huy}}?, {{u|Tuanminh01}}? và các ứng viên trẻ tuổi khác, không rõ trình độ tiếng Anh các bạn trẻ ra sao? Nếu các bạn tham gia theo tư cách nhóm người dùng xin reply ở đây hoặc email cho tôi. Nhóm người dùng có thể được lập bằng 3 thành viên chung 1 dự án bất kỳ và đề nghị thành lập với Meta, lưu ý phải tiết lộ danh tính. Nếu các bạn muốn thành lập thêm các nhóm khác, có thể tham vấn tôi để biết cách thành lập. Nhận tiện, Wikimania 2022 đã chọn Singapore là nơi tổ chức hội nghị. [[User:Alphama|<span style="background:#16BCDA;color:white;border-radius:2px;">&nbsp;<b>A</b> l p h a m a&nbsp;</span>]]&nbsp;<sup>[[User talk:Alphama|Thảo luận]]</sup> 02:03, ngày 18 tháng 7 năm 2022 (UTC) == Cuộc thi chụp ảnh cho Wiki Commons == Mời các bạn quan tâm cho ý kiến về cuộc thi này ở [[meta:Talk:Vietnam Wikimedians User Group]]. [[Thành viên:Alphama|Alphama]] ([[Thảo luận Thành viên:Alphama|thảo luận]]) 11:46, ngày 6 tháng 8 năm 2022 (UTC) == Một số bản mẫu trùng tên với mã ISO 639-3 == Một số bản mẫu trùng tên với mã ISO 639-3: * {{LKBM|-adj-}}: [https://iso639-3.sil.org/code/adj] * {{LKBM|-syn-}}: [https://iso639-3.sil.org/code/syn] * {{LKBM|-see-}}: [https://iso639-3.sil.org/code/see] * {{LKBM|-rel-}}: [https://iso639-3.sil.org/code/rel] * {{LKBM|-var-}}: [https://iso639-3.sil.org/code/var] * {{LKBM|-ant-}}: [https://iso639-3.sil.org/code/ant] * {{LKBM|-dem-}}: [https://iso639-3.sil.org/code/dem] * {{LKBM|-num-}}: [https://iso639-3.sil.org/code/num] Tôi xin lấy ý kiến cộng đồng về giải pháp cho vấn đề này. Xin cảm ơn!<br/>--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:16, ngày 3 tháng 9 năm 2022 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]]: Bạn và những người khác có thể đề xuất những tên mới phù hợp để tránh trùng. Tên mới khi được đề xuất cũng cần xem xét một số yếu tố khác như việc nó có nằm trong các đoạn javascript không. Sau cùng, khi mà tên mới đã được thống nhất, ta sẽ sử dụng bot đi thay thế. :Tuy nhiên, đôi khi không làm gì cũng là một giải pháp. Những ngôn ngữ này không phổ biến lắm, cho nên tôi nghĩ cứ bỏ qua chúng là được. 😉 – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:20, ngày 3 tháng 9 năm 2022 (UTC) :Trường hợp này em nghĩ vì sự phổ biến, chúng ta không nên dùng bot thay đổi mà nên giữ nguyên hiện tại, thay vào đó tạo ra những bản mẫu ngôn ngữ thay thế có tên khác kiểu adj-lang để tránh nhầm lẫn với những bản mẫu hiện có, ghi chú rõ trong tài liệu để mọi người biết là đượ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]]) 09:44, ngày 4 tháng 9 năm 2022 (UTC) ::Nếu làm như vậy sẽ thiếu sự đồng bộ đối với tên bản mẫu của các ngôn ngữ khác. Theo tôi nên đổi thành cách viết đầy đủ kiểu như: adjective, synonym,...--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:46, ngày 4 tháng 9 năm 2022 (UTC) == [[Thành viên:Iosraia]] == Hiện tại, thành viên này đã không còn hoạt động trong hơn 2 năm nay (tác vụ cuối vào 07:18, ngày 1 tháng 5 năm 2020). Theo quy định, thành viên này sẽ bị gỡ quyền bảo quản viên. Mời các bạn cho ý kiến để tôi thực hiện gỡ quyền, 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>]] 14:21, ngày 6 tháng 10 năm 2022 (UTC) * {{yk}} Đồng ý theo quy định trên [[Wiktionary:Bảo quản viên]] (Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền), nhưng sau khi gỡ quyền không biết các BQV có nên cấp quyền Lùi sửa cho thành viên không do những năm trước thành viên có tích cực. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 14:37, ngày 10 tháng 10 năm 2022 (UTC) ::Tạm thời chưa thể gỡ quyền bảo quản viên. Có thể phải chờ sang năm mới thực hiện được. [[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>]] 05:54, ngày 11 tháng 10 năm 2022 (UTC) ::Chính xác ra là quy định của Meta. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) * {{yk}} Nên gỡ quyền, đã quá lâu rồi. Nhưng nếu chưa gỡ quyền được ngay thì có thể đợi đến hết năm cũng đượ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]]) 15:07, ngày 18 tháng 11 năm 2022 (UTC) * {{yk}} Tôi đã báo lên Meta để ngay lập tức rút quyền vì đã quá thời hạn quy định. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) :: @{{noping|Tryvix1509}} Tôi nghĩ bảo một hành chính viên để gỡ quyền quyền thay vì báo lên Meta để rút quyền có thể sẽ nhanh hơn. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 13:33, ngày 19 tháng 12 năm 2022 (UTC) ::: À quên, tôi chưa đọc kỹ trang [[Wiktionary:Hành chính viên]]. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 22:36, ngày 8 tháng 2 năm 2023 (UTC) {{tick}} Thành viên đã được gỡ quyền theo quy định AAR. [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:15, ngày 13 tháng 9 năm 2026 (UTC) == Thay logo Tết == Xin chào các thành viên của cộng đồng Wiktionary. Để tránh rườm rà và không cần thiết, cũng như đảm bảo phù hợp với tình hình hiện tại của dự án, tôi xin được thông báo logo Tết năm 2023 của dự án Wiktionary sẽ được dùng lại từ 2022. Mong mọi người cho ý kiến đề xuất về việc này. 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>]] 11:39, ngày 17 tháng 1 năm 2023 (UTC) :👍 Hoàn toàn nhất trí--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:45, ngày 19 tháng 1 năm 2023 (UTC) ==Lời chúc năm mới xuân Quý Mão 2023== {| style="width:100%; background-color:#fc3; border:3px solid #ac6600;" padding: 5px; text-align:left;" |align="center"|[[File:Fxemoji u1F386.svg|75px]] |<span style="font-size:120%;">'''Nhân dịp xuân Quý Mão 2023, kính chúc toàn thể cộng đồng Wiktionary tiếng Việt một năm mới nhiều sức khỏe và hạnh phúc'''.</span><br /> Năm Nhâm Dần 2022 đã chứng kiến một sự thay đổi mạnh mẽ đối với dự án Wiktionary tiếng Việt. Nhiều ngôn ngữ mới đã xuất hiện, nhiều phần giao diện cũ đã được sửa lại. Chúng ta đã, đang và sẽ tiếp tục thay đổi để đưa từ điển mở này đến với nhiều người hơn, không ngừng đổi mới để phát triển. Năm Quý Mão 2023 đã gõ cửa khắp nơi, xin chúc cộng đồng từ điển mở Wiktionary tiếng Việt sẽ luôn luôn phát triển, đưa dự án chúng ta lên những cột mốc mới, những tầm cao mới. Chúng ta hãy cùng nhau để đi lê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>]] 03:12, ngày 22 tháng 1 năm 2023 (UTC) :Năm nay là năm con mèo. Cho nên tôi xin tặng đại gia đình Wiktionary tiếng Việt một con mèo Maneki-neko. '''CHÚC MỌI NGƯỜI NĂM MỚI LUÔN MAY MẮN'''! :[[Tập tin:Manekineko1003.jpg|nhỏ|giữa]] :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:36, ngày 22 tháng 1 năm 2023 (UTC) ::Rất cảm ơn một món quà đầy ý nghĩa của bạn. Cùng tiến lên để dự án phát triển nha! – [[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>]] 02:37, ngày 23 tháng 1 năm 2023 (UTC) == MediaWiki:Gadget-start.js == Em không có kinh nghiệm sửa js nên xin phép nhờ một số anh em nào có kinh nghiệm có thể sửa lỗi cái [[MediaWiki:Gadget-start.js]] để sửa một số lỗi như sau: * Phần biến cách bị mất nội dung sau khi nhập sang phần ngữ nghĩa hoặc bất kỳ phần nào khác (nhập vào "abc" thì nó sẽ tự động quay về giá trị mặc định nếu nhập sang phần khác). * Phần ngữ nghĩa bị sẽ bị lỗi undefined khi xuất nếu có quá nhiều ngữ nghĩa nhập vào, khuyến nghị chỉ nên để tối đa 5 ngữ nghĩa. * (Không bắt buộc), đổi giao diện sang OOUI cho hiện đại Xin phép mọi người giúp em ạ, 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]]) 02:46, ngày 26 tháng 1 năm 2023 (UTC) == Global ban for PlanespotterA320/RespectCE == Per the [[m:Global bans|Global bans]] policy, I'm informing the project of this request for comment: [[m:Requests for comment/Global ban for PlanespotterA320 (2) ]] about banning a member from your community. Thank you.--[[User:Lemonaka|Lemonaka]] ([[User talk:Lemonaka|talk]]) 21:40, ngày 6 tháng 2 năm 2023 (UTC) <!-- Tin nhắn của Thành viên:Zabe@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Lemonaka/Massmessagelist&oldid=24501599 --> :{{tick}} He's now banned by the Office. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:13, ngày 13 tháng 9 năm 2026 (UTC) == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:Stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # Iosraia (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, [[Thành viên:Uncitoyen|Uncitoyen]] ([[Thảo luận Thành viên:Uncitoyen|thảo luận]]) 09:09, ngày 24 tháng 2 năm 2023 (UTC) == Tin buồn == Tình hình là Web tratu.soha.vn đã bị sập, không rõ là web đang nâng cấp hay đóng hẳn rồi, mà thay vì xuất hiện trang chủ thì lại xuất hiện Apache 2 Test Page. Mọi người nếu muốn Import từ mới từ trang này vui lòng vào google để import, nên lấy '''những từ nào cần thiết vì có quá nhiều, google có thể xoá hết bản lưu sau vài tháng, lúc đó chúng ta không còn nội dung nhập sẫn vì vậy hãy nhanh chóng'''. Thật sự vô cùng tiếc vì đây là kho dữ liệu từ điển mở rất tốt. [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:34, ngày 28 tháng 2 năm 2023 (UTC) === Hướng dẫn === # Nhập tìm kiếm google "[Tên mục từ] Tratu", tìm đến dòng tìm kiếm đúng của tra từ, chọn bản lưu để ra bản lưu trước khi web bị sập.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:46, ngày 28 tháng 2 năm 2023 (UTC) #:{{ping|Kateru Zakuro}} Tôi tìm thấy trang [https://www.rung.vn/ này], hình như nó cũng lấy dữ liệu từ Tratu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:23, ngày 1 tháng 3 năm 2023 (UTC) #::Trang này có lấy nhưng không đầy đủ bác ạ, nhưng mà bản quyền ở đưới để "© 2023" thì không ổn lắm, nếu trích nguồn thì đưa vào được. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:25, ngày 1 tháng 3 năm 2023 (UTC) #::{{ping|TheHighFighter2}} Cập nhật lại là Website Tratu không bị sập, nhưng nó bị lỗi hệ thống (chắc do máy chủ quá cũ) dẫn đến bị lỗi 403 không truy cập được. Nhưng nó chỉ là vẻ bề ngoài, thực chất chúng ta vẫn có thể "lách luật" được mã lỗi 403 bằng cách load lại trang mục từ liên tục (ví dụ http://tratu.soha.vn/dict/vn_vn/Bo%C3%B3ng), nó sẽ cứ lỗi 403 thì lúc đó tiếp tục cứ load lại bằng CTRL + R hoặc nhấn tải lại trang, tự khắc 1 lúc nào đó web sẽ phản hồi và truy cập được vào trang mục từ. Cách này bị khó chịu nhưng đây là cách duy nhất để vào trang Tratu hiện tại, còn nếu thấy mất thời gian quá thì tra bản sao trên Google để nhập vào.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:33, ngày 1 tháng 3 năm 2023 (UTC) #:: Em để link ở đây để vào cái danh sách mục từ cho dễ (trang chủ nó bị lỗi nên phải dùng liên kết này) #::* [http://tratu.soha.vn/dict/vn_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Việt] #::* [http://tratu.soha.vn/dict/vn_en/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Anh] #::* [http://tratu.soha.vn/dict/en_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Anh-Việt] #::* [http://tratu.soha.vn/dict/fr_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Pháp-Việt] #::* [http://tratu.soha.vn/dict/vn_fr/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Pháp] #::* [http://tratu.soha.vn/dict/ja_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Nhật-Việt] #::* [http://tratu.soha.vn/dict/vn_ja/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Nhật] #::--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:41, ngày 1 tháng 3 năm 2023 (UTC) {{tick}} '''Tin vui''' Máy chủ đã hoạt động trở lại nên giờ đã có thể truy cập được vào website [http://tratu.soha.vn tratu.soha.vn] --[[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 18:02, ngày 23 tháng 4 năm 2023 (UTC) == Chú ý == Để ý nhiều mục từ tiếng Việt gần đây, nhiều biên tập viên sao chép nội dung từ trang Tratu hoặc nguồn tự do nào đó khác thường chép vào mà không ghi rõ nguồn từ đâu. Trừ khi biên tập viên tự diễn nghĩa, đề nghị các biên tập viên sao chép nội dung nhớ ghi nguồn bên dưới, để tránh trường hợp vô tình vi phạm bản quyền. Cảm ơn. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 23:02, ngày 21 tháng 3 năm 2023 (UTC) == Di động == Có ai dùng Wiktionary tiếng Việt trên thiết bị di động không? Với thiết kết CSS khung mới, tất cả nội dung không hiển thị được khi xem qua điện thoại Pixel của tôi. [[Thành viên:DHN|DHN]] ([[Thảo luận Thành viên:DHN|thảo luận]]) 16:39, ngày 13 tháng 7 năm 2023 (UTC) :@[[Thành viên:DHN|DHN]] Tôi cũng dùng Wiktionary trên thiết bị di động và đúng thật là cả nội dung cũng không thể đọc được. Chỉ có thể xem hoặc chỉnh sửa trên thiết bị di động khi chỉnh nó về phiên bản cho máy tính thôi nhưng việc chuyển qua chuyển lại như thế điện thoại chạy rất chậm đôi khi bị liệt. [[Thành viên:DANG GIAO|Phong Đăng]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 06:36, ngày 14 tháng 7 năm 2023 (UTC) :{{ý kiến}} Lỗi này đã được bàn luận tại trang [[Thảo luận thành viên:Kateru Zakuro#Về bản cập nhật có lỗi trên dự án]], nhưng hiện nay vẫn chưa được vá lại. @[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] mong anh cho ý kiến về lỗi nà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:23, ngày 14 tháng 7 năm 2023 (UTC) ::Nguyên nhân là do cái này: [[m:Tech/News/2023/27/vi]]: "Từ tuần này tất cả các tiện ích được tải tự động trên cả trang web di động lẫn máy tính. Nếu bạn có thấy bất cứ vấn đề gì về các tiện ích trên các wiki, vui lòng điều chỉnh [[mw:Special:MyLanguage/Extension:Gadgets#Options|tùy chọn tiện ích]] trong tệp định nghĩa tiện ích của bạn." Vậy cho nên trong [[Mediawiki:Gadgets-definition]], cần định nghĩa lại tiện ích TabbedLanguages để cho nó chỉ hoạt động trên giao diện máy tính thôi. Tương tự đối với tiện ích AVIM (bộ gõ tiếng Việt), cần định nghĩa lại để cho nó chỉ hoạt động trên máy tính. Nếu không thì vào [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets]], tắt 2 tiện ích "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "AVIM" đi. [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:20, ngày 26 tháng 7 năm 2023 (UTC) :::Wiktionary tiếng Việt ở [[Mediawiki:Gadgets-definition]] dùng cờ default cho tiện ích TabbedLanguages, trong khi Wiktionary tiếng Anh ở [[:en:Mediawiki:Gadgets-definition]] không dùng cờ default cho tiện ích TabbedLanguages. Vậy cách giải quyết là 1 BQV gỡ cờ default ra khỏi tiện ích TabbedLanguages trong [[Mediawiki:Gadgets-definition]], để ai thích dùng tiện ích này thì bật lên chứ không kích hoạt theo mặc định nữa (và khi dùng tiện ích TabbedLanguages thì phải chấp nhận là nó chỉ hiển thị được nội dung trên giao diện máy tính chứ không hiển thị được nội dung trên giao diện di động). [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:50, ngày 26 tháng 7 năm 2023 (UTC) :::Rất cảm ơn bạn Tranminh đã giúp sửa lỗi này. Nhưng tôi thấy không cần thiết lắm để phải tắt tính năng AVIM đi vì lỗi ở đây không phải là do tính năng AVIM (Bộ gõ tiếng Việt) mà là do hai tính năng "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "Hộp Gõ tiếng Việt ở thanh bên cung cấp các tùy chọn AVIM" tôi nghĩ chỉ cần tắt hai tính năng ấy đi là được. – [[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>]]) 12:29, ngày 6 tháng 8 năm 2023 (UTC) {{xong}} [[Đặc biệt:So sánh di động/2120542|BQV Kateru Zakuro đã sửa]]. [[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>]]) 16:52, ngày 21 tháng 8 năm 2023 (UTC) == [[Thành viên:Tuanminh01|Tuanminh01]] == {{BQ|KQ={{tick}} Biểu quyết bất tín nhiệm thành công với 2 phiếu thuận và 0 phiếu chống. Và theo quy định AAR, tiếp viên {{u|Superpes15}} đã chính thức thu hồi quyền quản trị đối với {{u|Tuanminh01}} vào ngày 11 tháng 2 năm 2024 trên dự án Wiktionary tiếng Việ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>]]) 06:49, ngày 12 tháng 3 năm 2024 (UTC)|ND= {{status|start=0}} Tác vụ cuối của thành viên này là [[Đặc biệt:Nhật trình/Tuanminh01|08:46, ngày 26 tháng 1 năm 2021 (UTC)]] (tức là đã hai năm rồi thành viên chưa hoạt động) và thông qua quy định tại trang [[Wiktionary:Bảo quản viên]] "Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền." nên do đó thành viên sẽ được thu hồi quyền BQV trên dự án này. Mời các bạn cho ý kiến về việc này, xin trân trọng cảm ơn. – [[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>]]) 11:30, ngày 26 tháng 7 năm 2023 (UTC) :#{{ok}} – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:57, ngày 2 tháng 12 năm 2023 (UTC) :#{{ok}} Tôi nghĩ Tuanminh có vẻ bất lực sau vụ BTN tại Wikipedia, đã quá 2 năm rồi mà tv chưa đóng góp trên đây, hơn nữa tv đóng góp ít trên đây và cũng có mắc nhiều lỗi trên Wikipedia nên tôi không mấy tin tưởng lắm, tôi ủng hộ việc gỡ quyền tv trên dự án này. [[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>]]) 00:50, ngày 5 tháng 2 năm 2024 (UTC) }} == Các mục từ cần nhất theo mục từ liên kết đến nó == Tôi dùng trang này để tạo mới một số mục từ thì nhận ra rằng trong trang này có một vài mục từ đã được tạo nhưng trang vẫn còn liên kết đỏ. Trang này không biết có bị khoá không vì tôi không sửa được. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:20, ngày 12 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Bạn có thể đưa link trang đó ra đây không?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:43, ngày 12 tháng 8 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Bạn xem ở [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_c%E1%BA%A7n_thi%E1%BA%BFt&limit=50&offset=100 Đây]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 02:54, ngày 13 tháng 8 năm 2023 (UTC) :::{{ping|P. ĐĂNG}} Trang đó sẽ được hệ thống cập nhật 2 lần một tháng--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:16, ngày 13 tháng 8 năm 2023 (UTC) == Lỗi == Khi tôi đang tạo hoặc sửa đổi mục từ tôi thấy có 2 lỗi này: <gallery> Lỗi1.png|200px|Lỗi thứ nhất Lỗi2.png|200px|Lỗi thứ hai </gallery> Có ai bị giống tôi không? – [[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:15, ngày 21 tháng 8 năm 2023 (UTC) :[[Thành viên:Nguyên Hưng Trần]] Máy tính tôi không gặp lỗi này, không biết các tv khác có hay không. Bạn dùng soạn thảo mã nguồn 2017 à?. Rất có thể là do lỗi máy tính nếu các tv khác không cùng gặp lỗi 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:49, ngày 21 tháng 8 năm 2023 (UTC) :Chắc do lỗi giao diện. Tôi đã thử chuyển sang chế độ laptop để sửa đổi một số mục từ và cũng bặt gặp lỗi y như lỗi bạn miêu tả ở hình 1. Nhưng không hiểu sao khi sửa các trang trợ giúp Wiktionary thì không thấy có lỗi đó hiện lên. Tôi nghĩ đó là tính năng mục lục của dự án trong soạn thảo trực quan lúc đang sửa mục từ hơn là lỗi, tôi nghĩ vậy do lỗi trên không ảnh hưởng gì nhiều đến công việc sửa đổi. @[[Thành viên:Tranminh360|Tranminh360]] Mong bạn cho ý kiến. – [[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>]]) 00:09, ngày 22 tháng 8 năm 2023 (UTC) :Đây là một lỗi do bản thân cái mục lục này đã có từ năm 2012 và CSS của nó không còn tương thích với giao diện mới nữa, em cố gắng sửa CSS của nó nhưng vẫn không được.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:15, ngày 13 tháng 9 năm 2023 (UTC) == Tính trung lập == {{Đóng thảo luận |KQ = ✔ Đã giải quyết xong |ND = Tôi và TheHighFighter2 đã có phần thảo luận về tình trạng tính trung lập của Wiktionary đang vướng phải. Tôi xin đưa thảo luận ra đây như thành viên Tiến Minh đã khởi xuất để mọi thành viên có thể thảo luận tránh ý nghiêng về một phía. Nội dung thảo luận dưới đây: Về một số sửa đổi của bạn gần đây, như tại [[khả năng]], [[chứng minh]], ... Nếu phần định nghĩa có các từ kiểu như "nước ta", "nhân dân ta", ... thì ta nên thay bằng các từ khác hoặc xóa đi. Còn nếu nó có ở phần vd thì không cần xóa do phần này chấp nhận chứa các từ như vậy--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:48, ngày 16 tháng 9 năm 2023 (UTC) === Thảo luận chung === :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Đúng vậy, tôi đã xoá chúng đi vì Wiktionary:Thái độ trung lập. Wiktionary có quy định về phần vd được phép ngoại lệ này không?. Tôi đã có nói chuyện với HCV Mxn về điều này. Tôi khẳng định nó không trung lập và xoá đi là cần thiết, và sẽ bổ sung phần ví dụ mới vào. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:19, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Hiện tại trên dự án không có trang nào tên là [[Wiktionary:Thái độ trung lập]]. Chả là bạn muốn tìm trang quy định liên quan tới vấn đề chăng? – [[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>]]) 14:29, ngày 16 tháng 9 năm 2023 (UTC) :::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Chưa có chứ không phải không. Các dự án Wikipedia đều hoạt động hướng đến chung là thái độ trung lập. Wiktionary tiếng Việt không phải Wiktionary Việt Nam. HCV Mxn cũng đi xoá những thứ này. Khi dùng từ như "dân ta, nhân dân ta", khi người nước ngoài đọc, bạn nghĩ sao về điều này? Chúng ta hướng đến một dự án phục vụ mọi người, mọi chủng tộc và quốc gia, không phải riêng một đất nước nào. Vì vậy, mỗi dòng viết ra phải dựa trên thái độ trung lập. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:36, ngày 16 tháng 9 năm 2023 (UTC) ::::Bạn nói cũng đúng vì theo quy định bên Wiktionary tiếng Anh "all entries must be written from a '''neutral point of view''', representing views fairly and without bias" (tạm dịch: Mọi nội dung được đưa vào đều phải được viết từ một cái nhìn trung lập, thể hiện cái nhìn công bằng và không thiên kiến). Nhưng tôi nghĩ cũng không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV vì nội dung không trung lập thường nó cũng không ảnh hưởng gì nhiều đến dự án lắm. – [[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>]]) 14:46, ngày 16 tháng 9 năm 2023 (UTC) :::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Đây là điều đương nhiên. Chúng ta đang hoạt động trên đâu? Wiktionary là dự án bách khoa, nó ưu tiên thái độ trung lập, nơi mà một người Mỹ có thể qua đọc bài viết của một Wikimedia tiếng Đức, tiếng Việt hay tiếng Trung. Khi không trung lập, bạn nói không nhất thiết sửa lại là sao?. Đến nay tôi mới phát hiện Wiktionary tiếng Việt đang có văn phong không trung lập rất nhiều, trích câu Hồ Chí Minh, dùng thơ... Tôi cần BQV TheHighFighter2 phản hồi điều này, lẽ ra phải thảo luận với tôi trước khi lùi sửa, thứ mang tính chất mâu thuẫn. Nếu có quy định nào nói phần ví dụ ta được ngoại lệ thì tôi sẽ xem lại sửa đổi của mình. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:53, ngày 16 tháng 9 năm 2023 (UTC) ::::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi dám chắc là không có quy định nào về ngoại lệ này cả. Không trung lập mới là đi ngược với quy định của bách khoa. Nội dung trên đây vốn đa phần được sao chép từ FVDP một dự án không có quy định tính trung lập, khi dùng nó đưa vô thì phải xem xét ở một vài khía cạnh chứ không copy là xong được. Wiktionary không phải từ điển của Việt Nam, nó cũng không phải sách giáo khoa, không dùng văn phong thiên vị một phía, thêm thơ lại không trung lập. Bạn sang các Wiktionary tiếng khác xem, có nền tảng wiki nào dùng những câu ví dụ như "nhân dân ta chiến đấu bảo vệ tổ quốc" "chiến tranh chống đế quốc Mỹ", có xuất hiện không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:58, ngày 16 tháng 9 năm 2023 (UTC) 1. Bên en có rất nhiều mục có vd chứa các từ "[https://en.wiktionary.org/w/index.php?search=%22our+country%22&title=Special:Search&profile=advanced&fulltext=1&ns0=1 our country]", "[https://en.wiktionary.org/w/index.php?search=%22n%C6%B0%E1%BB%9Bc+ta%22&title=Special:Search&ns0=1&searchToken=12thcn782xmsjc7aixwau68ok nước ta]; bên fr có "[https://fr.wiktionary.org/w/index.php?search=%22notre+pays%22&title=Sp%C3%A9cial:Recherche&profile=advanced&fulltext=1&searchengineselect=mediawiki&ns0=1&ns100=1&ns106=1&ns110=1&searchToken=vol8t2pu9urr4hv60l40oom8 notre pays]" (đất nước chúng tôi) 2. Khi lấy vd cho mục "[[Đảng ta]]", "[[Mĩ nguỵ]]", "[[ba que]]" thì ta nên lấy vd như nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:57, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin gửi bạn một phần tin nhắn của tôi với HCV Mxn: "tất cả các câu thí dụ này được nhập từ Dự án Từ điển tiếng Việt miễn phí (FVDP), dự án này sao chép nguyên cả lời định nghĩa từ một số từ điển khác, có lẽ bao gồm những cuốn từ điển trong nước. (FVDP cũng có nhiều danh ngôn của Hồ Chí Minh.) Mấy năm nay tôi cũng muốn gạt đi những câu thí dụ không trung lập hoặc sửa lại theo thuật ngữ trung lập hơn. Đây chỉ là một trong rất nhiều điều thiếu sót của việc nhập FVDP. Nếu bạn có thể giúp dọn dẹp các câu thí dụ và danh ngôn thì tốt quá". Những từ tiếng Việt được xây dựng bên en cũng đa phần dùng bot và người mở rộng có cả những tv người Việt (từ ngoại quốc có thể không bị kiểm duyệt gắt gao khi người kiểm duyệt không am hiểu thứ tiếng, giống như có tv nào tạo bài tiếng phạn hay chữ Hán bên đây chúng ta thì có thể tỷ lệ phần trăm sai phạm bị bỏ qua sẽ nhiều hơn các từ hệ chữ chúng ta dùng). Còn bên fr, bạn xem ví dụ của họ có liên quan đến chủ thể cỡ nào? Nó đáng bao nhiêu phần trăm? Rõ ràng như Wiktionary vi không?. Về trường hợp lấy ví dụ của các từ như "Đảng ta" "Mĩ ngụy" thì đây là một từ, trích quy định "Tất cả các bài viết và các nội dung bách khoa khác tại Wikipedia phải được viết trên một quan điểm trung lập (QDTL), thể hiện một cách công bằng và không thiên vị" tôi nghĩ bạn đủ khả năng tự suy ra hướng tôi đang muốn nói. Khi bạn dùng từ này vô trường hợp như "Mĩ ngụy xâm chiếm nước ta" --> ám chỉ rõ ràng đây là dự án tiếng Việt và nước ta là Việt Nam. Bản chất từ tôi không nói nó vi phạm thái độ trung lập, nhưng tùy ngữ cảnh mà bạn đưa vào là một vấn đề đấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:18, ngày 16 tháng 9 năm 2023 (UTC) :Thì thế tôi mới nói "không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV" đó. Nội dung không trung lập không có nghĩa là nội dung đó không hữu ích. Nói chung là tùy trường hợp, hợp lý là được miễn sao nội dung đó không quá khích. – [[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>]]) 16:12, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Bạn có biết đang nói cái gì không vậy? Không trung lập = vi phạm quy định. Sửa đổi sai đang cần sửa nhưng bạn lại nói không cần thiết?. WP:Thái độ trung lập là một trong những trụ cột của Wikimedia, cho dù đó là sửa đổi thiện chí nhưng vi phạm thì cũng không cần. Dự án chúng ta các tv đã không còn khả năng sửa điều này? Nếu không, tại sao chấp nhận nó?. Sao có thể nhưng không thay bằng một nội dung vừa hữu ích vừa phù hợp với chính sách của ta hơn. Tôi không hiểu bạn Tiến Minh nói không nhất thiết giải quyết những điều này là gì? Bên Wikipedia có nhiều tk bị cấm vì thái độ trung lập đấy và thành viên không kiểm soát được điều này nên mấy tk này quay lại và thành rối nằm vùng. Phần nội dung hiện rõ lên vậy, bạn lại nói là không quá khích. Thế nào là quá khích, đủ để các tv bắt tay vào làm? Tôi xin nhắc lại, Wiktionary tiếng Việt không phải Wiktionary Việt Nam. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:26, ngày 16 tháng 9 năm 2023 (UTC) Nếu các thành viên vẫn cho sửa đổi của là sai khi nói nội dung đó vi phạm trung lập thì hãy giải thích cho câu hỏi này "Wiktionary có quy định về phần vd được phép ngoại lệ này không?". Bên Wiktionary en có trang [https://en.wiktionary.org/wiki/Wiktionary:Neutral_point_of_view Wiktionary:Neutral point of view] rõ ràng. Và khi nói rằng nó thật hữu ích và chưa quá khích để chúng ta bắt tay vào sửa thì khi nào là quá khích? Những câu ví dụ vi phạm đó có là duy nhất không thể thay thế không? Nếu câu trả lời là không, thì nó nên bị xóa để thay thế nội dung khác vào. Nếu có quy định nào được chỉ ra tôi xóa chúng đi là sai, tôi sẽ xem xét lại sửa đổi của mình, còn không, sau thảo luận tôi sẽ dọn tất cả những nội dung này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:57, ngày 16 tháng 9 năm 2023 (UTC) Hướng giải quyết: Nếu 1 mục từ bình thường có vd chứa các từ như trên: thay thế vd khác. Còn các từ liên quan đến chính trị, trường hợp đặc biệt khác, thì có thể lấy vd chứa những từ như trên. Bạn thấy thế nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:53, ngày 16 tháng 9 năm 2023 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin phiền bạn đưa phần tin nhắn này ra trang thảo luận vì Tiến Minh đã gửi thư nên tôi đã di chuyển nó ra thảo luận để mọi người có thể cùng nhau giải quyết. 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]]) 17:00, ngày 16 tháng 9 năm 2023 (UTC) :<p>Đúng rồi, vấn đề là các câu thí dụ không có liên quan đến chính trị mà lại nhắc đến chủ đề nhạy cảm hoặc dùng thuật ngữ không trung lập về mặt chính trị. Chẳng ai biết rõ ràng các câu này dẫn xuất từ đâu nhưng có vẻ giống tuyên truyền ngày xưa. Thực sự không cần dùng các thuật ngữ này để dạy ngôn ngữ. Tuy nhiên, có khi các danh ngôn của Hồ Chí Minh v.v. thật là đáng kể, thì bỏ qua chúng cũng không trung lập lắm.<p>Về mặt kỹ thuật, việc thay thế nội dung từ FVDP bằng nội dung khác cũng có ích cho Wiktionary. Không phải chỉ Wiktionary nhập nguyên văn FVDP đâu. Nội dung nào khác với TraTu v.v. sẽ làm Wiktionary nổi bật hơn, thu hút nhiều người đóng góp hơn.<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> 01:56, ngày 17 tháng 9 năm 2023 (UTC) {{yk}} Tôi ủng hộ cách giải quyết của Đăng. Wiktionary cũng cần phải trung lập. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:53, ngày 16 tháng 9 năm 2023 (UTC) '''Kết thúc:''' Cảm ơn hai HCV Nguyễn Xuân Minh và Phú, cũng như BQV TheHighFighter2 và thành viên DefenderTienMinh07 đã cùng nhau đưa ra phản hồi. Sau cuộc thảo luận trên, tôi nghĩ tất cả các thành viên Wiktionary chúng ta đã nắm được vấn đề. Đây có nói là thiếu sót dễ gây hiểu nhầm do Wiktionary vi chưa được dịch đầy đủ các trang về quy định. Tôi khuyến khích các thành viên đang cần, sang Wikipedia vi tham khảo các quy định này. Nếu cuộc thảo luận các thành viên không có ý kiến gì thêm, tôi xin được yêu cầu kết thúc cuộc bàn thảo tại đây để tôi có thể sớm bắt tay vào dọn dẹp tất cả như đã nói trước đó. Kính chúc cộng đồng ta ngày mớ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]]) 07:35, ngày 17 tháng 9 năm 2023 (UTC) }} == Không gian tên == Hiện tại có 4 không gian tên bên en chưa được tạo tại đây: Từ tái tạo, Vần, Thesaurus, Kho ngữ liệu. Cho nên nếu ai đó biết cày mấy cái này thì xin đề xuất chúng lên Phabricator vớ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>]] 14:35, ngày 22 tháng 10 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Bạn làm xong chưa?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:06, ngày 28 tháng 10 năm 2023 (UTC) ::{{ping|P. ĐĂNG}} Không biết làm bạn ơi, tôi chưa biết cày cái Phabricator. – [[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>]] 07:02, ngày 28 tháng 10 năm 2023 (UTC) :::@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Tôi cần xem qua các link bên en trong bốn không gian mà bạn dẫn ra. Bạn có không vì tôi tìm bên đó không thấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:25, ngày 28 tháng 10 năm 2023 (UTC) ::::{{ping|P. ĐĂNG}} À, 4 cái không gian tên đó tương đương bên en lần lượt là "Reconstruction", "Rhymes", "Thesaurus", và "Citations". Nhưng mà trước khi đề xuất lên Phabricator thì phải tạo một biểu quyết cái đã rồi mới làm được, như hồi đó là {{u|Ccv2020}} tạo một biểu quyết tạo không gian tên "Phụ lục" (tương đương với bên en là "Appendix", bạn có thể [[#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt|xem mục này bên trên]]). – [[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>]] 13:34, ngày 28 tháng 10 năm 2023 (UTC) ::::Rất hy vọng [[Thành viên:Ccv2020|Ccv2020]] có thể phụ giúp cộng đồng ta làm lại một lần nữa. Tôi sẽ cố gắng tích thêm kinh nghiệm để nối tiếp điều này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:13, ngày 28 tháng 10 năm 2023 (UTC) :::::À, cảm ơn đã nhắc mình nhé. Tuy nhiên thì có lẽ mình không còn thời gian để làm việc này nữa bạn à. Thực sự mình vẫn còn chút quan tâm dự án nhưng có lẽ mình xin nhường lại việc này cho một BQV khác. – [[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:47, ngày 29 tháng 10 năm 2023 (UTC) : Cần đẩy nhanh tiến độ đồng thuận đối với 4 không gian trên. [[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>]] 12:26, ngày 17 tháng 12 năm 2024 (UTC) ::Thảo luận này đã kết thúc từ năm 2023. Tôi có nhắn hỏi Ccv2020 tại trang các nhân từ một năm trước nhưng bận nên chưa thấy hồi đáp. Chắc đành mời thêm [[Thành viên:TheHighFighter2|TheHighFighter2]] xem qua trường hợp này. Thú thật tôi vẫn có ý định làm thay, nhưng cần có người hướng dẫn cho lần đầu tiên. Thiết nghĩ ưu tiên độ chính xác. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:32, ngày 17 tháng 12 năm 2024 (UTC) :::{{ping|P. ĐĂNG}} Tôi tìm được trang hướng dẫn này [[:meta:Requesting wiki configuration changes]], bạn có thể tham khảo--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:15, ngày 18 tháng 12 năm 2024 (UTC) ::::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Yêu cầu thì đơn giản, nhưng vấn đề là cộng đồng ở đây có đồng thuận không. – [[Thành viên:Hide on Rosé|Hide on Rosé]] ([[Thảo luận Thành viên:Hide on Rosé|thảo luận]]) 10:30, ngày 15 tháng 6 năm 2025 (UTC) : Chắc là phải tạo biểu quyết đồng thuận đối với 4 không gian tên "Từ tái tạo", "Vần", "Kho từ vựng" (Thesaurus), "Kho ngữ liệu" (Citations). Nhưng dự án ít người hoạt động thế này bỏ phiếu kiểu gì. [[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>]] 15:43, ngày 3 tháng 1 năm 2026 (UTC) == Lỗi không hiển thị được mục lục khi đang sửa đổi hoặc tạo mục từ == Hôm nay tôi mới thấy Wiktionary đổi giao diện mặc định thành Vector (2022), mà khi đang sửa đổi mục từ thì tôi không nhìn thấy được mục lục phía bên phải của cái hộp sửa đổi. Có ai bị lỗi này giống tôi không? – [[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:50, ngày 30 tháng 11 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Chào bạn, bạn có thể vui lòng cung cấp hình ảnh cái mục lục bên phải ở phiên bản Vector cũ được không ạ? Cảm ơn bạn nhiều. – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:58, ngày 2 tháng 12 năm 2023 (UTC) == Vector 2022 == Vào ngày 30/11 vừa rồi, Vector 2022 đã được triển khai tại Wikiquote. Không biết các bạn cảm thấy thế nào với giao diện Vector 2022? Nếu bạn gặp phải bất cứ vấn đề gì hoặc phát hiện lỗi với Vector 2022, xin hãy tag tôi. Xin cảm ơn! – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 15:12, ngày 2 tháng 12 năm 2023 (UTC) == Các cải thiện đối với định dạng của Vector 2022 == [[Tập_tin:Vector_2022_pre-Zebra_visual_changes_logged_out.jpg|nhỏ|Trước (<code>?vectorzebradesign=0</code>)]] [[Tập_tin:Vector_2022_Zebra_visual_changes_logged_out.jpg|nhỏ|Sau (<code>?vectorzebradesign=1</code>)]] Chào mọi người. Nhóm Web của Wikimedia Foundation đã giới thiệu những cải tiến về định dạng của giao diện Vector 2022. Đối với những người theo dõi các cập nhật của chúng tôi, bạn có thể nhận ra một số trong số này là một subset của [[mw:Reading/Web/Desktop_Improvements/Updates#May_2023:_Continuing_work_on_Vector_2022,_and_making_plans_for_the_new_fiscal_year|nguyên mẫu phân tách nội dung (Zebra) đã được thử nghiệm trước đây]]. Cụ thể, những thay đổi gần đây bao gồm: # Màu sắc nền mới cho menu chính, giờ đây đã phù hợp với phần còn lại của menu # Định dạng mới cho nút ấn và hiện của các menu # In đậm tiêu đề menu Bạn có thể tìm thấy [[mw:Reading/Web/Desktop Improvements/Updates/en#November_2023:_Visual_changes,_more_deployments,_and_shifting_focus|thêm chi tiết về lần thay đổi này tại trang cập nhật dự án trên MediaWiki.org]]. Những thay đổi này cũng sẽ giải quyết một số lỗi gần đây với mục lục, chẳng hạn như [[phab:T352464|phiếu ghi lỗi]] về các yếu tố có thể cuộn được này. Xin vui lòng cho chúng tôi biết bạn nghĩ gì về những điều chỉnh này và cả những thắc mắc mà bạn đang có! [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 11:06, ngày 17 tháng 12 năm 2023 (UTC) == IMPORTANT: Admin activity review == Hello. A policy regarding the removal of "advanced rights" (administrator, bureaucrat, interface administrator, etc.) was adopted by [[:m:Requests for comment/Activity levels of advanced administrative rights holders|global community consensus]] in 2013. According to this policy, the [[:m:stewards|stewards]] are reviewing administrators' activity on all Wikimedia Foundation wikis with no inactivity policy. To the best of our knowledge, your wiki does not have a formal process for removing "advanced rights" from inactive accounts. This means that the stewards will take care of this according to the [[:m:Admin activity review|admin activity review]]. We have determined that the following users meet the inactivity criteria (no edits and no logged actions for more than 2 years): # [[Special:Contributions/Tuanminh01|Tuanminh01]] (administrator) These users will receive a notification soon, asking them to start a community discussion if they want to retain some or all of their rights. If the users do not respond, then their advanced rights will be removed by the stewards. However, if you as a community would like to create your own activity review process superseding the global one, want to make another decision about these inactive rights holders, or already have a policy that we missed, then please notify the [[:m:Stewards' noticeboard|stewards on Meta-Wiki]] so that we know not to proceed with the rights review on your wiki. Thanks, – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 23:42, ngày 7 tháng 2 năm 2024 (UTC) :@[[Thành viên:Superpes15|Superpes15]] when his admin right removed on here if needed, could you also remove the autopatrolled right on his account in both Meta and Mediawiki pls cuz he'll go inactive forever and he's now untrusted by viwiki community due to his block on Abuse filter and other users (as I've mentioned [[Thảo luận thành viên:Nguyentrongphu#Về việc gỡ quyền BQV đối với Tuanminh01|here]]). – [[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>]]) 02:25, ngày 29 tháng 2 năm 2024 (UTC) ::Hi [[User:DefenderTienMinh07|DefenderTienMinh07]] and thanks for your request. I don't think we can remove autopatrolled flag just because they left wiki! Also, I'm not a sysop on mediawiki, and there's no reason to remove the flag there if they didn't do anything bad there. Thanks :) – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 00:40, ngày 7 tháng 3 năm 2024 (UTC) == Mục từ nghi vấn độ nổi bật == {{Đầu biểu quyết|KQ={{tick}} Đã giải quyết xong (xem thêm [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]]). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:11, ngày 18 tháng 4 năm 2024 (UTC)}} Chào các bạn, có một số mục từ được thành viên [[Thành viên:Dragon Immortal (Rồng Tiên)| Dragon Immortal (Rồng Tiên)]] (và các tài khoản phụ) khởi tạo, tôi tạm thống kê trong trang [[Thành viên:P. ĐĂNG/Nháp/Lưu 1|này]]. Dựa vào quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Names of specific entities] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Fictional universes] của Wiktionary bên en. Các mục từ này, theo tôi là nằm trong vòng lặp nghi vấn đề độ nổi bât. Tôi muốn lấy ý kiến chung để giải quyết các mục từ này vì độ nổi bật như tôi nói là không rõ ràng nên cần sự đồng thuận (giữ/xóa). Mời các bạn cho ý kiến. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :Tag các bạn: [[Thành viên:TheHighFighter2|TheHighFighter2]], [[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] và [[Thành viên:WhoAlone|WhoAlone]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :{{Ý kiến}} {{ping|P. ĐĂNG}} Hiện tôi đã liệt kê hết các trang tạo bởi chính thành viên này rồi, mời bạn xem tại [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối|đây]]. – <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> 02:52, ngày 13 tháng 4 năm 2024 (UTC) ::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Dựa theo quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Tên của các thực thể cụ thể], [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Place_names Tên địa danh] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Tên hư cấu]. Tại dòng " if they have three citations of figurative use that fulfill attestation requirements" và "Such terms which have three citations in separate works, but which do not have three citations that are independent of reference to that universe, may be included only in appendices of words from that universe, and not in the main dictionary space." Tôi đã xóa một số trang vì không đáp ứng tiêu chí được nhắc đến thông qua các trích dẫn đáp ứng theo điều kiện. Còn một số bài giữ lại, mời bạn cải thiện chất lượng cùng tôi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:14, ngày 13 tháng 4 năm 2024 (UTC) {{Kết biểu quyết}} == {{u|Dragon Immortal (Rồng Tiên)}} == Mấy ngày nay do tôi dịch truyện nên đôi khi giám sát thay đổi gần đây. Khi đang giám sát thì tôi vẫn thấy thành viên {{u|Dragon Immortal (Rồng Tiên)}} vẫn tiếp tục tạo những tài khoản phụ/rối khác dù đã nhắc nhở lần một. Tôi tạm liệt kê các tài khoản mới như sau: * {{u|Heavenly Immortals (Thiên Tiên)}} (mở tài khoản ngày 19 tháng 4 năm 2024) * {{u|Maitrī-karuṇā (benevolence and compassion)}} (mở tài khoản ngày 26 tháng 5 năm 2024) * {{u|Golden Immortal (Kim Tiên)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Nhân từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Tâm từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) Tôi có nên cấm các tài khoản này hay là chỉ nhắc thành viên thôi? – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:18, ngày 28 tháng 5 năm 2024 (UTC) :Tagging: {{ping|P. ĐĂNG|TheHighFighter2|WhoAlone}} – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:19, ngày 28 tháng 5 năm 2024 (UTC) ::Khi bạn nhắc nhở, các tài khoản này có phản hồi không hay chỉ tiếp tục tạo trang? – [[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:21, ngày 28 tháng 5 năm 2024 (UTC) :::{{ping|WhoAlone}} Chắc họ sẽ không phản hồi đâu bạn, chỉ tiếp tục sửa đổi hoặc tạo trang thôi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:29, ngày 28 tháng 5 năm 2024 (UTC) ::::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]], [[Thành viên:WhoAlone]] Chính sách quy định Wikimedia không cấm tv dùng nhiều hơn 1 tk với điều kiện công khai và không dùng cho lách luật. Tk [[Thành viên:Dragon Immortal (Rồng Tiên)|Dragon Immortal (Rồng Tiên)]] là tk chính đã được nhắc vào ngày 13/4/2024. Tính sau ngày này, kiểm tra qua các sửa đổi bao gồm tk rối, nếu có sai phạm như cũ các tk phụ và chính sẽ bị xử lí. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:51, ngày 28 tháng 5 năm 2024 (UTC) {{tick}} Đã xem qua các sửa đổi (bao gồm các tk phụ). Các tk phụ không có hành vi đáng lo ngại, sửa đổi thêm nội dung bình thường chủ yếu lấy từ web thuvienhoasen. Tk chính tiếp tục có hành vi tạo bài chất lượng kém. Tv có cải thiện ở các bài đã tạo khác nên lần này tôi dừng lại ở việc nhắc nhở. Tv này và các tk phụ sẽ cần chúng ta theo dõi thêm. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 10:57, ngày 31 tháng 5 năm 2024 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] @[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Mới quay lại sau những tháng ngày wikibreak kaka, nhân tiện tôi thấy 1 trong số tk bạn Nguyên nêu có 1 tk bị khóa toàn cục, vậy có nên cấm hết số chúng ko nhỉ? – [[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>]]) 03:05, ngày 26 tháng 7 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} "Hưng", không phải "Nguyên". Tất cả các tài khoản này đã bị cấm toàn cục do chúng là rối của Trân đấy thôi, nên là không cần cấm nữa. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 03:26, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Nguyên Hưng Trần}} Tôi có check trang [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]] thấy bạn có bỏ sót {{u|Fairy (đồng tính nam)}}. Một điều nữa, số tk này được cho là rối của Trân? Tôi khá bất ngờ ko biết từ trước nay Trân đã làm gì? [[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>]]) 03:34, ngày 26 tháng 7 năm 2024 (UTC) ::::Đã cấm. [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Số tk này tạo bài clk, thêm nội dung sai, tách lên đến trên 1 chục tk. Tiếp viên đã checkuser và xác nhận là Trân + khóa toàn cục các tk này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:13, ngày 26 tháng 7 năm 2024 (UTC) :::::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] tiếp viên checkuser xác nhận là Trân? Theo 1 tiếp viên trên SGC thông thường họ sẽ có quyền kiểm định tại trang loginwiki và chỉ vạch trần được các tài khoản đã log in hoặc được tạo dưới danh nghĩa cùng chung 1 địa chỉ IP, nếu checkuser của tiếp viên mạnh vậy thì cũng ko cần đến KĐV làm gì, phải chứ. Tôi vẫn tin rằng đây ko phải là Trân. Đó có thể là kẻ nào đó do tôi chưa xác định được IP nên ko thức sự chắc và chưa thể biết rằng đây là ai và có phải là Trân hay ko vì "Trân rất hiếm khi hoặc không đóng góp Wiktionary", trong khi quá rõ ràng Rồng Tiên khi lập acc xong đóng góp luôn trên đây. Theo tiếp viên EPIC Trân thường dùng nhà mạng Viettel, như vậy tv Rồng Tiên phải dùng nhà mạng Viettel, vpn/proxy hay cùng 1 thiết bị tôi mới khẳng định được đây là Trân được. Tôi nói thật là trước đây từng đang trong nỗi trầm cảm ko sao thoát được vì vụ lùm xùm bên vi tôi có tìm và làm quen Trân vì Trân giống tôi chỗ "đóng góp cho dự án khác trong khi bị cấm bên vi" và đã có nhiều BCB bên en cộng thêm hồi Trân chưa bị cấm từng là thiên địch của TTS nên tôi luôn tin tưởng Trân kaka, nhưng sau khi Trân bị cấm bên en thì tôi tạm gạt đi để bảo toàn uy tín, tâm đức và trí huệ của mình kaka nếu đây là Trân thật thì tôi sẽ cắt đứt cái mác best friend forever, đề cao cảnh giác, và sẵn lòng xử lý Trân vì hành vi múa rối sau tháng ngày tôi vắng kaka tôi có nói hơi quá ko nhỉ do 1 chút hướng nội và trình độ văn 5 điểm. – [[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>]]) 08:39, ngày 26 tháng 7 năm 2024 (UTC) ::::::[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Các tk trên chưa liệt kê đầy đủ (như tôi đã nói trên 1 chục tk đã được tạo; con số chính xác có thể gần 20 tk). Vì việc rối này tiền lệ rất hiếm hoạt động tại đây nên việc ngăn chặn đã diễn ra khá vòng vo vì chủ quan như vậy. Nếu xem kĩ, bạn sẽ nhận thấy cách đặt tên các tk này đều có điểm tương đồng. Một trong số tk đó có hoạt động bên Wikipedia Vi hoặc cả dự án khác... và bị một tuần tra viên khác wiki vi báo lên Meta với lý do rối Trân. Tôi đã trao đổi với tiếp viên Meta để xác nhận có dùng CU để xử lý yêu cầu đó không, và được tiếp viên trực tiếp cấm xác nhận có. Chính tôi là người sau đó chịu tránh nhiệm báo cáo các tk của rối này còn lại đã từng hoạt động tại Wiktionary. Tv này vẫn tiếp tục đang hoạt động bên wiki vi hiện tại và hàng loạt tk rối đã được báo lên để cấm taị wiki và Meta. Các vấn đề cá nhân tôi xin phép không thảo luận đến và khép lại vụ việc ở đây vì tất cả đã được xử lý. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:28, ngày 27 tháng 7 năm 2024 (UTC) : Mặc dù sự việc này đã xảy ra hơn 1 năm nhưng đống rác mục từ do nhóm rối này tạo vẫn chưa xử lý xong. [[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:10, ngày 31 tháng 12 năm 2025 (UTC) == Mã hóa dấu sóng trong Unicode == Xin mọi người xem xét [[s:Wikisource:Thảo luận/Mã hóa dấu sóng trong Unicode|tin tức về vụ mã hóa dấu sóng]] của bảng chữ cái quốc ngữ gốc trong Unicode. Nếu chuẩn hóa dấu này thì sẽ có thể xây dựng phần [[:Thể loại:Mục từ tiếng Việt trung cổ|tiếng Việt trung cổ]] dễ dàng hơn. – [[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:41, ngày 2 tháng 7 năm 2024 (UTC) == Có vấn đề tại [[Wiktionary:Trang Chính|Trang chính của Wiktionary tiếng Việt]] == Khi vào trang chính, nó có lỗi hiển thị số lượng ngôn ngữ. Ví dụ: * Hiện chúng ta có '''[[Đặc biệt:Thống kê|277,219 từ]]''' thuộc về '''[[Phụ lục:Ngôn ngữ|0 ngôn ngữ]]''' * Phần đề mục "Mục từ mới" hiển thị: '''-2 ngôn ngữ khá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>]] 04:39, ngày 16 tháng 10 năm 2024 (UTC) :Vấn đề bảo trì này xin mời BQV giao diện [[Thành viên:TheHighFighter2|TheHighFighter2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:47, ngày 16 tháng 10 năm 2024 (UTC) == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] như ở trang [https://vi.wiktionary.org/w/index.php?title=subsidiaries&oldid=1922998 subsidiaries], [https://vi.wiktionary.org/w/index.php?title=wheels&oldid=1946583 wheels]…[[Đặc biệt:Contributions/118.68.140.41|118.68.140.41]] ([[Thảo luận Thành viên:118.68.140.41|thảo luận]]) 05:40, ngày 21 tháng 11 năm 2024 (UTC) : {{ping|Trong Dang|TheHighFighter2}} Cảm ơn hai bạn đã sửa giúp ở [https://vi.wiktionary.org/w/index.php?title=subsidiaries&diff=prev&oldid=2190258 đây] và [https://vi.wiktionary.org/w/index.php?title=wheels&diff=prev&oldid=2190315 đây]. Việc thiếu tham số en còn tồn tại ở hàng loạt bài khác như [https://vi.wiktionary.org/w/index.php?title=cookies&oldid=1817694 cookies], [https://vi.wiktionary.org/w/index.php?title=quizzes&oldid=1901703 quizzes]… Có cách nào để giải quyết hàng loạt chứ sửa thủ công cũng mắc công mọi người.[[Đặc biệt:Contributions/1.52.135.108|1.52.135.108]] ([[Thảo luận Thành viên:1.52.135.108|thảo luận]]) 03:13, ngày 4 tháng 12 năm 2024 (UTC) == <span lang="en" dir="ltr">Migration to Parsoid</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Hello everyone! I am glad to inform you that as the next step in the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, Parsoid will soon be turned on as the default article renderer on your Wiktionary. We are gradually increasing the number of wikis using Parsoid, with the intention of making it the default wikitext parser for MediaWiki's next long-term support release. This will make our wikis more reliable and consistent for editors, readers, and tools to use, as well as making the development of future wikitext features easier. If this transition disrupts your workflow, don’t worry! You can still opt out through a user preference or turn Parsoid off on the current page using the Tools submenu, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation. There is [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Confidence_Framework|more information about our roll-out strategy]] available, including the testing done before we turn on Parsoid for a new wiki. To report bugs and issues, please look at our [[mw:Special:MyLanguage/Parsoid/Parser Unification/Known Issues|known issues]] documentation and if you found a new bug please create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]]. <section end="announcement-content" /> </div> <em>[[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Parsoid Read Views/Wiktionary Announcement|{{MediaWiki:Please-translate}}]]</em> <bdi lang="en" dir="ltr">[[mw:User:CAnanian (WMF)|C. Scott Ananian]] (Parsoid technical lead)</bdi> 20:48, ngày 12 tháng 2 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:CAnanian (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Wikimedia_Foundation/Product_and_Technology/Parsoid_Read_Views/2025-02-12_Wiktionaries&oldid=28256121 --> == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # [[User:ThiênĐế98]] (bảo quản viên) # [[User:Trần Nguyễn Minh Huy]] (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, – [[Thành viên:EPIC|EPIC]] ([[Thảo luận Thành viên:EPIC|thảo luận]]) 23:16, ngày 22 tháng 2 năm 2025 (UTC) == Các bản mẫu lỗi thời == {{Wiktionary:Thảo luận/Các bản mẫu lỗi thời}} == Số mục từ == Theo tiêu chuẩn, các trang nội dung trong không gian chính có thể chứa hơn một mục từ theo ngôn ngữ, nhưng phần mềm không tính các mục từ này, chỉ tính số trang thôi. Trong nhiều năm trước đây, {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary/A|Mô đun:Thống kê Wiktionary]] sử dụng các từ khóa <code>pagesincategory:</code> để cộng lại số trang trong các thể loại con của [[:Thể loại:Mục từ theo ngôn ngữ]]. Đây là tổng số được trình bày rất đáng kể trên Trang Chính và [[Đặc biệt:Thống kê|trang thống kê]]. Cách đây khoảng 2 năm, hệ thống này [[Thảo luận Mô đun:Thống kê Wiktionary/A#Sự cố do mức độ xử lý cao|bị vỡ]] khi thêm nhiều ngôn ngữ quá mức vào hệ thống bản mẫu. Vì chúng ta vẫn tiếp tục thêm nhiều ngôn ngữ, phương pháp cũ không còn có lý nữa, nhưng chúng ta vẫn nên phân biệt các mục từ theo ngôn ngữ để cho các độc giả biết kích cỡ thật của từ điển này. Hôm qua tôi tái tạo {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary]] tính theo một [[c:Data:Vietnamese Wiktionary language category statistics.tab|bảng dữ liệu]] ở Wikimedia Commons. Vì API đã có thể cho ra các tên thể loại, chúng ta không cần phải quản lý danh sách thể loại ngôn ngữ thủ công như trước. Tạm thời tôi sẽ cố gắng cập nhật bảng này thường xuyên một cách thủ công. Hy vọng rằng chúng ta sẽ tìm cách để chạy bot để cập nhật nó một cách tự động, hoặc liên lạc với chuyên gia về bot để cập nhật giùm. Xin thử hệ thống này cho một thời gian, nếu không được thì có thể tìm cách khác để xác định số mục từ thật. Cám ơn sự kiên nhẫn của các bạn. &nbsp;&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> 13:17, ngày 11 tháng 7 năm 2025 (UTC) == Đợt cải cách thể chế == Các bạn trong nước có lẽ đang bận cập nhật các bài Wikipedia về [[:w:vi:Danh sách đơn vị hành chính Việt Nam trong đợt cải cách thể chế 2024–2025|đợt cải cách thể chế]] mấy tháng nay. Xin đừng bỏ lỡ Wiktionary. Hình như [[Thành viên:MuDavid|MuDavid]] đã cập nhật hàng loạt mục từ bên Wiktionary tiếng Anh, nhưng bên đây chưa được cập nhật. Ngoài ra, các mục từ tên huyện, quận cũng chưa được cập nhật. Có cần tự động hóa các thay đổi này không, hoặc nên cập nhật thủ công từng địa danh một? – [[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> 17:31, ngày 11 tháng 7 năm 2025 (UTC) :[[Thành viên:Mxn|Mxn]] Tôi quên tất việc Wiktionary cũng cần được cập nhật một số thông tin mới này. Nếu được, tôi nghĩ nên hỗ trợ phần nào bằng việc tự động hóa các mục từ trong [[:Thể loại:Địa danh tiếng Việt]] (vì chúng ta chưa kể còn thể loại các danh sách địa danh tên riêng có tiếng Việt). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:45, ngày 11 tháng 7 năm 2025 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]]: Tự động hóa có nghĩa cấu trúc lại bằng {{LKBM|place}} phải không? [[Mô đun:place/placetypes]] đại khái vẫn chưa được dịch sang tiếng Việt. Chắc cần để ý đến cả ngữ pháp đối với mô đun này, thí dụ xóa các trường hợp số nhiều. Sau đó có thể chạy bot thay thế các định nghĩa theo biểu thức chính quy. Có lẽ việc này có thể xảy ra cùng lúc với việc thủ công thêm nhãn {{LKBM|@|sử}} hay {{LKBM|nhãn|vi|historical}} và định nghĩa mới. – [[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> 22:51, ngày 16 tháng 7 năm 2025 (UTC) :::Rất xin lỗi [[Thảo luận Thành viên:Mxn|Mxn]] vì phản hồi trễ. Bạn có thể trình bày một số ý tưởng tự động hóa bằng bot không? Hiện tại, sau khi nghĩ kỹ, tôi nhận thấy việc cập nhật mục từ có ảnh hưởng từ đợt cải cách này chủ yếu sẽ thực hiện "định nghĩa mới" (nội dung). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:54, ngày 24 tháng 7 năm 2025 (UTC) : @[[Thành viên:Mxn|Mxn]] Tôi nghĩ đề xuất tên thể loại đối với địa danh, chẳng hạn như [[:Thể loại:Địa danh của Việt Nam]], [[:Thể loại:Tỉnh của Nhật Bản]], [[:Thể loại:Khu tự quản của Slovenia]]. [[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:55, ngày 27 tháng 7 năm 2025 (UTC) : Bản chất [[:Thể loại:Địa danh tiếng Việt]] nó thuộc về thể loại này ([[:en:Category:vi:Places]]) [[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:57, ngày 27 tháng 7 năm 2025 (UTC) == Thông báo: FVDP đã bị xóa == Tin buồn cách đây vài tháng nhưng không ai để ý đó là từ điển FVDP [https://www.informatik.uni-leipzig.de/~duc/Dict/ gốc], một tài liệu từ điển mở là nền móng đầu tiên của Wiktionary tiếng Việt ngày nay đã bị trường đại học ở leipzig xóa, khả năng là web quá cũ và quá lâu nên xóa để cập nhật. Tất cả nguồn khác đã die từ rất lâu: Hiện từ điển này vẫn còn lưu trữ trên một số trang sau: * Wayback ** [https://web.archive.org/web/*/https://www.informatik.uni-leipzig.de/~duc/Java/J2ME/MobiPocket/* Từ điển offline MobiPocket Reader], có một số bản từ điển Anh-Việt (bản đầy đủ), Pháp Việt và Việt Pháp. ** [https://dict.quehuong.org quehuong.org], bản này có vẻ như lấy từ FVDP. Cảm ơn đã xem và cảm ơn, trân trọng kính báo. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:09, ngày 19 tháng 7 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]]: Thật buồn quá. Tôi đã cập nhật {{LKBM|R:FVDP}} để liên kết đến các gói dữ liệu DICT gốc được lưu trữ tại Wayback Machine. (Các gói này cũng bao gồm một số từ điển song ngữ và rất nhiều mục từ tiếng Việt chưa được nhập vào đây.) Ngày nào có thì giờ tôi tính thiết lập máy chủ DICT để mirror FVDP tại [[Wikitech:Portal:Toolforge|Toolforge]] để dễ tham khảo hơn. – [[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:53, ngày 22 tháng 7 năm 2025 (UTC) == 📢 Thông báo: Quy tắc mới cho Mô đun:Category tree == Để thống nhất cách đặt tên thể loại và đảm bảo '''Mô đun:Category tree''' hoạt động chính xác, kể từ nay vui lòng tuân thủ các quy tắc sau: === 1️⃣ Quy tắc chung === * Tên thể loại có dạng: <pre> Label + tên ngôn ngữ </pre> ;Ví dụ: * ''Danh từ tiếng Việt'' * ''Động từ tiếng Anh'' * ''Thành ngữ tiếng Pháp'' === 2️⃣ Quy tắc cho các chủ đề === * Với các thể loại đang có dạng: <pre> Chủ đề\Tên Ngôn ngữ </pre> hãy chuyển toàn bộ về: <pre> Mã ngôn ngữ:Tên chủ đề </pre> ;Ví dụ: * <code>Động vật\Tiếng Anh</code> → <code>en:Động vật</code> * <code>Ẩm thực\Tiếng Việt</code> → <code>vi:Ẩm thực</code> === 3️⃣ Quy tắc cho tên có chứa ngôn ngữ ở giữa === * Áp dụng khi tên thể loại có '''tên ngôn ngữ''' không nằm ở đầu hay cuối, mà xuất hiện bên trong cụm từ. * Trường hợp phổ biến: <pre> Thể loại:Từ tiếng [Ngôn ngữ] theo từ nguyên </pre> hãy đổi thành: <pre> Thể loại:Từ theo từ nguyên tiếng [Ngôn ngữ] </pre> ;Ví dụ: * <code>Thể loại:Từ tiếng Việt theo từ nguyên</code> → <code>Thể loại:Từ theo từ nguyên tiếng Việt</code> '''💡 Lưu ý:''' * Mã ngôn ngữ cần tuân thủ thứ tự ưu tiên sau: ** Ưu tiên 1: chuẩn ISO&nbsp;639-1 (hai ký tự, nếu có). ** Ưu tiên 2: chuẩn ISO&nbsp;639-2 (ba ký tự, nếu không có ISO&nbsp;639-1). ** Ưu tiên 3: chuẩn ISO&nbsp;639-3 (ba ký tự, khi không có 639-1 hoặc 639-2). * Cập nhật liên kết trong các trang con khi đổi tên để tránh lỗi hiển thị. * Do hạn chế về bản mẫu, một số thể loại con hiện vẫn chưa thể thêm được module này; xin vui lòng thêm thể loại đó bằng tay. ---- ✨ '''Kính mời mọi người giúp đỡ''' trong việc rà soát và áp dụng các quy tắc trên, nhằm giữ cho hệ thống thể loại luôn rõ ràng và đồng bộ.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:17, ngày 14 tháng 9 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]], @[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] Bên en có 2 thể loại khác nhau là [[:en:Category:English numbers]] và [[:en:Category:English numerals]]. Nên thống nhất dịch "numbers" là "số", còn "numerals" là "số từ" để sửa lại liên kết Wikidata và những nội dung khác liên quan--.--[[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:49, ngày 14 tháng 9 năm 2025 (UTC) :: @[[Thành viên:TheHighFighter2|TheHighFighter2]] Sẽ mất rất nhiều thời gian để sửa lại các vấn đề liên quan đến số và số từ. [[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:15, ngày 30 tháng 10 năm 2025 (UTC) :::@[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] "Cứ từ từ rồi khoai nó cũng nhừ" --.--[[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:50, ngày 30 tháng 10 năm 2025 (UTC) : @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Tôi đề xuất thêm đổi thể loại liên quan đến vần. Ví dụ như đổi [[:Thể loại:Vần tiếng Estonia/aht]] thành [[:Thể loại:Vần:Tiếng Estonia/aht]]. [[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>]]) 08:59, ngày 18 tháng 9 năm 2025 (UTC) ::Hình như chúng ta chưa có thể loại vần mà nhỉ, em thấy nhiều mục từ có tiêu đề rõ ràng là không đúng quy tắc – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:03, ngày 18 tháng 9 năm 2025 (UTC) ::: @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Nhắc mới nhớ dự án chúng ta chưa có không gian tên Rhymes (Vần). [[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>]]) 09:07, ngày 18 tháng 9 năm 2025 (UTC) ::::Khả năng phải gọi @[[Thành viên:Mxn|Mxn]] ra ý kiến thôi – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:23, ngày 18 tháng 9 năm 2025 (UTC) == Thông báo: Twinkle đã hoạt động == Wiktionary tiếng Việt hiện đã có Twinkle, Các thành viên có thể sử dụng bằng cách bật trong tùy chọn. :'''Lưu ý''': Hiện đang dịch sang tiếng Việt và do thiếu bản mẫu, có thể một số tính năng không hoạt động đúng. Tuy nhiên so với bản của Hide of Roze thì bản này là bản từ Wikipedia tiếng Anh nên tất cả tính năng được xác nhận là hoạt động được, chỉ là thiếu bản mẫu mà thôi. :BQV nào rảnh có thể qua dịch cù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]]) 16:36, ngày 5 tháng 10 năm 2025 (UTC) == Từ điển giấy == Thân tặng mọi người ''Từ điển tiếng Việt'' [https://archive.org/details/1BkF0KZgSGksZHbQzxaWVqrF7VV8hvnJjcozsFGyULH2/page/n3/mode/2up bản năm 2021] của Hoàng Phê để phát triển dự án. – [[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]]) 22:38, ngày 26 tháng 10 năm 2025 (UTC) :Cảm ơn bác nhiều nhé. Cái này em sẽ đưa vào bản mẫu tham khảo để trích dẫn các từ có dẫn lại định nghĩa từ từ điển này (có viết lạ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]]) 02:49, ngày 27 tháng 10 năm 2025 (UTC) == Biểu quyết tước quyền == Đáng tiếc, tôi [[Wiktionary:Biểu quyết#Tước quyền hành chính viên, bảo quản viên của Nguyentrongphu|đề nghị tước các quyền đặc biệt]] của hành chính viên [[Thành viên:Nguyentrongphu|Nguyentrongphu]] vào lúc đã bị cấm toàn cục. Xin tham gia cuộc biểu quyết. – [[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:59, ngày 29 tháng 10 năm 2025 (UTC) == [[Mô đun:cs-sk-headword/testcases]] misuse == "Mô đun:*/testcases" pages should only be used for unit tests. This page should be renamed to a new title without the "/testcases" suffix. – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 04:15, ngày 11 tháng 11 năm 2025 (UTC) :@[[Thành viên:Public class|Public class]] Thanks for your noticed. I already updated main module ([[Mô đun:cs-sk-headword]]). – [[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:36, ngày 11 tháng 11 năm 2025 (UTC) == Lỗi hiển thị liên kết (2) == Tôi vừa thêm thông tin vào [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ]]. Có liên kết. Viết liên kết xong nó xem trước và xem chính thức gì nó cũng biến mất cả đoạn trong dấu ngoặc vuông luôn. Mà tạo liên kết ở mấy trang khác như trang này thì rất ok. Không biết lỗi gì đây. – [[Thành viên:NHNAnh|NHNAnh]] ([[Thảo luận Thành viên:NHNAnh|thảo luận]]) 10:02, ngày 19 tháng 2 năm 2026 (UTC) :@[[Thành viên:NHNAnh|NHNAnh]] Bạn phải thêm dấu hai chấm vào trước, vd: <syntaxhighlight lang="javascript">[[:Thể loại:Mục từ tiếng Anh|Tiếng Anh]]</syntaxhighlight> :Ngoài ra, thay vì thêm thông tin vào trang chính, hãy đưa vào các trang con xếp theo bảng chữ cái, như trang [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ/A]]. :Tôi vừa xem qua, trên di động không hiển thị bảng mục lục chữ cái giống như trên máy tính. Tôi sẽ sớm khắc phục vấn đề này. :--.--[[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]]) 12:45, ngày 19 tháng 2 năm 2026 (UTC) == Thông báo vê tratu.soha.vn == Sau một thời gian theo dõi và đánh giá, em nhận thấy hiện tại '''không nên sử dụng vào tratu.soha.vn để sao chép, tra cứu hay tham khảo nội dung'''. Nguyên nhân là do trang này dùng MediaWiki quá cũ hiện đang tỏ ra rất thiếu ổn định. Qua kiểm tra các thay đổi gần đây, có thể xác nhận rằng tratu.soha.vn thường xuyên bị tấn công. Trong vài tháng trở lại đây, trung bình mỗi tháng trang này đều phải hứng chịu ít nhất một đợt tấn công dẫn đến gián đoạn. Đợt tấn công không chiếm được toàn bộ hệ thống, nhưng đã gây ra tình trạng sập trang web tạm thời, chèn link quảng cáo, spam nội dung trong một số trang wiki, mục từ thì không thấy bị sao. Sau ngày 3 tháng 6, có vẻ như quản trị web đã quyết định áp dụng biện pháp giới hạn lượng truy cập nhằm bảo vệ hệ thống dẫn đến hệ lụy tạm thời hay gặp các lỗi 502 (Bad Gateway) hoặc 503 (Service Unavailable), khiến việc truy cập trở nên khó khăn và không đáng tin cậy. Vì những lý do trên, em nghĩ hãy sử dụng các nguồn tra cứu thay thế uy tín hơn. Em đã xác nhận một số nguồn sau đây có vẻ như là sao chép từ tratu hoặc có nội dung tương tự. * https://tudientv.com/ trang này là chuyên về từ điển tiếng Việt, trên website có nói nội dung hầu hết từ "Từ điển Soha. Đây là nguồn dữ liệu chính do Vietlex biên soạn (Hoàng Phê chủ biên)", đã kiểm tra và xác nhận, tra cứu rất nhanh và ổn định nhưng có vấn đề là nội dung không đầy đủ, một số mục từ mất nội dung do quá trình trích xuất bị thiếu những nội dung ngoài lập trình. * https://v2.rung.vn/ hình như là bản sao của Tratu nhưng có các mục từ mới, dẫn đến một số kho mục từ cao hơn trang gốc * Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học phiên bản 2018 và 2021 - 2 cái này hình như phần lớn có nội dung tương tự tratu, có thể tham khảo được. Vietlex thì họ không xuất bản từ điển online. Phiên bản sau năm 2008 không có trên mạng, chỉ có bán sách. Bản 2008 hình như chỉ có trên Tratu. Vì vậy nên dùng Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học. Các bác biên tập mục từ chú ý nhé. Cập nhật: Trang tratu.soha.vn tạm thời offline hoàn toàn, không còn truy cập được nữa, báo lỗi 503, có vẻ là máy chủ đã bị down hoặc quá tả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]]) 16:45, ngày 10 tháng 6 năm 2026 (UTC) :'''Update''': Website đã quay lại. Mọi người có thể dùng bình thườ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]]) 10:11, ngày 12 tháng 6 năm 2026 (UTC) : Thấy mấy trang trong thông báo không thấy trang nào đạt "uy tín". Nếu bên Soha Tra từ có trục trặc, thì nên tiến hành archive dần các liên kết. Tất nhiên có thể Wiktionary có tiêu chuẩn nguồn khác Wikipedia, nên là "chắc dùng cũng được". [[Thành viên:Plantaest|Plantaest]] ([[Thảo luận Thành viên:Plantaest|thảo luận]]) 17:37, ngày 19 tháng 6 năm 2026 (UTC) == Yummie == Nếu như bên viwiki thì bơ luôn Yummie để các BQV toàn cục cấm và các tiếp viên khóa hoặc cấm toàn cục + dừng tạo trang với biển rối vì nếu đặt biển rối thì hắn sẽ trở nên "nổi tiếng", thì bên viwikt cũng nên làm như vậy. Có ai đồng ý với tôi không? – [[Thành viên:Higashizakura|<span style="color:black; font-family:Noto Serif JP, serif;">'''Đông Anh'''🌸</span>]]<sup style="font-family:Noto Serif JP, serif">[[Thảo luận Thành viên:Higashizakura|話す]]</sup> 01:08, ngày 5 tháng 9 năm 2026 (UTC) : Cách tốt nhất đối phó tên này là bơ đi và cứ xử lý cấm tài khoản vô hạn như thường. Sau đó xóa các phiên bản do rối phá hoại. Cấm TKTT chỉ tác dụng một phần, tìm IP trong TKTT và phải cấm cả dải 32/48 (IPv6) hoặc dải 16/20 (IPv4). [[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>]]) 10:59, ngày 5 tháng 9 năm 2026 (UTC) == Quyền người tự đánh dấu tuần tra == Lưu ý là quyền hạn người tự đánh dấu tuần tra và tuần tra viên hiện không có sẵn một cách riêng biệt tại dự án và chỉ được phân công, giao cho bảo quản viên phụ trách tôi có nhắc đến ở [https://vi.wiktionary.org/w/index.php?title=Wiktionary:Ng%C6%B0%E1%BB%9Di_t%E1%BB%B1_%C4%91%C3%A1nh_d%E1%BA%A5u_tu%E1%BA%A7n_tra&diff=prev&oldid=2562855 đây] và [https://vi.wiktionary.org/w/index.php?title=Wiktionary:B%E1%BA%A3o_qu%E1%BA%A3n_vi%C3%AAn&diff=prev&oldid=2562859 đây]. Tôi muốn quyền này được thêm riêng vào dự án hoặc sẵn tiện cấp phát thẳng vào quyền người lùi sửa để rút ngắn thời gian làm việc của bảo quản viên trong công tác tuần tra (tôi biết là có thể phải thông qua một số quy trình phức tạp trên Phabricator hoặc tư vấn với tiếp viên bên meta), mong mọi người hỗ trợ. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 22:19, ngày 12 tháng 9 năm 2026 (UTC) == Cập nhật == Hiện tại [[Mô đun:headword]] bên en có một số chức năng mới cập nhật. Do đó mô đun này sẽ được cập nhật lại, nếu phát hiện lỗi xin vui lòng báo lại tại đây. Một số trang có thể gặp lỗi do chức năng altform=1 sẽ sớm thay bằng var=1. Note: [[Mô đun:pron qualifier]] (cũ) và [[Mô đun:decorations]] (mới) sẽ để riêng, tạm thời chưa xóa cái pron qualifier. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:27, ngày 25 tháng 9 năm 2026 (UTC) : Đề nghị xóa [[Mô đun:headword/util]] do không còn dùng bất kỳ chức năng gọi mô đun chính của headword. [[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>]]) 08:14, ngày 25 tháng 9 năm 2026 (UTC) kx8qdcf1trz7ygwhnzp818i3s0l9qmr 2566646 2566629 2026-09-26T10:39:31Z Hiyuune 50834 /* Cập nhật */ Trả lời ([[mw:c:Special:MyLanguage/User:JWBTH/CD|CD]]) 2566646 wikitext text/x-wiki {{Wiktionary:Thảo luận/Đầu}} == Thêm một vấn đề lớn nữa ở Wiktionary tiếng Việt == Sau khi kiểm tra [[Đặc biệt:Trang ngắn]], tôi phát hiện đặc điểm của các trang có dung lượng rất ngắn này gồm thiếu liên kết, không có thể loại là chủ yếu. Do số lượng mục từ kiểu này khá nhiều nên nó đã trở thành một vấn đề lớn nữa ở Wiktionary tiếng Việt. Mong các bạn dành thời gian cải thiện lại chúng. 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>]] 13:24, ngày 9 tháng 2 năm 2022 (UTC) :Đây là những mục từ được tạo trong thời gian năm 2017, thời gian gần như không ai quản lý Wiktionary nên cũng không trách đượ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]]) 03:57, ngày 11 tháng 2 năm 2022 (UTC) ::Tôi không có ý trách ai cả. Quan trọng là có ai đủ thời gian để cải thiện lại chúng. Tôi thì hiện nay không dùng máy tính nhiều nên không thể làm hết được. – [[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>]] 13:59, ngày 11 tháng 2 năm 2022 (UTC) : Hiện tại phần lớn các mục từ dung lượng ngắn đều là các mục từ dùng với ja-see và zh-see. Phần lớn chúng đã được xếp thể loại tương ứng. [[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>]]) 10:04, ngày 30 tháng 7 năm 2026 (UTC) == Phát hiện trường hợp ngôn ngữ không có mã ISO 639: Saanich == Kiểm tra trên trang web chính thức của ISO 639-3, [https://iso639-3.sil.org/search/content/Saanich không có kết quả]. Wikipedia tiếng Anh cho rằng mã ISO 15924 của ngôn ngữ này cũng là “Latn”. Vậy trường hợp này nên giải quyết thế nào? 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>]] 11:37, ngày 22 tháng 2 năm 2022 (UTC) :{{u|Ccv2020}} Theo tôi, thì có thể dùng mã "-saan-" (viết tắt của 4 chữ cái đầu)--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 00:39, ngày 24 tháng 2 năm 2022 (UTC) :@[[Thành viên:Ccv2020|Ccv2020]]: Tiếng Saanich trực thuộc [[w:en:North Straits Salish language|tiếng Salish eo bắc]] có mã ISO&nbsp;639 là "str". [https://www.ethnologue.com/language/str] Wiktionary tiếng Anh sử dụng mã này trong [[:en:Module:languages/canonical names]]. ISO&nbsp;15924 là "Latn" chỉ có nghĩa rằng ngôn ngữ này được viết bằng chữ Latinh. – [[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> 22:47, ngày 21 tháng 5 năm 2022 (UTC) ::{{u|Mxn}}: Cảm ơn bạn đã hỗ trợ. [[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>]] 02:15, ngày 22 tháng 5 năm 2022 (UTC) == [[𥜥]] == [[MediaWiki:Gadget-TabbedLanguages.js|Gadget TabbedLanguages]] hình như không hoạt động tốt với bảng nổi. Liên kết đến Đặc biệt:Tiền tố không nhấp được. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 09:23, ngày 24 tháng 4 năm 2022 (UTC) :{{u|NguoiDungKhongDinhDanh}}: Tôi thấy nó vẫn hoạt động bình thường. Bạn thử kiểm tra xem lỗi do xung đột tiện ích nào. [[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>]] 10:42, ngày 24 tháng 4 năm 2022 (UTC) ::{{ping|Ccv2020}} Tôi đã thử bật safemode. Kết quả vẫn vậy. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 10:48, ngày 24 tháng 4 năm 2022 (UTC) :::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Có cài [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets|tiện ích wiki]] khác nào khô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> 22:38, ngày 21 tháng 5 năm 2022 (UTC) ::::{{ping|Mxn}} Một số, nhưng có vẻ không liên quan. Anh có thể thử tải [[MediaWiki:Gadget-TabbedLanguages.js|gadget]] bằng bảng điều khiển của trình duyệt khi [{{fullurl:𥜥|safemode=1}} bật safemode]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 22:43, ngày 21 tháng 5 năm 2022 (UTC) :::::@[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]]: Chế độ safemode tắt tất cả các tiện ích, kể cả TabbedLanguages, nên dĩ nhiên nó không hoạt động. Đọc lại hình như bạn báo cáo về {{LKBM|zho-prefix}} chiếm cả một bên trang. Theo tôi, bản mẫu này nên được đưa bên dưới {{LKBM|-Hani-}} vì nó có liên quan đến phần đó. Nếu không thì tiện ích nên đưa hộp này tới đâu? – [[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> 22:52, ngày 21 tháng 5 năm 2022 (UTC) ::::::{{ping|Mxn}} ...và vì thế nên tôi mới tải thủ công bằng bảng điều khiển trình duyệt. Ngoài ra, lỗi chỉ tái hiện được nếu mục lục bị ẩn. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 23:00, ngày 21 tháng 5 năm 2022 (UTC) == Lỗi hiển thị liên kết? == Gần đây, khi tôi vừa tạo trang mới thì vẫn thấy xuất hiện liên kết đỏ. Cụ thể là sau khi thêm liên kết đó vào một trang rồi tạo trang đó, sau khi tải lại trang thì liên kết đỏ vẫn xuất hiện, trong khi thực tế trang đã tồn tại. Không rõ đây có phải lỗi hay không, nhưng khi làm mới trang hoàn toàn thì không thấy xuất hiện liên kết đỏ nữa. Ai đó xin giải thích giúp mình với, 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>]] 02:20, ngày 27 tháng 4 năm 2022 (UTC) :Ngắn gọn: Do bộ nhớ đệm. Dài dòng: [[:en:Cache (computing)]]. [[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] ([[Thảo luận Thành viên:NguoiDungKhongDinhDanh|thảo luận]]) 15:15, ngày 5 tháng 5 năm 2022 (UTC) == Dữ liệu từ điển học từ Wikidata == Hôm nay nhóm phát triển phần mềm đã [[d:Wikidata talk:Lexicographical data#You can now reuse Wikidata Lexemes on all wikis|kích hoạt chức năng]] lấy [[d:Wikidata:Lexicographical data/vi|dữ liệu từ điển học từ Wikidata]] (''Wikidata lexicographical data'') tại wiki này. Chúng ta có thể lưu trữ các siêu dữ liệu về ngữ nghĩa, từ đồng nghĩa/trái nghĩa, dịch thuật, chữ Nôm, v.v. tại Wikidata dưới dạng có cấu trúc, có sẵn giao diện đàng hoàng thay vì phải nhớ cú pháp mã wiki chính xác. Như vầy các phiên bản Wiktionary có thể dùng chung các dữ liệu và phát triển cùng nhau. Xem thí dụ các từ vị (''lexeme'') sau: * {{LKTT|L1867}} * {{LKTT|L2297}} * {{LKTT|L619034}} Dữ liệu tiếng Việt [[d:Wikidata:Lexicographical coverage#vi|còn thiếu]] đối với các ngôn ngữ khác, hiện tại [[d:Wikidata:Lexicographical data/Statistics/Counts of various things by language|xếp hạng thứ 61]] sau những ngôn ngữ nhỏ tí như Phạn, Mân Nam, Klingon. Chúng ta có thể sử dụng các công cụ như Dịch vụ Truy vấn Wikidata và [[d:Wikidata:QuickStatements|QuickStatements]] để truy vấn và tự động sửa đổi hàng loạt từ vị: * [https://w.wiki/5MbB Tất cả các từ vị tiếng Việt hiện tại, sắp xếp theo từ loại] * [https://ordia.toolforge.org/language/Q9199 Các biểu đồ về từ vị tiếng Việt] Chúng ta có thể xây dựng các mô đun và bản mẫu để tự động tạo ra nội dung của mục từ. Tương lai thí dụ nếu muốn tạo mục từ tiếng Anh mới, chỉ việc dịch các ngữ nghĩa bên Wikidata và đưa ID từ vị (''lexeme ID'') vào mục từ là tất cả nội dung sẽ xuất hiện, không cần biết cách chia động từ hoặc liệt kê các từ đồng nghĩa thủ công. Ngoài ra, Wikisource tiếng Việt cũng có thể tạo các tham khảo chéo trong các cuốn từ điển cổ như [[s:Từ điển Việt–Bồ–La|Từ điển Việt–Bồ–La]]. Hôm nay tôi thử [[Mô đun:Thử/Mxn/Từ vị|xây một mô đun]] và [[Bản mẫu:Thử/Mxn/nôm|bản mẫu]] tự động liệt kê các chữ Nôm ứng với một ID từ vị: chỉ việc đưa {{LKBM|Thử/Mxn/nôm|L1867}} vào [[bánh#Tiếng Việt]] để chèn danh sách này. Một số phiên bản Wiktionary khác đã bắt đầu xây dựng các bản mẫu phức tạp hơn. {{tracked|T236593}} {{tracked|T180345}} Lưu ý rằng phần mềm Wikidata vẫn đang được phát triển tích cực. Trong tiếng Việt, chúng ta [[d:Wikidata talk:Lexicographical data#Forms in Vietnamese|rất cần]] phần mềm [[phab:T236593|cho phép một từ vị ứng với hơn một chữ Nôm]]. Tạm thời chúng ta đang lạm dụng các "dạng" để lưu trữ các chữ Nôm. Chúng ta cũng [[phab:T180345|chờ đợi]] nhóm phát triển kích hoạt mã ngôn ngữ <code>vi-Hani</code> để nhắc đến chữ Nôm thay vì mã tạm <code>vi-x-Q8201</code>. (Chữ nho đã có mã <code>lzh</code>.) Đây chỉ là bước đầu tiên trong một quá trình rất lớn. Cộng đồng Wikidata có nhiều người chuyên môn về kỹ thuật này muốn giúp chúng ta tích hợp Wikidata thành công. Nếu có thắc mắc hoặc yêu cầu nào đó, tôi sẽ ủng hộ các bạn và bảo đảm rằng nhóm phát triển hiểu về những điều cần cải thiện trong hệ thống mới. &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> 01:00, ngày 22 tháng 6 năm 2022 (UTC) :Tôi đã cấu trúc lại các từ vị để chia ra các chữ Nôm thành từ vị riêng được liên kết với các từ vị quốc ngữ như "cách biên dịch". Như vậy có lẽ dễ hiểu hơn và không bị nhầm lẫn với dạng ngữ pháp bởi các phần mềm chuyên môn về các ngôn ngữ phương Tây. – [[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> 18:19, ngày 27 tháng 6 năm 2022 (UTC) == [https://meta.wikimedia.org/wiki/Grants:Conference/Wikimedia_Australia/ESEAP_Conference_2022 Hội thảo ESEAP 2022] == Chào các bạn, hội thảo vùng ESEAP năm nay sẽ tổ chức ở Australia từ ngày 18 đến ngày 20 tháng 11 năm 2022, hạn chót vào '''ngày 24 tháng 7 năm 2022'''. [https://meta.wikimedia.org/wiki/Vietnam_Wikimedians_User_Group Nhóm người dùng Việt Nam chắc] '''2 suất''' để tham dự hội nghị để phát triển cộng đồng đại diện cho các dự án bằng ngôn ngữ Tiếng Việt. Ngoài ra các suất khác có thể đăng ký thêm bằng đường dẫn sau [https://docs.google.com/forms/d/e/1FAIpQLScPeV3e-xOGyRyvhYj7lpAQs-2DGRCgxgw6HmVNLwesWJa-WA/viewform?fbclid=IwAR2zOt-5TpMExI83LbKGiCoA_OkMnLX28tNSO8mDEI5w5Ov-Qfd2zmepWSs], không có giới hạn về suất đăng ký cho mỗi dự án ngôn ngữ, có thể 4-5 suất cũng được. Tinh thần càng đông càng vui. Những ứng viên tham gia nên có tiếng Anh speaking tốt một chút để có thể theo kịp các hoạt động thảo luận ở hội thảo này. Xin đề cử 1 số cái tên nổi bật trong việc phát triển cộng đồng và có tham gia/có kinh nghiệm các hoạt động ở Meta như {{u|Bluetpp}}, {{u|NguoiDungKhongDinhDanh}}, {{u|Trần Nguyễn Minh Huy}}?, {{u|Tuanminh01}}? và các ứng viên trẻ tuổi khác, không rõ trình độ tiếng Anh các bạn trẻ ra sao? Nếu các bạn tham gia theo tư cách nhóm người dùng xin reply ở đây hoặc email cho tôi. Nhóm người dùng có thể được lập bằng 3 thành viên chung 1 dự án bất kỳ và đề nghị thành lập với Meta, lưu ý phải tiết lộ danh tính. Nếu các bạn muốn thành lập thêm các nhóm khác, có thể tham vấn tôi để biết cách thành lập. Nhận tiện, Wikimania 2022 đã chọn Singapore là nơi tổ chức hội nghị. [[User:Alphama|<span style="background:#16BCDA;color:white;border-radius:2px;">&nbsp;<b>A</b> l p h a m a&nbsp;</span>]]&nbsp;<sup>[[User talk:Alphama|Thảo luận]]</sup> 02:03, ngày 18 tháng 7 năm 2022 (UTC) == Cuộc thi chụp ảnh cho Wiki Commons == Mời các bạn quan tâm cho ý kiến về cuộc thi này ở [[meta:Talk:Vietnam Wikimedians User Group]]. [[Thành viên:Alphama|Alphama]] ([[Thảo luận Thành viên:Alphama|thảo luận]]) 11:46, ngày 6 tháng 8 năm 2022 (UTC) == Một số bản mẫu trùng tên với mã ISO 639-3 == Một số bản mẫu trùng tên với mã ISO 639-3: * {{LKBM|-adj-}}: [https://iso639-3.sil.org/code/adj] * {{LKBM|-syn-}}: [https://iso639-3.sil.org/code/syn] * {{LKBM|-see-}}: [https://iso639-3.sil.org/code/see] * {{LKBM|-rel-}}: [https://iso639-3.sil.org/code/rel] * {{LKBM|-var-}}: [https://iso639-3.sil.org/code/var] * {{LKBM|-ant-}}: [https://iso639-3.sil.org/code/ant] * {{LKBM|-dem-}}: [https://iso639-3.sil.org/code/dem] * {{LKBM|-num-}}: [https://iso639-3.sil.org/code/num] Tôi xin lấy ý kiến cộng đồng về giải pháp cho vấn đề này. Xin cảm ơn!<br/>--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 08:16, ngày 3 tháng 9 năm 2022 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]]: Bạn và những người khác có thể đề xuất những tên mới phù hợp để tránh trùng. Tên mới khi được đề xuất cũng cần xem xét một số yếu tố khác như việc nó có nằm trong các đoạn javascript không. Sau cùng, khi mà tên mới đã được thống nhất, ta sẽ sử dụng bot đi thay thế. :Tuy nhiên, đôi khi không làm gì cũng là một giải pháp. Những ngôn ngữ này không phổ biến lắm, cho nên tôi nghĩ cứ bỏ qua chúng là được. 😉 – [[Thành viên:Đức Anh|Đức Anh]] ([[Thảo luận Thành viên:Đức Anh|thảo luận]]) 09:20, ngày 3 tháng 9 năm 2022 (UTC) :Trường hợp này em nghĩ vì sự phổ biến, chúng ta không nên dùng bot thay đổi mà nên giữ nguyên hiện tại, thay vào đó tạo ra những bản mẫu ngôn ngữ thay thế có tên khác kiểu adj-lang để tránh nhầm lẫn với những bản mẫu hiện có, ghi chú rõ trong tài liệu để mọi người biết là đượ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]]) 09:44, ngày 4 tháng 9 năm 2022 (UTC) ::Nếu làm như vậy sẽ thiếu sự đồng bộ đối với tên bản mẫu của các ngôn ngữ khác. Theo tôi nên đổi thành cách viết đầy đủ kiểu như: adjective, synonym,...--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:46, ngày 4 tháng 9 năm 2022 (UTC) == [[Thành viên:Iosraia]] == Hiện tại, thành viên này đã không còn hoạt động trong hơn 2 năm nay (tác vụ cuối vào 07:18, ngày 1 tháng 5 năm 2020). Theo quy định, thành viên này sẽ bị gỡ quyền bảo quản viên. Mời các bạn cho ý kiến để tôi thực hiện gỡ quyền, 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>]] 14:21, ngày 6 tháng 10 năm 2022 (UTC) * {{yk}} Đồng ý theo quy định trên [[Wiktionary:Bảo quản viên]] (Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền), nhưng sau khi gỡ quyền không biết các BQV có nên cấp quyền Lùi sửa cho thành viên không do những năm trước thành viên có tích cực. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 14:37, ngày 10 tháng 10 năm 2022 (UTC) ::Tạm thời chưa thể gỡ quyền bảo quản viên. Có thể phải chờ sang năm mới thực hiện được. [[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>]] 05:54, ngày 11 tháng 10 năm 2022 (UTC) ::Chính xác ra là quy định của Meta. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) * {{yk}} Nên gỡ quyền, đã quá lâu rồi. Nhưng nếu chưa gỡ quyền được ngay thì có thể đợi đến hết năm cũng đượ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]]) 15:07, ngày 18 tháng 11 năm 2022 (UTC) * {{yk}} Tôi đã báo lên Meta để ngay lập tức rút quyền vì đã quá thời hạn quy định. – [[Thành viên:Tryvix1509|Tryvix1509]] ([[Thảo luận Thành viên:Tryvix1509|thảo luận]]) 12:34, ngày 16 tháng 12 năm 2022 (UTC) :: @{{noping|Tryvix1509}} Tôi nghĩ bảo một hành chính viên để gỡ quyền quyền thay vì báo lên Meta để rút quyền có thể sẽ nhanh hơn. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 13:33, ngày 19 tháng 12 năm 2022 (UTC) ::: À quên, tôi chưa đọc kỹ trang [[Wiktionary:Hành chính viên]]. [[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 22:36, ngày 8 tháng 2 năm 2023 (UTC) {{tick}} Thành viên đã được gỡ quyền theo quy định AAR. [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:15, ngày 13 tháng 9 năm 2026 (UTC) == Thay logo Tết == Xin chào các thành viên của cộng đồng Wiktionary. Để tránh rườm rà và không cần thiết, cũng như đảm bảo phù hợp với tình hình hiện tại của dự án, tôi xin được thông báo logo Tết năm 2023 của dự án Wiktionary sẽ được dùng lại từ 2022. Mong mọi người cho ý kiến đề xuất về việc này. 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>]] 11:39, ngày 17 tháng 1 năm 2023 (UTC) :👍 Hoàn toàn nhất trí--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:45, ngày 19 tháng 1 năm 2023 (UTC) ==Lời chúc năm mới xuân Quý Mão 2023== {| style="width:100%; background-color:#fc3; border:3px solid #ac6600;" padding: 5px; text-align:left;" |align="center"|[[File:Fxemoji u1F386.svg|75px]] |<span style="font-size:120%;">'''Nhân dịp xuân Quý Mão 2023, kính chúc toàn thể cộng đồng Wiktionary tiếng Việt một năm mới nhiều sức khỏe và hạnh phúc'''.</span><br /> Năm Nhâm Dần 2022 đã chứng kiến một sự thay đổi mạnh mẽ đối với dự án Wiktionary tiếng Việt. Nhiều ngôn ngữ mới đã xuất hiện, nhiều phần giao diện cũ đã được sửa lại. Chúng ta đã, đang và sẽ tiếp tục thay đổi để đưa từ điển mở này đến với nhiều người hơn, không ngừng đổi mới để phát triển. Năm Quý Mão 2023 đã gõ cửa khắp nơi, xin chúc cộng đồng từ điển mở Wiktionary tiếng Việt sẽ luôn luôn phát triển, đưa dự án chúng ta lên những cột mốc mới, những tầm cao mới. Chúng ta hãy cùng nhau để đi lê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>]] 03:12, ngày 22 tháng 1 năm 2023 (UTC) :Năm nay là năm con mèo. Cho nên tôi xin tặng đại gia đình Wiktionary tiếng Việt một con mèo Maneki-neko. '''CHÚC MỌI NGƯỜI NĂM MỚI LUÔN MAY MẮN'''! :[[Tập tin:Manekineko1003.jpg|nhỏ|giữa]] :--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:36, ngày 22 tháng 1 năm 2023 (UTC) ::Rất cảm ơn một món quà đầy ý nghĩa của bạn. Cùng tiến lên để dự án phát triển nha! – [[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>]] 02:37, ngày 23 tháng 1 năm 2023 (UTC) == MediaWiki:Gadget-start.js == Em không có kinh nghiệm sửa js nên xin phép nhờ một số anh em nào có kinh nghiệm có thể sửa lỗi cái [[MediaWiki:Gadget-start.js]] để sửa một số lỗi như sau: * Phần biến cách bị mất nội dung sau khi nhập sang phần ngữ nghĩa hoặc bất kỳ phần nào khác (nhập vào "abc" thì nó sẽ tự động quay về giá trị mặc định nếu nhập sang phần khác). * Phần ngữ nghĩa bị sẽ bị lỗi undefined khi xuất nếu có quá nhiều ngữ nghĩa nhập vào, khuyến nghị chỉ nên để tối đa 5 ngữ nghĩa. * (Không bắt buộc), đổi giao diện sang OOUI cho hiện đại Xin phép mọi người giúp em ạ, 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]]) 02:46, ngày 26 tháng 1 năm 2023 (UTC) == Global ban for PlanespotterA320/RespectCE == Per the [[m:Global bans|Global bans]] policy, I'm informing the project of this request for comment: [[m:Requests for comment/Global ban for PlanespotterA320 (2) ]] about banning a member from your community. Thank you.--[[User:Lemonaka|Lemonaka]] ([[User talk:Lemonaka|talk]]) 21:40, ngày 6 tháng 2 năm 2023 (UTC) <!-- Tin nhắn của Thành viên:Zabe@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Lemonaka/Massmessagelist&oldid=24501599 --> :{{tick}} He's now banned by the Office. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 11:13, ngày 13 tháng 9 năm 2026 (UTC) == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:Stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # Iosraia (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, [[Thành viên:Uncitoyen|Uncitoyen]] ([[Thảo luận Thành viên:Uncitoyen|thảo luận]]) 09:09, ngày 24 tháng 2 năm 2023 (UTC) == Tin buồn == Tình hình là Web tratu.soha.vn đã bị sập, không rõ là web đang nâng cấp hay đóng hẳn rồi, mà thay vì xuất hiện trang chủ thì lại xuất hiện Apache 2 Test Page. Mọi người nếu muốn Import từ mới từ trang này vui lòng vào google để import, nên lấy '''những từ nào cần thiết vì có quá nhiều, google có thể xoá hết bản lưu sau vài tháng, lúc đó chúng ta không còn nội dung nhập sẫn vì vậy hãy nhanh chóng'''. Thật sự vô cùng tiếc vì đây là kho dữ liệu từ điển mở rất tốt. [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 03:34, ngày 28 tháng 2 năm 2023 (UTC) === Hướng dẫn === # Nhập tìm kiếm google "[Tên mục từ] Tratu", tìm đến dòng tìm kiếm đúng của tra từ, chọn bản lưu để ra bản lưu trước khi web bị sập.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:46, ngày 28 tháng 2 năm 2023 (UTC) #:{{ping|Kateru Zakuro}} Tôi tìm thấy trang [https://www.rung.vn/ này], hình như nó cũng lấy dữ liệu từ Tratu--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:23, ngày 1 tháng 3 năm 2023 (UTC) #::Trang này có lấy nhưng không đầy đủ bác ạ, nhưng mà bản quyền ở đưới để "© 2023" thì không ổn lắm, nếu trích nguồn thì đưa vào được. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:25, ngày 1 tháng 3 năm 2023 (UTC) #::{{ping|TheHighFighter2}} Cập nhật lại là Website Tratu không bị sập, nhưng nó bị lỗi hệ thống (chắc do máy chủ quá cũ) dẫn đến bị lỗi 403 không truy cập được. Nhưng nó chỉ là vẻ bề ngoài, thực chất chúng ta vẫn có thể "lách luật" được mã lỗi 403 bằng cách load lại trang mục từ liên tục (ví dụ http://tratu.soha.vn/dict/vn_vn/Bo%C3%B3ng), nó sẽ cứ lỗi 403 thì lúc đó tiếp tục cứ load lại bằng CTRL + R hoặc nhấn tải lại trang, tự khắc 1 lúc nào đó web sẽ phản hồi và truy cập được vào trang mục từ. Cách này bị khó chịu nhưng đây là cách duy nhất để vào trang Tratu hiện tại, còn nếu thấy mất thời gian quá thì tra bản sao trên Google để nhập vào.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:33, ngày 1 tháng 3 năm 2023 (UTC) #:: Em để link ở đây để vào cái danh sách mục từ cho dễ (trang chủ nó bị lỗi nên phải dùng liên kết này) #::* [http://tratu.soha.vn/dict/vn_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Việt] #::* [http://tratu.soha.vn/dict/vn_en/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Anh] #::* [http://tratu.soha.vn/dict/en_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Anh-Việt] #::* [http://tratu.soha.vn/dict/fr_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Pháp-Việt] #::* [http://tratu.soha.vn/dict/vn_fr/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Pháp] #::* [http://tratu.soha.vn/dict/ja_vn/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Nhật-Việt] #::* [http://tratu.soha.vn/dict/vn_ja/%C4%90%E1%BA%B7c_bi%E1%BB%87t:Allpages Việt-Nhật] #::--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 13:41, ngày 1 tháng 3 năm 2023 (UTC) {{tick}} '''Tin vui''' Máy chủ đã hoạt động trở lại nên giờ đã có thể truy cập được vào website [http://tratu.soha.vn tratu.soha.vn] --[[Thành viên:DefenderTienMinh07|<span style="background:#808080;color:#FFFF00;border-radius:3px;">&nbsp;'''☀DefenderTienMinh☽'''&nbsp;</span>]] ([[Thảo luận Thành viên:DefenderTienMinh07|thảo luận]]) 18:02, ngày 23 tháng 4 năm 2023 (UTC) == Chú ý == Để ý nhiều mục từ tiếng Việt gần đây, nhiều biên tập viên sao chép nội dung từ trang Tratu hoặc nguồn tự do nào đó khác thường chép vào mà không ghi rõ nguồn từ đâu. Trừ khi biên tập viên tự diễn nghĩa, đề nghị các biên tập viên sao chép nội dung nhớ ghi nguồn bên dưới, để tránh trường hợp vô tình vi phạm bản quyền. Cảm ơn. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 23:02, ngày 21 tháng 3 năm 2023 (UTC) == Di động == Có ai dùng Wiktionary tiếng Việt trên thiết bị di động không? Với thiết kết CSS khung mới, tất cả nội dung không hiển thị được khi xem qua điện thoại Pixel của tôi. [[Thành viên:DHN|DHN]] ([[Thảo luận Thành viên:DHN|thảo luận]]) 16:39, ngày 13 tháng 7 năm 2023 (UTC) :@[[Thành viên:DHN|DHN]] Tôi cũng dùng Wiktionary trên thiết bị di động và đúng thật là cả nội dung cũng không thể đọc được. Chỉ có thể xem hoặc chỉnh sửa trên thiết bị di động khi chỉnh nó về phiên bản cho máy tính thôi nhưng việc chuyển qua chuyển lại như thế điện thoại chạy rất chậm đôi khi bị liệt. [[Thành viên:DANG GIAO|Phong Đăng]] ([[Thảo luận Thành viên:DANG GIAO|thảo luận]]) 06:36, ngày 14 tháng 7 năm 2023 (UTC) :{{ý kiến}} Lỗi này đã được bàn luận tại trang [[Thảo luận thành viên:Kateru Zakuro#Về bản cập nhật có lỗi trên dự án]], nhưng hiện nay vẫn chưa được vá lại. @[[Thành viên:NguoiDungKhongDinhDanh|NguoiDungKhongDinhDanh]] mong anh cho ý kiến về lỗi nà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:23, ngày 14 tháng 7 năm 2023 (UTC) ::Nguyên nhân là do cái này: [[m:Tech/News/2023/27/vi]]: "Từ tuần này tất cả các tiện ích được tải tự động trên cả trang web di động lẫn máy tính. Nếu bạn có thấy bất cứ vấn đề gì về các tiện ích trên các wiki, vui lòng điều chỉnh [[mw:Special:MyLanguage/Extension:Gadgets#Options|tùy chọn tiện ích]] trong tệp định nghĩa tiện ích của bạn." Vậy cho nên trong [[Mediawiki:Gadgets-definition]], cần định nghĩa lại tiện ích TabbedLanguages để cho nó chỉ hoạt động trên giao diện máy tính thôi. Tương tự đối với tiện ích AVIM (bộ gõ tiếng Việt), cần định nghĩa lại để cho nó chỉ hoạt động trên máy tính. Nếu không thì vào [[Đặc biệt:Tùy chọn#mw-prefsection-gadgets]], tắt 2 tiện ích "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "AVIM" đi. [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:20, ngày 26 tháng 7 năm 2023 (UTC) :::Wiktionary tiếng Việt ở [[Mediawiki:Gadgets-definition]] dùng cờ default cho tiện ích TabbedLanguages, trong khi Wiktionary tiếng Anh ở [[:en:Mediawiki:Gadgets-definition]] không dùng cờ default cho tiện ích TabbedLanguages. Vậy cách giải quyết là 1 BQV gỡ cờ default ra khỏi tiện ích TabbedLanguages trong [[Mediawiki:Gadgets-definition]], để ai thích dùng tiện ích này thì bật lên chứ không kích hoạt theo mặc định nữa (và khi dùng tiện ích TabbedLanguages thì phải chấp nhận là nó chỉ hiển thị được nội dung trên giao diện máy tính chứ không hiển thị được nội dung trên giao diện di động). [[Thành viên:Tranminh360|Tranminh360]] ([[Thảo luận Thành viên:Tranminh360|thảo luận]]) 12:50, ngày 26 tháng 7 năm 2023 (UTC) :::Rất cảm ơn bạn Tranminh đã giúp sửa lỗi này. Nhưng tôi thấy không cần thiết lắm để phải tắt tính năng AVIM đi vì lỗi ở đây không phải là do tính năng AVIM (Bộ gõ tiếng Việt) mà là do hai tính năng "Tổ chức lại mỗi mục từ thành các thẻ theo ngôn ngữ" và "Hộp Gõ tiếng Việt ở thanh bên cung cấp các tùy chọn AVIM" tôi nghĩ chỉ cần tắt hai tính năng ấy đi là được. – [[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>]]) 12:29, ngày 6 tháng 8 năm 2023 (UTC) {{xong}} [[Đặc biệt:So sánh di động/2120542|BQV Kateru Zakuro đã sửa]]. [[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>]]) 16:52, ngày 21 tháng 8 năm 2023 (UTC) == [[Thành viên:Tuanminh01|Tuanminh01]] == {{BQ|KQ={{tick}} Biểu quyết bất tín nhiệm thành công với 2 phiếu thuận và 0 phiếu chống. Và theo quy định AAR, tiếp viên {{u|Superpes15}} đã chính thức thu hồi quyền quản trị đối với {{u|Tuanminh01}} vào ngày 11 tháng 2 năm 2024 trên dự án Wiktionary tiếng Việ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>]]) 06:49, ngày 12 tháng 3 năm 2024 (UTC)|ND= {{status|start=0}} Tác vụ cuối của thành viên này là [[Đặc biệt:Nhật trình/Tuanminh01|08:46, ngày 26 tháng 1 năm 2021 (UTC)]] (tức là đã hai năm rồi thành viên chưa hoạt động) và thông qua quy định tại trang [[Wiktionary:Bảo quản viên]] "Bảo quản viên nào không hoạt động quá 2 năm thì sẽ bị xem xét và thu hồi quyền." nên do đó thành viên sẽ được thu hồi quyền BQV trên dự án này. Mời các bạn cho ý kiến về việc này, xin trân trọng cảm ơn. – [[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>]]) 11:30, ngày 26 tháng 7 năm 2023 (UTC) :#{{ok}} – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:57, ngày 2 tháng 12 năm 2023 (UTC) :#{{ok}} Tôi nghĩ Tuanminh có vẻ bất lực sau vụ BTN tại Wikipedia, đã quá 2 năm rồi mà tv chưa đóng góp trên đây, hơn nữa tv đóng góp ít trên đây và cũng có mắc nhiều lỗi trên Wikipedia nên tôi không mấy tin tưởng lắm, tôi ủng hộ việc gỡ quyền tv trên dự án này. [[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>]]) 00:50, ngày 5 tháng 2 năm 2024 (UTC) }} == Các mục từ cần nhất theo mục từ liên kết đến nó == Tôi dùng trang này để tạo mới một số mục từ thì nhận ra rằng trong trang này có một vài mục từ đã được tạo nhưng trang vẫn còn liên kết đỏ. Trang này không biết có bị khoá không vì tôi không sửa được. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:20, ngày 12 tháng 8 năm 2023 (UTC) :{{ping|P. ĐĂNG}} Bạn có thể đưa link trang đó ra đây không?--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:43, ngày 12 tháng 8 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Bạn xem ở [https://vi.wiktionary.org/w/index.php?title=%C4%90%E1%BA%B7c_bi%E1%BB%87t:Trang_c%E1%BA%A7n_thi%E1%BA%BFt&limit=50&offset=100 Đây]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 02:54, ngày 13 tháng 8 năm 2023 (UTC) :::{{ping|P. ĐĂNG}} Trang đó sẽ được hệ thống cập nhật 2 lần một tháng--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 06:16, ngày 13 tháng 8 năm 2023 (UTC) == Lỗi == Khi tôi đang tạo hoặc sửa đổi mục từ tôi thấy có 2 lỗi này: <gallery> Lỗi1.png|200px|Lỗi thứ nhất Lỗi2.png|200px|Lỗi thứ hai </gallery> Có ai bị giống tôi không? – [[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:15, ngày 21 tháng 8 năm 2023 (UTC) :[[Thành viên:Nguyên Hưng Trần]] Máy tính tôi không gặp lỗi này, không biết các tv khác có hay không. Bạn dùng soạn thảo mã nguồn 2017 à?. Rất có thể là do lỗi máy tính nếu các tv khác không cùng gặp lỗi 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:49, ngày 21 tháng 8 năm 2023 (UTC) :Chắc do lỗi giao diện. Tôi đã thử chuyển sang chế độ laptop để sửa đổi một số mục từ và cũng bặt gặp lỗi y như lỗi bạn miêu tả ở hình 1. Nhưng không hiểu sao khi sửa các trang trợ giúp Wiktionary thì không thấy có lỗi đó hiện lên. Tôi nghĩ đó là tính năng mục lục của dự án trong soạn thảo trực quan lúc đang sửa mục từ hơn là lỗi, tôi nghĩ vậy do lỗi trên không ảnh hưởng gì nhiều đến công việc sửa đổi. @[[Thành viên:Tranminh360|Tranminh360]] Mong bạn cho ý kiến. – [[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>]]) 00:09, ngày 22 tháng 8 năm 2023 (UTC) :Đây là một lỗi do bản thân cái mục lục này đã có từ năm 2012 và CSS của nó không còn tương thích với giao diện mới nữa, em cố gắng sửa CSS của nó nhưng vẫn không được.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 16:15, ngày 13 tháng 9 năm 2023 (UTC) == Tính trung lập == {{Đóng thảo luận |KQ = ✔ Đã giải quyết xong |ND = Tôi và TheHighFighter2 đã có phần thảo luận về tình trạng tính trung lập của Wiktionary đang vướng phải. Tôi xin đưa thảo luận ra đây như thành viên Tiến Minh đã khởi xuất để mọi thành viên có thể thảo luận tránh ý nghiêng về một phía. Nội dung thảo luận dưới đây: Về một số sửa đổi của bạn gần đây, như tại [[khả năng]], [[chứng minh]], ... Nếu phần định nghĩa có các từ kiểu như "nước ta", "nhân dân ta", ... thì ta nên thay bằng các từ khác hoặc xóa đi. Còn nếu nó có ở phần vd thì không cần xóa do phần này chấp nhận chứa các từ như vậy--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 12:48, ngày 16 tháng 9 năm 2023 (UTC) === Thảo luận chung === :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Đúng vậy, tôi đã xoá chúng đi vì Wiktionary:Thái độ trung lập. Wiktionary có quy định về phần vd được phép ngoại lệ này không?. Tôi đã có nói chuyện với HCV Mxn về điều này. Tôi khẳng định nó không trung lập và xoá đi là cần thiết, và sẽ bổ sung phần ví dụ mới vào. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:19, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Hiện tại trên dự án không có trang nào tên là [[Wiktionary:Thái độ trung lập]]. Chả là bạn muốn tìm trang quy định liên quan tới vấn đề chăng? – [[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>]]) 14:29, ngày 16 tháng 9 năm 2023 (UTC) :::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Chưa có chứ không phải không. Các dự án Wikipedia đều hoạt động hướng đến chung là thái độ trung lập. Wiktionary tiếng Việt không phải Wiktionary Việt Nam. HCV Mxn cũng đi xoá những thứ này. Khi dùng từ như "dân ta, nhân dân ta", khi người nước ngoài đọc, bạn nghĩ sao về điều này? Chúng ta hướng đến một dự án phục vụ mọi người, mọi chủng tộc và quốc gia, không phải riêng một đất nước nào. Vì vậy, mỗi dòng viết ra phải dựa trên thái độ trung lập. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:36, ngày 16 tháng 9 năm 2023 (UTC) ::::Bạn nói cũng đúng vì theo quy định bên Wiktionary tiếng Anh "all entries must be written from a '''neutral point of view''', representing views fairly and without bias" (tạm dịch: Mọi nội dung được đưa vào đều phải được viết từ một cái nhìn trung lập, thể hiện cái nhìn công bằng và không thiên kiến). Nhưng tôi nghĩ cũng không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV vì nội dung không trung lập thường nó cũng không ảnh hưởng gì nhiều đến dự án lắm. – [[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>]]) 14:46, ngày 16 tháng 9 năm 2023 (UTC) :::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Đây là điều đương nhiên. Chúng ta đang hoạt động trên đâu? Wiktionary là dự án bách khoa, nó ưu tiên thái độ trung lập, nơi mà một người Mỹ có thể qua đọc bài viết của một Wikimedia tiếng Đức, tiếng Việt hay tiếng Trung. Khi không trung lập, bạn nói không nhất thiết sửa lại là sao?. Đến nay tôi mới phát hiện Wiktionary tiếng Việt đang có văn phong không trung lập rất nhiều, trích câu Hồ Chí Minh, dùng thơ... Tôi cần BQV TheHighFighter2 phản hồi điều này, lẽ ra phải thảo luận với tôi trước khi lùi sửa, thứ mang tính chất mâu thuẫn. Nếu có quy định nào nói phần ví dụ ta được ngoại lệ thì tôi sẽ xem lại sửa đổi của mình. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:53, ngày 16 tháng 9 năm 2023 (UTC) ::::::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Tôi dám chắc là không có quy định nào về ngoại lệ này cả. Không trung lập mới là đi ngược với quy định của bách khoa. Nội dung trên đây vốn đa phần được sao chép từ FVDP một dự án không có quy định tính trung lập, khi dùng nó đưa vô thì phải xem xét ở một vài khía cạnh chứ không copy là xong được. Wiktionary không phải từ điển của Việt Nam, nó cũng không phải sách giáo khoa, không dùng văn phong thiên vị một phía, thêm thơ lại không trung lập. Bạn sang các Wiktionary tiếng khác xem, có nền tảng wiki nào dùng những câu ví dụ như "nhân dân ta chiến đấu bảo vệ tổ quốc" "chiến tranh chống đế quốc Mỹ", có xuất hiện không?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 14:58, ngày 16 tháng 9 năm 2023 (UTC) 1. Bên en có rất nhiều mục có vd chứa các từ "[https://en.wiktionary.org/w/index.php?search=%22our+country%22&title=Special:Search&profile=advanced&fulltext=1&ns0=1 our country]", "[https://en.wiktionary.org/w/index.php?search=%22n%C6%B0%E1%BB%9Bc+ta%22&title=Special:Search&ns0=1&searchToken=12thcn782xmsjc7aixwau68ok nước ta]; bên fr có "[https://fr.wiktionary.org/w/index.php?search=%22notre+pays%22&title=Sp%C3%A9cial:Recherche&profile=advanced&fulltext=1&searchengineselect=mediawiki&ns0=1&ns100=1&ns106=1&ns110=1&searchToken=vol8t2pu9urr4hv60l40oom8 notre pays]" (đất nước chúng tôi) 2. Khi lấy vd cho mục "[[Đảng ta]]", "[[Mĩ nguỵ]]", "[[ba que]]" thì ta nên lấy vd như nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 15:57, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin gửi bạn một phần tin nhắn của tôi với HCV Mxn: "tất cả các câu thí dụ này được nhập từ Dự án Từ điển tiếng Việt miễn phí (FVDP), dự án này sao chép nguyên cả lời định nghĩa từ một số từ điển khác, có lẽ bao gồm những cuốn từ điển trong nước. (FVDP cũng có nhiều danh ngôn của Hồ Chí Minh.) Mấy năm nay tôi cũng muốn gạt đi những câu thí dụ không trung lập hoặc sửa lại theo thuật ngữ trung lập hơn. Đây chỉ là một trong rất nhiều điều thiếu sót của việc nhập FVDP. Nếu bạn có thể giúp dọn dẹp các câu thí dụ và danh ngôn thì tốt quá". Những từ tiếng Việt được xây dựng bên en cũng đa phần dùng bot và người mở rộng có cả những tv người Việt (từ ngoại quốc có thể không bị kiểm duyệt gắt gao khi người kiểm duyệt không am hiểu thứ tiếng, giống như có tv nào tạo bài tiếng phạn hay chữ Hán bên đây chúng ta thì có thể tỷ lệ phần trăm sai phạm bị bỏ qua sẽ nhiều hơn các từ hệ chữ chúng ta dùng). Còn bên fr, bạn xem ví dụ của họ có liên quan đến chủ thể cỡ nào? Nó đáng bao nhiêu phần trăm? Rõ ràng như Wiktionary vi không?. Về trường hợp lấy ví dụ của các từ như "Đảng ta" "Mĩ ngụy" thì đây là một từ, trích quy định "Tất cả các bài viết và các nội dung bách khoa khác tại Wikipedia phải được viết trên một quan điểm trung lập (QDTL), thể hiện một cách công bằng và không thiên vị" tôi nghĩ bạn đủ khả năng tự suy ra hướng tôi đang muốn nói. Khi bạn dùng từ này vô trường hợp như "Mĩ ngụy xâm chiếm nước ta" --> ám chỉ rõ ràng đây là dự án tiếng Việt và nước ta là Việt Nam. Bản chất từ tôi không nói nó vi phạm thái độ trung lập, nhưng tùy ngữ cảnh mà bạn đưa vào là một vấn đề đấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:18, ngày 16 tháng 9 năm 2023 (UTC) :Thì thế tôi mới nói "không nhất thiết lắm phải kiểm tra và sửa lại những nội dung POV" đó. Nội dung không trung lập không có nghĩa là nội dung đó không hữu ích. Nói chung là tùy trường hợp, hợp lý là được miễn sao nội dung đó không quá khích. – [[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>]]) 16:12, ngày 16 tháng 9 năm 2023 (UTC) ::@[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Bạn có biết đang nói cái gì không vậy? Không trung lập = vi phạm quy định. Sửa đổi sai đang cần sửa nhưng bạn lại nói không cần thiết?. WP:Thái độ trung lập là một trong những trụ cột của Wikimedia, cho dù đó là sửa đổi thiện chí nhưng vi phạm thì cũng không cần. Dự án chúng ta các tv đã không còn khả năng sửa điều này? Nếu không, tại sao chấp nhận nó?. Sao có thể nhưng không thay bằng một nội dung vừa hữu ích vừa phù hợp với chính sách của ta hơn. Tôi không hiểu bạn Tiến Minh nói không nhất thiết giải quyết những điều này là gì? Bên Wikipedia có nhiều tk bị cấm vì thái độ trung lập đấy và thành viên không kiểm soát được điều này nên mấy tk này quay lại và thành rối nằm vùng. Phần nội dung hiện rõ lên vậy, bạn lại nói là không quá khích. Thế nào là quá khích, đủ để các tv bắt tay vào làm? Tôi xin nhắc lại, Wiktionary tiếng Việt không phải Wiktionary Việt Nam. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:26, ngày 16 tháng 9 năm 2023 (UTC) Nếu các thành viên vẫn cho sửa đổi của là sai khi nói nội dung đó vi phạm trung lập thì hãy giải thích cho câu hỏi này "Wiktionary có quy định về phần vd được phép ngoại lệ này không?". Bên Wiktionary en có trang [https://en.wiktionary.org/wiki/Wiktionary:Neutral_point_of_view Wiktionary:Neutral point of view] rõ ràng. Và khi nói rằng nó thật hữu ích và chưa quá khích để chúng ta bắt tay vào sửa thì khi nào là quá khích? Những câu ví dụ vi phạm đó có là duy nhất không thể thay thế không? Nếu câu trả lời là không, thì nó nên bị xóa để thay thế nội dung khác vào. Nếu có quy định nào được chỉ ra tôi xóa chúng đi là sai, tôi sẽ xem xét lại sửa đổi của mình, còn không, sau thảo luận tôi sẽ dọn tất cả những nội dung này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 16:57, ngày 16 tháng 9 năm 2023 (UTC) Hướng giải quyết: Nếu 1 mục từ bình thường có vd chứa các từ như trên: thay thế vd khác. Còn các từ liên quan đến chính trị, trường hợp đặc biệt khác, thì có thể lấy vd chứa những từ như trên. Bạn thấy thế nào? --.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 16:53, ngày 16 tháng 9 năm 2023 (UTC) :@[[Thành viên:TheHighFighter2|TheHighFighter2]] Xin phiền bạn đưa phần tin nhắn này ra trang thảo luận vì Tiến Minh đã gửi thư nên tôi đã di chuyển nó ra thảo luận để mọi người có thể cùng nhau giải quyết. 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]]) 17:00, ngày 16 tháng 9 năm 2023 (UTC) :<p>Đúng rồi, vấn đề là các câu thí dụ không có liên quan đến chính trị mà lại nhắc đến chủ đề nhạy cảm hoặc dùng thuật ngữ không trung lập về mặt chính trị. Chẳng ai biết rõ ràng các câu này dẫn xuất từ đâu nhưng có vẻ giống tuyên truyền ngày xưa. Thực sự không cần dùng các thuật ngữ này để dạy ngôn ngữ. Tuy nhiên, có khi các danh ngôn của Hồ Chí Minh v.v. thật là đáng kể, thì bỏ qua chúng cũng không trung lập lắm.<p>Về mặt kỹ thuật, việc thay thế nội dung từ FVDP bằng nội dung khác cũng có ích cho Wiktionary. Không phải chỉ Wiktionary nhập nguyên văn FVDP đâu. Nội dung nào khác với TraTu v.v. sẽ làm Wiktionary nổi bật hơn, thu hút nhiều người đóng góp hơn.<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> 01:56, ngày 17 tháng 9 năm 2023 (UTC) {{yk}} Tôi ủng hộ cách giải quyết của Đăng. Wiktionary cũng cần phải trung lập. [[Thành viên:Nguyentrongphu|Nguyentrongphu]] ([[Thảo luận Thành viên:Nguyentrongphu|thảo luận]]) 20:53, ngày 16 tháng 9 năm 2023 (UTC) '''Kết thúc:''' Cảm ơn hai HCV Nguyễn Xuân Minh và Phú, cũng như BQV TheHighFighter2 và thành viên DefenderTienMinh07 đã cùng nhau đưa ra phản hồi. Sau cuộc thảo luận trên, tôi nghĩ tất cả các thành viên Wiktionary chúng ta đã nắm được vấn đề. Đây có nói là thiếu sót dễ gây hiểu nhầm do Wiktionary vi chưa được dịch đầy đủ các trang về quy định. Tôi khuyến khích các thành viên đang cần, sang Wikipedia vi tham khảo các quy định này. Nếu cuộc thảo luận các thành viên không có ý kiến gì thêm, tôi xin được yêu cầu kết thúc cuộc bàn thảo tại đây để tôi có thể sớm bắt tay vào dọn dẹp tất cả như đã nói trước đó. Kính chúc cộng đồng ta ngày mớ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]]) 07:35, ngày 17 tháng 9 năm 2023 (UTC) }} == Không gian tên == Hiện tại có 4 không gian tên bên en chưa được tạo tại đây: Từ tái tạo, Vần, Thesaurus, Kho ngữ liệu. Cho nên nếu ai đó biết cày mấy cái này thì xin đề xuất chúng lên Phabricator vớ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>]] 14:35, ngày 22 tháng 10 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Bạn làm xong chưa?. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 06:06, ngày 28 tháng 10 năm 2023 (UTC) ::{{ping|P. ĐĂNG}} Không biết làm bạn ơi, tôi chưa biết cày cái Phabricator. – [[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>]] 07:02, ngày 28 tháng 10 năm 2023 (UTC) :::@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Tôi cần xem qua các link bên en trong bốn không gian mà bạn dẫn ra. Bạn có không vì tôi tìm bên đó không thấy. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:25, ngày 28 tháng 10 năm 2023 (UTC) ::::{{ping|P. ĐĂNG}} À, 4 cái không gian tên đó tương đương bên en lần lượt là "Reconstruction", "Rhymes", "Thesaurus", và "Citations". Nhưng mà trước khi đề xuất lên Phabricator thì phải tạo một biểu quyết cái đã rồi mới làm được, như hồi đó là {{u|Ccv2020}} tạo một biểu quyết tạo không gian tên "Phụ lục" (tương đương với bên en là "Appendix", bạn có thể [[#Biểu quyết đề xuất không gian tên “Phụ lục” cho Wiktionary tiếng Việt|xem mục này bên trên]]). – [[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>]] 13:34, ngày 28 tháng 10 năm 2023 (UTC) ::::Rất hy vọng [[Thành viên:Ccv2020|Ccv2020]] có thể phụ giúp cộng đồng ta làm lại một lần nữa. Tôi sẽ cố gắng tích thêm kinh nghiệm để nối tiếp điều này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 15:13, ngày 28 tháng 10 năm 2023 (UTC) :::::À, cảm ơn đã nhắc mình nhé. Tuy nhiên thì có lẽ mình không còn thời gian để làm việc này nữa bạn à. Thực sự mình vẫn còn chút quan tâm dự án nhưng có lẽ mình xin nhường lại việc này cho một BQV khác. – [[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:47, ngày 29 tháng 10 năm 2023 (UTC) : Cần đẩy nhanh tiến độ đồng thuận đối với 4 không gian trên. [[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>]] 12:26, ngày 17 tháng 12 năm 2024 (UTC) ::Thảo luận này đã kết thúc từ năm 2023. Tôi có nhắn hỏi Ccv2020 tại trang các nhân từ một năm trước nhưng bận nên chưa thấy hồi đáp. Chắc đành mời thêm [[Thành viên:TheHighFighter2|TheHighFighter2]] xem qua trường hợp này. Thú thật tôi vẫn có ý định làm thay, nhưng cần có người hướng dẫn cho lần đầu tiên. Thiết nghĩ ưu tiên độ chính xác. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 13:32, ngày 17 tháng 12 năm 2024 (UTC) :::{{ping|P. ĐĂNG}} Tôi tìm được trang hướng dẫn này [[:meta:Requesting wiki configuration changes]], bạn có thể tham khảo--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 13:15, ngày 18 tháng 12 năm 2024 (UTC) ::::@[[Thành viên:TheHighFighter2|TheHighFighter2]] Yêu cầu thì đơn giản, nhưng vấn đề là cộng đồng ở đây có đồng thuận không. – [[Thành viên:Hide on Rosé|Hide on Rosé]] ([[Thảo luận Thành viên:Hide on Rosé|thảo luận]]) 10:30, ngày 15 tháng 6 năm 2025 (UTC) : Chắc là phải tạo biểu quyết đồng thuận đối với 4 không gian tên "Từ tái tạo", "Vần", "Kho từ vựng" (Thesaurus), "Kho ngữ liệu" (Citations). Nhưng dự án ít người hoạt động thế này bỏ phiếu kiểu gì. [[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>]] 15:43, ngày 3 tháng 1 năm 2026 (UTC) == Lỗi không hiển thị được mục lục khi đang sửa đổi hoặc tạo mục từ == Hôm nay tôi mới thấy Wiktionary đổi giao diện mặc định thành Vector (2022), mà khi đang sửa đổi mục từ thì tôi không nhìn thấy được mục lục phía bên phải của cái hộp sửa đổi. Có ai bị lỗi này giống tôi không? – [[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:50, ngày 30 tháng 11 năm 2023 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Chào bạn, bạn có thể vui lòng cung cấp hình ảnh cái mục lục bên phải ở phiên bản Vector cũ được không ạ? Cảm ơn bạn nhiều. – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 14:58, ngày 2 tháng 12 năm 2023 (UTC) == Vector 2022 == Vào ngày 30/11 vừa rồi, Vector 2022 đã được triển khai tại Wikiquote. Không biết các bạn cảm thấy thế nào với giao diện Vector 2022? Nếu bạn gặp phải bất cứ vấn đề gì hoặc phát hiện lỗi với Vector 2022, xin hãy tag tôi. Xin cảm ơn! – [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 15:12, ngày 2 tháng 12 năm 2023 (UTC) == Các cải thiện đối với định dạng của Vector 2022 == [[Tập_tin:Vector_2022_pre-Zebra_visual_changes_logged_out.jpg|nhỏ|Trước (<code>?vectorzebradesign=0</code>)]] [[Tập_tin:Vector_2022_Zebra_visual_changes_logged_out.jpg|nhỏ|Sau (<code>?vectorzebradesign=1</code>)]] Chào mọi người. Nhóm Web của Wikimedia Foundation đã giới thiệu những cải tiến về định dạng của giao diện Vector 2022. Đối với những người theo dõi các cập nhật của chúng tôi, bạn có thể nhận ra một số trong số này là một subset của [[mw:Reading/Web/Desktop_Improvements/Updates#May_2023:_Continuing_work_on_Vector_2022,_and_making_plans_for_the_new_fiscal_year|nguyên mẫu phân tách nội dung (Zebra) đã được thử nghiệm trước đây]]. Cụ thể, những thay đổi gần đây bao gồm: # Màu sắc nền mới cho menu chính, giờ đây đã phù hợp với phần còn lại của menu # Định dạng mới cho nút ấn và hiện của các menu # In đậm tiêu đề menu Bạn có thể tìm thấy [[mw:Reading/Web/Desktop Improvements/Updates/en#November_2023:_Visual_changes,_more_deployments,_and_shifting_focus|thêm chi tiết về lần thay đổi này tại trang cập nhật dự án trên MediaWiki.org]]. Những thay đổi này cũng sẽ giải quyết một số lỗi gần đây với mục lục, chẳng hạn như [[phab:T352464|phiếu ghi lỗi]] về các yếu tố có thể cuộn được này. Xin vui lòng cho chúng tôi biết bạn nghĩ gì về những điều chỉnh này và cả những thắc mắc mà bạn đang có! [[Thành viên:Bluetpp|Bluetpp]] ([[Thảo luận Thành viên:Bluetpp|thảo luận]]) 11:06, ngày 17 tháng 12 năm 2023 (UTC) == IMPORTANT: Admin activity review == Hello. A policy regarding the removal of "advanced rights" (administrator, bureaucrat, interface administrator, etc.) was adopted by [[:m:Requests for comment/Activity levels of advanced administrative rights holders|global community consensus]] in 2013. According to this policy, the [[:m:stewards|stewards]] are reviewing administrators' activity on all Wikimedia Foundation wikis with no inactivity policy. To the best of our knowledge, your wiki does not have a formal process for removing "advanced rights" from inactive accounts. This means that the stewards will take care of this according to the [[:m:Admin activity review|admin activity review]]. We have determined that the following users meet the inactivity criteria (no edits and no logged actions for more than 2 years): # [[Special:Contributions/Tuanminh01|Tuanminh01]] (administrator) These users will receive a notification soon, asking them to start a community discussion if they want to retain some or all of their rights. If the users do not respond, then their advanced rights will be removed by the stewards. However, if you as a community would like to create your own activity review process superseding the global one, want to make another decision about these inactive rights holders, or already have a policy that we missed, then please notify the [[:m:Stewards' noticeboard|stewards on Meta-Wiki]] so that we know not to proceed with the rights review on your wiki. Thanks, – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 23:42, ngày 7 tháng 2 năm 2024 (UTC) :@[[Thành viên:Superpes15|Superpes15]] when his admin right removed on here if needed, could you also remove the autopatrolled right on his account in both Meta and Mediawiki pls cuz he'll go inactive forever and he's now untrusted by viwiki community due to his block on Abuse filter and other users (as I've mentioned [[Thảo luận thành viên:Nguyentrongphu#Về việc gỡ quyền BQV đối với Tuanminh01|here]]). – [[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>]]) 02:25, ngày 29 tháng 2 năm 2024 (UTC) ::Hi [[User:DefenderTienMinh07|DefenderTienMinh07]] and thanks for your request. I don't think we can remove autopatrolled flag just because they left wiki! Also, I'm not a sysop on mediawiki, and there's no reason to remove the flag there if they didn't do anything bad there. Thanks :) – [[Thành viên:Superpes15|Superpes15]] ([[Thảo luận Thành viên:Superpes15|thảo luận]]) 00:40, ngày 7 tháng 3 năm 2024 (UTC) == Mục từ nghi vấn độ nổi bật == {{Đầu biểu quyết|KQ={{tick}} Đã giải quyết xong (xem thêm [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]]). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:11, ngày 18 tháng 4 năm 2024 (UTC)}} Chào các bạn, có một số mục từ được thành viên [[Thành viên:Dragon Immortal (Rồng Tiên)| Dragon Immortal (Rồng Tiên)]] (và các tài khoản phụ) khởi tạo, tôi tạm thống kê trong trang [[Thành viên:P. ĐĂNG/Nháp/Lưu 1|này]]. Dựa vào quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Names of specific entities] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Fictional universes] của Wiktionary bên en. Các mục từ này, theo tôi là nằm trong vòng lặp nghi vấn đề độ nổi bât. Tôi muốn lấy ý kiến chung để giải quyết các mục từ này vì độ nổi bật như tôi nói là không rõ ràng nên cần sự đồng thuận (giữ/xóa). Mời các bạn cho ý kiến. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :Tag các bạn: [[Thành viên:TheHighFighter2|TheHighFighter2]], [[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] và [[Thành viên:WhoAlone|WhoAlone]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:37, ngày 11 tháng 4 năm 2024 (UTC) :{{Ý kiến}} {{ping|P. ĐĂNG}} Hiện tôi đã liệt kê hết các trang tạo bởi chính thành viên này rồi, mời bạn xem tại [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối|đây]]. – <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> 02:52, ngày 13 tháng 4 năm 2024 (UTC) ::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] Dựa theo quy định [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Names_of_specific_entities Tên của các thực thể cụ thể], [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion#Place_names Tên địa danh] và [https://en.wiktionary.org/wiki/Wiktionary:Criteria_for_inclusion/Fictional_universes Tên hư cấu]. Tại dòng " if they have three citations of figurative use that fulfill attestation requirements" và "Such terms which have three citations in separate works, but which do not have three citations that are independent of reference to that universe, may be included only in appendices of words from that universe, and not in the main dictionary space." Tôi đã xóa một số trang vì không đáp ứng tiêu chí được nhắc đến thông qua các trích dẫn đáp ứng theo điều kiện. Còn một số bài giữ lại, mời bạn cải thiện chất lượng cùng tôi. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:14, ngày 13 tháng 4 năm 2024 (UTC) {{Kết biểu quyết}} == {{u|Dragon Immortal (Rồng Tiên)}} == Mấy ngày nay do tôi dịch truyện nên đôi khi giám sát thay đổi gần đây. Khi đang giám sát thì tôi vẫn thấy thành viên {{u|Dragon Immortal (Rồng Tiên)}} vẫn tiếp tục tạo những tài khoản phụ/rối khác dù đã nhắc nhở lần một. Tôi tạm liệt kê các tài khoản mới như sau: * {{u|Heavenly Immortals (Thiên Tiên)}} (mở tài khoản ngày 19 tháng 4 năm 2024) * {{u|Maitrī-karuṇā (benevolence and compassion)}} (mở tài khoản ngày 26 tháng 5 năm 2024) * {{u|Golden Immortal (Kim Tiên)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Nhân từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) * {{u|Maitrī (Tâm từ)}} (mở tài khoản ngày 27 tháng 5 năm 2024) Tôi có nên cấm các tài khoản này hay là chỉ nhắc thành viên thôi? – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:18, ngày 28 tháng 5 năm 2024 (UTC) :Tagging: {{ping|P. ĐĂNG|TheHighFighter2|WhoAlone}} – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:19, ngày 28 tháng 5 năm 2024 (UTC) ::Khi bạn nhắc nhở, các tài khoản này có phản hồi không hay chỉ tiếp tục tạo trang? – [[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:21, ngày 28 tháng 5 năm 2024 (UTC) :::{{ping|WhoAlone}} Chắc họ sẽ không phản hồi đâu bạn, chỉ tiếp tục sửa đổi hoặc tạo trang thôi. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 04:29, ngày 28 tháng 5 năm 2024 (UTC) ::::[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]], [[Thành viên:WhoAlone]] Chính sách quy định Wikimedia không cấm tv dùng nhiều hơn 1 tk với điều kiện công khai và không dùng cho lách luật. Tk [[Thành viên:Dragon Immortal (Rồng Tiên)|Dragon Immortal (Rồng Tiên)]] là tk chính đã được nhắc vào ngày 13/4/2024. Tính sau ngày này, kiểm tra qua các sửa đổi bao gồm tk rối, nếu có sai phạm như cũ các tk phụ và chính sẽ bị xử lí. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 08:51, ngày 28 tháng 5 năm 2024 (UTC) {{tick}} Đã xem qua các sửa đổi (bao gồm các tk phụ). Các tk phụ không có hành vi đáng lo ngại, sửa đổi thêm nội dung bình thường chủ yếu lấy từ web thuvienhoasen. Tk chính tiếp tục có hành vi tạo bài chất lượng kém. Tv có cải thiện ở các bài đã tạo khác nên lần này tôi dừng lại ở việc nhắc nhở. Tv này và các tk phụ sẽ cần chúng ta theo dõi thêm. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 10:57, ngày 31 tháng 5 năm 2024 (UTC) :@[[Thành viên:Nguyên Hưng Trần|Nguyên Hưng Trần]] @[[Thành viên:P. ĐĂNG|P. ĐĂNG]] Mới quay lại sau những tháng ngày wikibreak kaka, nhân tiện tôi thấy 1 trong số tk bạn Nguyên nêu có 1 tk bị khóa toàn cục, vậy có nên cấm hết số chúng ko nhỉ? – [[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>]]) 03:05, ngày 26 tháng 7 năm 2024 (UTC) ::{{ping|DefenderTienMinh07}} "Hưng", không phải "Nguyên". Tất cả các tài khoản này đã bị cấm toàn cục do chúng là rối của Trân đấy thôi, nên là không cần cấm nữa. – [[Thành viên:Nguyên Hưng Trần|<span style="color:darkgreen;font-family:Georgia, serif;">'''The Emerald of Harmony'''</span>]][[Thảo luận Thành viên:Nguyên Hưng Trần|<sup style="font-family:Georgia;">awaits you in a fantasy world of silence...</sup>]] 03:26, ngày 26 tháng 7 năm 2024 (UTC) :::{{ping|Nguyên Hưng Trần}} Tôi có check trang [[Thành viên:Nguyên Hưng Trần/Các trang tạo bởi Dragon Immortal (Rồng Tiên) và các tài khoản rối]] thấy bạn có bỏ sót {{u|Fairy (đồng tính nam)}}. Một điều nữa, số tk này được cho là rối của Trân? Tôi khá bất ngờ ko biết từ trước nay Trân đã làm gì? [[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>]]) 03:34, ngày 26 tháng 7 năm 2024 (UTC) ::::Đã cấm. [[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Số tk này tạo bài clk, thêm nội dung sai, tách lên đến trên 1 chục tk. Tiếp viên đã checkuser và xác nhận là Trân + khóa toàn cục các tk này. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:13, ngày 26 tháng 7 năm 2024 (UTC) :::::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]] tiếp viên checkuser xác nhận là Trân? Theo 1 tiếp viên trên SGC thông thường họ sẽ có quyền kiểm định tại trang loginwiki và chỉ vạch trần được các tài khoản đã log in hoặc được tạo dưới danh nghĩa cùng chung 1 địa chỉ IP, nếu checkuser của tiếp viên mạnh vậy thì cũng ko cần đến KĐV làm gì, phải chứ. Tôi vẫn tin rằng đây ko phải là Trân. Đó có thể là kẻ nào đó do tôi chưa xác định được IP nên ko thức sự chắc và chưa thể biết rằng đây là ai và có phải là Trân hay ko vì "Trân rất hiếm khi hoặc không đóng góp Wiktionary", trong khi quá rõ ràng Rồng Tiên khi lập acc xong đóng góp luôn trên đây. Theo tiếp viên EPIC Trân thường dùng nhà mạng Viettel, như vậy tv Rồng Tiên phải dùng nhà mạng Viettel, vpn/proxy hay cùng 1 thiết bị tôi mới khẳng định được đây là Trân được. Tôi nói thật là trước đây từng đang trong nỗi trầm cảm ko sao thoát được vì vụ lùm xùm bên vi tôi có tìm và làm quen Trân vì Trân giống tôi chỗ "đóng góp cho dự án khác trong khi bị cấm bên vi" và đã có nhiều BCB bên en cộng thêm hồi Trân chưa bị cấm từng là thiên địch của TTS nên tôi luôn tin tưởng Trân kaka, nhưng sau khi Trân bị cấm bên en thì tôi tạm gạt đi để bảo toàn uy tín, tâm đức và trí huệ của mình kaka nếu đây là Trân thật thì tôi sẽ cắt đứt cái mác best friend forever, đề cao cảnh giác, và sẵn lòng xử lý Trân vì hành vi múa rối sau tháng ngày tôi vắng kaka tôi có nói hơi quá ko nhỉ do 1 chút hướng nội và trình độ văn 5 điểm. – [[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>]]) 08:39, ngày 26 tháng 7 năm 2024 (UTC) ::::::[[Thành viên:DefenderTienMinh07|DefenderTienMinh07]] Các tk trên chưa liệt kê đầy đủ (như tôi đã nói trên 1 chục tk đã được tạo; con số chính xác có thể gần 20 tk). Vì việc rối này tiền lệ rất hiếm hoạt động tại đây nên việc ngăn chặn đã diễn ra khá vòng vo vì chủ quan như vậy. Nếu xem kĩ, bạn sẽ nhận thấy cách đặt tên các tk này đều có điểm tương đồng. Một trong số tk đó có hoạt động bên Wikipedia Vi hoặc cả dự án khác... và bị một tuần tra viên khác wiki vi báo lên Meta với lý do rối Trân. Tôi đã trao đổi với tiếp viên Meta để xác nhận có dùng CU để xử lý yêu cầu đó không, và được tiếp viên trực tiếp cấm xác nhận có. Chính tôi là người sau đó chịu tránh nhiệm báo cáo các tk của rối này còn lại đã từng hoạt động tại Wiktionary. Tv này vẫn tiếp tục đang hoạt động bên wiki vi hiện tại và hàng loạt tk rối đã được báo lên để cấm taị wiki và Meta. Các vấn đề cá nhân tôi xin phép không thảo luận đến và khép lại vụ việc ở đây vì tất cả đã được xử lý. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 07:28, ngày 27 tháng 7 năm 2024 (UTC) : Mặc dù sự việc này đã xảy ra hơn 1 năm nhưng đống rác mục từ do nhóm rối này tạo vẫn chưa xử lý xong. [[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:10, ngày 31 tháng 12 năm 2025 (UTC) == Mã hóa dấu sóng trong Unicode == Xin mọi người xem xét [[s:Wikisource:Thảo luận/Mã hóa dấu sóng trong Unicode|tin tức về vụ mã hóa dấu sóng]] của bảng chữ cái quốc ngữ gốc trong Unicode. Nếu chuẩn hóa dấu này thì sẽ có thể xây dựng phần [[:Thể loại:Mục từ tiếng Việt trung cổ|tiếng Việt trung cổ]] dễ dàng hơn. – [[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:41, ngày 2 tháng 7 năm 2024 (UTC) == Có vấn đề tại [[Wiktionary:Trang Chính|Trang chính của Wiktionary tiếng Việt]] == Khi vào trang chính, nó có lỗi hiển thị số lượng ngôn ngữ. Ví dụ: * Hiện chúng ta có '''[[Đặc biệt:Thống kê|277,219 từ]]''' thuộc về '''[[Phụ lục:Ngôn ngữ|0 ngôn ngữ]]''' * Phần đề mục "Mục từ mới" hiển thị: '''-2 ngôn ngữ khá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>]] 04:39, ngày 16 tháng 10 năm 2024 (UTC) :Vấn đề bảo trì này xin mời BQV giao diện [[Thành viên:TheHighFighter2|TheHighFighter2]]. [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 04:47, ngày 16 tháng 10 năm 2024 (UTC) == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] == Lỗi thiếu tham số ở nhiều trang nhúng [[Bản mẫu:plural of]] như ở trang [https://vi.wiktionary.org/w/index.php?title=subsidiaries&oldid=1922998 subsidiaries], [https://vi.wiktionary.org/w/index.php?title=wheels&oldid=1946583 wheels]…[[Đặc biệt:Contributions/118.68.140.41|118.68.140.41]] ([[Thảo luận Thành viên:118.68.140.41|thảo luận]]) 05:40, ngày 21 tháng 11 năm 2024 (UTC) : {{ping|Trong Dang|TheHighFighter2}} Cảm ơn hai bạn đã sửa giúp ở [https://vi.wiktionary.org/w/index.php?title=subsidiaries&diff=prev&oldid=2190258 đây] và [https://vi.wiktionary.org/w/index.php?title=wheels&diff=prev&oldid=2190315 đây]. Việc thiếu tham số en còn tồn tại ở hàng loạt bài khác như [https://vi.wiktionary.org/w/index.php?title=cookies&oldid=1817694 cookies], [https://vi.wiktionary.org/w/index.php?title=quizzes&oldid=1901703 quizzes]… Có cách nào để giải quyết hàng loạt chứ sửa thủ công cũng mắc công mọi người.[[Đặc biệt:Contributions/1.52.135.108|1.52.135.108]] ([[Thảo luận Thành viên:1.52.135.108|thảo luận]]) 03:13, ngày 4 tháng 12 năm 2024 (UTC) == <span lang="en" dir="ltr">Migration to Parsoid</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Hello everyone! I am glad to inform you that as the next step in the [[mw:Special:MyLanguage/Parsoid/Parser Unification|Parser Unification]] project, Parsoid will soon be turned on as the default article renderer on your Wiktionary. We are gradually increasing the number of wikis using Parsoid, with the intention of making it the default wikitext parser for MediaWiki's next long-term support release. This will make our wikis more reliable and consistent for editors, readers, and tools to use, as well as making the development of future wikitext features easier. If this transition disrupts your workflow, don’t worry! You can still opt out through a user preference or turn Parsoid off on the current page using the Tools submenu, as described in the [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]] documentation. There is [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Confidence_Framework|more information about our roll-out strategy]] available, including the testing done before we turn on Parsoid for a new wiki. To report bugs and issues, please look at our [[mw:Special:MyLanguage/Parsoid/Parser Unification/Known Issues|known issues]] documentation and if you found a new bug please create a phab ticket and tag the [[phab:project/view/5846|Content Transform Team in Phabricator]]. <section end="announcement-content" /> </div> <em>[[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Parsoid Read Views/Wiktionary Announcement|{{MediaWiki:Please-translate}}]]</em> <bdi lang="en" dir="ltr">[[mw:User:CAnanian (WMF)|C. Scott Ananian]] (Parsoid technical lead)</bdi> 20:48, ngày 12 tháng 2 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:CAnanian (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Wikimedia_Foundation/Product_and_Technology/Parsoid_Read_Views/2025-02-12_Wiktionaries&oldid=28256121 --> == LƯU Ý: Đánh giá hoạt động của bảo quản viên == Xin chào. [[:m:Admin activity review|Một quy định]] liên quan đến việc thu hồi các "quyền nâng cao" (bảo quản viên, hành chính viên...) đã được [[:m:Requests for comment/Activity levels of advanced administrative rights holders|cộng đồng toàn cầu đồng thuận]] thông qua vào năm 2013. Theo quy định nói trên, [[:m:stewards|các tiếp viên]] sẽ xem xét mức độ hoạt động tích cực ở các wiki chưa có quy định riêng về việc thu hồi các quyền nâng cao của những thành viên không hoạt động. Vì dự án này, như chúng tôi được biết, không có quy định nào như vậy, các tiếp viên sẽ tiến hành quy trình xem xét. Các thành viên dưới đây được xem là không hoạt động do không có sửa đổi và không có tác vụ nhật trình trong hơn 2 năm: # [[User:ThiênĐế98]] (bảo quản viên) # [[User:Trần Nguyễn Minh Huy]] (bảo quản viên) Những thành viên trên sẽ sớm nhận được một thông báo, trong đó yêu cầu họ mở thảo luận cộng đồng nếu họ muốn tiếp tục giữ một số hoặc tất cả quyền nâng cao. Nếu không nhận được hồi âm từ họ, các tiếp viên sẽ thu hồi các quyền nâng cao. Tuy nhiên, nếu các bạn, cộng đồng dự án này, muốn tạo một quy trình riêng thay thế cho quy trình toàn cục, muốn tự đưa ra quyết định về các thành viên giữ quyền không hoạt động, hoặc đã có một quy định mà chúng tôi không biết, hãy báo lại cho [[:m:Stewards' noticeboard|các tiếp viên tại Meta-Wiki]]; chúng tôi sẽ ngừng quy trình xem xét ở wiki này. Cảm ơn, – [[Thành viên:EPIC|EPIC]] ([[Thảo luận Thành viên:EPIC|thảo luận]]) 23:16, ngày 22 tháng 2 năm 2025 (UTC) == Các bản mẫu lỗi thời == {{Wiktionary:Thảo luận/Các bản mẫu lỗi thời}} == Số mục từ == Theo tiêu chuẩn, các trang nội dung trong không gian chính có thể chứa hơn một mục từ theo ngôn ngữ, nhưng phần mềm không tính các mục từ này, chỉ tính số trang thôi. Trong nhiều năm trước đây, {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary/A|Mô đun:Thống kê Wiktionary]] sử dụng các từ khóa <code>pagesincategory:</code> để cộng lại số trang trong các thể loại con của [[:Thể loại:Mục từ theo ngôn ngữ]]. Đây là tổng số được trình bày rất đáng kể trên Trang Chính và [[Đặc biệt:Thống kê|trang thống kê]]. Cách đây khoảng 2 năm, hệ thống này [[Thảo luận Mô đun:Thống kê Wiktionary/A#Sự cố do mức độ xử lý cao|bị vỡ]] khi thêm nhiều ngôn ngữ quá mức vào hệ thống bản mẫu. Vì chúng ta vẫn tiếp tục thêm nhiều ngôn ngữ, phương pháp cũ không còn có lý nữa, nhưng chúng ta vẫn nên phân biệt các mục từ theo ngôn ngữ để cho các độc giả biết kích cỡ thật của từ điển này. Hôm qua tôi tái tạo {{LKBM|Số mục từ}} và [[Mô đun:Thống kê Wiktionary]] tính theo một [[c:Data:Vietnamese Wiktionary language category statistics.tab|bảng dữ liệu]] ở Wikimedia Commons. Vì API đã có thể cho ra các tên thể loại, chúng ta không cần phải quản lý danh sách thể loại ngôn ngữ thủ công như trước. Tạm thời tôi sẽ cố gắng cập nhật bảng này thường xuyên một cách thủ công. Hy vọng rằng chúng ta sẽ tìm cách để chạy bot để cập nhật nó một cách tự động, hoặc liên lạc với chuyên gia về bot để cập nhật giùm. Xin thử hệ thống này cho một thời gian, nếu không được thì có thể tìm cách khác để xác định số mục từ thật. Cám ơn sự kiên nhẫn của các bạn. &nbsp;&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> 13:17, ngày 11 tháng 7 năm 2025 (UTC) == Đợt cải cách thể chế == Các bạn trong nước có lẽ đang bận cập nhật các bài Wikipedia về [[:w:vi:Danh sách đơn vị hành chính Việt Nam trong đợt cải cách thể chế 2024–2025|đợt cải cách thể chế]] mấy tháng nay. Xin đừng bỏ lỡ Wiktionary. Hình như [[Thành viên:MuDavid|MuDavid]] đã cập nhật hàng loạt mục từ bên Wiktionary tiếng Anh, nhưng bên đây chưa được cập nhật. Ngoài ra, các mục từ tên huyện, quận cũng chưa được cập nhật. Có cần tự động hóa các thay đổi này không, hoặc nên cập nhật thủ công từng địa danh một? – [[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> 17:31, ngày 11 tháng 7 năm 2025 (UTC) :[[Thành viên:Mxn|Mxn]] Tôi quên tất việc Wiktionary cũng cần được cập nhật một số thông tin mới này. Nếu được, tôi nghĩ nên hỗ trợ phần nào bằng việc tự động hóa các mục từ trong [[:Thể loại:Địa danh tiếng Việt]] (vì chúng ta chưa kể còn thể loại các danh sách địa danh tên riêng có tiếng Việt). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 17:45, ngày 11 tháng 7 năm 2025 (UTC) ::@[[Thành viên:P. ĐĂNG|P. ĐĂNG]]: Tự động hóa có nghĩa cấu trúc lại bằng {{LKBM|place}} phải không? [[Mô đun:place/placetypes]] đại khái vẫn chưa được dịch sang tiếng Việt. Chắc cần để ý đến cả ngữ pháp đối với mô đun này, thí dụ xóa các trường hợp số nhiều. Sau đó có thể chạy bot thay thế các định nghĩa theo biểu thức chính quy. Có lẽ việc này có thể xảy ra cùng lúc với việc thủ công thêm nhãn {{LKBM|@|sử}} hay {{LKBM|nhãn|vi|historical}} và định nghĩa mới. – [[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> 22:51, ngày 16 tháng 7 năm 2025 (UTC) :::Rất xin lỗi [[Thảo luận Thành viên:Mxn|Mxn]] vì phản hồi trễ. Bạn có thể trình bày một số ý tưởng tự động hóa bằng bot không? Hiện tại, sau khi nghĩ kỹ, tôi nhận thấy việc cập nhật mục từ có ảnh hưởng từ đợt cải cách này chủ yếu sẽ thực hiện "định nghĩa mới" (nội dung). [[Thành viên:P. ĐĂNG|Phong Đăng]] ([[Thảo luận Thành viên:P. ĐĂNG|thảo luận]]) 05:54, ngày 24 tháng 7 năm 2025 (UTC) : @[[Thành viên:Mxn|Mxn]] Tôi nghĩ đề xuất tên thể loại đối với địa danh, chẳng hạn như [[:Thể loại:Địa danh của Việt Nam]], [[:Thể loại:Tỉnh của Nhật Bản]], [[:Thể loại:Khu tự quản của Slovenia]]. [[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:55, ngày 27 tháng 7 năm 2025 (UTC) : Bản chất [[:Thể loại:Địa danh tiếng Việt]] nó thuộc về thể loại này ([[:en:Category:vi:Places]]) [[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:57, ngày 27 tháng 7 năm 2025 (UTC) == Thông báo: FVDP đã bị xóa == Tin buồn cách đây vài tháng nhưng không ai để ý đó là từ điển FVDP [https://www.informatik.uni-leipzig.de/~duc/Dict/ gốc], một tài liệu từ điển mở là nền móng đầu tiên của Wiktionary tiếng Việt ngày nay đã bị trường đại học ở leipzig xóa, khả năng là web quá cũ và quá lâu nên xóa để cập nhật. Tất cả nguồn khác đã die từ rất lâu: Hiện từ điển này vẫn còn lưu trữ trên một số trang sau: * Wayback ** [https://web.archive.org/web/*/https://www.informatik.uni-leipzig.de/~duc/Java/J2ME/MobiPocket/* Từ điển offline MobiPocket Reader], có một số bản từ điển Anh-Việt (bản đầy đủ), Pháp Việt và Việt Pháp. ** [https://dict.quehuong.org quehuong.org], bản này có vẻ như lấy từ FVDP. Cảm ơn đã xem và cảm ơn, trân trọng kính báo. – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:09, ngày 19 tháng 7 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]]: Thật buồn quá. Tôi đã cập nhật {{LKBM|R:FVDP}} để liên kết đến các gói dữ liệu DICT gốc được lưu trữ tại Wayback Machine. (Các gói này cũng bao gồm một số từ điển song ngữ và rất nhiều mục từ tiếng Việt chưa được nhập vào đây.) Ngày nào có thì giờ tôi tính thiết lập máy chủ DICT để mirror FVDP tại [[Wikitech:Portal:Toolforge|Toolforge]] để dễ tham khảo hơn. – [[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:53, ngày 22 tháng 7 năm 2025 (UTC) == 📢 Thông báo: Quy tắc mới cho Mô đun:Category tree == Để thống nhất cách đặt tên thể loại và đảm bảo '''Mô đun:Category tree''' hoạt động chính xác, kể từ nay vui lòng tuân thủ các quy tắc sau: === 1️⃣ Quy tắc chung === * Tên thể loại có dạng: <pre> Label + tên ngôn ngữ </pre> ;Ví dụ: * ''Danh từ tiếng Việt'' * ''Động từ tiếng Anh'' * ''Thành ngữ tiếng Pháp'' === 2️⃣ Quy tắc cho các chủ đề === * Với các thể loại đang có dạng: <pre> Chủ đề\Tên Ngôn ngữ </pre> hãy chuyển toàn bộ về: <pre> Mã ngôn ngữ:Tên chủ đề </pre> ;Ví dụ: * <code>Động vật\Tiếng Anh</code> → <code>en:Động vật</code> * <code>Ẩm thực\Tiếng Việt</code> → <code>vi:Ẩm thực</code> === 3️⃣ Quy tắc cho tên có chứa ngôn ngữ ở giữa === * Áp dụng khi tên thể loại có '''tên ngôn ngữ''' không nằm ở đầu hay cuối, mà xuất hiện bên trong cụm từ. * Trường hợp phổ biến: <pre> Thể loại:Từ tiếng [Ngôn ngữ] theo từ nguyên </pre> hãy đổi thành: <pre> Thể loại:Từ theo từ nguyên tiếng [Ngôn ngữ] </pre> ;Ví dụ: * <code>Thể loại:Từ tiếng Việt theo từ nguyên</code> → <code>Thể loại:Từ theo từ nguyên tiếng Việt</code> '''💡 Lưu ý:''' * Mã ngôn ngữ cần tuân thủ thứ tự ưu tiên sau: ** Ưu tiên 1: chuẩn ISO&nbsp;639-1 (hai ký tự, nếu có). ** Ưu tiên 2: chuẩn ISO&nbsp;639-2 (ba ký tự, nếu không có ISO&nbsp;639-1). ** Ưu tiên 3: chuẩn ISO&nbsp;639-3 (ba ký tự, khi không có 639-1 hoặc 639-2). * Cập nhật liên kết trong các trang con khi đổi tên để tránh lỗi hiển thị. * Do hạn chế về bản mẫu, một số thể loại con hiện vẫn chưa thể thêm được module này; xin vui lòng thêm thể loại đó bằng tay. ---- ✨ '''Kính mời mọi người giúp đỡ''' trong việc rà soát và áp dụng các quy tắc trên, nhằm giữ cho hệ thống thể loại luôn rõ ràng và đồng bộ.--[[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 17:17, ngày 14 tháng 9 năm 2025 (UTC) :@[[Thành viên:Kateru Zakuro|Kateru Zakuro]], @[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] Bên en có 2 thể loại khác nhau là [[:en:Category:English numbers]] và [[:en:Category:English numerals]]. Nên thống nhất dịch "numbers" là "số", còn "numerals" là "số từ" để sửa lại liên kết Wikidata và những nội dung khác liên quan--.--[[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:49, ngày 14 tháng 9 năm 2025 (UTC) :: @[[Thành viên:TheHighFighter2|TheHighFighter2]] Sẽ mất rất nhiều thời gian để sửa lại các vấn đề liên quan đến số và số từ. [[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:15, ngày 30 tháng 10 năm 2025 (UTC) :::@[[Thành viên:Ayane Fumihiro|Ayane Fumihiro]] "Cứ từ từ rồi khoai nó cũng nhừ" --.--[[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:50, ngày 30 tháng 10 năm 2025 (UTC) : @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Tôi đề xuất thêm đổi thể loại liên quan đến vần. Ví dụ như đổi [[:Thể loại:Vần tiếng Estonia/aht]] thành [[:Thể loại:Vần:Tiếng Estonia/aht]]. [[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>]]) 08:59, ngày 18 tháng 9 năm 2025 (UTC) ::Hình như chúng ta chưa có thể loại vần mà nhỉ, em thấy nhiều mục từ có tiêu đề rõ ràng là không đúng quy tắc – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:03, ngày 18 tháng 9 năm 2025 (UTC) ::: @[[Thành viên:Kateru Zakuro|Kateru Zakuro]] Nhắc mới nhớ dự án chúng ta chưa có không gian tên Rhymes (Vần). [[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>]]) 09:07, ngày 18 tháng 9 năm 2025 (UTC) ::::Khả năng phải gọi @[[Thành viên:Mxn|Mxn]] ra ý kiến thôi – [[Thành viên:Kateru Zakuro|Kateru Zakuro]] ([[Thảo luận Thành viên:Kateru Zakuro|thảo luận]]) 09:23, ngày 18 tháng 9 năm 2025 (UTC) == Thông báo: Twinkle đã hoạt động == Wiktionary tiếng Việt hiện đã có Twinkle, Các thành viên có thể sử dụng bằng cách bật trong tùy chọn. :'''Lưu ý''': Hiện đang dịch sang tiếng Việt và do thiếu bản mẫu, có thể một số tính năng không hoạt động đúng. Tuy nhiên so với bản của Hide of Roze thì bản này là bản từ Wikipedia tiếng Anh nên tất cả tính năng được xác nhận là hoạt động được, chỉ là thiếu bản mẫu mà thôi. :BQV nào rảnh có thể qua dịch cù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]]) 16:36, ngày 5 tháng 10 năm 2025 (UTC) == Từ điển giấy == Thân tặng mọi người ''Từ điển tiếng Việt'' [https://archive.org/details/1BkF0KZgSGksZHbQzxaWVqrF7VV8hvnJjcozsFGyULH2/page/n3/mode/2up bản năm 2021] của Hoàng Phê để phát triển dự án. – [[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]]) 22:38, ngày 26 tháng 10 năm 2025 (UTC) :Cảm ơn bác nhiều nhé. Cái này em sẽ đưa vào bản mẫu tham khảo để trích dẫn các từ có dẫn lại định nghĩa từ từ điển này (có viết lạ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]]) 02:49, ngày 27 tháng 10 năm 2025 (UTC) == Biểu quyết tước quyền == Đáng tiếc, tôi [[Wiktionary:Biểu quyết#Tước quyền hành chính viên, bảo quản viên của Nguyentrongphu|đề nghị tước các quyền đặc biệt]] của hành chính viên [[Thành viên:Nguyentrongphu|Nguyentrongphu]] vào lúc đã bị cấm toàn cục. Xin tham gia cuộc biểu quyết. – [[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:59, ngày 29 tháng 10 năm 2025 (UTC) == [[Mô đun:cs-sk-headword/testcases]] misuse == "Mô đun:*/testcases" pages should only be used for unit tests. This page should be renamed to a new title without the "/testcases" suffix. – [[Thành viên:Public class|Public class]] ([[Thảo luận Thành viên:Public class|thảo luận]]) 04:15, ngày 11 tháng 11 năm 2025 (UTC) :@[[Thành viên:Public class|Public class]] Thanks for your noticed. I already updated main module ([[Mô đun:cs-sk-headword]]). – [[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:36, ngày 11 tháng 11 năm 2025 (UTC) == Lỗi hiển thị liên kết (2) == Tôi vừa thêm thông tin vào [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ]]. Có liên kết. Viết liên kết xong nó xem trước và xem chính thức gì nó cũng biến mất cả đoạn trong dấu ngoặc vuông luôn. Mà tạo liên kết ở mấy trang khác như trang này thì rất ok. Không biết lỗi gì đây. – [[Thành viên:NHNAnh|NHNAnh]] ([[Thảo luận Thành viên:NHNAnh|thảo luận]]) 10:02, ngày 19 tháng 2 năm 2026 (UTC) :@[[Thành viên:NHNAnh|NHNAnh]] Bạn phải thêm dấu hai chấm vào trước, vd: <syntaxhighlight lang="javascript">[[:Thể loại:Mục từ tiếng Anh|Tiếng Anh]]</syntaxhighlight> :Ngoài ra, thay vì thêm thông tin vào trang chính, hãy đưa vào các trang con xếp theo bảng chữ cái, như trang [[Wiktionary:Thống kê/Số mục từ theo ngôn ngữ/A]]. :Tôi vừa xem qua, trên di động không hiển thị bảng mục lục chữ cái giống như trên máy tính. Tôi sẽ sớm khắc phục vấn đề này. :--.--[[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]]) 12:45, ngày 19 tháng 2 năm 2026 (UTC) == Thông báo vê tratu.soha.vn == Sau một thời gian theo dõi và đánh giá, em nhận thấy hiện tại '''không nên sử dụng vào tratu.soha.vn để sao chép, tra cứu hay tham khảo nội dung'''. Nguyên nhân là do trang này dùng MediaWiki quá cũ hiện đang tỏ ra rất thiếu ổn định. Qua kiểm tra các thay đổi gần đây, có thể xác nhận rằng tratu.soha.vn thường xuyên bị tấn công. Trong vài tháng trở lại đây, trung bình mỗi tháng trang này đều phải hứng chịu ít nhất một đợt tấn công dẫn đến gián đoạn. Đợt tấn công không chiếm được toàn bộ hệ thống, nhưng đã gây ra tình trạng sập trang web tạm thời, chèn link quảng cáo, spam nội dung trong một số trang wiki, mục từ thì không thấy bị sao. Sau ngày 3 tháng 6, có vẻ như quản trị web đã quyết định áp dụng biện pháp giới hạn lượng truy cập nhằm bảo vệ hệ thống dẫn đến hệ lụy tạm thời hay gặp các lỗi 502 (Bad Gateway) hoặc 503 (Service Unavailable), khiến việc truy cập trở nên khó khăn và không đáng tin cậy. Vì những lý do trên, em nghĩ hãy sử dụng các nguồn tra cứu thay thế uy tín hơn. Em đã xác nhận một số nguồn sau đây có vẻ như là sao chép từ tratu hoặc có nội dung tương tự. * https://tudientv.com/ trang này là chuyên về từ điển tiếng Việt, trên website có nói nội dung hầu hết từ "Từ điển Soha. Đây là nguồn dữ liệu chính do Vietlex biên soạn (Hoàng Phê chủ biên)", đã kiểm tra và xác nhận, tra cứu rất nhanh và ổn định nhưng có vấn đề là nội dung không đầy đủ, một số mục từ mất nội dung do quá trình trích xuất bị thiếu những nội dung ngoài lập trình. * https://v2.rung.vn/ hình như là bản sao của Tratu nhưng có các mục từ mới, dẫn đến một số kho mục từ cao hơn trang gốc * Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học phiên bản 2018 và 2021 - 2 cái này hình như phần lớn có nội dung tương tự tratu, có thể tham khảo được. Vietlex thì họ không xuất bản từ điển online. Phiên bản sau năm 2008 không có trên mạng, chỉ có bán sách. Bản 2008 hình như chỉ có trên Tratu. Vì vậy nên dùng Từ Điển Tiếng Việt của Viện Ngôn Ngữ Học. Các bác biên tập mục từ chú ý nhé. Cập nhật: Trang tratu.soha.vn tạm thời offline hoàn toàn, không còn truy cập được nữa, báo lỗi 503, có vẻ là máy chủ đã bị down hoặc quá tả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]]) 16:45, ngày 10 tháng 6 năm 2026 (UTC) :'''Update''': Website đã quay lại. Mọi người có thể dùng bình thườ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]]) 10:11, ngày 12 tháng 6 năm 2026 (UTC) : Thấy mấy trang trong thông báo không thấy trang nào đạt "uy tín". Nếu bên Soha Tra từ có trục trặc, thì nên tiến hành archive dần các liên kết. Tất nhiên có thể Wiktionary có tiêu chuẩn nguồn khác Wikipedia, nên là "chắc dùng cũng được". [[Thành viên:Plantaest|Plantaest]] ([[Thảo luận Thành viên:Plantaest|thảo luận]]) 17:37, ngày 19 tháng 6 năm 2026 (UTC) == Yummie == Nếu như bên viwiki thì bơ luôn Yummie để các BQV toàn cục cấm và các tiếp viên khóa hoặc cấm toàn cục + dừng tạo trang với biển rối vì nếu đặt biển rối thì hắn sẽ trở nên "nổi tiếng", thì bên viwikt cũng nên làm như vậy. Có ai đồng ý với tôi không? – [[Thành viên:Higashizakura|<span style="color:black; font-family:Noto Serif JP, serif;">'''Đông Anh'''🌸</span>]]<sup style="font-family:Noto Serif JP, serif">[[Thảo luận Thành viên:Higashizakura|話す]]</sup> 01:08, ngày 5 tháng 9 năm 2026 (UTC) : Cách tốt nhất đối phó tên này là bơ đi và cứ xử lý cấm tài khoản vô hạn như thường. Sau đó xóa các phiên bản do rối phá hoại. Cấm TKTT chỉ tác dụng một phần, tìm IP trong TKTT và phải cấm cả dải 32/48 (IPv6) hoặc dải 16/20 (IPv4). [[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>]]) 10:59, ngày 5 tháng 9 năm 2026 (UTC) == Quyền người tự đánh dấu tuần tra == Lưu ý là quyền hạn người tự đánh dấu tuần tra và tuần tra viên hiện không có sẵn một cách riêng biệt tại dự án và chỉ được phân công, giao cho bảo quản viên phụ trách tôi có nhắc đến ở [https://vi.wiktionary.org/w/index.php?title=Wiktionary:Ng%C6%B0%E1%BB%9Di_t%E1%BB%B1_%C4%91%C3%A1nh_d%E1%BA%A5u_tu%E1%BA%A7n_tra&diff=prev&oldid=2562855 đây] và [https://vi.wiktionary.org/w/index.php?title=Wiktionary:B%E1%BA%A3o_qu%E1%BA%A3n_vi%C3%AAn&diff=prev&oldid=2562859 đây]. Tôi muốn quyền này được thêm riêng vào dự án hoặc sẵn tiện cấp phát thẳng vào quyền người lùi sửa để rút ngắn thời gian làm việc của bảo quản viên trong công tác tuần tra (tôi biết là có thể phải thông qua một số quy trình phức tạp trên Phabricator hoặc tư vấn với tiếp viên bên meta), mong mọi người hỗ trợ. – [[Thành viên:TienMinh-mun6xnChing|TienMinh-mun6xnChing]] ([[Thảo luận Thành viên:TienMinh-mun6xnChing|thảo luận]]) 22:19, ngày 12 tháng 9 năm 2026 (UTC) == Cập nhật == Hiện tại [[Mô đun:headword]] bên en có một số chức năng mới cập nhật. Do đó mô đun này sẽ được cập nhật lại, nếu phát hiện lỗi xin vui lòng báo lại tại đây. Một số trang có thể gặp lỗi do chức năng altform=1 sẽ sớm thay bằng var=1. Note: [[Mô đun:pron qualifier]] (cũ) và [[Mô đun:decorations]] (mới) sẽ để riêng, tạm thời chưa xóa cái pron qualifier. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 06:27, ngày 25 tháng 9 năm 2026 (UTC) : Đề nghị xóa [[Mô đun:headword/util]] do không còn dùng bất kỳ chức năng gọi mô đun chính của headword. [[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>]]) 08:14, ngày 25 tháng 9 năm 2026 (UTC) : Đã cập nhật [[Mô đun:headword utilities]] do chức năng chính headword thay đổi. [[User:Hiyuune|<span style="font-family: Segoe UI Light;color:#FF69B4;letter-spacing:">Linh Huynh</span>]] ([[User talk:Hiyuune|<span style="color:#008080;">talk</span>]]) 10:39, ngày 26 tháng 9 năm 2026 (UTC) tbrp6zjgpj10t986gqgi4g1zankuge2 Thảo luận Wiktionary:Thảo luận 5 103987 2566411 2563849 2026-09-25T12:48:42Z MediaWiki message delivery 19980 Mục mới: /* Your feedback wanted: Remove (Language link added:) and similar edits from Special:RecentChanges */ 2566411 wikitext text/x-wiki <!-- Xin bắt đầu cuộc thảo luận mói ở CUỐI trang! Cám ơn. --> {{Lưu trữ}} == Upcoming Dark Mode user interface rollout for anonymous Wikimedia sites users == <div lang="en" dir="ltr"> {{int:Hello}} Wikimedians, Apologies if this message is not in your language. {{int:please-translate}}. The [[mw:Special:MyLanguage/Reading/Web|Reader Experience team]] will launch the Dark mode feature for anonymous users on all Wikimedia sites, including yours, on October 29, 2025. [[:en:Special:MyLanguage/Light-on-dark color scheme|Dark mode]] is an option that allows users to view pages in light-coloured text, and icons on a dark background. Once it is available for anonymous users, they can enable it when using various devices. More information on ways to enable it can be found on [[:en:Special:MyLanguage/Wikipedia:Dark mode#Options for anyone|this page]]. Given many pages are still not compatible with dark mode this will be an opt-in feature and not automatically apply to pages. Dark mode requires modifications to content pages and templates, and since our initial launch [https://diff.wikimedia.org/2024/07/17/dark-modes-bright-future-how-dark-mode-will-transform-wikipedias-accessibility/ in July 2024], we have been working with communities and helping them prepare for dark mode. Before the rollout, it is essential that template authors and technical contributors test dark mode and read [[mw:Special:MyLanguage/Reading/Web/Accessibility for reading/Updates/2024-04|this page]] to learn how to make pages Dark mode-ready and address any compatibility issues found in templates. We will fix most color compatibility issues only on the most-viewed pages on projects with over 5 million monthly page views. Technical contributors with an account should opt into dark mode currently using preferences or settings and test pages and seek help before the release to ensure everything complies before the enablement. If you have any questions or need help, please [[mw:Special:MyLanguage/Talk:Reading/Web/Accessibility for reading#|contact the Reader Experience team]] for support. Thank you! </div> <bdi lang="en" dir="ltr">[[User:UOzurumba (WMF)|UOzurumba (WMF)]]</bdi> 02:08, ngày 30 tháng 9 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:UOzurumba_(WMF)/sandbox_Dark_mode_deployment_mass_message_list_(October_2025)&oldid=29358561 --> == Bản tin Kỹ thuật: Tuần 41-2025 == <section begin="technews-2025-W41"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/41|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[mw:Special:MyLanguage/Help:Edit check#paste|Kiểm tra Nội dung Dán (Paste Check)]] là một tính năng Kiểm tra Sửa đổi mới để giúp phòng tránh và chống lại các hành vi vi phạm bản quyền. Khi biên tập viên dán văn bản vào bài viết, Kiểm tra Nội dung Dán sẽ nhắc họ xác nhận nguồn gốc và giấy phép của nội dung được dán đó. Bắt đầu từ thứ 4, ngày 8 tháng 10, [[phab:T403680|22 wiki sẽ thử nghiệm tính năng Kiểm tra Nội dung Dán]]. Kiểm tra Nội dung Dán sẽ giúp các tình nguyện viên mới hiểu và tuân theo các quy định và hướng dẫn cần thiết để thực hiện những đóng góp mang tính xây dựng cho các dự án Wikipedia. '''Cập nhật cho biên tập viên''' * Các thiết bị di động sẽ hiển thị các bài viết trên trang di động trực tiếp trên tên miền chuẩn (như <code>en.wikipedia.org</code>), thay vì thông qua việc đổi hướng tới tên miền "m" (như <code>en.m.wikipedia.org</code>). Thay đổi này nhằm cải thiện hiệu năng. Nó sẽ được kích hoạt trên các trang Wikipedia trong tuần này. Liên kết URL di động và tùy chọn "Phiên bản máy tính" vẫn sẽ tiếp tục khả dụng. [[mw:Requests for comment/Mobile domain sunsetting/2025 Announcement|Tìm hiểu thêm]]. [https://phabricator.wikimedia.org/T214998] * [[mw:Special:MyLanguage/Help:CirrusSearch#creationdate and lasteditdate|Bộ lọc ngày]] mới, <code dir=ltr>creationdate:</code> và <code dir=ltr>lasteditdate:</code>, nay có sẵn trong bộ máy tìm kiếm của wiki. Những bộ lọc này cho phép người dùng lọc kết quả tìm kiếm theo bản sửa đổi đầu tiên hoặc cuối cùng của trang. Bộ lọc hỗ trợ các toán tử so sánh (v.d. <code dir=ltr>>2024</code>) và ngày dạng tương đối (v.d. <code dir=ltr>today-1d</code>), giúp việc tìm nội dung hoặc trang được cập nhật gần đây trong khoảng năm cụ thể trở nên dễ dàng hơn. [https://phabricator.wikimedia.org/T403593] * [[f:|Wikifunctions]] nay hỗ trợ văn bản giàu tính chất (rich text) trong lời gọi hàm nhúng trên 150 wiki đã kích hoạt nó. Để giới thiệu tính năng này, nhóm đã tạo [[f:Z26333|bảng biến cách tiếng Latin]] mà biên tập viên Wiktionary có thể sử dụng để tự động tạo ra các dạng danh từ, nhằm tạo ra những kết quả rõ ràng và được định dạng — xem một [[f:Wikifunctions:Embedded function calls/Wiktionary tables demonstration|ví dụ đầu ra]] cụ thể. Nếu bạn cần hỗ trợ hay có bất kỳ phản hồi nào, vui lòng [[f:Wikifunctions:Project chat|liên hệ nhóm Wikifunctions]]. [https://phabricator.wikimedia.org/T397402] * Một liên kết sửa đổi nay sẽ hiển thị trong hộp thể loại trên các trang bài viết đối với người dùng đã đăng nhập, khi nhấn vào sẽ khởi động trực tiếp hộp thoại thể loại bằng Trình Soạn thảo Trực quan (VisualEditor). [https://phabricator.wikimedia.org/T291691] * [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:34}} {{PLURAL:34|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, tuần trước đã có vấn đề khi tải các tập tin pdf và hiện nó đã được giải quyết. [https://phabricator.wikimedia.org/T405957] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Trường <code dir=ltr>rev_sha1</code> trong bảng cơ sở dữ liệu bản sửa đổi đang chuẩn bị được loại bỏ để thay thế bằng trường <code dir=ltr>content_sha1</code> trong bảng cơ sở dữ liệu nội dung. Xem [https://lists.wikimedia.org/hyperkitty/list/cloud@lists.wikimedia.org/thread/2D2M3SP4WHR6BXXKTZ2PBLZQYR3EGQVR/ thông báo này] để biết thêm thông tin. * [[mw:Special:MyLanguage/Reading/Web|Nhóm Trải nghiệm Người đọc]] sẽ triển khai giao diện người dùng [[w:en:Light-on-dark color scheme|Chế độ Tối]] trên tất cả các trang Wikimedia vào ngày 29 tháng 10 năm 2025. Tất cả thành viên vô danh trên các trang Wikimedia sẽ có tùy chọn kích hoạt bảng màu có văn bản màu sáng trên nền tối. Chế độ này được thiết kế để cung cấp trải nghiệm đọc thoải mái hơn, đặc biệt trong những trường hợp thiếu sáng. Tác giả bản mẫu và biên tập viên kỹ thuật được khuyến khích [[mw:Special:MyLanguage/Reading/Web/Accessibility for reading/Updates/2024-04|tìm hiểu cách chuẩn bị các trang để tương thích với Chế độ tối]] và giải quyết bất kỳ vấn đề tương thích nào xuất hiện trong các bản mẫu trên wiki của họ trước thời điểm kích hoạt. Vui lòng liên hệ nhóm Web nếu có bất kỳ câu hỏi hay cần sự trợ giúp nào trên [[mw:Talk:Reading/Web/Accessibility for reading#|trang thảo luận này]] trước ngày kích hoạt. [https://phabricator.wikimedia.org/T395628] * Bắt đầu từ thứ 2, ngày 6 tháng 10, các điểm cuối API theo đường dẫn <code>rest.php</code> sẽ được định tuyến lại qua Cổng API nội bộ mới. Mỗi wiki sẽ được cập nhật dựa trên các nhóm phát hành tiêu chuẩn, với tổng lưu lượng truy cập tăng dần theo thời gian. Thay đổi này dự kiến không gây ra bất kỳ sự gián đoạn gì. Nếu phát hiện thấy có bất kỳ vấn đề nào, vui lòng tạo tác vụ Phabricator gửi lên [[phab:tag/serviceops/|bảng của nhóm Vận hành Dịch vụ]]. [https://phabricator.wikimedia.org/T400130] * [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.45/wmf.22|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/41|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W41"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:23, ngày 6 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:Quiddity (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29400897 --> == <span lang="en" dir="ltr">Have your say: vote for the 2025 Board of Trustees</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Hello all, The voting period for the [[m:Special:MyLanguage/Wikimedia Foundation elections/2025|2025 Board of Trustees election]] is now open. Candidates are running for two (2) seats on the Board. To check your voter eligibility, please visit the [[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Voter eligibility guidelines|voter eligibility page]]. Learn more about them by [[m:Special:MyLanguage/Wikimedia Foundation elections/2025/Candidates|reading their application statements and watch their candidacy videos]]. When you are ready, go to the [[m:Special:SecurePoll/vote/405|SecurePoll voting page to vote]]. '''The vote is open from October 8 at 00:00 UTC to October 22 at 23:59 UTC.''' Best regards, Abhishek Suryawanshi<br />Chair, Elections Committee<section end="announcement-content" /> </div> [[Thành viên:MediaWiki message delivery|MediaWiki message delivery]] ([[Thảo luận Thành viên:MediaWiki message delivery|thảo luận]]) 04:49, ngày 9 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:RamzyM (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29360896 --> == Bản tin Kỹ thuật: Tuần 42-2025 == <section begin="technews-2025-W42"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/42|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Tuần trước, chúng tôi đã tiến hành triển khai những cải tiến về các tính năng bảo mật tài khoản và xác thực hai yếu tố (2FA) trên tất cả các wiki. Những thay đổi đó bao gồm cải tiến giao diện người dùng cho trang [https://auth.wikimedia.org/metawiki/wiki/Special:AccountSecurity Đặc biệt:Bảo mật tài khoản], hỗ trợ nhiều phương thức xác thực 2FA thông qua các ứng dụng xác thực và khóa bảo mật di động (trước đây người dùng chỉ có thể kích hoạt một phương thức xác thực), và mô đun Mã Khôi phục mới giúp giảm thiểu tình trạng khóa tài khoản do mất ứng dụng và thiết bị xác thực hai yếu tố. Là một phần của dự án [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Bảo mật Tài khoản]], quá trình này sẽ tiếp tục trong phần còn lại của năm 2025 để cải thiện nhiều hơn trải nghiệm người dùng, cùng việc thêm hỗ trợ cho mã khóa làm phương thức xác thực thứ hai thay thế. '''Cập nhật cho biên tập viên''' * Một phần khác của dự án Bảo mật tài khoản là cung cấp 2FA cho tất cả người dùng. Bên cạnh biên tập viên có quyền nâng cao, chẳng hạn như bảo quản viên và hành chính viên, 40% biên tập viên nay có quyền truy cập vào 2FA. Bạn có thể kiểm tra xem bạn có quyền truy cập đó không tại [https://auth.wikimedia.org/metawiki/wiki/Special:AccountSecurity Đặc biệt: Bảo mật tài khoản]. Hướng dẫn kích hoạt có trên trang được liên kết theo. Kế hoạch là tiếp tục tăng cường tính khả dụng nếu xác định rằng khả năng hỗ trợ người dùng có thể hỗ trợ việc sử dụng toàn cục của nó. [https://phabricator.wikimedia.org/T400579] * Tuần này, người dùng trên các wiki mà mặc định đã có sẵn tính năng [[mw:Special:MyLanguage/Talk pages project/Usability|Cải tiến Khả năng Sử dụng]] trên trang thảo luận (tất cả ''trừ'' 12 wiki được liệt kê trong tác vụ [[phab:T379264|T379264]]) sẽ có được khả năng gửi lời cảm ơn bình luận trực tiếp trên trang thảo luận mà nó xuất hiện. Trước thay đổi này, việc cảm ơn chỉ có thể được thực hiện bằng cách truy cập lịch sử sửa đổi của trang thảo luận. Bạn có thể [[diffblog:2025/10/13/revolutionizing-gratitude-a-new-era-of-thanking-comments/|tìm hiểu thêm về thay đổi này]]. [https://phabricator.wikimedia.org/T366095] * Người dùng chưa [[Special:Preferences#mw-prefsection-personal-email|xác thực địa chỉ email của mình]] sẽ sớm nhận thông báo hàng tháng nhắc họ làm điều này. Điều này là bởi vì người dùng đã xác thực email của họ có thể dễ dàng khôi phục tài khoản của mình hơn. Những lời nhắc này sẽ không được gửi nếu người dùng không hoạt động hoặc đã loại bỏ email chưa được xác thực khỏi tài khoản của mình. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Email_confirmation][https://phabricator.wikimedia.org/T58074] * [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:21}} {{PLURAL:21|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, đã có một bản sửa lỗi nhằm giải quyết một lỗi thỉnh thoảng xảy ra khi lưu các đoạn đã được dịch trong công cụ Dịch Nội dung, cùng với đó các thông báo lỗi có liên quan giờ dễ nhìn hơn. [https://phabricator.wikimedia.org/T376531] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Nhóm Công cụ Không được Hỗ trợ đã chọn [[c:Special:MyLanguage/Commons:Video2commons|Video2Commons]] làm công cụ đầu tiên cho chu kỳ thí điểm của họ. Nhóm sẽ tìm hiểu cách để cải tiến và duy trì công cụ này trong những tháng tiếp theo. [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|Tìm hiểu thêm trên Meta]]. * [[File:Octicons-sync.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.45/wmf.23|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/42|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W42"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:59, ngày 13 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:Quiddity (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29434481 --> == <span lang="en" dir="ltr">Help us decide the name of the new Abstract Wikipedia project</span> == <div lang="en" dir="ltr"> <section begin="function1"/> {{int:Hello}}. Please help pick a name for the new Abstract Wikipedia wiki project. This project will be a wiki that will enable users to combine functions from [[:f:|Wikifunctions]] and data from Wikidata in order to generate natural language sentences in any supported languages. These sentences can then be used by any Wikipedia (or elsewhere). There will be two rounds of voting, each followed by legal review of candidates, with votes beginning on 20 October and 17 November 2025. Our goal is to have a final project name selected on mid-December 2025. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki. {{Int:Feedback-thanks-title}} <section end="function1"/> </div> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 11:44, ngày 20 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:Sannita (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29432175 --> == Bản tin Kỹ thuật: Tuần 43-2025 == <section begin="technews-2025-W43"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/43|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Để tối ưu hóa cách dữ liệu người dùng được lưu trong cơ sở dữ liệu của chúng tôi, các tùy chọn được lưu của người dùng chưa đăng nhập trong vòng hơn 5 năm và có ít hơn 100 sửa đổi sẽ bị xóa. Khi những người dùng đó quay lại, tùy chọn mặc định sẽ được áp dụng. [https://phabricator.wikimedia.org/T406724] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:20}} {{PLURAL:20|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, đã có một liên kết hỏng từ thông điệp giao diện Đóng góp toàn cục đến trang Đóng góp toàn cục trên XTools mà hiện đã được giải quyết. [https://phabricator.wikimedia.org/T406415] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Việc định tuyến lại toàn bộ lưu lượng đến các điểm cuối API theo cổng <code dir=ltr><nowiki>rest.php</nowiki></code> thông qua một cổng API chung hiện đã hoàn tất. Nếu phát hiện bất kỳ vấn đề nào, vui lòng gửi tác vụ phabricator lên [[phab:tag/serviceops/|bảng tác vụ của nhóm Vận hành Dịch vụ]]. * Các sửa đổi đối với chú thích hoặc từ hạn định Wikidata nay sẽ ít hiển thị thường xuyên hơn trên các mục Thay đổi gần đây và Danh sách theo dõi trên các wiki khác, nhằm giảm bớt các thông báo không cần thiết. Thay đổi này sẽ giảm tổng số lượng các khoản mục 'gây nhiễu'. Bản thân các trang Wikidata sẽ không có sự thay đổi nào. [https://phabricator.wikimedia.org/T401290] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.45/wmf.24|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/43|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W43"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:36, ngày 20 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29478670 --> == Bản tin Kỹ thuật: Tuần 44-2025 == <section begin="technews-2025-W44"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/44|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Ứng dụng Wikipedia dành cho iOS đã ra mắt thử nghiệm A/B/C nhằm cải tiến tính năng duyệt theo thẻ cho một số khu vực và ngôn ngữ nhất định. Thử nghiệm mang tên “Nhiều thẻ động hơn” này sẽ khám phá trải nghiệm trên thẻ mới cùng với việc bổ sung đề xuất bài viết ở mục “Bạn có biết” và “Vì bạn đã đọc”. Bạn có thể [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/Tabbed Browsing (Tabs)/New Tab Experience and Recommendations Experiment|đọc thêm thông tin trên trang dự án này]]. * Thành viên tự xác nhận trên các wiki [[gitiles:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/small.dblist|nhỏ]] và [[gitiles:operations/mediawiki-config/+/a2d2aaab9ace84280dd2f4c70a33bb69cd73850f/dblists/medium.dblist|vừa]] đã triển khai phần mở rộng CampaignEvents nay có thể sử dụng công cụ [[m:Special:MyLanguage/Event Center/Registration|Đăng ký Sự kiện]] mà không cần quyền Người tổ chức Sự kiện. Tính năng này cho phép người tổ chức kích hoạt việc đăng ký, quản lý người tham gia, và cho phép các thành viên đăng ký chỉ với một cú nhấp chuột thay vì phải ký vào trang sự kiện. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:31}} {{PLURAL:31|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, vấn đề về màu sắc nhấp nháy khi giữ hoặc nhấn phím mũi tên trong phần cài đặt chế độ tối của giao diện Vector 2022 nay đã được giải quyết. [https://phabricator.wikimedia.org/T402285] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Phần mở rộng CampaignEvents sẽ được triển khai trên tất cả những wiki còn lại trong tuần từ ngày 17 tháng 11 năm 2025. Phần mở rộng này hiện bao gồm ba tính năng: Đăng ký Sự kiện, Danh sách Cộng tác, và Danh sách Mời. Trong đợt triển khai này, Danh sách Lời mời sẽ không được kích hoạt cho Wikifunctions và MediaWiki cho đến khi những cộng đồng này yêu cầu kích hoạt. [[m:Special:MyLanguage/CampaignEvents/Deployment status|Truy cập trang thông tin triển khai để biết thêm thông tin]]. * Trải nghiệm chỗ thử REST dựa trên SwaggerUI nay đã có mặt trên tất cả các dự án wiki. Chỗ thử này có thể truy cập được thông qua trang [[{{#special:RestSandbox}}]]. Vui lòng báo cáo bất kỳ vấn đề nào lên bảng tin của nhóm Giao diện MediaWiki, hoặc tham gia thảo luận trên trang [[mw:Special:MyLanguage/MediaWiki Interfaces Team/Feature Feedback/REST Sandbox|khởi động dự án]] này. [https://phabricator.wikimedia.org/project/board/6931/] * Những điểm cuối chuyển đổi với đường dẫn kết thúc bằng dấu gạch chéo trong REST API của MediaWiki hiện đang được đánh dấu là lỗi thời. Chúng vẫn sẽ tiếp tục hoạt động trong thời gian này, tuy nhiên dự kiến chúng sẽ bị loại bỏ vào cuối tháng 1 năm 2026. Toàn bộ người dùng API đang gọi chúng được khuyến khích chuyển sang bản đường dẫn không kết thúc bằng dấu gạch chéo. Cả hai biến thể điểm cuối này đều có thể tìm thấy và thử được sử dụng [https://test.wikipedia.org/w/index.php?api=mw-extra&title=Special%3ARestSandbox Chỗ thử REST]. Xem trang [[mw:API/Deprecation|Ngừng hỗ trợ với REST API MediaWiki]] để biết thêm thông tin chi tiết về các chính sách và thủ tục trong việc ngừng hỗ trợ API. * [[mw:API:REST API/Changelog|Nhật trình thay đổi chuyên biệt nay đã có sẵn cho REST API của MediaWiki]]. Nhật trình thay đổi này cung cấp tổng quan về những thay đổi này, giúp các nhà phát triển dễ dàng theo dõi những cải tiến và lần lặp lại của chúng. Mọi thông báo cũng sẽ tiếp tục được gửi thông qua các kênh truyền thông chính, bao gồm Bản tin Kỹ thuật và danh sách phân phối qua thư điện tử, nhưng nay có thể dễ dàng tham khảo hơn từ một vị trí trung tâm. Nếu bạn có bất kỳ phản hồi nào về định dạng, cấu trúc, hoặc nội dung về nhật trình thay đổi này, vui lòng [[mw:API talk:REST API/Changelog|tham gia thảo luận tại đây]]. * Bảo quản viên nay có thể xóa thể loại theo dõi mà trước đây được thêm bởi phần mở rộng JsonConfig, do nó không còn được sử dụng. Xem các thể loại được liên kết từ [[d:Q130635582#sitelinks-wikipedia|Q130635582]]. Việc vẫn còn trang được liệt kê trên thể loại này là bình thường vì nó chỉ là vấn đề về bộ nhớ đệm, và chúng sẽ tự động được xóa khi các trang đó được sửa đổi trong lần tiếp theo. [https://phabricator.wikimedia.org/T378352] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.45/wmf.25|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/44|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W44"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:31, ngày 27 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29513638 --> == <span lang="en" dir="ltr">Seeking volunteers to join several of the movement’s committees</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Each year, typically from October through December, several of the movement’s committees seek new volunteers. Read more about the committees on their Meta-wiki pages: * [[m:Special:MyLanguage/Affiliations Committee|Affiliations Committee (AffCom)]] * [[m:Special:MyLanguage/Ombuds commission|Ombuds commission (OC)]] * [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Community Resilience and Sustainability/Trust and Safety/Case Review Committee|Case Review Committee (CRC)]] Applications for the committees open on October 30, 2025. Applications for the Affiliations Committee, Ombuds commission and the Case Review Committee close on December 11, 2025. Learn how to apply by [[m:Special:MyLanguage/Wikimedia Foundation/Legal/Committee appointments|visiting the appointment page on Meta-wiki]]. Post to the talk page or email cst[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org with any questions you may have. For the Committee Support team, <section end="announcement-content" /> </div> -[[m:User:MKaur (WMF)| MKaur (WMF)]] 14:14, ngày 30 tháng 10 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:MKaur (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29517125 --> == Bản tin Kỹ thuật: Tuần 45-2025 == <section begin="technews-2025-W45"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/45|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Các bảo quản viên giờ đây sẽ thấy rằng [[{{#special:MergeHistory}}]] đã trở nên linh hoạt hơn đáng kể trong việc hợp nhất. Nó có thể hợp nhất các phần được lấy từ giữa lịch sử của trang nguồn (thay vì chỉ từ phần đầu), và chèn các phiên bản vào bất kỳ vị trí nào trong lịch sử của trang đích (thay vì chỉ ở phần đầu). [https://phabricator.wikimedia.org/T382958] * Đối với những người dùng đã kích hoạt "{{int:discussiontools-preference-autotopicsub}}" [[Special:Preferences#mw-prefsection-editing|trong tùy chọn của họ]], việc bắt đầu một chủ đề mới hoặc thêm một phản hồi vào một chủ đề hiện có giờ đây sẽ tự động đăng ký họ theo dõi các phản hồi mới trong chủ đề đó. Trước đây, điều này chỉ xảy ra nếu người dùng sử dụng tiện ích "{{int:Skin-action-addsection}}" hoặc "{{int:Discussiontools-replybutton}}" của DiscussionTools. Khi DiscussionTools mới được ra mắt, các tài khoản hiện có không được tự động bật tính năng theo dõi chủ đề, vì vậy thay đổi này chủ yếu sẽ ảnh hưởng đến các tài khoản mới hơn và những người dùng đã chủ động thay đổi tùy chọn của mình kể từ thời điểm đó. [https://phabricator.wikimedia.org/T290778] * Các mô đun Scribunto giờ đây có thể được dùng để [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#SVG library|tạo ảnh SVG]]. Tính năng này cho phép tạo biểu đồ, đồ họa và các hình minh họa khác một cách linh hoạt thông qua Lua, giúp giảm nhu cầu phải tạo chúng bên ngoài rồi tải lên dưới dạng tập tin. [https://phabricator.wikimedia.org/T405861] * Các trang web của Wikimedia giờ đây sẽ cung cấp cho tất cả người dùng ẩn danh tùy chọn bật chế độ tối, với giao diện chữ sáng trên nền tối. Cải tiến này nhằm mang lại trải nghiệm đọc dễ chịu hơn, đặc biệt là trong môi trường thiếu sáng. [https://phabricator.wikimedia.org/T395628] * Những người dùng có danh sách theo dõi lớn từ lâu đã gặp lỗi quá thời gian khi chỉnh sửa [[Special:EditWatchlist|Special:EditWatchlist]]. Trang này nay sẽ tải các mục theo từng phần nhỏ thay vì tải toàn bộ cùng lúc nhờ bản cập nhật phân trang, giúp mọi người có thể chỉnh sửa danh sách theo dõi mượt mà hơn. Trong quá trình cập nhật cơ sở dữ liệu, tính năng sắp xếp theo thời hạn đã bị loại bỏ vì chậm hơn hơn 100 lần so với sắp xếp theo tên trang. Một [https://meta.wikimedia.org/wiki/Community_Wishlist/W454 yêu cầu từ cộng đồng] đã được tạo để tìm các cách thay thế nhằm khôi phục tính năng sắp xếp theo thời hạn. Nếu bạn thấy tính năng này quan trọng, hãy ủng hộ yêu cầu đó! [https://phabricator.wikimedia.org/T41510] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:31}} {{PLURAL:31|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, việc khắc phục lỗi tô sáng vẫn còn hiển thị sau khi sử dụng tính năng tìm và thay thế của VisualEditor trong quá trình tìm kiếm. [https://phabricator.wikimedia.org/T407318] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Từ năm 2019, [[m:Special:MyLanguage/Wikimedia URL Shortener|Trình rút gọn URL của Wikimedia]] tại https://w.wiki đã có sẵn cho tất cả các wiki của Wikimedia để tạo liên kết ngắn đến bài viết, liên kết cố định, bản so sánh, v.v. Tính năng này có trong thanh bên với tên "Lấy URL rút gọn". Hiện có 30 wiki vẫn đang sử dụng tiện ích mở rộng cũ "ShortUrl". Tiện ích cũ này sẽ sớm bị gỡ bỏ. Điều này có nghĩa là các URL dạng <code>/s/</code> sẽ không còn được hiển thị dưới tiêu đề bài viết thông qua thẻ HTML <code dir=ltr>class="title-shortlink"</code>. Tuy nhiên, các URL dạng <code>/s/</code> vẫn sẽ tiếp tục hoạt động. [https://phabricator.wikimedia.org/T107188] * Vào thứ Năm, ngày 30 tháng 10, các nhóm [[:mw:Special:MyLanguage/MediaWiki Interfaces Team|Giao diện MediaWiki]] và [[:mw:Special:MyLanguage/Wikimedia Site Reliability Engineering|Vận hành Dịch vụ SRE]] đã bắt đầu chuyển hướng lưu lượng của Action API thông qua một cổng API chung. Các wiki riêng lẻ sẽ được cập nhật theo từng nhóm phát hành tiêu chuẩn, với tổng lưu lượng được tăng dần theo thời gian. Thay đổi này được kỳ vọng sẽ không gây ra lỗi hoặc gián đoạn. Nếu bạn phát hiện bất kỳ sự cố nào, vui lòng gửi báo cáo trên bảng [https://phabricator.wikimedia.org/tag/serviceops/ của nhóm Vận hành Dịch vụ]. * Việc triển khai MediaWiki Train sẽ tạm dừng trong hai tuần cuối cùng của năm 2025: ngày 22 và 29 tháng 12. Các khung thời gian backport cũng sẽ tạm ngưng từ thứ Hai, ngày 22 tháng 12 năm 2025 đến thứ Năm, ngày 2 tháng 1 năm 2026. "Backport window" là khoảng thời gian được lên lịch để bổ sung các nội dung như bản vá lỗi và thay đổi cấu hình. Hiện vẫn còn bảy đợt triển khai MediaWiki Train nữa trong năm 2025. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/SMWTEAES4SDLDUSK4HMWNBSKNCXZAWYN/] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.45/wmf.26|MediaWiki]] '''Chuyên sâu''' * Năm 2025, Quỹ Wikimedia báo cáo rằng các hệ thống AI và công cụ tìm kiếm ngày càng sử dụng nội dung từ Wikipedia mà không dẫn người dùng quay lại trang, góp phần khiến lượng lượt xem từ người dùng thực giảm 8% so với năm 2024. Sau khi phát hiện các bot giả dạng người dùng thật, Wikimedia đã cập nhật dữ liệu truy cập để phản ánh sự thay đổi này. Bạn có thể đọc thêm về xu hướng người dùng hiện nay trên Wikipedia trong [[diffblog:2025/10/17/new-user-trends-on-wikipedia/|bài viết trên blog Diff]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/45|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W45"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:34, ngày 3 tháng 11 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29552512 --> == Bản tin Kỹ thuật: Tuần 46-2025 == <section begin="technews-2025-W46"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/46|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' [[File:Talk pages default look (April 2023).jpg|thumb|alt=Hình chụp những thay đổi về mặt trực quan được thực hiện trên trang thảo luận|Ví dụ về trang thảo luận với thiết kế mới, bằng tiếng Pháp.]] * Kể từ ngày 12 tháng 11, người dùng sẽ nhận thấy sự thay đổi về [[m:Special:MyLanguage/Talk pages project/Feature summary#Usability improvements|giao diện của các trang thảo luận]] trên [[Phab:T379264|một số trang Wikipedia]]. Hầu hết [[phab:T392121|toàn bộ các wiki]] đã có được thay đổi về mặt thiết kế này; những thay đổi này sẽ được thực hiện sau trên [[phab:T409297|Wikipedia tiếng Anh]]. Bạn có thể đọc thêm [[diffblog:2024/05/02/making-talk-pages-better-for-everyone/|trên ''Diff'']]. Người dùng có thể chọn không thực hiện thay đổi này [[Special:Preferences#mw-prefsection-editing|trong tùy chọn người dùng của mình]] ở tùy chọn "{{int:discussiontools-preference-visualenhancements}}". [https://phabricator.wikimedia.org/T379264] * MediaWiki nay có thể hiển thị [[mw:Special:MyLanguage/Help:Protection indicators|chỉ báo trên trang]] tự động khi một trang bị khóa. Tính năng này được tắt theo mặc định. Nó có thể được bật theo [[m:Special:MyLanguage/Requesting wiki configuration changes|yêu cầu của cộng đồng]]. [https://phabricator.wikimedia.org/T12347] * Việc sử dụng các nút "{{int:showpreview}}" hoặc "{{int:showdiff}}" trong trình soạn thảo mã nguồn nay sẽ đi kèm một số tham số URL nhất định như '[[mw:Special:MyLanguage/Manual:Parameters to index.php#useskin|useskin]]', '[[mw:Special:MyLanguage/Manual:Parameters to index.php#uselang|uselang]]' và '[[mw:Special:MyLanguage/Help:Section#Editing sections|section]]'. Bản cập nhật này đồng thời cũng sửa một vấn đề mà, nếu trình duyệt bị sập khi đang xem trước sửa đổi một đề mục duy nhất, việc lưu sửa đổi này có thể ghi đè toàn bộ trang chỉ bằng nội dung của đề mục đó. [https://phabricator.wikimedia.org/T62744][https://phabricator.wikimedia.org/T24029][https://phabricator.wikimedia.org/T155097] * Các wiki Wikivoyage có thể dùng [[mw:Special:MyLanguage/Help:Extension:Kartographer#Markers and counters|điểm đánh dấu bản đồ bằng màu trong nội dung văn bản của bài viết]]. Nội dung văn bản của những điểm đánh dấu đó nay sẽ được hiển thị bằng màu đen hoặc trắng tương phản, thay vì luôn luôn là màu trắng. Cộng đồng có thể loại bỏ các phương pháp giải quyết cục bộ cho vấn đề này. [https://phabricator.wikimedia.org/T369454] * Tab Hoạt động trên ứng dụng Wikipedia dành cho Android nay có sẵn cho tất cả người dùng. Tab mới này cung cấp thông tin chuyên sâu được cá nhân hóa về hoạt động đọc, sửa đổi, và quyên góp, đồng thời đơn giản hóa việc điều hướng và giúp cho việc sử dụng ứng dụng trở nên hấp dẫn hơn. [https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Android/Activity_Tab_Experiment] * Nhóm Phát triển Độc giả (Reader Growth) chuẩn bị khởi động thử nghiệm mang tên "Duyệt hình ảnh" để kiểm tra cách giúp người đọc dễ dàng duyệt và khám phá hình ảnh trên các bài viết Wikipedia hơn. Thử nghiệm này, một thử nghiệm A/B dành riêng cho thiết bị di động, sẽ bắt đầu được thực hiện vào tuần từ ngày 17 tháng 11 và sẽ kéo dài trong bốn tuần, ảnh hưởng đến 0,05% người dùng trên wiki tiếng Anh. Thử nghiệm này đã bắt đầu vào ngày 3 tháng 11 trên các wiki tiếng Ả Rập, tiếng Trung, tiếng Pháp, tiếng Indonesia và tiếng Việt, ảnh hưởng đến tối đa 10% người dùng trên những wiki này. [https://www.mediawiki.org/wiki/Readers/Reader_Growth/WE3.1.3_Image_Browsing] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:27}} {{PLURAL:27|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ như đã khắc phục việc không thể khóa tài khoản trên trang web dành cho di động. [https://phabricator.wikimedia.org/T256185] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[wikitech:Help talk:Toolforge/Toolforge standards committee#November 2025 committee nominations|Wikitech đang mở đề cử]] chọn thành viên mới của [[wikitech:Help:Toolforge/Toolforge standards committee|Ủy ban tiêu chuẩn của Toolforge]]. Ủy ban này giám sát [[wikitech:Help:Toolforge/Right to fork policy|Chính sách quyền sử dụng bản sao]] và [[wikitech:Help:Toolforge/Abandoned tool policy|Chính sách cho công cụ bị bỏ rơi]] của Toolforge cùng nhiều nhiệm vụ khác. Đề cử sẽ tiếp tục mở đến hết ngày 28 tháng 11 năm 2025. * [[w:JSON Web Token#Standard fields|Trường bên cung cấp JWT]] trong [[mw:Special:MyLanguage/OAuth/For Developers#OAuth 2|mã truy cập OAuth 2]] dành cho [[m:Special:MyLanguage/Help:Unified login|wiki SUL]] (đăng nhập trung ương) đã được thay đổi thành <code><nowiki>https://meta.wikimedia.org</nowiki></code>. Các mã truy cập cũ vẫn sẽ hoạt động. [https://phabricator.wikimedia.org/T399199] * [[w:JSON Web Token#Standard fields|Trường chủ đề JWT]] trong [[mw:Special:MyLanguage/OAuth/For Developers#OAuth 2|mã truy cập OAuth 2]] sẽ sớm thay đổi từ <code><user id></code> sang <code dir=ltr style="white-space:nowrap">mw:<identity type>:<user id></code>, trong đó <code><identity type></code> thường là <code dir=ltr>CentralAuth:</code><!-- not a typo --> (đối với [[m:Special:MyLanguage/Help:Unified login|wiki SUL]]) hoặc <code dir=ltr style="white-space:nowrap">local:<wiki id></code> (đối với các wiki khác). Điều này là nhằm tránh xung đột giữa các loại ID người dùng khác nhau, và để mã truy cập OAuth 2 và cookie <code>sessionJwt</code> trở nên giống nhau hơn. Các mã truy cập cũ vẫn sẽ hoạt động. [https://phabricator.wikimedia.org/T399199] * Các thông điệp cấm của MediaWiki ([[MediaWiki:Blockedtext|blockedtext]], [[MediaWiki:Blockedtext-partial|blockedtext-partial]], [[MediaWiki:Autoblockedtext|autoblockedtext]], [[MediaWiki:Systemblockedtext|systemblockedtext]], [[MediaWiki:Blockedtext-tempuser|blockedtext-tempuser]], [[MediaWiki:Autoblockedtext-tempuser|autoblockedtext-tempuser]]) nay hỗ trợ thêm các tham số bổ sung nhằm chỉ ra xem người dùng đó có bị cấm sửa đổi trang thảo luận của mình <code><nowiki>$9</nowiki></code> hoặc gửi thư điện tử cho người dùng khác <code><nowiki>$</nowiki><nowiki>10</nowiki></code> hay không. [https://phabricator.wikimedia.org/T285612] * Nhánh <code>REL1_45</code> cho lõi MediaWiki và từng phần mở rộng cùng giao diện trong git của Wikimedia đã được tạo. Đây là bước đầu tiên trong quá trình phát hành phiên bản MediaWiki 1.45.0, được lên kế hoạch triển khai vào cuối tháng 11 năm 2025. Nếu bạn đang thực hiện việc khắc phục lỗi nghiêm trọng hoặc thực hiện tính năng mới, bạn có thể cần phải lưu ý thay đổi này. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/ZUY7TY3Z6XPZWZVAZV63OPO5OW52Q6GE/] * Quy trình tạo bản dump CirrusSearch đã được cập nhật do hiệu suất bị chậm. Nếu bạn gặp bất kỳ sự cố nào khi chuyển sang bản dump thay thế, vui lòng liên hệ với Nhóm Nền tảng Tìm kiếm để được hỗ trợ. [https://phabricator.wikimedia.org/T366248][https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/3KQPOR6ACVN6OVLMLZPIBXQSWQKW4E3K/] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.2|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/46|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W46"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:38, ngày 10 tháng 11 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29606150 --> == Bản tin Kỹ thuật: Tuần 47-2025 == <section begin="technews-2025-W47"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/47|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Readers/Reader Experience|Nhóm Trải nghiệm Người đọc]] đang thử nghiệm tính năng [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4_Reading lists|danh sách đọc trên trang di động]], cho phép người đọc đã đăng nhập chưa thực hiện sửa đổi nào có thể lưu danh sách bài viết riêng tư để đọc sau. Thử nghiệm đang được thực hiện trên các Wikipedia tiếng Ả Rập, tiếng Trung, tiếng Pháp, tiếng Indonesia, và tiếng Việt kể từ tuần ngày 10 tháng 11, và sẽ bắt đầu trên Wikipedia tiếng Anh trong tuần ngày 17 tháng 11. * Người dùng không thể nhận được mã xác nhận qua thư điện tử khi đăng nhập nay có thể nhờ hỗ trợ bằng cách gửi biểu mẫu trên trang đặc biệt mới. Cập nhật này là một phần của sáng kiến [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Bảo mật Tài khoản]]. Nếu tài khoản của bạn có địa chỉ thư điện tử, hãy đảm bảo rằng bạn vẫn có quyền truy cập vào nó. Trong quá trình đăng nhập từ thiết bị hoặc địa điểm mới mà không có 2FA, bạn có thể được yêu cầu nhập mã 6 ký tự được gửi từ thư điện tử để hoàn tất đăng nhập. [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security#Why are you requiring me to enter a code from my email to log in? Can I opt out of this?|Tìm hiểu thêm]]. * Một wiki mới đã được tạo ra: {{int:project-localized-name-group-wikisource}} tiếng [[d:Q13324|Minangkabau]] ([[s:min:|<code>s:min:</code>]]) [https://phabricator.wikimedia.org/T408317] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Là một phần của dự án [[mw:Special:MyLanguage/Parsoid/Parser Unification|Hợp nhất Trình Phân tích Cú pháp]], Nhóm Chuyển đổi Nội dung đã triển khai Parsoid làm trình phân tích cú pháp mặc định cho nhiều trang Wikipedia có lưu lượng truy cập thấp và đang chuẩn bị tiếp tục bước tiếp theo để triển khai đến những trang có lưu lượng truy cập cao. Tin nhắn này là lời mời cho bạn tham gia vào Parsoid, như được miêu tả trong tài liệu [[mw:Special:MyLanguage/Help:Extension:ParserMigration|Extension:ParserMigration]], và tìm ra bất kỳ vấn đề nào mà bạn có thể gặp phải với quy trình làm việc của mình khi sử dụng bot, tiện ích hoặc đoạn mã người dùng. Hãy cho chúng tôi biết thông qua liên kết ''"Báo cáo lỗi hiển thị"'' trên thanh bên Công cụ hoặc tạo một tác vụ phab và gắn thẻ [[phab:project/view/5846|Nhóm Chuyển đổi Nội dung trên Phabricator]]. * Dự án Công cụ Không được Hỗ trợ: Một vài vấn đề với [[:c:Special:MyLanguage/Commons:Video2commons|Video2Commons]] đã được giải quyết, bao gồm lỗi tải lên liên quan đến tên tập tin, nhập video bị đen, và xử lý việc thử lại. Hỗ trợ cho AV1 cũng đã được thêm vào. Những công việc đang được tiến hành tập trung vào tính ổn định của backend, lỗi ffmpeg, nhập phụ đề, xử lý siêu dữ liệu, và tải lên danh sách phát. Để theo dõi các tác vụ cụ thể, hãy kiểm tra [[phab:tag/video2commons/|bảng tác vụ trên Phabricator]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.3|MediaWiki]] '''Các cuộc họp và sự kiện''' * Hãy lưu lịch ngay cho Hackathon Wikimedia tiếp theo sẽ diễn ra tại Milan, Ý từ ngày 1–3 tháng 5 năm 2026. Cổng đăng ký sẽ được mở vào tháng 1 năm 2026. [https://pretix.eu/wikimedia/Hackathon-2026/ Đơn đăng ký nhận học bổng hiện đang được mở], và sẽ đóng vào ngày 28 tháng 11 năm 2025. Nếu bạn có bất kỳ câu hỏi nào, vui lòng gửi thư đến <bdi lang="en" dir="ltr">hackathon@wikimedia.org</bdi>. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/47|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W47"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:26, ngày 17 tháng 11 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29627455 --> == <span lang="en" dir="ltr">Reminder: Help us decide the name of the new Abstract Wikipedia project</span> == <div lang="en" dir="ltr"> <section begin="function2"/> {{int:Hello}}. Reminder: Please help to choose name for the new Abstract Wikipedia wiki project. The finalist vote starts today. The finalists for the name are: <span lang="en" dir="ltr" class="mw-content-ltr">Abstract Wikipedia, Multilingual Wikipedia, Wikiabstracts, Wikigenerator, Proto-Wiki</span>. If you would like to participate, then '''[[m:Special:MyLanguage/Abstract Wikipedia/Abstract Wikipedia naming contest|please learn more and vote now]]''' at meta-wiki. {{Int:Feedback-thanks-title}} <section end="function2"/> </div> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 14:23, ngày 20 tháng 11 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:Sannita (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29583860 --> == Bản tin Kỹ thuật: Tuần 48-2025 == <section begin="technews-2025-W48"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/48|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Tuần trước, [[mw:Special:MyLanguage/Wikimedia Search Platform|Nhóm Tìm kiếm Wikimedia]] đã tạo lại chức năng của tiện ích "DWIM" (Do What I Mean - Làm những gì bạn muốn) trên máy chủ, cho Wikipedia tiếng Nga và tiếng Do Thái. Tính năng này bổ sung gợi ý đa bàn phím vào gợi ý trên hộp tìm kiếm tiêu chuẩn. Ví dụ, khi tìm kiếm ''<span lang="und" dir="ltr">cxfcnmt</span>'' trên Wikipedia tiếng Nga giờ đây sẽ bổ sung thêm gợi ý cho ''<span lang="ru" dir="ltr">счастье</span>'' ("sự hạnh phúc") mà người dùng có thể có ý định tìm tới. Họ dự kiến sẽ kích hoạt tính năng này trên các wiki khác bằng tiếng Nga và tiếng Do Thái trong tuần này. [https://phabricator.wikimedia.org/T408734] * Cuối tuần này, người dùng [[Special:Preferences#mw-prefsection-betafeatures|tính năng beta]] "{{int:codemirror-beta-feature-title}}" sẽ có thể sử dụng tính năng tô màu cú pháp trong [[mw:Special:MyLanguage/Help:DiscussionTools|Công cụ Thảo luận]]. Điều này yêu cầu phải thiết lập tùy chọn "{{int:discussiontools-preference-sourcemodetoolbar}}". [https://phabricator.wikimedia.org/T407918] * [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|Phần mở rộng chiến dịch sự kiện]] – một bộ công cụ để phối hợp tổ chức sự kiện và các hoạt động cộng tác khác trên wiki nay đã được triển khai tới tất cả các wiki của Wikimedia. Một tính năng mới được gọi là [[m:Special:MyLanguage/CampaignEvents/Collaborative contributions|Đóng góp cộng tác]] cũng đã được thêm vào để giúp những người tổ chức và người tham gia thấy được tác động của những hoạt động đó. Hãy tham gia [[m:Special:MyLanguage/Event:Connection learning session 3|buổi học sắp tới]] để xem tính năng mới đó hoạt động thực tế như thế nào và chia sẻ phản hồi của bạn. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:24}} {{PLURAL:24|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một lỗi khiến cho CodeReviewBot ngừng hoạt động hiện đã được giải quyết. [https://phabricator.wikimedia.org/T410417] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Người dùng API của Wikimedia có thể tham gia nghiên cứu khả năng sử dụng để giúp xác thực thiết kế mới dành cho chỗ thử REST API của Wikimedia. Những người có hứng thú tham gia cần điền vào [https://wikimediafoundation.limesurvey.net/487662 biểu mẫu khảo sát tham gia] này. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/IREJRRWTZTGCYWQHDMSNJFTQAEPOOAE3/] * Nhóm Giao diện MediaWiki đang trong quá trình ngừng hỗ trợ các bảng định dạng (stylesheet) kiểu XSLT trong Action API. Hỗ trợ cho <code dir=ltr>format=xml'''&xlst={stylesheet}'''</code> sẽ bị loại bỏ khỏi các dự án Wikimedia vào cuối tháng 11 năm 2025. Ngoài ra, nó sẽ sớm mặc định bị vô hiệu hóa trong các phiên bản phát hành của MediaWiki: v1.43 (LTS), v1.44, và v1.45. Hỗ trợ cho các bảng định dạng kiểu XSLT sẽ bị loại bỏ hoàn toàn khỏi MediaWiki v1.46 (dự kiến phát hành vào khoảng thời gian từ tháng 4 đến tháng 5 năm 2026). [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/5AX7UWAVVUNUSBOIRHMNOKWOZ5EZI3JX/] * Điểm cuối kế thừa của WDQS ([https://query-legacy-full.wikidata.org/ query-legacy-full.wikidata.org]) sẽ ngừng hoạt động vào cuối tháng 12 năm 2025, và sẽ chính thức bị vô hiệu hóa vào ngày 7 tháng 1 năm 2026. Sau ngày này, người dùng sẽ nhận thấy những yêu cầu đến query.wikidata.org mà yêu cầu toàn bộ biểu đồ bị lỗi hoặc trả về kết quả không hợp lệ nếu chúng không được viết lại để sử dụng liên kết SPARQL. Nhóm khuyên người dùng cần đảm bảo các công cụ và quy trình làm việc sử dụng các điểm cuối WDQS được hỗ trợ (<span dir=ltr><nowiki>https://query.wikidata.org/</nowiki></span> - Biểu đồ chính hoặc <span dir=ltr><nowiki>https://query-scholarly.wikidata.org/</nowiki></span> - Biểu đồ học thuật). Để được hỗ trợ chuyển đổi các trường hợp sử dụng (use case), vui lòng xem lại các trang [[d:Special:MyLanguage/Wikidata:Data_access|Truy cập Dữ liệu]] và [[d:Wikidata:Request_a_query|Yêu cầu Truy vấn]] để biết thêm thông tin và được hỗ trợ về các phương thức truy cập thay thế. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.4|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/48|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W48"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:56, ngày 24 tháng 11 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29702226 --> == Bản tin Kỹ thuật: Tuần 49-2025 == <section begin="technews-2025-W49"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/49|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Bảng Nhìn lại Một Năm Wikipedia 2025 sẽ có mặt vào ngày 2 tháng 12 dành cho người dùng ứng dụng Wikipedia trên iOS và Android, gồm thông tin chuyên sâu được cá nhân hóa, những điểm nổi bật để đọc được cập nhật, cùng thiết kế đã được làm mới. Tìm hiểu thêm trên [[mw:Special:MyLanguage/Wikimedia Apps/Team/Wikipedia Year in Review/Updates|trang dự án]] của tính năng nhìn lại này. * Nhóm Tăng trưởng đang nỗ lực cải thiện nội dung và cách trình bày của Email Xác minh được gửi tới người dùng mới để chúng trở nên thân thiện, hữu ích và có thêm nhiều thông tin hơn. Một số văn bản mới đã được soạn thảo cho thử nghiệm A/B và bạn có thể giúp đỡ bằng cách dịch chúng. Xem [[phab:T396155|Phabricator]]. * Tính năng [[mw:Special:MyLanguage/Help:Growth/Tools/Add a link|Thêm liên kết]] nay sẽ được triển khai tới Wikipedia tiếng Nhật, tiếng Urdu và tiếng Trung vào ngày 2 tháng 12. Thêm liên kết được dựa trên mô hình dự đoán nhằm gợi ý liên kết cần được thêm vào bài viết. Trong khi tính năng này đã có mặt trên hầu hết các trang Wikipedia, mô hình dự đoán đó không thể hỗ trợ một số ngôn ngữ nhất định. Một mô hình mới đã được phát triển để xử lý những ngôn ngữ này, và mô hình đó sẽ dần được triển khai sang các trang Wikipedia khác theo thời gian. Nếu bạn muốn được biết thêm thông tin, vui lòng liên hệ [[mw:user:Trizek (WMF)|Trizek (WMF)]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:34}} {{PLURAL:34|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề mà hộp tìm kiếm trên một số trang Commons không hiển thị kết quả nào do việc chuyển đổi từ SpecialSearch sang MediaSearch, hiện đã được giải quyết. [https://phabricator.wikimedia.org/T399476] * Hai wiki mới đã được tạo ra: ** {{int:project-localized-name-group-wikipedia}} tiếng [[d:Q36846|Toki Pona]] ([[w:tok:|<code>w:tok:</code>]]) [https://phabricator.wikimedia.org/T404457] ** {{int:project-localized-name-group-wikiquote}} tiếng [[d:Q33655|Pidgin Nigeria]] ([[q:pcm:|<code>q:pcm:</code>]]) [https://phabricator.wikimedia.org/T408318] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.5|MediaWiki]] '''Chuyên sâu''' * Quỹ Wikimedia đang trong giai đoạn đầu của việc khám phá các phương pháp tiếp cận cho '''Chỉ dẫn bài viết'''. Sáng kiến này nhằm mục đích xác định các phương pháp can thiệp có thể giúp các biên tập viên mới dễ dàng hiểu và áp dụng các quy tắc và chính sách hiện hành của Wikipedia khi tạo bài viết. Dự án đang trong giai đoạn khám phá và thiết kế thử nghiệm giai đoạn đầu. Tất cả các thành viên cộng đồng được khuyến khích [[mw:Special:MyLanguage/Article guidance|tìm hiểu thêm]] về dự án, và chia sẻ suy nghĩ của họ trên [[mw:Special:MyLanguage/Talk:Article guidance|trang thảo luận này]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/49|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W49"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:58, ngày 1 tháng 12 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29732328 --> == Bản tin Kỹ thuật: Tuần 50-2025 == <section begin="technews-2025-W50"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/50|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Bất kỳ ai muốn bảo mật tài khoản người dùng của mình nay có thể sử dụng tính năng [[m:Special:MyLanguage/Help:Two-factor authentication|xác thực hai yếu tố]] (2FA). Tính năng này có sẵn cho tất cả người dùng của toàn bộ các dự án Wikimedia. Đây là một phần của sáng kiến [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Bảo mật Tài khoản]]. Sau này, 2FA sẽ được yêu cầu đối với tất cả người dùng có thể thực hiện các hành động mang tính nhạy cảm về bảo mật hoặc quyền riêng tư. '''Cập nhật cho biên tập viên''' * Tiếp nối đợt triển khai lần trước, tính năng [[mw:Special:MyLanguage/Help:Growth/Tools/Add a link|Thêm liên kết]], một tính năng cho phép biên tập viên thêm liên kết được đề xuất trong quá trình sửa đổi, sẽ có mặt trên [[Phab:T410469|33 trang Wikipedia]] kể từ ngày 9 tháng 12. Việc mở rộng này có được nhờ mô hình dự đoán mới nay hỗ trợ tất cả các ngôn ngữ, kể cả những ngôn ngữ mà chưa được đề cập trước đây. Dù tính năng này đã có mặt trên hầu hết các trang Wikipedia được một thời gian, nhưng lần triển khai này sẽ giúp chúng tôi tiến gần hơn đến việc sử dụng mô hình được cải tiến này ở mọi nơi. Nếu bạn có bất kỳ câu hỏi nào hoặc muốn được biết thêm thông tin chi tiết vui lòng liên hệ với [[mw:user:Trizek (WMF)|Trizek (WMF)]]. * Tuần trước, [[mw:Special:MyLanguage/Wikimedia Search Platform|nhóm Nền tảng Tìm kiếm]] đã thêm gợi ý tìm kiếm [[w:vi:Chuyển tự|được chuyển tự]] khi bạn nhập tới các wiki bằng tiếng Georgia. Nếu chỉ có một vài gợi ý tìm kiếm thông thường, thì các truy vấn bằng chữ Latinh hoặc Kirin [[phab:T127003|nay sẽ được viết lại thành chữ Georgia]] để có thể tìm kiếm được nhiều kết quả trùng khớp hơn. Ví dụ, tìm kiếm <bdi lang="ka-Latn" dir="ltr">''bedniereba''</bdi> hoặc <bdi lang="ka-Cyrl" dir="ltr">''бедниереба''</bdi> nay sẽ gợi ý bài viết hiện có về <bdi lang="ka" dir="ltr">ბედნიერება</bdi> ("sự hạnh phúc"). Bạn có thể đề xuất những ngôn ngữ khác mà việc gợi ý được chuyển tự có thể hữu ích [[phab:T375215|trên Phabricator]] để dùng cho quá trình phát triển sau này. * Cuối tuần này, một thử nghiệm có kiểm soát sẽ bắt đầu dành cho các biên tập viên trên 100 trang Wikipedia lớn nhất khi đang thực hiện sửa đổi một đề mục bằng trình soạn thảo trực quan trên trang web di động. 50% số biên tập viên đó sẽ nhận thấy nút "Sửa đổi toàn bộ trang" mới cho phép họ mở rộng phiên sửa đổi của mình lên toàn bộ trang đó. Tính năng này nhằm mục đích giúp người dùng trên trang web di động sửa đổi bất kỳ đề mục nào trong bài viết một cách dễ dàng hơn, bất kể việc họ chạm vào biểu tượng sửa đề mục nào để bắt đầu sửa đổi. Thử nghiệm này sẽ kéo dài khoảng 4 tuần. Bạn có thể tìm hiểu [[phab:T409112|thêm thông tin]] về dự án này. * Cuối tuần này, [[mw:Special:MyLanguage/Readers/Reader Growth|nhóm Tăng trưởng Độc giả]] sẽ khởi động [[mw:Special:MyLanguage/Readers/Reader Growth/WE3.1.14 Expanded Mobile Sections|thử nghiệm trên trang web di động]] để mở rộng tất cả đề mục bài viết theo mặc định (hiện giờ chúng được mặc định thu gọn lại) và ghim tiêu đề của đề mục mà người dùng hiện đang đọc lên đầu trang. Thử nghiệm này sẽ ảnh hưởng tới 10% người dùng trên Wikipedia tiếng Ả Rập, tiếng Trung, tiếng Pháp, tiếng Indonesia và tiếng Việt. [https://phabricator.wikimedia.org/T409485] * [[mw:Special:MyLanguage/Wikimedia Apps/Team/Wikipedia Year in Review/2025 Year in Review|Tổng kết Một Năm Wikipedia 2025]], một tính năng trong ứng dụng Wikipedia dành cho thiết bị di động (iOS và Android) nhằm cung cấp cho người dùng bản tóm tắt được cá nhân hóa về mức độ tương tác của họ với Wikipedia xuyên suốt trong một năm, nay đã có mặt trên ứng dụng iOS và Android. Phiên bản này bao gồm những thông tin chuyên sâu được mở rộng và cá nhân hóa, cải thiện những điểm nổi bật trong quá trình đọc, thông điệp mới cho nhà quyên góp, cùng thiết kế được cập nhật. Hãy mở ứng dụng để xem chuyên mục Tổng kết Năm và khám phá hành trình đọc của bạn trong năm 2025 nhé. * Một lỗi phần mềm xảy ra gần đây khiến cho các sửa đổi được thực hiện bằng Trình Soạn thảo Trực quan thực hiện những thay đổi không mong muốn với mã nguồn wiki, trong đó có việc loại bỏ khoảng trắng và thay thế các dấu cách bằng dấu gạch dưới trong các liên kết wiki bên trong chú thích. Vấn đề này đã được giải quyết một phần vào tuần trước, và việc giải quyết vấn đề vẫn đang tiếp tục được thực hiện. Các biên tập viên sử dụng Trình Soạn thảo Trực quan trong các ngày từ 28 tháng 11 đến 2 tháng 12 nên kiểm tra lại sửa đổi của mình để tìm ra những thay đổi ngoài ý muốn. [https://phabricator.wikimedia.org/T411238] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, vấn đề về việc xử lý không đúng các đường dẫn URL được sao chép từ thanh địa chỉ của người dùng Microsoft Edge đã được giải quyết. [https://phabricator.wikimedia.org/T341281] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Bắt đầu từ tuần này, người dùng [[Special:Preferences#mw-prefsection-betafeatures|tính năng beta]] "{{int:codemirror-beta-feature-title}}" sẽ sử dụng [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] làm trình sửa đổi dành cho các kiểu nội dung Lua, JavaScript, CSS, JSON và Vue, thay vì [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]]. Với thay đổi này, [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|các linter]] sẽ được nâng cấp. Đây là một phần trong nỗ lực lớn hơn nhằm thay thế CodeEditor và mang tới trải nghiệm sửa đổi mã nguồn một cách nhất quán. [https://phabricator.wikimedia.org/T373711] * Các nhà phát triển được khuyến khích tham gia [https://wikimediafoundation.limesurvey.net/552643 Khảo sát Mức độ Hài lòng của Nhà phát triển năm 2025], hiện vẫn đang được mở đến hết ngày 5 tháng 1 năm 2026. Nếu bạn tham gia vào việc xây dựng phần mềm cho hệ sinh thái Wikimedia và muốn chia sẻ kinh nghiệm hoặc phản hồi của mình, thì chúng tôi sẽ rất trân trọng sự tham gia của bạn. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/W4WBKO6Q55UWWCCSFWQATKEXBEHP3QNR/] * Tuần này không có phiên bản MediaWiki mới nào. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/50|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W50"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:45, ngày 8 tháng 12 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29738112 --> == Bản tin Kỹ thuật: Tuần 51-2025 == <section begin="technews-2025-W51"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/51|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:18}} {{PLURAL:18|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một trong số đó là việc giải quyết vấn đề khi tài khoản tạm thời chèn liên kết URL ngoài, việc này kích hoạt yêu cầu hCaptcha trong nhiều trường hợp hơn so với dự định, và không hiển thị popup cần thiết trong lần thử xuất bản sửa đổi đầu tiên. [https://phabricator.wikimedia.org/T411927] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * <span class="mw-translate-fuzzy">Để cải thiện hiệu suất cho cơ sở dữ liệu và trang web, các liên kết ngoài tới các dự án Wikimedia sẽ không còn được lưu trữ trong cơ sở dữ liệu. Điều này có nghĩa là chúng sẽ không thể được tìm thấy trong [[{{#special:LinkSearch}}]], sẽ không được kiểm tra bởi Danh sách đen về spam hoặc Bộ lọc Sai phạm dưới dạng liên kết mới, và sẽ không có trong bảng <code dir=ltr>externallinks</code> trên các bản sao cơ sở dữ liệu. Trong tương lai nó có thể được mở rộng sang những trang web khác đáng tin cậy được liên kết nhiều trên cơ sở từng wiki, chẳng hạn như liên kết Creative Commons trên Wikimedia Commons.</span> [https://phabricator.wikimedia.org/T405005] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.7|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/51|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W51"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:03, ngày 15 tháng 12 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29796010 --> == Bản tin Kỹ thuật: Tuần 52-2025 == <section begin="technews-2025-W52"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2025/52|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Kể từ tháng 1, các bộ lọc sai phạm [[mw:Special:MyLanguage/Extension:AbuseFilter/Access flags|có thể được thiết lập]] để tự động loại bỏ chi tiết bộ lọc chẳng hạn như quy tắc và danh sách các sửa đổi và tác vụ thực hiện được ghi lại. Điều này sẽ giúp người giám sát sử dụng các bộ lọc sai phạm để ngăn chặn doxxing hoặc nội dung khác có thể bị loại bỏ. [https://phabricator.wikimedia.org/T290324] * Số tiếp theo của Bản tin Kỹ thuật sẽ được phát hành vào ngày 12 tháng 1 năm 2026 do trùng vào kỳ nghỉ cuối năm. Xin cảm ơn tất cả các biên dịch viên cùng những người đã gửi nội dung hoặc phản hồi trong năm nay. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:16}} {{PLURAL:16|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, sự cố xảy ra khiến cho ứng dụng bị sập khi chạm vào mục "Bước Đầu tiên" trong mục Nhìn lại Một năm trên ứng dụng Wikipedia dành cho Android nay đã được giải quyết, và tính năng này được mở như mong đợi. [https://phabricator.wikimedia.org/T411546] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Những thành phần giao diện như khác biệt giữa các phiên bản và thể loại được tạo bởi MediaWiki từng có thuộc tính <code dir=ltr>data-mw="interface"</code> để phân biệt với nội dung wiki. Thuộc tính này đã được thay thế bằng <code dir=ltr>data-mw-interface=""</code>, nhằm tránh khả năng gây xung đột với những thuộc tính <code dir=ltr>data-mw</code> khác được tạo bởi Parsoid. [https://phabricator.wikimedia.org/T409187] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Không có phiên bản MediaWiki mới nào trong tuần này hoặc tuần tới. '''Các cuộc họp và sự kiện''' * [[mw:Wikimedia Hackathon Northwestern Europe 2026|Wikimedia Hackathon Tây Bắc Âu năm 2026]] sẽ diễn ra vào các ngày 13-14 tháng 3 năm 2026 tại Arnhem, Hà Lan. Đơn đăng ký vừa được mở vào giữa tháng 12 và sẽ đóng vào giữa tháng 1 hoặc có thể đóng sớm hơn nếu hết chỗ. Do sự kiện giới hạn khoảng 100 người tham gia, chúng tôi khuyến khích bạn đăng ký thật sớm. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2025/52|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2025-W52"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:45, ngày 22 tháng 12 năm 2025 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29831856 --> == Bản tin Kỹ thuật: Tuần 03-2026 == <section begin="technews-2026-W03"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/03|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Quỹ Wikimedia đã chia sẻ một số câu hỏi định hướng cho Kế hoạch Thường niên giai đoạn tháng 7 năm 2026–tháng 6 năm 2027 trên [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] và ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. Những câu hỏi này tập trung vào những xu hướng toàn cầu, những thử nghiệm nhanh và hiệu quả hơn, hỗ trợ tốt hơn cho người mới, tăng cường năng lực cho biên tập viên và người dùng có quyền nâng cao, cải thiện sự cộng tác giữa các dự án, cũng như phát triển và duy trì lượng người đọc. Mọi phản hồi và ý kiến đóng góp đều được hoan nghênh trên [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|trang thảo luận]]. '''Cập nhật cho biên tập viên''' * Là một phần của công việc hiện do nhóm Công nghệ Cộng đồng thực hênj xoay quanh dự án [[m:Special:MyLanguage/Community Wishlist/W372|Nhiều danh sách theo dõi]] (Multiple watchlists), việc hiển thị của tính năng [[Special:EditWatchlist|Sửa đổi Danh sách theo dõi]] (EditWatchlist) sẽ được cập nhật làm bước đầu tiên hướng tới việc có được nhiều danh sách theo dõi. Ngoài ra, việc phân trang của trang [[Special:Search|Tìm kiếm]] cũng sẽ được cập nhật như là một phần của công việc liên quan đến mong muốn [[m:Special:MyLanguage/Community Wishlist/W186|Cải tiến phân trang / điều hướng trang]]. [https://phabricator.wikimedia.org/T411596] * [[m:Special:GlobalWatchlist|Danh sách theo dõi toàn cục]] là [[mw:Special:MyLanguage/Extension:GlobalWatchlist|phần mở rộng]] của MediaWiki cho phép bạn xem danh sách theo dõi của bạn từ các wiki khác nhau trên cùng một trang. Danh sách này gần đây đã được cập nhật để trông giống như [[Special:Watchlist|Danh sách theo dõi]] thông thường hơn, chẳng hạn như tiền xử lý các tài khoản tạm thời để che giấu địa chỉ IP (trong đó có việc chuyển hướng liên kết người dùng đến các trang đóng góp), in đậm tiêu đề trang, và mở các liên kết trong phần tóm lược sửa đổi và thẻ trong tab trình duyệt mới. [https://phabricator.wikimedia.org/T398361][https://phabricator.wikimedia.org/T298919][https://phabricator.wikimedia.org/T273526][https://phabricator.wikimedia.org/T286309] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:28}} {{PLURAL:28|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, vấn đề mà việc cấm tài khoản toàn cục không có tùy chọn cấm gửi thư điện tử, nay đã được giải quyết, và sẽ có thể sử dụng kể từ tuần ngày 13 tháng 1. [https://phabricator.wikimedia.org/T401293] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[mw:Special:MyLanguage/VisualEditor/Citation tool|Công cụ chú thích của Soạn thảo Trực quan]] và [[mw:Special:MyLanguage/Help:Reference Previews|Xem trước Chú thích]] nay hỗ trợ kiểu chú thích dạng "bản đồ". [https://phabricator.wikimedia.org/T411083] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.10|MediaWiki]]/[[mw:MediaWiki 1.46/wmf.11|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/03|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W03"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:33, ngày 12 tháng 1 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29907192 --> == Thank You for Last Year – Join Wiki Loves Ramadan 2026 == Dear Wikimedia communities, We hope you are doing well, and we wish you a happy New Year. ''Last year, we captured light. This year, we’ll capture legacy.'' In 2025, communities around the world shared the glow of Ramadan nights and the warmth of collective iftars. In 2026, ''Wiki Loves Ramadan'' is expanding, bringing more stories, more cultures, and deeper global connections across Wikimedia projects. We invite you to explore the ''Wiki Loves Ramadan 2026'' [[m:Special:MyLanguage/Wiki Loves Ramadan 2026|Meta page]] to learn how you can participate and [[m:Special:MyLanguage/Wiki Loves Ramadan 2026/Participating communities|sign up]] your community. 📷 ''Photo campaign on '' [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan 2026|Wikimedia Commons]] If you have questions about the project, please refer to the FAQs: * [[m:Special:MyLanguage/Wiki Loves Ramadan/FAQ/|Meta-Wiki]] * [[c:Special:MyLanguage/Commons:Wiki Loves Ramadan/FAQ|Wikimedia Commons]] ''Early registration for updates is now open via the '''[[m:Special:RegisterForEvent/2710|Event page]]''''' ''Stay connected and receive updates:'' * [https://t.me/WikiLovesRamadan Telegram channel] * [https://lists.wikimedia.org/postorius/lists/wikilovesramadan.lists.wikimedia.org/ Mailing list] We look forward to collaborating with you and your community. '''The Wiki Loves Ramadan 2026 Organizing Team''' 19:45, ngày 16 tháng 1 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:ZI Jony@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29879549 --> == Bản tin Kỹ thuật: Tuần 04-2026 == <section begin="technews-2026-W04"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/04|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Khay được hiển thị trên [[Special:Diff|Đặc biệt:Khác]] trong chế độ xem di động đã được thiết kế lại. Giờ đây nó mặc định được thu gọn, đồng thời tích hợp một liên kết để lùi lại sửa đổi đang được hiển thị trên màn hình, giúp các biên tập viên và người duyệt bài trên điện thoại di động dễ dàng thực hiện tác vụ mà vẫn giữ giao diện thật gọn gàng. [https://phabricator.wikimedia.org/T402297] * [[m:Special:GlobalWatchlist|Danh sách Theo dõi Toàn cục]] cho phép bạn xem các danh sách theo dõi từ nhiều wiki khác nhau trên cùng một trang. [[mw:Special:MyLanguage/Extension:GlobalWatchlist|Phần mở rộng]] này tiếp tục được cải thiện — nay nó có thể tự động xác định hướng văn bản (nhằm đảm bảo việc hiển thị chính xác các trang web mà có tên miền bất thường) và hiển thị chi tiết phần miêu tả cho các tác vụ được lưu trong nhật trình. Cuối tuần này, một liên kết thường trực mới cho các tác vụ tạo trang cùng các lớp CSS cho từng mục nhập sẽ được thêm vào. [https://phabricator.wikimedia.org/T412505][https://phabricator.wikimedia.org/T287929][https://phabricator.wikimedia.org/T262768][https://phabricator.wikimedia.org/T414135] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:32}} {{PLURAL:32|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề mà được ghi nhận trước đây trong giao diện Vector 2022 mà các liên kết anchor đích bị che khuất bởi tiêu đề cố định nay đã được giải quyết. [https://phabricator.wikimedia.org/T406114] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Như đã đề cập trong [[m:Special:MyLanguage/Tech/News/2025/44|thông báo ngừng hỗ trợ vào tháng 10 năm 2025]], nhóm Giao diện MediaWiki sẽ bắt đầu loại bỏ toàn bộ điểm cuối chuyển đổi có dấu gạch chéo ở cuối khỏi API REST của MediaWiki vào tuần từ ngày 26 tháng 1. Những thay đổi này dự kiến sẽ được triển khai tới tất cả các wiki chậm nhất vào ngày 30 tháng 1. Tất cả người dùng API đang gọi những điểm cuối này được khuyên chuyển đổi sang những phiên bản không có dấu gạch chéo ở cuối. Cả hai loại biến thể điểm cuối này đều có thể được tìm thấy, so sánh và kiểm tra sử dụng [https://test.wikipedia.org/wiki/Special:RestSandbox Chỗ thử REST]. Nếu bạn có thắc mắc hay gặp bất kỳ sự cố nào, hãy gửi yêu cầu bằng cách tạo một tác vụ trong Phabricator gửi tới [https://phabricator.wikimedia.org/project/view/6931/ bảng tin #MW-Interfaces-Team]. * Tài liệu tham khảo trực quan cho [[mw:Special:MyLanguage/Wikimedia REST API|API REST của Wikimedia]] đã được chuyển. Những yêu cầu đến các tài liệu API trước đây được lưu trữ thông qua [[mw:Special:MyLanguage/RESTBase|RESTBase]] (v.d.: <code dir=ltr>https://en.wikipedia.org/api/rest_v1/</code>) nay được chuyển hướng tới [[w:en:Special:RestSandbox|Chỗ thử REST]]. * [[mw:Special:MyLanguage/Wikidata Platform|Nhóm Nền tảng Wikidata của WMF]] (WDP) đã phát hành [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|bản tin tháng 1 năm 2026]]. Bản tin bao gồm những cập nhật về việc ngừng hoạt động điểm cuối biểu đồ đầy đủ (full-graph) cũ, thay đổi về chính sách User-Agent, thời gian làm việc hàng tháng của kế hoạch chuyển đổi sang Blazegraph, cùng những nỗ lực nhằm giảm thiểu những lỗi hồi quy gây ra bởi việc ngừng điểm cuối cũ. Xin nhắc lại rằng bạn có thể [[m:Special:MyLanguage/Global message delivery/Targets/WDP team updates|đăng ký nhận bản tin WDP đó]]! * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.12|MediaWiki]] '''Các cuộc họp và sự kiện''' * [[mw:Wikimedia Hackathon Northwestern Europe 2026|Cuộc thi Hackathon Wikimedia khu vực Tây Bắc Châu Âu năm 2026]] sẽ diễn ra vào ngày 13-14 tháng 3 năm 2026 tại Arnhem, Hà Lan. Cổng đăng ký đã được mở vào giữa tháng 12 và sẽ sớm đóng lại hoặc đóng ngay khi đã đủ số lượng người tham gia. Đây là cuộc thi hackathon kéo dài hai ngày, tập trung vào mảng kỹ thuật và quy tụ các thành viên Wikimedia từ khắp khu vực. Hy vọng sẽ gặp lại bạn tại đó! '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/04|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W04"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:29, ngày 19 tháng 1 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29943403 --> == Rà soát thường niên Bộ Quy tắc Ứng xử Chung và Hướng dẫn Thực thi == <section begin="announcement-content" /> Tôi viết thư này để thông báo với bạn rằng thời gian xem xét hàng năm đối với Bộ Quy tắc Ứng xử và Hướng dẫn Thực thi hiện đã bắt đầu. Bạn có thể đưa ra các đề xuất thay đổi đến hết ngày 9 tháng 2 năm 2026. Đây là bước đầu tiên trong nhiều bước cần thực hiện cho quá trình xem xét hàng năm. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Đọc thêm thông tin và tìm cuộc thảo luận để tham gia trên trang UCoC trên Meta]]. [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Ủy ban Điều phối Bộ Quy tắc Ứng xử Toàn cầu]] (U4C) là một nhóm toàn cầu chuyên trách việc thực hiện Bộ Quy tắc Ứng xử Toàn cầu một cách công bằng và nhất quán. Đánh giá thường niên này được lên kế hoạch và thực hiện bởi U4C. Để biết thêm thông tin và trách nhiệm của U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|bạn có thể xem Hiến chương U4C]]. Vui lòng chia sẻ thông tin này với các thành viên khác trong cộng đồng của bạn ở bất cứ nơi nào phù hợp. -- Hợp tác với U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]])<section end="announcement-content" /> 21:02, ngày 19 tháng 1 năm 2026 (UTC) <!-- 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=Distribution_list/Global_message_delivery&oldid=29905753 --> == Bản tin Kỹ thuật: Tuần 05-2026 == <section begin="technews-2026-W05"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/05|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Quỹ Wikimedia mời mọi người đóng góp ý kiến cho [[m:Special:MyLanguage/Product and Technology Advisory Council/Year1 Reflections and Proposed Way Forward 2026 Update|đề xuất kế hoạch tương lai]] của [[:m:Special:MyLanguage/Product and Technology Advisory Council|Hội đồng Cố vấn Sản phẩm và Công nghệ]] chậm nhất ngày 28 tháng 2. * Tất cả người dùng đã đăng ký tài khoản nay có thể sử dụng passkey (mã xác thực) cho việc [[m:Special:MyLanguage/Help:Two-factor authentication|xác thực hai yếu tố]] (2FA). Passkey là một cách đơn giản để đăng nhập mà không cần phải sử dụng thiết bị thứ hai. Chúng sẽ xác thực danh tính của người dùng sử dụng vân tay, nhận diện khuôn mặt, hoặc dùng mã PIN. Để thiết lập một passkey, đầu tiên hãy thiết lập phương thức xác thực 2FA thông thường. Hiện tại, để đăng nhập bằng passkey, người dùng cũng phải sử dụng cả mật khẩu. Vào cuối quý này, tính năng đăng nhập không cần mật khẩu sẽ cho phép người dùng đăng nhập chỉ bằng một cú nhấn chuột và passkey. Người dùng có quyền nâng cao cũng sẽ bắt buộc phải kích hoạt xác thực 2FA. Đây là một phần của dự án [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Bảo mật Tài khoản]]. * Những người đóng góp chưa đăng ký tài khoản trên các IP hoặc dải IP bị cấm nay có thể tương tác trên wiki để chống lại quyết định cấm trên trang thảo luận thành viên, trừ khi tùy chọn "ngăn người dùng này sửa đổi trang thảo luận của họ" được bật. Điều này giúp giải quyết vấn đề rằng người dùng chưa đăng nhập không thể sử dụng quy trình bỏ cấm mặc định thông qua trang thảo luận thành viên. [https://phabricator.wikimedia.org/T398673] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:20}} {{PLURAL:20|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, phần miêu tả phương thức Xác thực hai yếu tố (2FA) trên trang quản lý đã được cập nhật. Giờ đây nó trở nên rõ ràng và dễ hiểu hơn, giúp người dùng dễ dàng sử dụng hơn. [https://phabricator.wikimedia.org/T332385] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Một biến Bộ lọc Sai phạm mới, <code>account_type</code>, đã được thêm vào để cung cấp một cách đáng tin cậy trong việc xác định loại tài khoản được tạo trong các tác vụ <code>createaccount</code> và <code>autocreateaccount</code>. Là một phần của thay đổi này, biến <code>accountname</code> đã được đổi tên thành <code>account_name</code>, và <code>accountname</code> nay đã lỗi thời. Những người quản lý bộ lọc sai phạm nên cập nhật bất kỳ bộ lọc nào đang sử dụng biến kiểm tra loại tài khoản mã hóa cứng hoặc đã lỗi thời nào nếu có. [https://phabricator.wikimedia.org/T414049] * Các hình thu nhỏ được yêu cầu với kích thước không chuẩn và sử dụng các phương thức không chuẩn như yêu cầu trực tiếp đến <code dir=ltr><nowiki>upload.wikimedia.org/…</nowiki></code> sẽ ngừng hoạt động trong thời gian tới. Thay đổi này nhằm ngăn chặn việc các trình thu thập dữ liệu web và bot từ bên ngoài lạm dụng. Một số người dùng có đoạn mã CSS/JS tùy chỉnh, các bảo quản viên giao diện có thể sửa tiện ích và giao diện cục bộ, cùng người viết công cụ sẽ cần cập nhật đoạn mã của mình để sử dụng kích thước hình thu nhỏ tiêu chuẩn. [[phab:T414805|Thông tin chi tiết, các liên kết tìm kiếm, cùng ví dụ về cách giải quyết chúng có sẵn trong tác vụ này]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.13|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/05|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W05"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:17, ngày 26 tháng 1 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=29969530 --> == Bản tin Kỹ thuật: Tuần 06-2026 == <section begin="technews-2026-W06"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/06|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Tính năng "{{int:pageinfo-toolboxlink}}", một tính năng cung cấp thông tin xác thực về một trang ([{{fullurl:{{FULLPAGENAME}}|action=info}} ví dụ]), nay có thêm cả phần mục lục được tạo tự động. Nếu có trang [[MediaWiki:Pageinfo-header]] được người dùng tạo cục bộ, giờ nó có thể được xóa đi. [https://phabricator.wikimedia.org/T363726] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:21}} {{PLURAL:21|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, Trình Soạn thảo Trực quan trước đây đã thêm chức năng in đậm hoặc nghiêng vào phần miêu tả liên kết, làm cho mã wiki trở nên phức tạp. Vấn đề này hiện đã được giải quyết. [https://phabricator.wikimedia.org/T409669] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Không có bản dump XML nào được tạo ra vào ngày 20 tháng 1. Ngoài ra, kể từ giờ, các bản dump sẽ chỉ được tạo một lần mỗi tháng. [https://phabricator.wikimedia.org/T414389] * Nhóm Giao diện MediaWiki đã ngừng hỗ trợ tất cả điểm cuối chuyển đổi có dấu gạch chéo ở cuối khỏi [https://www.mediawiki.org/wiki/Special:MyLanguage/API:REST%20API API REST của MediaWiki]. Tất cả người dùng API hiện đang gọi những điểm cuối đó được khuyến khích chuyển sang các bản không có dấu gạch chéo ở cuối. Nếu bạn có thắc mắc hoặc gặp bất kỳ sự cố nào, vui lòng gửi tác vụ phabricator tới [https://phabricator.wikimedia.org/project/view/6931/ bảng tin của #MW-Interfaces-Team]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.14|MediaWiki]] '''Nổi bật trong tuần''' * Xin nhắc tới người dùng rằng Quỹ Wikimedia đã chia sẻ một số câu hỏi định hướng cho Kế hoạch Hàng năm giai đoạn tháng 7 năm 2026–tháng 6 năm 2027 trên [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2026-2027/Product & Technology OKRs|Meta]] và ''[[diffblog:2025/12/10/shaping-wikimedia-foundations-2026-2027-annual-goals-key-questions-for-the-wikimedia-movement/|Diff]]''. Những câu hỏi này tập trung vào những xu hướng toàn cầu, thử nghiệm nhanh hơn và hiệu quả hơn, hỗ trợ tốt hơn cho người mới, nâng cao năng lực cho biên tập viên và người dùng có quyền nâng cao, cải thiện việc cộng tác giữa các dự án, cũng như phát triển và giữ chân độc giả. Mọi phản hồi và ý kiến đóng góp đều được hoan nghênh trên [[m:Talk:Wikimedia Foundation Annual Plan/2026-2027|trang thảo luận]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/06|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W06"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:43, ngày 2 tháng 2 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30000986 --> == Bản tin Kỹ thuật: Tuần 07-2026 == <section begin="technews-2026-W07"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/07|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Mục Mong muốn cộng đồng]] <span lang="en" dir="ltr" class="mw-content-ltr">Logged-in contributors who manage large or complex watchlists can now organise and filter watched pages in ways that improve their workflows with the new [[mw:Special:MyLanguage/Help:Watchlist labels|Watchlist labels]] feature. By adding custom labels (for example: pages you created, pages being monitored for vandalism, or discussion pages) users can more quickly identify what needs attention, reduce cognitive load, and respond more efficiently. This improves watchlist usability, especially for highly active editors.</span> * <span lang="en" dir="ltr" class="mw-content-ltr">A new feature available on [[Special:Contributions|Special:Contributions]] shows [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts|temporary accounts]] that are likely operated by the same person, and so makes patrolling less time-consuming. Upon checking contributions of a temporary account, users with access to temporary account IP addresses can now see a view of contributions from the related temporary accounts. The feature looks up all the IPs associated with a given temporary account within the data retention period and shows all the contributions of all temporary accounts that have used these IPs. [[mw:Special:MyLanguage/Trust and Safety Product/Temporary Accounts#February 2026: Improvements to the patroller tooling|Learn more]].</span> [https://phabricator.wikimedia.org/T415674] * <span lang="en" dir="ltr" class="mw-content-ltr">When editors preview a wikitext edit, the reminder box that they are only seeing a preview (which is shown at the top), now has a grey/neutral background instead of a yellow/warning background. This makes it easier to distinguish preview notes from actual warnings (for example, edit conflicts or problematic redirect targets), which will now be shown in separate warning or error boxes.</span> [https://phabricator.wikimedia.org/T414742] * <span lang="en" dir="ltr" class="mw-content-ltr">The [[m:Special:GlobalWatchlist|Global Watchlist]] lets you view your watchlists from multiple wikis on one page. The [[mw:Special:MyLanguage/Extension:GlobalWatchlist|extension]] continues to improve — it now properly supports more than one Wikibase site, for example both [[d:|Wikidata]] and [[testwikidata:|testwikidata]]. In addition, issues regarding text direction have been fixed for users who prefer Wikidata or other Wikibase sites in right-to-left (RTL) languages.</span> [https://phabricator.wikimedia.org/T415440][https://phabricator.wikimedia.org/T415458] * <span lang="en" dir="ltr" class="mw-content-ltr">The automatic "magic links" for ISBN, RFC, and PMID numbers have been [[mw:Special:MyLanguage/Help:Magic links|deprecated in wikitext since 2021]] due to inflexibility and difficulties with localization. Several wikis have successfully replaced RFC and PMID magic links with equivalent external links, but a template was often required to replace the functionality of the ISBN magic link. There is now a new [[mw:Special:MyLanguage/Help:Magic words#isbn|built-in parser function]] <code dir=ltr><nowiki>{{#isbn}}</nowiki></code> available to replace the basic functionality of the ISBN magic link. This makes it easier for wikis who wish to migrate off of the deprecated magic link functionality to do so.</span> [https://phabricator.wikimedia.org/T145604] * <span lang="en" dir="ltr" class="mw-content-ltr">Two new wikis have been created:</span> ** <span lang="en" dir="ltr" class="mw-content-ltr">a {{int:project-localized-name-group-wikipedia}} in [[d:Q35401|Jju]]</span> ([[w:kaj:|<code>w:kaj:</code>]]) [https://phabricator.wikimedia.org/T413283] ** <span lang="en" dir="ltr" class="mw-content-ltr">a {{int:project-localized-name-group-wikipedia}} in [[d:Q1186896|Nawat]]</span> ([[w:ppl:|<code>w:ppl:</code>]]) [https://phabricator.wikimedia.org/T413273] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * <span lang="en" dir="ltr" class="mw-content-ltr">A new global user group has been created: [[{{int:grouppage-local-bot}}|{{int:group-local-bot}}]]. It will be used internally by the software to allow community bots to bypass rate limits that are applied to abusive [[w:en:Web scraping|web scrapers]]. Accounts that are approved as bots on at least one Wikimedia wiki will be automatically added to this group. It will not change what user permissions the bot has.</span> [https://phabricator.wikimedia.org/T415588] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.15|MediaWiki]] '''Các cuộc họp và sự kiện''' * <span lang="en" dir="ltr" class="mw-content-ltr">The [[mw:Special:MyLanguage/MediaWiki Users and Developers Conference Spring 2026|MediaWiki Users and Developers Conference, Spring 2026]] will be held March 25–27 in Salt Lake City, USA. This event is organized by and for the third-party MediaWiki community. You can propose sessions and register to attend.</span> [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/AZBWVI46SDEB65PGR5J6E4TYOQQEZXM7/] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/07|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W07"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 23:30, ngày 9 tháng 2 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Quiddity (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30026671 --> == Bản tin Kỹ thuật: Tuần 08-2026 == <section begin="technews-2026-W08"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/08|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[mw:Special:MyLanguage/Wikimedia Site Reliability Engineering|Nhóm SRE]] sẽ tiến hành dọn dẹp phiên bản [[m:Special:MyLanguage/Etherpad|Etherpad]] của Wikimedia, một trình sửa đổi trên web dành cho việc sửa đổi tài liệu cộng tác theo thời gian thực. Tất cả pad sẽ bị xóa vĩnh viễn sau ngày 30 tháng 4 năm 2026 – trường hợp nếu còn dự án vẫn đang được tiến hành di chuyển vào thời điểm đó thì nhóm có thể xem xét lại thời gian đó tùy từng trường hợp. Vui lòng tạo bản sao lưu cục bộ cho bất kỳ nội dung nào mà bạn muốn giữ lại, vì dữ liệu đã bị xóa không thể khôi phục được nữa. Việc dọn dẹp này sẽ giúp giảm bớt kích thước cơ sở dữ liệu và giảm thiểu lãng phí (dấu ấn) cơ sở hạ tầng. Etherpad sẽ tiếp tục hỗ trợ cộng tác theo thời gian thực, nhưng không kỳ vọng vào khả năng lưu trữ lâu dài. Những đợt dọn dẹp khác có thể xảy ra trong tương lai mà không cần báo trước. [https://phabricator.wikimedia.org/T415237] '''Cập nhật cho biên tập viên''' * Nhóm Tìm kiếm Thông tin sẽ triển khai [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|thử nghiệm trên ứng dụng di động dùng Android]] nhằm kiểm tra khả năng tìm kiếm kết hợp, có thể xử lý cả các truy vấn tìm theo ngữ nghĩa và theo từ khóa. Việc cải thiện tìm kiếm trên nền tảng này sẽ giúp người đọc dễ dàng tìm thấy những gì mà họ đang tìm kiếm hơn ngay trên Wikipedia. Thử nghiệm này sẽ bắt đầu được triển khai trước tiên là trên Wikipedia tiếng Hy Lạp vào cuối tháng 2, sau đó là các wiki tiếng Anh, tiếng Pháp và tiếng Bồ Đào Nha vào tháng 3. [https://diff.wikimedia.org/2026/01/08/semantic-search-making-it-easier-to-find-the-information-readers-want/ Đọc thêm] trên blog Diff. [https://www.mediawiki.org/wiki/Readers/Information_Retrieval] * Nhóm Phát triển Độc giả sẽ tiến hành [[mw:Special:MyLanguage/Readers/Reader Growth/WE3.10.2 Mobile Table of Contents|một thử nghiệm]] cho người dùng web trên thiết bị di động nhằm thêm mục lục và tự động mở rộng tất cả các đề mục trong bài viết, nhằm tìm hiểu thêm về những vấn đề về điều hướng mà họ gặp phải. Thử nghiệm này sẽ có mặt trên các Wikipedia tiếng Ả Rập, tiếng Trung, tiếng Anh, tiếng Pháp, tiếng Indonesia và tiếng Việt. * Trước đây, các thông báo đầu trang ([[{{ns:8}}:Sitenotice]] và [[{{ns:8}}:Anonnotice]]) chỉ được hiển thị trên trang web dành cho máy tính để bàn. Giờ đây, chúng sẽ được hiển thị trên mọi nền tảng. Người dùng trên trang web di động nay sẽ thấy được những thông báo này và được thông báo. Các bảo quản viên trang web nên sẵn sàng kiểm tra và sửa các thông báo đầu trang trên các thiết bị di động để tránh xung đột với bài viết. Để từ chối, bảo quản viên giao diện có thể thêm <code dir="ltr">#siteNotice { display: none; }</code> vào [[{{ns:8}}:Minerva.css]]. [https://phabricator.wikimedia.org/T138572][https://phabricator.wikimedia.org/T416644] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:19}} {{PLURAL:19|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề trên [[Special:RecentChanges|Đặc biệt:Thay đổi gần đây]] đã được giải quyết. Trước đây, nhấn vào nút ẩn trên các bộ lọc đang được áp dụng khiến cho nút "xem những thay đổi mới từ…" biến mất, dù nó đáng lẽ phải được hiển thị. Nút này giờ đây sẽ hoạt động như mong đợi. [https://phabricator.wikimedia.org/T406339] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Hiện đã có tài liệu mới giúp biên tập viên gỡ lỗi các tính năng tìm kiếm trên trang. Nó hỗ trợ việc khắc phục sự cố khi các trang xuất hiện trong kết quả tìm kiếm, khi thứ hạng có vẻ không như mong đợi và khi bạn cần kiểm tra nội dung nào đang được lập chỉ mục, giúp việc tìm hiểu và phân tích hành vi tìm kiếm trở nên dễ dàng hơn. [[mw:Help:CirrusSearch/Debug|Tìm hiểu thêm]]. [https://phabricator.wikimedia.org/T411169] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/08|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W08"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:17, ngày 16 tháng 2 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30086330 --> == Bản tin Kỹ thuật: Tuần 09-2026 == <section begin="technews-2026-W09"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/09|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Tính năng [[mw:Special:MyLanguage/Edit check/Reference Check|Kiểm tra Nguồn Tham khảo]] đã được triển khai tới Wikipedia tiếng Anh, điều này có nghĩa là việc triển khai tính năng trên tất cả các trang Wikipedia đã hoàn thành. Tính năng này nhắc những người mới thêm nguồn tham khảo trước khi đăng nội dung mới, giúp giảm thiểu việc lùi sửa liên quan đến các vấn đề nguồn tham khảo phổ biến và cải thiện khả năng kiểm chứng được. Trong quá trình thử nghiệm A/B, tính năng này mang lại hiệu quả rất đáng kể: những người mới có hiển thị Kiểm tra Nguồn Tham khảo có khả năng thêm nguồn tham khảo cao hơn khoảng 2,2 lần trên trang web dành cho máy tính và cao hơn khoảng 17,5 lần trên trang web dành cho di động. [https://analytics.wikimedia.org/published/reports/editing/reference_check_ab_test_report_final_2025.html] '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Extension:InterwikiSorting|Phần mở rộng InterwikiSorting]], một phần mở rộng cho phép [[m:Special:MyLanguage/Interwiki sorting order|sắp xếp các liên kết liên wiki]], đã bị gỡ bỏ khỏi Wikipedia. Do đó, những biên tập viên đã bật tính năng sắp xếp liên kết liên wiki ở chế độ không rút gọn (định dạng danh sách đầy đủ) sẽ thấy được rằng các liên kết được sắp xếp lại. Các liên kết từ nay trở đi sẽ được liệt kê theo thứ tự bảng chữ cái dựa trên mã ngôn ngữ. [https://phabricator.wikimedia.org/T253764] * Cuối tuần này, người dùng sửa đổi một đề mục của trang bằng cách sử dụng trình soạn thảo trực quan trên thiết bị di động, sẽ nhìn thấy một nút mới có tên "Sửa đổi toàn bộ trang". Khi chạm vào nút đó, bạn sẽ có thể sửa đổi toàn bộ bài viết. Điều này sẽ giúp ích khi thay đổi bạn muốn thực hiện nằm ngoài đề mục mà bạn mở ban đầu. [https://phabricator.wikimedia.org/T387175][https://phabricator.wikimedia.org/T409112] * [[mw:Special:MyLanguage/Readers/Reader Experience|Nhóm Trải nghiệm Người đọc]] đang mời các biên tập viên đánh giá xem chế độ tối có nên tiếp tục được coi là ở giai đoạn "thử nghiệm" (beta) trên wiki của họ hay không, dựa trên kinh nghiệm của họ về mức độ hoạt động tốt hay không của chế độ này trên máy tính và thiết bị di động. Nếu tính năng này được đánh giá là hoàn thiện rồi, thì các biên tập viên có thể cập nhật các thông báo giao diện trong <code dir=ltr>MediaWiki:skin-theme-description</code> và <code dir=ltr>MediaWiki:Vector-night-mode-beta-tag</code> để cho biết rằng chế độ tối đã sẵn sàng và không còn được coi là trong giai đoạn thử nghiệm nữa. * [[mw:Wikimedia_Apps/Team/iOS/Activity_Tab|Tab Hoạt động]] được cải tiến mà hiển thị thông tin chuyên sâu về người dùng nay có sẵn cho tất cả người dùng ứng dụng Wikipedia trên (phiên bản 7.9.0 trở lên). Sau quá trình thử nghiệm A/B trước đây cho thấy tỷ lệ tạo tài khoản trong số những người dùng có quyền truy cập vào tính năng này cao hơn, tính năng này đã được triển khai cho 100% người dùng kèm vài cập nhật. Tab Hoạt động nay hiển thị các bài viết bạn đã sửa đổi trên dòng thời gian, cung cấp thông tin chi tiết về tác động của việc sửa đổi chẳng hạn như số lượng đóng góp và xu hướng xem bài viết, cùng những tùy chọn tùy chỉnh để cải thiện trải nghiệm dành cho người dùng trong ứng dụng. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:21}} {{PLURAL:21|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một lỗi khiến cho [[mw:Special:MyLanguage/Extension:DiscussionTools|Công cụ Thảo luận (DiscussionTools)]] không thể hoạt động trên thiết bị di động, từ đó khôi phục đầy đủ tất cả chức năng. [https://phabricator.wikimedia.org/T415303] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[m:Special:GlobalWatchlist|Danh sách Theo dõi Toàn cục]] cho phép bạn xem các danh sách theo dõi từ nhiều wiki trên cùng một trang. [[mw:Special:MyLanguage/Extension:GlobalWatchlist|Phần mở rộng]] giúp thực hiện được điều này tiếp tục được cải tiến. Cải tiến mới nhất là việc bổ sung [[mw:Extension:GlobalWatchlist#hook|hook mới]], <code dir=ltr>ext.globalwatchlist.rebuild</code>, được kích hoạt sau mỗi lần xây dựng lại danh sách theo dõi. Điều này cho phép bạn chạy các tiện ích và đoạn mã người dùng cho trang Đặc biệt. [https://phabricator.wikimedia.org/T275159] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.17|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/09|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W09"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:03, ngày 23 tháng 2 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30119102 --> == Bản tin Kỹ thuật: Tuần 10-2026 == <section begin="technews-2026-W10"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/10|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments|Chế độ Sinh nhật]] Wikipedia 25 nay đã có mặt trên các trang Wikipedia tiếng Betawi, tiếng Breton, tiếng Trung, tiếng Séc, tiếng Hà Lan, tiếng Anh, tiếng Pháp, tiếng Gorontalo, tiếng Indonesia, tiếng Ý, tiếng Luxembourg, tiếng Madura, tiếng Sicilia, tiếng Tây Ban Nha, tiếng Thái và tiếng Việt! Tính năng chiến dịch hữu hạn này kỷ niệm 25 năm thành lập Wikipedia cùng linh vật cho ngày sinh nhật, Quả cầu Nhỏ (Baby Globe). Khi được bật, Quả cầu Nhỏ được hiển thị trên [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments/article configuration|~2,500 bài viết]], chờ người đọc khám phá. Cộng đồng có thể chọn bật chế độ Sinh nhật bằng cách đạt đồng thuận từ cộng đồng của mình và yêu cầu một bảo quản viên bật tính năng đó cũng như tùy chỉnh nó thông qua [[m:Special:MyLanguage/Wikipedia 25/Easter egg experiments#Community Configuration Demo|cấu hình cộng đồng]] trên wiki cục bộ. '''Cập nhật cho biên tập viên''' * [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Tham chiếu phụ (sub-referencing)]], một tính năng mới để tái sử dụng nguồn tham khảo với những chi tiết khác đã được triển khai tới Wikipedia tiếng Thụy Điển, Wikipedia tiếng Ba Lan và [[:phab:T418209|một vài trang wiki khác]]. Bạn có thể [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#test|thử tính năng này]] trên những dự án đó hoặc trên testwiki và [https://en.wikipedia.beta.wmcloud.org/wiki/Sub-referencing betawiki]. Kinh nghiệm từ wiki thí điểm đầu tiên Wikipedia tiếng Đức đã được [[:m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing/Learnings|công bố trong báo cáo]]. Hãy liên hệ với nhóm Wikimedia Deutschland nếu bạn [[:m:Talk:WMDE Technical Wishes/Sub-referencing#Pilot wikis|quan tâm đến việc trở thành một wiki thí điểm]]. * [[mw:Special:MyLanguage/Help:Edit check#Paste check|Kiểm tra Chép dán]] (Paste Check) sẽ có mặt trên mọi trang Wikipedia trong tuần này. Tính năng này nhắc những người mới dán các đoạn văn bản mà họ không chắc viết vào Trình Soạn thảo Trực quan cân nhắc xem làm như thế có nguy cơ vi phạm bản quyền hay không. Kiểm tra Chép dán [[mw:Special:MyLanguage/Edit check/Tags|gắn thẻ]] tất cả sửa đổi mà nó hiển thị để có thể xem xét tiếp. Các bảo quản viên cục bộ có thể thiết lập cấu hình cho các khía cạnh khác nhau của tính năng này thông qua [[{{#special:EditChecks}}]]. [[mw:Special:MyLanguage/Edit check/Paste Check#A/B Experiment|Nghiên cứu]] trên 22 wiki cho thấy Kiểm tra Chép dán giúp giảm 18% số lượng sửa đổi bị lùi lại wikis found that so với nhóm đối chứng. Các biên dịch viên có thể [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-visualeditor-ve-mw-editcheck&filter=&optional=1&action=translate giúp biên dịch] tính năng này cùng những tính năng có liên quan. * [[mw:Special:MyLanguage/Readers/Reader Experience|Nhóm Trải nghiệm Người đọc]] sẽ chuẩn hóa menu người dùng ở góc trên bên phải cho tất cả người dùng di động nhằm giúp nó gần giống trải nghiệm trên máy tính hơn. Hiện tại menu người dùng này chỉ hiển thị cho những người đã bật Chế độ Điều khiển Di động Nâng cao (AMC). Thay đổi duy nhất là một vài nút trước đây ở menu bên trái sẽ chuyển sang góc trên bên phải cho người dùng không bật chế độ AMC. Thay đổi này dự kiến được triển khai vào ngày 9 tháng 3 và nhằm mục đích cải thiện giao diện người dùng. [https://phabricator.wikimedia.org/T413912] * Bắt đầu từ tuần ngày 2 tháng 3, các email được gửi khi thêm, xóa hoặc sửa địa chỉ email của tài khoản sẽ chuyển sang định dạng email HTML đẹp mắt và rõ ràng hơn nhiều so với định dạng email văn bản thuần túy trước đây. [https://phabricator.wikimedia.org/T410807] * Thông báo hiện chỉ giới hạn lưu 2.000 mục lịch sử cho mỗi người dùng, điều này kéo dài trở về năm 2013 khi tính năng này mới được phát hành. Giờ nó sẽ thay đổi thành việc lưu các Thông báo trong 5 năm trở lại đây, nhưng mở rộng lên tối đa 10.000 mục. Điều này sẽ giúp bảo vệ cơ sở hạ tầng và giúp ngăn việc những thông báo xuất hiện gần đây hơn biến mất quá sớm. [https://phabricator.wikimedia.org/T383948] * [[m:Special:GlobalWatchlist|Danh sách Theo dõi Toàn cục]] cho phép bạn xem các danh sách theo dõi của bạn từ nhiều wiki khác nhau trên cùng một trang tiếp tục được cải tiến. Lần cập nhật gần đây nhất cải thiện trải nghiệm sử dụng nhãn. [[mw:Special:MyLanguage/Extension:GlobalWatchlist|Phần mở rộng]] nay cho phép kích hoạt [[mw:Special:MyLanguage/Manual:Language#Fallback languages|hệ thống ngôn ngữ dự phòng]] cho các khoản mục Wikidata không có nhãn bằng ngôn ngữ được xem, đồng thời hiển thị những nhãn đó trong ngôn ngữ Wikidata yêu thích của người dùng nếu không cung cấp tham số URL <code dir=ltr>uselang=</code>. [https://phabricator.wikimedia.org/T373686][https://phabricator.wikimedia.org/T416111] * Nhóm Wikipedia dành cho Android đã bắt đầu cuộc thử nghiệm beta cho tính năng [[mw:Special:MyLanguage/Readers/Information Retrieval/Phase 1|tìm kiếm kết hợp]] (hybrid search) trên Wikipedia tiếng Hy Lạp. Khả năng tìm kiếm kết hợp có thể xử lý cả truy vấn ngữ nghĩa và từ khóa giúp người đọc dễ dàng tìm kiếm những gì họ muốn tìm kiếm ngay trên Wikipedia hơn. * Vì lý do bảo mật, thành viên của một vài nhóm người dùng nhất định [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|bắt buộc phải bật tính năng xác thực hai yếu tố]] (2FA). Hiện tại, 2FA bắt buộc phải được bật để sử dụng nhóm người dùng, nhưng không cần phải là để trở thành thành viên nhóm đó. Do mô hình này vẫn còn một vài lỗ hổng, tình hình này sẽ [[phab:T418580|dần dần thay đổi vào tháng 3]]. Các thành viên thuộc những nhóm người dùng đó sẽ không thể tắt phương thức 2FA cuối cùng có trên tài khoản của họ, và sẽ không thể thêm người dùng không dùng 2FA vào những nhóm này. Người dùng vẫn sẽ có thể thêm phương thức xác thực mới hoặc loại bỏ chúng, miễn là còn ít nhất một phương thức được bật. Trong khoảng nửa sau của tháng 3, những người dùng mà không có 2FA sẽ bị loại bỏ khỏi những nhóm này. Điều này áp dụng cho: Bảo quản viên Thông báo Trung ương, kiểm định viên, bảo quản viên giao diện, giám sát viên, nhân viên Wikidata, nhân viên Wikifunctions, bộ phận CNTT của Văn phòng WMF và bộ phận Tin cậy & An toàn của and WMF. Sẽ không có gì thay đổi với những người dùng khác. Xem tác vụ được liên kết để biết khung thời gian triển khai. [https://phabricator.wikimedia.org/T418580] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:27}} {{PLURAL:27|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề ngăn người dùng tạo một phiên bản trong [https://www.wikibase.cloud/ Wikibase.cloud] hiện đã được giải quyết. [https://phabricator.wikimedia.org/T416807] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Để giúp đảm bảo việc [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|sử dụng cơ sở hạ tầng một cách hợp lý]], trong tháng tới Quỹ Wikimedia sẽ triển khai giới hạn truy cập API toàn cục trên tất cả các API của chúng tôi. Vào đầu tháng 3, các giới hạn nghiêm ngặt hơn sẽ được áp dụng cho các yêu cầu không xác định từ bên ngoài Toolforge/WMCS và các yêu cầu API được thực hiện từ các trình duyệt web. Vào tháng 4, những giới hạn cao hơn sẽ được áp dụng cho lưu lượng truy cập được xác định. Những giới hạn này được cố ý đặt ở mức cao nhất có thể nhằm giảm thiểu tác động đến cộng đồng. Các bot chạy trong Toolforge/WMCS hoặc có quyền thành viên bot trên bất kỳ wiki nào sẽ không bị ảnh hưởng vào lúc này. Tuy vậy, mọi nhà phát triển được khuyến cáo làm theo những lời khuyên thực tiễn được cập nhật. Để biết thêm thông tin, hãy xem [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|API Wikimedia/Giới hạn truy cập]]. * Điểm cuối Truy vấn Dữ liệu được Liên kết (LDF) của Dịch vụ Truy vấn Wikidata sẽ ngừng hoạt động vào tháng 2. Điểm cuối này phục vụ lưu lượng truy cập hạn chế, lưu lượng này đã được chuyển đổi thành công sang các phương thức truy cập dữ liệu khác phù hợp hơn để hỗ trợ các trường hợp sử dụng (use case) hiện có. Phần cứng được sử dụng để hỗ trợ điểm cuối LDF sẽ được phân bổ lại để hỗ trợ những nỗ lực chuyển đổi hệ thống backend đang diễn ra. [https://phabricator.wikimedia.org/T415696] * Trình phân tích cú pháp Parsoid mới [[mw:Special:MyLanguage/Parsoid/Parser Unification/Updates|tiếp tục được triển khai đến nhiều wiki hơn]], nhằm cải thiện tính bền vững của nền tảng và giúp việc giới thiệu các tính năng đọc và sửa đổi mới trở nên dễ dàng hơn. Parsoid nay là trình phân tích cú pháp mặc định trên 488 trang wiki của WMF (268 trang Wikipedia), hiện chiếm hơn 10% tổng số lượt xem trang Wikipedia. * Quy trình và tiêu chí để [[Special:MyLanguage/Wikimedia Enterprise#Access|yêu cầu quyền truy cập đặc biệt]] vào nguồn cấp dữ liệu khối lượng lớn của API ''Wikimedia Enterprise'' (miễn phí cho các trường hợp sử dụng phù hợp với nhiệm vụ), [[m:Talk:Wikimedia Enterprise#Exceptional access criteria|hiện đã được công bố]]. Điều này nhằm cung cấp tài liệu đầy đủ và rõ ràng hơn cho người dùng. * [https://techblog.wikimedia.org/ Blog Kỹ thuật], một blog dành riêng cho cộng đồng kỹ thuật Wikimedia [https://techblog.wikimedia.org/2026/02/24/a-tech-blog-diff/ sẽ được chuyển] sang [[diffblog:|Diff]], blog tin tức và sự kiện cộng đồng. Việc chuyển đổi dự kiến sẽ được hoàn thành vào tháng 4 năm 2026, sau thời điểm này các bài viết mới sẽ được chấp nhận xuất bản. Người đọc sẽ có thể truy cập các bài đăng – cả bài cũ và mới – trên trang đích này tại https://diff.wikimedia.org/techblog. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.18|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/10|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W10"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 17:51, ngày 2 tháng 3 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30137798 --> == Bản tin Kỹ thuật: Tuần 11-2026 == <section begin="technews-2026-W11"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/11|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[m:Special:MyLanguage/Tech/Server switch|Tất cả các wiki sẽ chuyển sang chế độ chỉ đọc trong vòng vài phút]] vào thứ 4, ngày 25 tháng 3 năm 2026 lúc [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. Điều này là nhằm phục vụ cho việc thử nghiệm chuyển đổi máy chủ cơ sở dữ liệu dự phòng, [[wikitech:Deployments/Yearly calendar|diễn ra hai lần trong một năm]]. Trong quá trình chuyển đổi này, toàn bộ lưu lượng trên các trang web của Wikimedia được chuyển từ trung tâm dữ liệu chính sang trung tâm dữ liệu dự phòng nhằm kiểm tra tính khả dụng và ngăn ngừa việc gián đoạn dịch vụ ngay cả trong những trường hợp khẩn cấp. * Tuần trước, tất cả các wiki đều bị giới hạn ở chế độ chỉ đọc trong vòng 2 giờ đồng hồ, cùng với đó các đoạn mã người dùng và tiện ích cũng không khả dụng trong thời gian được kéo dài. Điều này là do một sự cố bảo mật mà đã được khắc phục sau đó. Chúng tôi đang tiếp tục cố gắng để ngăn điều này tái diễn. Để cập nhật thông tin vui lòng xem [[m:Steward's noticeboard#Statement on Meta about today's user script security incident|bài đăng trên bảng tin của Nhân viên]] ([[m:Special:MyLanguage/Wikimedia Foundation/Product and Technology/Product Safety and Integrity/March 2026 User Script Incident|bản dịch]]). '''Cập nhật cho biên tập viên''' * Người dùng đang gặp phải nhiều lệnh cấm trên thiết bị di động nay sẽ thấy lý do cấm cho từng lần cấm riêng thay vì một thông báo chung chung. Điều này giúp họ hiểu tại sao mình bị cấm và cần thực hiện những bước nào để giải quyết vấn đề. Ví dụ, người dùng bị ảnh hưởng do sử dụng VPN phổ biến (chẳng hạn như [[Special:MyLanguage/Apple iCloud Private Relay|iCloud Private Relay]]) sẽ nhận được hướng dẫn rõ ràng hơn những việc cần làm để bắt đầu lại việc sửa đổi. [https://phabricator.wikimedia.org/T357118] * Cuối tuần này, [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Chế độ Đề xuất]] sẽ được cung cấp dưới dạng tính năng beta trong trình soạn thảo trực quan trên tất cả các trang Wikipedia. Tính năng này chủ động đề xuất nhiều loại hành động mà người dùng có thể cân nhắc thực hiện để cải thiện các bài viết trên Wikipedia, đồng thời tìm hiểu về các hướng dẫn có liên quan. Tính năng này có thể được cấu hình cục bộ và cũng có thể được mở rộng cục bộ với bằng việc tùy chỉnh Đề xuất. Cài đặt hiện tại có thể xem được tại trang [[Special:EditChecks]] và có [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators %E2%80%93 local customization|hướng dẫn cách bảo quản viên có thể tùy chỉnh]] các liên kết để chỉ tới những trang hướng dẫn cục bộ. Tính năng này được kết nối với tính năng [[mw:Special:MyLanguage/Help:Edit check|Kiểm tra sửa đổi]], một tính năng đưa ra đề xuất cải thiện trong khi người nào đó viết nội dung mới. Trong tương lai, nhóm Sửa đổi dự kiến đánh giá tác động của tính năng này đối với người dùng mới thông qua một thử nghiệm có kiểm soát. [https://phabricator.wikimedia.org/T404600] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố liên quan đến việc con trỏ bị lệch khi sử dụng tính năng tô sáng cú pháp của CodeMirror, một tính năng giúp mã wiki (wikitext) và mã code dễ đọc hơn, nay đã được giải quyết. Vấn đề này đặc biệt ảnh hưởng đến những người dùng đã định nghĩa quy tắc phông chữ trong stylesheet tùy chỉnh khi tạo chủ đề mới bằng Công cụ Thảo luận. [https://phabricator.wikimedia.org/T418793] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Cập nhật về giới hạn truy vấn API: Để giúp đảm bảo việc [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|sử dụng hợp lý cơ sở hạ tầng]], giới hạn truy vấn API toàn cục sẽ được áp dụng trong tuần này cho các yêu cầu không có User-Agent hợp lệ bắt nguồn từ bên ngoài Toolforge/WMCS cùng các yêu cầu chưa được xác thực được thực hiện từ trình duyệt web. Trong tháng 4 tới sẽ thiết lập giới hạn cao hơn cho lưu lượng truy cập được xác định. Các bot chạy trên Toolforge/WMCS hoặc có quyền thành viên bot trên bất kỳ wiki nào hiện sẽ không bị ảnh hưởng vì điều này. Tuy vậy, mọi nhà phát triển được khuyến cáo nên tuân theo những hướng dẫn thực tiễn tốt nhất được cập nhật. Để biết thêm thông tin, hãy xem [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|API Wikimedia/Giới hạn truy vấn]]. * API GraphQL mới đã được phát hành. API này được phát triển như một giải pháp thay thế linh hoạt cho một số tính năng nhất định của Dịch vụ Truy vấn Wikidata (WDQS), nhằm cải thiện trải nghiệm và khả năng thích ứng của nhà phát triển, đồng thời giúp truy cập dữ liệu hiệu quả. Hãy dùng thử và [[d:Wikidata:Wikibase GraphQL#Feedback and development|gửi phản hồi]] của mình. Bạn cũng có thể [https://greatquestion.co/wikimediadeutschland/GraphQLAPI/apply đăng ký tham gia các bài kiểm tra về khả năng sẵn dùng]. * Vào tháng 2 [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group|Nhóm Làm việc cho Công cụ Không được Hỗ trợ PTAC]] đã tiếp tục cải tiến [[commons:Special:MyLanguage/Commons:Video2commons#|Video2Commons]], trong đó sửa các lỗi liên quan đến lỗi xác thực, xử lý tệp lớn, khả năng hiển thị hàng đợi tác vụ và làm rõ hơn hành vi tải lên. Hiện một số lĩnh vực vẫn đang được tiến hành thực hiện, trong đó có những thay đổi liên quan đến việc tải lên từ phía máy chủ đã lỗi thời. Hãy đọc [[m:Special:MyLanguage/Product and Technology Advisory Council/Unsupported Tools Working Group#February 2026|phần cập nhật này]] để tìm hiểu thêm. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.19|MediaWiki]] '''Chuyên sâu''' * Nhóm Hướng dẫn Bài viết mời các biên tập viên Wikipedia có kinh nghiệm từ một số [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators#Collaborators|wiki thí điểm]] được chọn cùng những người đóng góp có quan tâm từ các trang Wikipedia khác điền vào bảng câu hỏi này, có sẵn bằng [https://docs.google.com/forms/d/e/1FAIpQLSfmLeVWnxmsCbPoI_UF2jyRcn73WRGWCVPHzerXb4Cz97X_Ag/viewform tiếng Anh], [https://docs.google.com/forms/d/e/1FAIpQLSd6rzr4XXQw8r4024fE3geTPFe13M_6w7Mitj-YJi0sOlWTAw/viewform?usp=header tiếng Ả Rập], [https://docs.google.com/forms/d/e/1FAIpQLSdok3-RfB18lcugYTUMGkpwmqG_8p760Wv4dCXitOXOszjUDw/viewform?usp=header tiếng Bengali], [https://docs.google.com/forms/d/e/1FAIpQLSfjTfYp4jEo0akA4B1e-Nfg3QZPCudUjhJzHzzDi6AHyAaMGA/viewform?usp=header tiếng Nhật], [https://docs.google.com/forms/d/e/1FAIpQLScteVoI29Aue4xc72dekk-6RYtvmMgQxzMI900UOawrFrSTWg/viewform?usp=header tiếng Bồ Đào Nha], [https://docs.google.com/forms/d/e/1FAIpQLSetdxnYwL3ub2vqA7awCg5hJZPMIYcDPaiTe12rY9h0GYnVlw/viewform?usp=header tiếng Ba Tư] và [https://docs.google.com/forms/d/e/1FAIpQLScNvfJF-Ot-4pzA4qAN771_0QDJ4Li19YcUsaTgSKW8Nc7U_Q/viewform?usp=header tiếng Thổ Nhĩ Kỳ]. Phản hồi của bạn sẽ giúp nhóm tùy chỉnh hướng dẫn cho các biên tập viên ít kinh nghiệm hơn và giúp họ tìm hiểu các chính sách và thực tiễn của cộng đồng khi tạo bài viết. Tìm hiểu thêm [[mw:Special:MyLanguage/Article guidance|trên trang dự án]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/11|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W11"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:53, ngày 9 tháng 3 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30213008 --> == Bản tin Kỹ thuật: Tuần 12-2026 == <section begin="technews-2026-W12"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/12|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Tính năng beta [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]], còn được biết đến với tên [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], được sử dụng để tô sáng cú pháp mã wiki kể từ tháng 11 năm 2024. Tính năng này sẽ chính thức kết thúc giai đoạn thử nghiệm beta vào tháng 5 năm 2026 nhằm đưa những cải tiến và [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Features|tính năng]] mới cho tất cả biên tập viên sử dụng trình tô sáng cú pháp tiêu chuẩn. Nếu bạn có bất kỳ câu hỏi hoặc thắc mắc nào về việc kết thúc giai đoạn thử nghiệm beta cho tính năng này, [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|vui lòng chia sẻ với chúng tôi]]. [https://phabricator.wikimedia.org/T259059] * Một số thay đổi đối với quyền nhóm người dùng cục bộ được tiếp viên trên Meta-Wiki thực hiện và nhật trình về những thay đổi này chỉ được ghi lại trên đó. Giờ đây, thay đổi về quyền liên wiki sẽ được ghi lại trên cả Meta-Wiki và wiki của người dùng mục tiêu để giúp dễ dàng truy cập vào toàn bộ bản ghi thay đổi quyền người dùng trên wiki cục bộ hơn. Những mục nhật trình trước đây về những thay đổi này sẽ được cập nhật trong những tuần tiếp theo. [https://phabricator.wikimedia.org/T6055] * Trên các wiki sử dụng [[m:Special:MyLanguage/Flagged Revisions|Thay đổi Được gắn cờ (Flagged Revisions)]], số lượng thay đổi đang chờ được hiển thị trên [[{{#Special:PendingChanges}}]] trước đây tính cả những trang mà không còn ở trong trạng thái đang chờ xem xét, do chúng đã bị xóa khỏi hệ thống mà không được xem xét lại, v.d. do bị xóa, được di chuyển sang không gian tên khác, hoặc do thay đổi cấu hình wiki. Bộ đếm giờ sẽ được hiển thị chính xác. Trên một số wiki số lượng thay đổi được hiển thị sẽ nhỏ hơn nhiều so với trước đây. Bản thân danh sách các trang sẽ không có thay đổi gì. [https://phabricator.wikimedia.org/T413016] * Ngôn ngữ soạn thảo của Wikifunctions đã được viết lại, tạo ra một phiên bản mới của ngôn ngữ này. Thay đổi này nhằm mục đích tăng cường tính ổn định của dịch vụ bằng cách giảm mức tiêu thụ bộ nhớ của trình điều phối. Việc viết lại này cũng giúp cho phép giảm đáng kể độ trễ, đơn giản hóa mã nguồn và tạo ra các lớp trừu tượng tốt hơn, nhằm mở ra cơ hội bổ sung thêm các tính năng khác trong tương lai. Đọc thêm về [[f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-11|các thay đổi này]]. * Người dùng nay có thể sắp xếp kết quả tìm kiếm theo thứ tự bảng chữ cái dựa trên tiêu đề trang. Lần cập nhật này cung cấp thêm một tùy chọn giúp cho việc tìm kiếm trang trở nên dễ dàng và nhanh chóng hơn. Trước đây, kết quả có thể được sắp xếp theo Ngày sửa đổi, Ngày tạo, hoặc Mức độ liên quan. Để sử dụng tùy chọn mới này, hãy mở 'Tìm kiếm nâng cao' trên trang kết quả tìm kiếm và chọn 'Thứ tự bảng chữ cái' trong mục 'Thứ tự sắp xếp'. [https://phabricator.wikimedia.org/T403775] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:28}} {{PLURAL:28|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một lỗi khiến cho Trình tải lên tập tin (UploadWizard) trên Wikimedia Commons không thể nhập tập tin từ Flickr nay đã được giải quyết. [https://phabricator.wikimedia.org/T419263] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Một trang đặc biệt mới, [[{{#special:LintTemplateErrors}}]], đã được tạo ra để liệt kê các trang nhúng được đánh dấu là chứa lỗi lint để giúp người dùng dễ dàng phát hiện chúng hơn. Danh sách được sắp xếp theo số lượng các trang được nhúng mà có lỗi. Ví dụ: [[{{#special:LintTemplateErrors}}/night-mode-unaware-background-color]]. [https://phabricator.wikimedia.org/T170874] * Người dùng tính năng beta [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] hiện đang sử dụng [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] thay vì [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] để tô sáng cú pháp khi sửa đổi các trang nội dung JavaScript, CSS, JSON, Vue và Lua, trong một khoảng thời gian. Cùng với việc kết thúc thử nghiệm beta cho CodeMirror 6, kế hoạch là thay thế CodeEditor để trở thành trình soạn thảo tiêu chuẩn cho những kiểu nội dung này vào tháng 5 năm 2026. [[mw:Special:MyLanguage/Help talk:Extension:CodeMirror|Mọi phản hồi hoặc ý kiến đóng góp đều được hoan nghênh]]. [https://phabricator.wikimedia.org/T419332] * Các mô đun JavaScript cho [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] JavaScript sẽ sớm được nâng cấp lên CodeMirror 6. Trước thời điểm nâng cấp này, việc tải các mô đun <code dir=ltr>ext.CodeMirror</code> hoặc <code dir=ltr>ext.CodeMirror.lib</code> từ các tiện ích và đoạn mã người dùng đã bị loại bỏ vào tháng 7 năm 2025. Việc sử dụng hook <code dir=ltr>ext.CodeMirror.switch</code> cũng đã bị loại bỏ vào tháng 3 năm 2025. Những người đóng góp nay có thể làm cho các đoạn mã hoặc tiện ích của mình tương thích với CodeMirror 6. Xem [[mw:Special:MyLanguage/Extension:CodeMirror#Gadgets and user scripts|hướng dẫn chuyển đổi]] để biết thêm thông tin. [https://phabricator.wikimedia.org/T373720] * Nhóm Giao diện MediaWiki đang mở rộng phạm vi định nghĩa mô đun API REST để bao gồm cả [[mw:Special:MyLanguage/API:REST API/Extensions|các API mở rộng]]. Mô đun API REST là nhóm các điểm cuối có liên quan mà có thể được quản lý và đánh phiên bản độc lập. Hiện đã có các mô đun cho API [https://phabricator.wikimedia.org/T414470 GrowthExperiments] và [https://phabricator.wikimedia.org/T419053 Wikifunctions]. Khi chúng tôi chuyển đổi các API mở rộng sang cấu trúc này, tài liệu sẽ được chuyển ra khỏi phần đặc tả chính cho OpenAPI của MediaWiki cùng chế độ xem REST Sandbox, và thay vào đó sẽ có thể truy cập được thông qua tùy chọn dành riêng cho mô đun trong menu thả xuống trên [https://test.wikipedia.org/wiki/Special:RestSandbox REST Sandbox] (nghĩa là, [[{{#Special:RestSandbox}}]], có sẵn trên tất cả các dự án wiki). * Phần mở rộng [[mw:Special:MyLanguage/Extension:Scribunto|Scribunto]] cung cấp nhiều thông tin khác nhau về wiki nơi mô đun đang được sử dụng thông qua thư viện [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual|mw.site]]. Kể từ tuần trước, thư viện này cũng cung cấp một [[mw:Special:MyLanguage/Extension:Scribunto/Lua reference manual#mw.site.wikiId|cách]] truy cập [[mw:Special:MyLanguage/Manual:Wiki ID|ID của wiki]] có thể được sử dụng để hỗ trợ bảo trì mô đun liên wiki. [https://phabricator.wikimedia.org/T146616] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.20|MediaWiki]] '''Chuyên sâu''' * [[m:Special:MyLanguage/Coolest Tool Award|Giải thưởng Công cụ Tuyệt vời nhất năm 2026]] nhằm tôn vinh những công cụ xuất sắc do cộng đồng tạo ra, nay đã mở nhận đề cử! Hãy đề cử công cụ yêu thích của bạn bằng cách sử dụng biểu mẫu [https://wikimediafoundation.limesurvey.net/435684?lang=en khảo sát đề cử] trước ngày 23 tháng 3 năm 2026. Để biết thêm thông tin về quyền riêng tư và xử lý dữ liệu, vui lòng xem [[foundation:Special:MyLanguage/Legal:Coolest_Tool_Award_2026_Survey_Privacy_Statement|tuyên bố về quyền riêng tư của khảo sát]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/12|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W12"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:35, ngày 16 tháng 3 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30260505 --> == Bản tin Kỹ thuật: Tuần 13-2026 == <section begin="technews-2026-W13"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/13|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Người dùng các trang Wikimedia nay có thể đăng nhập mà không cần mật khẩu bằng cách sử dụng khóa truy cập (passkey). Đây là một phương thức bảo mật sử dụng vân tay, nhận diện khuôn mặt hoặc mã PIN. Với thay đổi này, tất cả người dùng chọn đăng nhập không cần mật khẩu sẽ có thể đăng nhập vào tài khoản của mình một cách dễ dàng, nhanh chóng và an toàn hơn trên mọi thiết bị. Tùy chọn đăng nhập mới bằng khóa truy cập hiện hiển thị dưới dạng gợi ý tự động điền trong trường tên người dùng. [[phab:T417120|Nút "Đăng nhập bằng khóa truy cập"]] bổ sung sẽ sớm được cung cấp cho những người dùng đã bật tùy chọn sử dụng khóa truy cập. Lần cập nhật này sẽ cải thiện bảo mật cũng như trải nghiệm người dùng. [[c:File:Passwordless_login_screencast.webm|Bản ghi lại màn hình]] này sẽ minh họa từng bước quy trình đăng nhập không cần mật khẩu. * [[m:Special:MyLanguage/Tech/Server switch|Tất cả các wiki sẽ chuyển sang chế độ chỉ đọc trong vòng vài phút]] vào thứ 4, ngày 25 tháng 3 năm 2026 lúc [https://zonestamp.toolforge.org/1774450800 15:00 UTC]. Điều này là nhằm phục vụ cho việc thử nghiệm chuyển đổi máy chủ cơ sở dữ liệu dự phòng, [[wikitech:Deployments/Yearly calendar|diễn ra hai lần trong một năm]]. Trong quá trình chuyển đổi này, toàn bộ lưu lượng trên các trang web của Wikimedia được chuyển từ trung tâm dữ liệu chính sang trung tâm dữ liệu dự phòng nhằm kiểm tra tính khả dụng và ngăn ngừa việc gián đoạn dịch vụ ngay cả trong những trường hợp khẩn cấp. '''Cập nhật cho biên tập viên''' * Người dùng các trang web của Wikimedia nay có thể xuất các thông báo cách đây hơn 5 năm của mình bằng cách sử dụng [[toolforge:echo-chamber|công cụ Toolforge mới]]. Điều này sẽ đảm bảo rằng người dùng có thể giữ lại được những thông báo quan trọng và tránh bị mất chúng do việc thay đổi theo kế hoạch nhằm xóa đi các thông báo cũ hơn 5 năm, như đã thông báo trước đó. [https://phabricator.wikimedia.org/T383948] * Các biên tập viên Wikipedia tiếng Indonesia, tiếng Thái, tiếng Thổ Nhĩ Kỳ, và tiếng Anh Đơn giản nay có thể truy cập vào Đặc biệt:Bảng điều khiển cá nhân. Đây là [[mw:Special:MyLanguage/Moderator Tools/Dashboard|phiên bản trải nghiệm sớm]] giúp các biên tập viên mới làm quen với quy trình tuần tra, giúp họ dễ dàng chuyển từ việc sửa đổi sang tham gia vào những công việc kiểm duyệt nâng cao hơn trên dự án của mình. [https://phabricator.wikimedia.org/T402647] * Trang [[vi:Special:Block|Đặc_biệt:Cấm]] nay có hai thay đổi nhỏ về mặt giao diện. Bảo quản viên nay có thể dễ dàng thực hiện lệnh cấm vô hạn thông qua nút chọn (nút radio) chuyên dụng trong mục thời hạn. Ngoài ra, việc chọn thời hạn là vô hạn sẽ cung cấp một bộ lý do phổ biến khác để lựa chọn, nó có thể được thay đổi tại: [[MediaWiki:Ipbreason-indef-dropdown]]. [https://phabricator.wikimedia.org/T401823] * Biên tập viên sử dụng thiết bị di động [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#Logged-out|tại một số wiki]] nay có thể nhìn thấy cải tiến về cảnh báo sửa đổi khi chưa đăng nhập, điều này là nhờ cập nhật gần đây từ nhóm Phát triển. Những thay đổi được phát hành vào tuần trước này là một phần trong những nỗ lực và thử nghiệm đang được thực hiện nhằm nâng cao [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|trải nghiệm trong việc tạo tài khoản trên thiết bị di động]] và từ đó giúp tăng cường sự tham gia của họ. [https://phabricator.wikimedia.org/T408484] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:36}} {{PLURAL:36|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một lỗi khiến người dùng web trên thiết bị di động không thể nhìn thấy thông tin cấm khi có nhiều lệnh cấm đồng thời được áp dụng đã được giải quyết. Họ giờ có thể xem được tin nhắn cho tất cả các lệnh cấm hiện đang được áp dụng cho họ khi họ truy cập Wikipedia. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Những image (ảnh) được dựng bằng Toolforge sẽ sớm được nâng cấp lên phiên bản buildpack mới, mang đến việc hỗ trợ các phiên bản ngôn ngữ mới hơn cùng những cải tiến và sửa lỗi khác tại thượng nguồn. Nếu bạn sử dụng Dịch vụ Dựng của Toolforge, hãy xem lại [https://lists.wikimedia.org/hyperkitty/list/cloud-announce@lists.wikimedia.org/thread/EMYTA32EV2V5SQ2JIEOD2CL66YFIZEKV/ email cloud-announce] gần đây và cập nhật cấu hình bản dựng của bạn nếu cần để đảm bảo các công cụ của bạn tương thích với phiên bản mới này. [https://wikitech.wikimedia.org/w/index.php?title=Help:Toolforge/Building_container_images&oldid=2392097#Buildpack_environment_upgrade_process][https://phabricator.wikimedia.org/T380127] * Wiki tài liệu [https://api.wikimedia.org/wiki/Main_Page Cổng API] sẽ ngừng hoạt động vào tháng 6 năm 2026. Các khóa API được tạo trên Cổng API sẽ tiếp tục hoạt động bình thường. Các điểm cuối của api.wikimedia.org sẽ dần bị loại bỏ bắt đầu từ tháng 7 năm 2026. Tài liệu trên Cổng API đang được chuyển sang [[mw:Wikimedia APIs|mediawiki.org]]. Tìm hiểu thêm trên [[wikitech:API Portal/Deprecation|trang dự án]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.21|MediaWiki]] '''Chuyên sâu''' * [[m:Special:MyLanguage/WMDE Technical Wishes|Nhóm Mong muốn – Kỹ thuật của WMDE]] đang xem xét cải tiến [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|tên chú thích được tạo tự động trong Trình Soạn thảo Trực quan (VisualEditor)]]. Vui lòng xem qua [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names#Proposed solutions|những giải pháp được đề xuất]] và tham gia vào [[m:Talk:WMDE Technical Wishes/References/VisualEditor automatic reference names#Request for comment|thảo luận này]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/13|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W13"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:51, ngày 23 tháng 3 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30268305 --> == Bản tin Kỹ thuật: Tuần 14-2026 == <section begin="technews-2026-W14"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/14|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Phiên bản Beta của [[abstract:|Abstract Wikipedia]] một dự án Wikimedia mới không phụ thuộc ngôn ngữ, đã được khởi động vào tuần trước. Dự án cho phép các cộng đồng xây dựng các bài viết Wikipedia bằng ngôn ngữ mẹ đẻ của họ, và các thành viên khác có thể dễ dàng truy cập các bài viết đó bằng ngôn ngữ của riêng họ. Wiki này hoạt động dựa trên chỉ dẫn từ Wikifunctions và cũng dựa trên nội dung có cấu trúc từ Wikidata. [[:f:Special:MyLanguage/Wikifunctions:Status updates/2026-03-26|Đọc thêm]]. '''Cập nhật cho biên tập viên''' * Nhóm Phát triển đang tiến hành thử nghiệm A/B để đánh giá cho một thông điệp rõ ràng hơn, thân thiện hơn với người dùng nhằm khuyến khích việc tạo tài khoản trên wiki. Hiện tại, khi người dùng di động chưa đăng nhập bắt đầu sửa đổi, họ sẽ thấy một thông báo cảnh báo khó chịu, có thể khiến cho họ có cảm giác đột ngột và nản lòng. Điều này cũng làm cho việc sửa đổi bằng tài khoản tạm thời trở thành mặc định thay vì khuyến khích việc tạo tài khoản. Thử nghiệm đang được thực hiện trên mười trang Wikipedia, bao gồm tiếng Ả Rập, tiếng Pháp, tiếng Tây Ban Nha và tiếng Đức. [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#2. Improve logged-out warning message (T415160)|Đọc thêm]]. * Nhóm Ứng dụng Wikimedia đang mời mọi người đóng góp ý kiến về [[mw:Special:MyLanguage/Wikimedia Apps/Team/Future of Editing on the Mobile Apps|việc sửa đổi trên ứng dụng Wikipedia dành cho thiết bị di động nên hoạt động như thế nào]]. Thảo luận tập trung vào việc cải thiện cách người dùng truy cập công cụ sửa đổi khi họ nhấn vào nút "Sửa đổi". Đây là một phần trong nỗ lực rộng lớn hơn nhằm chuyển đổi những người đọc mà có hứng thú với việc sửa đổi sang một con đường thân thiện hơn với người dùng để có thể bắt đầu đóng góp. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:45}} {{PLURAL:45|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố khiến việc lấy chú thích từ kho lưu trữ báo chí lớn [https://www.newspapers.com Newspapers.com] không còn hoạt động, do bị chặn trong các yêu cầu của [[mw:Special:MyLanguage/Citoid|Citoid]], nay đã được khắc phục. [https://phabricator.wikimedia.org/T419903] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.22|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/14|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W14"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:25, ngày 30 tháng 3 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30329462 --> == Action Required: Update templates/modules for electoral maps (Migrating from P1846 to P14226) == Hello everyone, This is a notice regarding an ongoing data migration on Wikidata that may affect your election-related templates and Lua modules (such as <code>Module:Itemgroup/list</code>). '''The Change:'''<br /> Currently, many templates pull electoral maps from Wikidata using the property [[:d:Property:P1846|P1846]], combined with the qualifier [[:d:Property:P180|P180]]: [[:d:Q19571328|Q19571328]]. We are migrating this data (across roughly 4,000 items) to a newly created, dedicated property: '''[[:d:Property:P14226|P14226]]'''. '''What You Need To Do:'''<br /> To ensure your templates and infoboxes do not break or lose their maps, please update your local code to fetch data from [[:d:Property:P14226|P14226]] instead of the old [[:d:Property:P1846|P1846]] + [[:d:Property:P180|P180]] structure. A [[m:Wikidata/Property Migration: P1846 to P14226/List|list of pages]] was generated using Wikimedia Global Search. '''Deadline:'''<br /> We are temporarily retaining the old data on [[:d:Property:P1846|P1846]] to allow for a smooth transition. However, to complete the data cleanup on Wikidata, the old [[:d:Property:P1846|P1846]] statements will be removed after '''May 1, 2026'''. Please update your modules and templates before this date to prevent any disruption to your wiki's election articles. Let us know if you have any questions or need assistance with the query logic. Thank you for your help! [[User:ZI Jony|ZI Jony]] using [[Thành viên:MediaWiki message delivery|MediaWiki message delivery]] ([[Thảo luận Thành viên:MediaWiki message delivery|thảo luận]]) 17:11, ngày 3 tháng 4 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:ZI Jony@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=29941252 --> == Bản tin Kỹ thuật: Tuần 15-2026 == <section begin="technews-2026-W15"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/15|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Help:Extension:CampaignEvents|Phần mở rộng CampaignEvents]] nay có thêm tính năng mới nhằm thiết lập mục tiêu nhóm, nhằm cho phép những người tổ chức thiết lập và theo dõi mục tiêu sự kiện chẳng hạn như số lượng bài viết được tạo và số lượng người tham gia đóng góp theo thời gian thực. Tương tự, những người tham gia có thể cùng nhau hướng tới các mục tiêu chung và chứng kiến ​​tác động tập thể của họ khi sự kiện diễn ra. Tính năng này hiện đã có trên tất cả các wiki của Wikimedia. Tìm hiểu thêm trong [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Collaborative contributions#Goal setting|trang tài liệu này]]. * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Mục Mong muốn cộng đồng]] Tính năng [[mw:Special:MyLanguage/Help:Watchlist labels|gán nhãn danh sách theo dõi]] mới (được công bố trong [[m:Special:MyLanguage/Tech/News/2026/07|Bản tin Kỹ thuật 2026-07]]) nay có sẵn thông qua Trình Soạn thảo Trực quan, trình soạn thảo mã nguồn, và biểu tượng 'sao theo dõi' (hoặc liên kết theo dõi, đối với các giao diện không có biểu tượng hình sao). Trước đây việc gán nhãn như vậy chỉ có thể thực hiện được thông qua [[Special:EditWatchlist|EditWatchlist]]. Ở cả ba nơi đó, đây đều sẽ là trường mới ngay sau sau trường thời điểm hết hạn theo dõi. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề mà trang thảo luận trên thiết bị di động dùng Parsoid không thể sử dụng được sau đề mục không có tiêu đề, nay đã được giải quyết. [https://phabricator.wikimedia.org/T419171] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Tính năng chú thích phụ]], một tính năng cho phép biên tập viên thêm thông tin chi tiết vào nguồn tham khảo hiện có mà không cần nhân bản nó, sẽ được triển khai dần dần tới [[phab:T414094|nhiều trang wiki hơn]] vào cuối năm nay. Các wiki sử dụng tiện ích [[mw:Special:MyLanguage/Reference Tooltips|Chú thích nổi]] được khuyến khích cập nhật phiên bản của mình (thường là tại [[m:MediaWiki:Gadget-ReferenceTooltips.js|MediaWiki:Gadget-ReferenceTooltips.js]] như được hiển thị tại [https://en.wikipedia.org/w/index.php?diff=1344408362 đây]) để đảm bảo khả năng tương thích. Các tiện ích khác liên quan đến nguồn tham khảo khác cũng có thể bị ảnh hưởng. [https://phabricator.wikimedia.org/T416304] * Tất cả các phiên bản của Wikinews sẽ bị đóng và chuyển sang chế độ chỉ đọc vào ngày 4 tháng 5 năm 2026. Mọi nội dung vẫn sẽ có thể truy cập được, nhưng sẽ không thể thêm bất kỳ sửa đổi hoặc bài viết mới nào. Việc đóng này đã được Hội đồng Quản trị của Quỹ Wikimedia phê duyệt sau những cuộc thảo luận kéo dài. [[m:Wikimedia Foundation Board noticeboard#Board of Trustees Approves Closure of Wikinews|Đọc thêm]]. * [[:mw:Special:MyLanguage/API:Action API|API Tác vụ]] có một số kiểu định dạng đầu ra được yêu cầu. Một trong số chúng, <bdi lang="zxx" dir="ltr"><code><nowiki>format=php</nowiki></code></bdi>, sẽ sớm bị loại bỏ. Vui lòng đảm bảo rằng các tập lệnh hoặc bot của bạn sử dụng [[mw:Special:MyLanguage/API:Data formats#Output|kiểu định dạng JSON]]. Việc loại bỏ này sẽ chỉ ảnh hưởng đến một số lượng rất nhỏ các tập lệnh người dùng và bot. [https://phabricator.wikimedia.org/T118538] * Trang [[Special:NamespaceInfo|Đặc biệt:NamespaceInfo]] nay có chứa phần viết tắt không gian tên. Ví dụ "WP" cho không gian tên "Project" ("Wikipedia") trên Wikipedia tiếng Đức. [https://phabricator.wikimedia.org/T381455] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.23|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/15|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W15"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:19, ngày 6 tháng 4 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30362761 --> == Bản tin Kỹ thuật: Tuần 16-2026 == <section begin="technews-2026-W16"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/16|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Các biên tập viên có kinh nghiệm được mời tham gia [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Main_Page thử nghiệm] tính năng [[mw:Special:MyLanguage/Article guidance|Hướng dẫn bài viết]], được thiết kế để giúp các biên tập viên ít kinh nghiệm hơn tạo ra các bài viết Wikipedia có cấu trúc tốt và phù hợp với quy định. Hướng dẫn thử nghiệm [[mw:Special:MyLanguage/Article guidance/Test feature guide|có sẵn tại đây]]. Ngoài ra, sau khi xem xét [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance bản tóm tắt này], vui lòng cung cấp phản hồi trên [[mw:Talk:Article guidance|trang thảo luận của dự án]]. Dựa trên ý kiến đóng góp của bạn, tính năng này sẽ được tinh chỉnh và chuyển giao cho các trang Wikipedia thí điểm để biên dịch và điều chỉnh cho thích hợp. Hãy xem qua [[c:File:Article Guidance workflow demo - April 2026.webm|video]] giải thích về tính năng này. '''Cập nhật cho biên tập viên''' * Trên hầu hết các trang wiki, tất cả thành viên tự xác nhận nay có thể sử dụng trang [[Special:ChangeContentModel|Đặc biệt:ChangeContentModel]] để [[mw:Special:MyLanguage/Help:ChangeContentModel|tạo trang mới với kiểu nội dung tùy chỉnh]], chẳng hạn như danh sách gửi thông báo rộng rãi, giúp cho định dạng trang tùy chỉnh trở nên dễ tiếp cận hơn. Kiểm tra [[Special:ListGroupRights|Đặc biệt:Quyền nhóm người dùng]] để biết trạng thái trên wiki của bạn. [https://phabricator.wikimedia.org/T248294] * Nhóm Phát triển đã khởi động một [[mw:Special:MyLanguage/Contributors/Account_Creation_Experiments|thử nghiệm tạo tài khoản]] để đánh giá xem việc thêm nút tạo tài khoản vào phần đầu trang web trên thiết bị di động có làm tăng số lượng người đăng ký tài khoản mới và khuyến khích nhiều người dùng thiết bị di động đóng góp vào wiki hay không. Thử nghiệm hiện đang được thực hiện trên Wikipedia tiếng Hindi, tiếng Indonesia, tiếng Bengali, tiếng Thái và tiếng Do Thái, và nhắm mục tiêu vào 10% người dùng web trên di động chưa đăng nhập. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:30}} {{PLURAL:30|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố có thể khiến Trình Soạn thảo Trực quan bị kẹt khi tải trên các thiết bị Windows đã tắt hiệu ứng hoạt ảnh, nay đã được giải quyết. [https://phabricator.wikimedia.org/T382856] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Kể từ cuối tuần này, {{int:group-abusefilter}} đã bật tính năng beta [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]] sẽ sử dụng [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] thay vì [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] làm trình soạn thảo tại [[Special:AbuseFilter|Đặc biệt:Bộ lọc sai phạm]]. Đây là một phần trong nỗ lực rộng lớn hơn nhằm mang lại trải nghiệm người dùng nhất quán hơn trên tất cả các trình soạn thảo. [https://phabricator.wikimedia.org/T399673][https://phabricator.wikimedia.org/T419332] * Các công cụ và bot truy cập vào [[mw:Special:MyLanguage/Notifications/API|API Thông báo]] (<bdi lang="zxx" dir="ltr"><code><nowiki>action=query&meta=notifications</nowiki></code></bdi>) sẽ cần phải cập nhật quyền OAuth hoặc BotPassword của mình để bao gồm cả quyền truy cập vào các thông báo riêng tư. [https://phabricator.wikimedia.org/T421991] * Do việc nâng cấp thư viện, việc liệt kê danh sách trên các trang thể loại có thể hiển thị không đúng theo thứ tự bắt đầu từ thứ Hai, ngày 20 tháng 4. Một kịch bản chuyển đổi sẽ được chạy để khắc phục điều này, và sẽ mất từ ​​vài giờ đến vài ngày tùy thuộc vào kích thước của wiki (tối đa một tuần đối với Wikipedia tiếng Anh). [https://phabricator.wikimedia.org/T422544] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.24|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/16|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W16"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:19, ngày 13 tháng 4 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30380527 --> == Bản tin Kỹ thuật: Tuần 17-2026 == <section begin="technews-2026-W17"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/17|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Sau hai năm phát triển, [[mw:Special:MyLanguage/Help:Extension:CodeMirror|{{int:codemirror-beta-feature-title}}]], hay còn được biết đến với tên [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 6]], sẽ được chính thức đưa ra khỏi giai đoạn beta vào thứ 3, ngày 21 tháng 4. Nó mang lại khả năng đọc mã nguồn và mã wiki tốt hơn, giảm thiểu lỗi đánh máy cùng những [[mw:Special:MyLanguage/Help:Extension:CodeMirror|lợi ích]] khác cho tất cả người dùng sử dụng trình tô sáng cú pháp tiêu chuẩn. Xin gửi lời cảm ơn chân thành đến tình nguyện viên [https://phabricator.wikimedia.org/p/Bhsd/ Bhsd] vì đã phát triển nhiều tính năng mới, bao gồm [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Code folding|gấp mã nguồn]], [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Autocompletion|tự động điền]], và [[mw:Special:MyLanguage/Help:Extension:CodeMirror#Linting|kiểm tra lỗi]]. [https://phabricator.wikimedia.org/T259059] * Một bản cập nhật lớn dành cho ứng dụng Wikipedia trên iOS hiện đang được triển khai, nhằm thiết kế lại giao diện để phù hợp với thiết kế trực quan "Liquid Glass" mới nhất của Apple. [https://apps.apple.com/us/app/wikipedia/id324715238 Hãy tải phiên bản mới nhất] và khám phá bản cập nhật này. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|Danh sách đọc]] là một tính năng cho phép người đọc lưu các bài viết vào danh sách để đọc sau. Tính năng này hiện đang trong giai đoạn thử nghiệm beta trên Wikipedia tiếng Ả Rập, tiếng Pháp, tiếng Indonesia, tiếng Việt và tiếng Trung, và được bật mặc định cho tất cả các tài khoản mới trên tất cả các trang Wikipedia. * Một thử nghiệm khám phá việc mở rộng [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|tính năng Xem trước Trang cho trang web di động]] sẽ được triển khai trong tuần ngày 20 tháng 4 trên các trang Wikipedia tiếng Ả Rập, tiếng Anh, tiếng Pháp, tiếng Ý, tiếng Ba Lan và tiếng Việt. Tính năng Xem trước Trang là pop-up hiển thị hình thu nhỏ kèm liên kết mở toàn bộ bài viết từ liên kết xanh, từ đó cải thiện khả năng tìm kiếm nội dung. Tính năng này hiện đã có sẵn trên máy tính để bàn và trong ứng dụng. [[m:Special:MyLanguage/List of experiments in Product and Technology#Template|Đọc thêm về thử nghiệm này cùng những thử nghiệm khác]]. * Trên một số trang wiki, những biên tập viên đã đăng nhập nhưng chưa [[mw:Special:MyLanguage/Help:Email confirmation|xác nhận địa chỉ thư điện tử (email) của mình]] nay có thể nhìn thấy một biểu ngữ khuyến khích họ làm vậy. Việc xác nhận địa chỉ email cho phép người dùng khôi phục quyền truy cập vào tài khoản nếu họ bị mất quyền truy cập đó. [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security#Encouraging users to confirm their email addresses|Tìm hiểu thêm]]. [https://phabricator.wikimedia.org/T421366] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:15}} {{PLURAL:15|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề mà việc sửa đổi các trang wiki rất lớn trong trình soạn thảo mã wiki 2017 gây ra hiện tượng tải chậm, bị trễ khi xem trước và cuộn, cũng như các vấn đề về hiệu suất khi chọn, cắt hay dán nội dung, nay đã được giải quyết. [https://phabricator.wikimedia.org/T184857] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Là một phần của việc nâng cấp [[mw:Special:MyLanguage/Help:Extension:CodeMirror|CodeMirror]] từ tính năng beta lên làm tính năng chính thức, tất cả người dùng sẽ sử dụng [[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] thay vì [[mw:Special:MyLanguage/Extension:CodeEditor|CodeEditor]] làm trình tô sáng cú pháp khi sửa đổi các trang nội dung bằng JavaScript, CSS, JSON, Vue và Lua. [https://phabricator.wikimedia.org/T419332] * Dịch vụ <code>mirrors.wikimedia.org</code> dành cho người dùng Debian và Ubuntu sẽ kết thúc hỗ trợ và ngừng hoạt động vào ngày 15 tháng 5. Tài nguyên dịch vụ này sẽ được thay thế bằng những tùy chọn mới và tốt hơn. Một số người dùng có thể cần phải chuyển sang máy chủ khác, quá trình này sẽ mất khoảng một phút. [https://lists.wikimedia.org/hyperkitty/list/wikitech-l@lists.wikimedia.org/thread/LJYRIS4WB66HIRCAO4GIDTXCMDVZRBMA/ Bạn có thể đọc thêm]. [https://phabricator.wikimedia.org/T416707] * Bảng <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi> sẽ bị loại bỏ khỏi [[wikitech:Help:Wiki Replicas|wikireplicas]]. Nếu công cụ hoặc truy vấn của bạn truy cập trực tiếp vào <bdi lang="zxx" dir="ltr"><code><nowiki>image</nowiki></code></bdi> hoặc <bdi lang="zxx" dir="ltr"><code><nowiki>oldimage</nowiki></code></bdi>, vui lòng cập nhật chúng để sử dụng bảng <bdi lang="zxx" dir="ltr"><code><nowiki>file</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>filerevision</nowiki></code></bdi> trước ngày 28 tháng 5. [https://phabricator.wikimedia.org/T28741] * Sau việc triển khai những giới hạn tần suất truy cập API toàn cục gần đây đối với lưu lượng truy cập không xác định, Quỹ Wikimedia sẽ tiếp tục nỗ lực đảm bảo việc [[mw:Special:MyLanguage/MediaWiki Product Insights/Responsible Reuse|sử dụng hợp lý cơ sở hạ tầng]] bằng cách áp dụng giới hạn toàn cục đối với lưu lượng truy cập API xác định kể từ tuần cuối cùng của tháng 4. Những giới hạn này được cố ý đặt ở mức cao nhất có thể để giảm thiểu tác động đến cộng đồng. Các bot chạy trong Toolforge/WMCS hoặc có quyền thành viên bot trên bất kỳ wiki nào hiện sẽ không bị ảnh hưởng. Dù vậy, tất cả các nhà phát triển được khuyến cáo nên tuân theo những thực tiễn tốt nhất đã được cập nhật. Để biết thêm thông tin, hãy xem [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|API Wikimedia/Giới hạn tần suất]] và [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits/FAQ|Câu hỏi Thường gặp]]. * [[mw:Special:MyLanguage/Attribution API|API Ghi công]] hiện có sẵn dưới dạng [[mw:Special:MyLanguage/Wikimedia APIs/Stability policy|tính năng beta]]. API này lấy thông tin nhằm ghi công các bài viết và tập tin phương tiện của Wikimedia bất kỳ chỗ nào mà chúng được sử dụng. Trang tài liệu tham khảo có sẵn thông qua trang đặc biệt Chỗ thử REST có mặt trên tất cả các trang wiki của Wikimedia (chẳng hạn như [https://en.wikipedia.org/w/index.php?api=attribution.v0-beta&title=Special%3ARestSandbox chỗ thử REST trên Wikipedia tiếng Anh]). Hãy chia sẻ phản hồi của bạn trên [[mw:Talk:Attribution API|trang thảo luận dự án]]. * Tuần này không có phiên bản MediaWiki mới nào. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/17|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W17"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:00, ngày 20 tháng 4 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30432763 --> == Request for comment (global AI policy) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies for writing in English. {{int:Please-translate}} A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}} [[Thành viên:MediaWiki message delivery|MediaWiki message delivery]] ([[Thảo luận Thành viên:MediaWiki message delivery|thảo luận]]) 00:58, ngày 26 tháng 4 năm 2026 (UTC) </bdi> <!-- Tin nhắn của Thành viên:Codename Noreste@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 --> == Bản tin Kỹ thuật: Tuần 18-2026 == <section begin="technews-2026-W18"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/18|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Sẽ có một thay đổi về cách người dùng mới được tự động xác nhận nhằm cải thiện khả năng bảo vệ chống phá hoại. Hiện tại, người dùng đã mở tài khoản được vài ngày và thực hiện được một vài sửa đổi được tự động thêm vào nhóm [[{{int:grouppage-autoconfirmed/{{CONTENTLANGUAGE}}}}|{{int:group-autoconfirmed}}]]. Cấu hình này thường bị một số thành viên phá hoại lợi dụng bằng cách tạo tài khoản và chỉ bắt đầu sử dụng nó sau một khoảng thời gian. Để giảm thiểu điều này, trong tuần tới cấu hình này sẽ được cập nhật sao cho – nhằm mục đích được tự động xác nhận – tuổi của tài khoản sẽ được tính từ sửa đổi đầu tiên của họ, thay vì ngày tạo tài khoản. Giá trị số của ngưỡng tuổi vẫn sẽ được giữ nguyên. Thay đổi này sẽ chỉ được triển khai đến các wiki yêu cầu ít nhất một sửa đổi là một phần trong điều kiện để có thể được tự động xác nhận. [https://phabricator.wikimedia.org/T418484] * Tất cả người dùng Wikipedia đã tạo tài khoản mới và những người đã kích hoạt tùy chọn "tự động bật hầu hết các tính năng beta" trong tùy chọn của mình giờ đây có thể sử dụng tính năng beta [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|danh sách đọc]] để lưu bài viết để đọc sau. Điều này giúp người dùng có thể sắp xếp mọi sở thích đọc ở một nơi để có thể dễ dàng truy cập. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:30}} {{PLURAL:30|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho hình ảnh trong hộp thông tin có khoảng đệm quá lớn trên Firefox đã được giải quyết. [https://phabricator.wikimedia.org/T423676] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Nhắc lại, trong tuần này giới hạn tần suất truy cập API toàn cục sẽ được áp dụng cho lưu lượng truy cập API đã được xác định. Điều này giúp đảm bảo việc [[mw:MediaWiki Product Insights/Responsible Reuse|sử dụng cơ sở hạ tầng một cách hợp lý]]. Các bot chạy trong Toolforge/WMCS hoặc có quyền người dùng bot trên bất kỳ wiki nào hiện tại sẽ không bị ảnh hưởng. Dù vậy, tất cả các nhà phát triển được khuyến cáo tuân theo cách sử dụng thực tiễn được cập nhật. Để biết thêm thông tin, bao gồm giới hạn tần suất truy cập thực tế, xem [[mw:Wikimedia APIs/Rate limits|API Wikimedia/Giới hạn tần suất truy cập]] và [[mw:Wikimedia APIs/Rate limits/FAQ|Câu hỏi Thường gặp]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.26|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/18|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W18"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:06, ngày 27 tháng 4 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30458046 --> == Bản tin Kỹ thuật: Tuần 19-2026 == <section begin="technews-2026-W19"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/19|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Nhóm [[mw:Special:MyLanguage/Article guidance|Chỉ dẫn bài viết]] mời các biên tập viên có kinh nghiệm từ [[mw:Special:MyLanguage/Article guidance/Pilot wikis and collaborators|các trang Wikipedia thí điểm]]—tiếng Ả Rập, tiếng Bengal, tiếng Nhật, tiếng Bồ Đào Nha, tiếng Ba Tư, tiếng Thổ Nhĩ Kỳ, tiếng Anh đơn giản, tiếng Tây Ban Nha và tiếng Pháp—hỗ trợ biên dịch và điều chỉnh [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Category:Pages_using_article_guidance các mẫu dàn ý này]. Những dàn ý này sẽ giúp hướng dẫn các biên tập viên tạo ra các bài viết có cấu trúc tốt, rõ ràng và tuân theo quy định khi sử dụng [https://b24e11a4f1.catalyst.wmcloud.org/wiki/Special:NewArticle tính năng này] dự kiến ra mắt vào tháng 5 năm 2026. Hiện có [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|hướng dẫn đơn giản]] về cách dịch và điều chỉnh những dàn ý này. '''Cập nhật cho biên tập viên''' * [[:m:Special:MyLanguage/Product and Technology Advisory Council|Hội đồng Cố vấn Sản phẩm và Công nghệ]] đã công bố [[:m:Special:MyLanguage/Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|bản thảo đề xuất]] về một mô hình mà các chi nhánh có thể thực hiện theo khi đóng góp vào lĩnh vực kỹ thuật. Mời các thành viên cộng đồng để lại phản hồi về đề xuất này trước ngày 8 tháng 5 [[:m:Talk:Product and Technology Advisory Council/May 2026 draft PTAC recommendation for feedback|trên trang thảo luận]]. * Số lượng tùy chọn về kích thước hình thu nhỏ có sẵn trong MediaWiki sẽ được giảm xuống còn ba tùy chọn tiêu chuẩn—Nhỏ (180px), Trung bình (250px), và Lớn (400px), là một phần của nỗ lực không ngừng nhằm cải thiện hiệu suất và giảm tải cho các dịch vụ hình thu nhỏ. Do đó, các tùy chọn hiện có sẽ được ánh xạ về kích thước mới gần nhất (ví dụ, những lựa chọn kích thước nhỏ hơn như 120px hoặc 150px sẽ hiển thị dưới kích thước 180px, trong khi những lựa chọn lớn hơn như 300px hoặc 360px sẽ hiển thị dưới kích thước 400px). Giao diện tùy chọn sẽ sớm được cập nhật để áp dụng những thay đổi này và người dùng không muốn áp dụng hoặc để lại phản hồi có thể thực hiện điều đó. [https://phabricator.wikimedia.org/T424909] * Từ giờ trở đi, ngay cả khi một quyền tự động hết hạn, người dùng sẽ nhận được thông báo Echo tương tự như thông báo tiêu chuẩn về thay đổi quyền. Có một điểm khác biệt giữa thông báo này và [[m:Special:MyLanguage/Global reminder bot|Global reminder bot]] ở chỗ bot sẽ nhắc người dùng một tuần ''trước khi'' quyền đó hết hạn, để họ có thể gia hạn quyền. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:32}} {{PLURAL:32|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến bộ chọn ngôn ngữ ULS trong [[m:Special:Translate|Đặc biệt:Dịch]] cuộn dọc khi không cần thiết, đã được giải quyết. Trước đây, khi người dùng mở menu thả xuống "Dịch sang tiếng Anh" và nhập một số từ nhất định, hộp thoại sẽ cuộn dọc xuống vài pixel ngay cả khi có đủ không gian để hiển thị tất cả kết quả. Menu thả xuống giờ không còn dịch chuyển một cách không cần thiết khi lọc ngôn ngữ nữa. [https://phabricator.wikimedia.org/T358864] * [[m:Special:GlobalWatchlist|Danh sách Theo dõi Toàn cục]], tính năng cho phép bạn xem các danh sách theo dõi của bạn từ nhiều trang wiki trên cùng một trang, tiếp tục được cải thiện. Ví dụ, danh sách theo dõi cho các trang Wikibase chẳng hạn như [[:d:|Wikidata]] nay hỗ trợ phần tử [[mw:Special:MyLanguage/Extension:EntitySchema|EntitySchema]] để có thể theo dõi tốt hơn. Chế độ Cập nhật Trực tiếp nay làm mới trang đặc biệt sau mỗi 60 giây để tuân theo [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|giới hạn tần suất truy vấn API toàn cục]] được cập nhật để cải thiện khả năng phản hồi theo thời gian thực. Ngoài ra, một lỗi về hướng khiến liên kết hiển thị là "thay đổi 3" thay vì "3 thay đổi" trong danh sách có hướng hỗn hợp đã được giải quyết. [https://phabricator.wikimedia.org/T415450][https://phabricator.wikimedia.org/T424422][https://phabricator.wikimedia.org/T418091] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Giai đoạn thứ hai của [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits|giới hạn tần suất truy vấn API toàn cục]] đã được triển khai để giảm [[diffblog:2026/03/26/quo-vadis-crawlers-progress-and-whats-next-on-safeguarding-our-infrastructure/|tác động của việc thu thập dữ liệu sử dụng AI]] và đảm bảo quyền truy cập hợp lý, bền vững vào các tài nguyên của Wikimedia, ưu tiên lưu lượng truy cập của con người và lưu lượng phù hợp với sứ mệnh. [[mw:Special:MyLanguage/Wikimedia APIs/Rate limits#Limits|Giới hạn]] được chuyển từ mỗi giờ sang mỗi phút, tạo ra những mô hình lưu lượng truy cập mượt mà hơn và tải API dễ đoán hơn. Người dùng cộng đồng dự kiến không bị ảnh hưởng, và không cần phải thực hiện bất kỳ hành động gì. Các dấu hiệu ban đầu cho thấy một số người yêu cầu dựa trên User-Agent đang điều chỉnh hành vi vi, và khoảng 64% lưu lượng truy vấn API tự động đã được xác định. Việc giám sát vẫn tiếp tục, và Wikimedia Enterprise vẫn sẵn sàng để hỗ trợ thương mại. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.46/wmf.27|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/19|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W19"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:43, ngày 4 tháng 5 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30498077 --> == Bản tin Kỹ thuật: Tuần 20-2026 == <section begin="technews-2026-W20"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/20|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Cộng đồng Kỹ thuật đã xuất bản một [[m:Special:MyLanguage/Community Wishlist/How to write a good wish|bộ hướng dẫn mới]] giải thích cách những mong muốn trên Danh sách Mong muốn Cộng đồng được phân loại và xếp ưu tiên. Tài liệu này được tạo ra nhằm mục đích giúp những người đóng góp viết những đề xuất mang tính mạnh mẽ hơn bằng cách làm rõ những yếu tố ảnh hưởng đến việc quyết định ưu tiên. Ngoài yếu tố số phiếu, hướng dẫn này còn nêu bật những yếu tố khác cần xem xét chẳng hạn như tác động tiềm tàng đến cộng đồng khi quyết định nên ưu tiên mong muốn nào. '''Cập nhật cho biên tập viên''' * Nhóm Phát triển Người đọc đang khởi động một thử nghiệm để thử [[mw:Special:MyLanguage/Readers/Reader_Growth/Share_Card|tính năng Chia sẻ Thẻ]] mới cho phép người đọc tạo những thẻ mang tính hấp dẫn về mặt trực quan từ các bài viết hoặc các đề mục bài viết và chia sẻ chúng theo cách trực tuyến, mỗi thẻ liên kết ngược lại về bài viết gốc để giúp mở rộng lượng người đọc và khả năng tìm kiếm bài viết. Thử nghiệm A/B dành riêng cho thiết bị di động này sẽ được cung cấp cho một phần người đọc trên Wikipedia tiếng Ả Rập, tiếng Trung, tiếng Pháp, tiếng Việt và tiếng Anh để có thể hiểu rõ hơn về thói quen đọc và chia sẻ, và dự kiến bắt đầu từ tuần ngày 18 tháng 5 và kéo dài trong bốn tuần. * Ứng dụng Wikipedia trên Android và iOS gần đây đã phát hành [[mw:Special:MyLanguage/Wikimedia_Apps/Team/25th_Birthday_Reading_Challenge|thử thách đọc trong 25 ngày]] lên phiên bản Beta, là một phần của nỗ lực thúc đẩy người đọc tham gia bằng cách khuyến khích người dùng hoàn thành các mốc đọc. Để theo dõi chuỗi đọc của mình trong suốt quá trình thử thách, người dùng Ứng dụng có thể thêm tiện ích Em bé Globe vào màn hình chính của mình. Thử thách sẽ chính thức bắt đầu vào ngày 11 tháng 5. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:17}} {{PLURAL:17|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho tùy chọn toàn cục bật tính năng nổi bật cú pháp trong mã wiki có thể bất ngờ tự tắt ngay sau khi được bật lên, nay đã được giải quyết. [https://phabricator.wikimedia.org/T425286] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[File:Octicons-tools.svg|12px|link=|alt=|Đề mục nâng cao]] Mô đun ResourceLoader <bdi lang="zxx" dir="ltr"><code><nowiki>mediawiki.ui.input</nowiki></code></bdi>, mô đun lỗi thời từ [[m:Special:MyLanguage/Tech/News/2023/39|tháng 9 năm 2023]], sẽ bị loại bỏ trong tuần này. Hiện có [[mw:Special:MyLanguage/Codex/Migrating_from_MediaWiki_UI|hướng dẫn về cách chuyển từ UI MediaWiki sang Codex]] cho bất kỳ công cụ nào sử dụng nó. [https://phabricator.wikimedia.org/T420125] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.2|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/20|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W20"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:20, ngày 11 tháng 5 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30524429 --> == Bản tin Kỹ thuật: Tuần 21-2026 == <section begin="technews-2026-W21"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/21|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Nhóm Abstract Wikipedia đã xác định năm wiki thí điểm tiềm năng để đánh giá mức độ quan tâm của họ đối với việc áp dụng tóm tắt bài viết trên wiki của mình. Các wiki thí điểm là Wikipedia tiếng Malayalam, tiếng Bengali, tiếng Dagbani, tiếng Ả Rập và tiếng Indonesia. Thời gian nhận phản hồi sẽ kéo dài đến hết ngày 22 tháng 5. Nếu cộng đồng của bạn quan tâm đến việc trở thành wiki thí điểm, [[m:Talk:Abstract Wikipedia|hãy cho chúng tôi biết trên Meta]]. '''Cập nhật cho biên tập viên''' * Một thử nghiệm nhằm hiển thị [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Danh sách Đọc]] cho người đọc chưa đăng nhập trên trang web dành cho thiết bị di động sẽ được triển khai vào ngày 18 tháng 5 trên Wikipedia tiếng Đức, tiếng Tây Ban Nha, tiếng Ý, tiếng Bồ Đào Nha, tiếng Ba Lan, tiếng Hà Lan, tiếng Thổ Nhĩ Kỳ và tiếng Urdu Wikipedias, và sẽ kéo dài trong vòng một tháng. Nỗ lực này nhằm hỗ trợ những mục tiêu rộng hơn giúp người đọc lưu và sắp xếp các bài viết để đọc sau, đồng thời khuyến khích những thói quen có thể giúp dẫn đến việc đóng góp cho Wikipedia trong tương lai. * Để hỗ trợ cho nút đánh dấu trong tính năng beta Danh sách Đọc, menu "Công cụ > Tác vụ" đã được cập nhật để hiển thị các biểu tượng, bao gồm cả chỉ báo ngôi sao theo dõi giúp biên tập viên xác định những bài viết được theo dõi tạm thời. Các biểu tượng nay cũng khớp với các biểu tượng được sử dụng trên thiết bị di động, cải thiện tính nhất quán trên các nền tảng. Thay đổi này hiện chỉ giới hạn ở menu tác vụ và chủ yếu ảnh hưởng đến các biên tập viên có quyền thành viên nâng cao. [https://phabricator.wikimedia.org/T426008] * [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Chế độ Đề xuất]] đã được phát hành dưới dạng [[w:en:A/B test|thử nghiệm A/B]] dành cho biên tập viên mới trên trang web dành cho di động tại [[phab:T421189|~15 trang Wikipedia]]. Thử nghiệm này sẽ đo lường tác động của Chế độ Đề xuất đến tỷ lệ những phiên sửa đổi trên trang web dành cho di động của người mới tạo ra những sửa đổi mang tính xây dựng (không bị lùi lại) trên bài viết. Thử nghiệm này cũng sẽ đánh giá tác động của tính năng này đến việc giữ chân người dùng, đồng thời theo dõi những thay đổi về tỷ lệ lùi sửa và cấm. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:27}} {{PLURAL:27|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề trong ứng dụng Wikipedia dành cho Android khi hình ảnh đôi lúc không thể tải được sau khi mở thông báo danh sách đọc đề xuất, nay đã được giải quyết. [https://phabricator.wikimedia.org/T418231] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[mw:Special:MyLanguage/Wikidata Platform|Nhóm Nền tảng Wikidata]] đã công bố [[d:Special:MyLanguage/Wikidata:SPARQL query service/WDQS backend update/Backend Replacement|đề xuất thay thế backend]] và [[wikitech:Wikidata Query Service/WDQS Architecture re-design|kiến trúc kỹ thuật]] kèm theo cho việc di chuyển Dịch vụ Truy vấn Wikidata (WDQS) khỏi Blazegraph. Chúng tôi hoan nghênh mọi phản hồi về đề xuất này cho đến hết ngày 25 tháng 5 năm 2026, đặc biệt là về những thiếu sót tiềm tàng và tác động đến những trường hợp sử dụng (use case) nâng cao. Các thành viên trong cộng đồng Wikidata và người dùng WDQS cũng được khuyến khích giúp xác định những công cụ và quy trình làm việc có tác động lớn cần được chú ý trên [[d:Wikidata:SPARQL query service/WDQS backend update/High-Impact Use Cases|trang này]]. Bạn có thể chia sẻ những phản hồi của mình trên [[d:Wikidata talk:SPARQL query service/WDQS backend update|trang thảo luận về Di chuyển]] hoặc trong [[d:Special:MyLanguage/Wikidata:Blazegraph Migration Office Hours|giờ làm việc tiếp theo]]. Xem [[d:Special:MyLanguage/Wikidata:Wikidata Platform team/Newsletter|bản tin của nhóm WDP]] để biết thêm chi tiết. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.3|MediaWiki]] '''Chuyên sâu''' * Trên Wikipedia tiếng Anh, tiếng Pháp, tiếng Nhật và một số trang Wikipedia khác, một [[diffblog:2025/09/02/better-detecting-bots-and-replacing-our-captcha/|thử nghiệm hCaptcha]], một dịch vụ phát hiện bot từ bên thứ ba, đã được thực hiện. Thử nghiệm này cho thấy hCaptcha phát hiện và ngăn chặn hiệu quả một số hoạt động tự động không thiện ý, bằng cách tự hoạt động lẫn bằng cách cung cấp tín hiệu cho [[w:en:Wikipedia:Village pump (technical)/Archive 225#Introducing SuggestedInvestigations|kiểm định viên và tiếp viên]] để kiểm tra. Vì kết quả thử nghiệm cho kết quả tích cực, hCaptcha sẽ được triển khai trên tất cả các wiki trong một vài tuần tới đây. [[mw:Special:MyLanguage/Product Safety and Integrity/Anti-abuse signals/hCaptcha|Xem trang dự án hCaptcha]] để biết thông tin kỹ thuật về việc triển khai và bảo vệ quyền riêng tư. [[diffblog:2026/05/04/better-detecting-bots-and-replacing-our-captcha-part-2/|Tìm hiểu thêm]]. * Bản cập nhật Công nghệ Cộng đồng số mới nhất hiện đã có sẵn, trong đó có những tiến bộ trong một số sáng kiến ​​​​thuộc Danh sách Mong muốn Cộng đồng, bao gồm việc mở rộng Danh sách Đọc từ ứng dụng di động lên trang web, hỗ trợ thêm ngôn ngữ mới cho "Ai đã viết nó" (Who Wrote That) và Bảng điều khiển Cá nhân, cải thiện khả năng hiển thị 3D và Biểu đồ, cũng như những công việc sắp tới về việc sắp xếp trang thảo luận, khả năng phát âm thanh và quy trình sửa đổi. Bản cập nhật cũng chia sẻ những ưu tiên hiện tại, xu hướng trạng thái danh sách mong muốn và cơ hội để cộng đồng phản hồi về các lĩnh vực trọng tâm trong tương lai cũng như Kế hoạch Hàng năm 2026–2027 của Quỹ Wikimedia. [[m:Special:MyLanguage/Community Wishlist/Updates#May 13, 2026: Latest updates from the Community Tech team|Đọc toàn bộ nội dung bản tin để biết thông tin chi tiết]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/21|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W21"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:21, ngày 18 tháng 5 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30539262 --> == Bản tin Kỹ thuật: Tuần 22-2026 == <section begin="technews-2026-W22"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/22|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Sau [[mw:Special:MyLanguage/Contributors/Account Creation Experiments#LOWM|thử nghiệm tạo tài khoản thành công]], tin nhắn được cải tiến dành cho những sửa đổi của thành viên chưa đăng nhập sẽ được triển khai đến tất cả các wiki của Wikimedia vào tuần đầu tiên của tháng 6. Thay đổi này sẽ chỉ ảnh hưởng đến các thành viên chưa đăng nhập trên trang web di động khi mở một phiên sửa đổi. Việc cập nhật trải nghiệm này được thiết kế để làm rõ hơn việc khuyến khích tạo tài khoản mà vẫn cho phép người dùng sửa đổi bằng tài khoản tạm thời. Kết quả từ thử nghiệm cho thấy tỷ lệ tạo tài khoản tăng lên đáng kể, trong đó tỷ lệ này đối với người dùng nhìn thấy thông báo được cập nhật này đạt mức tăng khoảng 27%. Như dự đoán, khi càng nhiều người tạo tài khoản, số tài khoản tạm thời cũng giảm đi khoảng 16%. Thử nghiệm không cho thấy bất kỳ thay đổi nào đáng kể về tỷ lệ sửa đổi mang tính xây dựng hay bất cứ số liệu đóng góp nào khác được theo dõi. [https://phabricator.wikimedia.org/T424595] '''Cập nhật cho biên tập viên''' * Vì lý do bảo mật, thành viên của một số nhóm người dùng [[m:Special:MyLanguage/Mandatory two-factor authentication for users with some extended rights|bắt buộc phải bật xác thực hai yếu tố]] (2FA). Những thành viên thuộc những nhóm này sẽ không thể tắt đi yếu tố 2FA cuối cùng trên tài khoản của mình, và sẽ không thể thêm người dùng không có 2FA vào những nhóm này. Người dùng vẫn sẽ có thể thêm yếu tố xác thực mới hoặc loại bỏ chúng đi, miễn là có ít nhất một yếu tố được bật liên tục. Trong vòng vài tuần tới đây, người dùng không có 2FA sẽ bị loại bỏ khỏi những nhóm này. Đặc biệt, nó sẽ được áp dụng cho các hành chính viên. Xem tác vụ được liên kết để biết lịch triển khai. [https://phabricator.wikimedia.org/T423119][https://phabricator.wikimedia.org/T423120] * [[m:Special:MyLanguage/WMDE Technical Wishes|Nhóm Mong muốn Kỹ thuật của WMDE]] sẽ chạy một [[w:vi:Thử nghiệm A/B|thử nghiệm A/B]] trên [[:phab:T415904|10 wiki]], nhằm thử nghiệm [[m:WMDE Technical Wishes/References/Reference Previews|những khả năng cải tiến cho tính năng Xem trước Chú thích]]. Thử nghiệm sẽ kéo dài ~2 tuần vào cuối tháng 5 / đầu tháng 6 và sẽ ảnh hưởng tới 10% người đọc trên máy tính đối với các wiki tham gia. * Sau hai thử nghiệm thành công, nhóm Phát triển Người đọc sẽ cho ra mắt tính năng beta [[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|Duyệt Hình ảnh]] trên tất cả các trang Wikipedia trên di động vào ngày 25 tháng 5. Điều này có nghĩa là bất kỳ ai đã bật mặc định tất cả các tính năng beta sẽ bắt đầu nhìn thấy tính năng này, và những người khác có thể đánh dấu hộp kiểm để bật tính năng này lên trong tùy chọn của họ. Tính năng beta này sẽ bao gồm một băng chuyền hiển thị tất cả hình ảnh của bài viết ở đầu bài viết, The beta feature will include a carousel of all an article's images at the top of the article, cùng khả năng điều khiển cho phép biên tập viên có thể [[mw:Readers/Reader_Growth/Image_Browsing#Phase_2.1_beta_feature|loại trừ hình ảnh khỏi băng chuyền của bài viết hoặc loại trừ hoàn toàn một bài viết khỏi tính năng này]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:30}} {{PLURAL:30|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, các tệp STL ba chiều bị hiển thị sai bởi phần mở rộng trình xem phương tiện 3D nay đã được giải quyết. [https://phabricator.wikimedia.org/T416723] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Các class CSS <bdi lang="zxx" dir="ltr"><code><nowiki>tleft</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>tright</nowiki></code></bdi> cũ đã được thay thế bằng <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> do hai class cũ đó không hoạt động một cách nhất quán trên tất cả các nền tảng MediaWiki, đặc biệt là giao diện web di động và ứng dụng di động. Những dự án dựa vào những lớp này được khuyến khích xem xét lại những chỗ sử dụng có liên quan và lên kế hoạch chuyển đổi. Xin lưu ý rằng <bdi lang="zxx" dir="ltr"><code><nowiki>floatleft</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>floatright</nowiki></code></bdi> cũng có thể bị loại bỏ trong tương lai, dù hiện chưa có kế hoạch thực hiện điều này. [[phab:T426452|Đọc thêm]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.4|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/22|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W22"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:52, ngày 25 tháng 5 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Quiddity (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30584502 --> == <span lang="en" dir="ltr">Vote now in the 2026 U4C election</span> == <div lang="en" dir="ltr"> <section begin="announcement-content" /> Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC]. Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" /> </div> [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:15, ngày 27 tháng 5 năm 2026 (UTC) <!-- 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=Distribution_list/Global_message_delivery&oldid=30513860 --> == Bản tin Kỹ thuật: Tuần 23-2026 == <section begin="technews-2026-W23"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/23|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Readers/Reader Experience|Nhóm Trải nghiệm Người đọc]] đang tiến hành một cuộc thử nghiệm nhằm giới thiệu tính năng [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|danh sách đọc]], hiện vẫn đang trong quá trình phát triển, dành cho những người đọc chưa đăng nhập trên thiết bị di động để kiểm tra xem tính năng này có khuyến khích việc tạo tài khoản với tỷ lệ cao hơn so với nút sao theo dõi hay không. [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists#Experiment timeline|Thử nghiệm]] này đã được khởi động vào ngày 18 tháng 5 trên các wiki tiếng Đức, Tây Ban Nha, Ý, Bồ Đào Nha, Ba Lan, Hà Lan, Thổ Nhĩ Kỳ và Urdu, và sẽ kéo dài trong một tháng. * Nhóm Ứng dụng Wikimedia đã phát hành [[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh/Phase 1|Giai đoạn 1]] của giao diện Trang chủ được thiết kế lại cho ứng dụng Android bản Beta. Giao diện Trang chủ mới bao gồm tab "Cộng đồng" được làm mới và tab "Dành cho Bạn" được cá nhân hóa với những đề xuất đọc được cập nhật hàng ngày. Việc thiết kế lại này là một phần trong nỗ lực rộng lớn hơn nhằm cải thiện khả năng tìm kiếm nội dung và tạo ra trải nghiệm học tập hấp dẫn hơn trong các ứng dụng Wikipedia. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:18}} {{PLURAL:18|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến các hình ảnh không thể tải được đối với một số đề xuất sửa đổi trên [[w:Special:Homepage|Đặc biệt:Trang nhà]], làm cho hình thu nhỏ bị kẹt ở trạng thái đang tải, nay đã được giải quyết. [https://phabricator.wikimedia.org/T424048] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.5|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/23|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W23"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:08, ngày 1 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30613639 --> == Bản tin Kỹ thuật: Tuần 24-2026 == <section begin="technews-2026-W24"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/24|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Wikimedia Enterprise đã tăng giới hạn sử dụng miễn phí cho các dịch vụ API của mình. Giới hạn yêu cầu hàng tháng dành cho API Theo yêu cầu đã tăng từ 5.000 lên 50.000 yêu cầu, trong khi giới hạn đối với API Hình chụp nhanh đã tăng từ 15 lên 30 yêu cầu mỗi tháng. Ngoài ra, Nội dung Có cấu trúc của ảnh chụp nhanh hiện đã có sẵn cho các tài khoản miễn phí. Những thay đổi này sẽ mở rộng quyền truy cập vào dữ liệu Wikimedia Enterprise cho các nhà phát triển, nhà nghiên cứu và các tổ chức sử dụng nội dụng Wikimedia. [https://enterprise.wikimedia.com/blog/enhanced-free-api] '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Explore Feed Refresh/Phase 1|Bảng tin Khám phá được làm mới]], nay với tên gọi là Bảng tin Trang chủ, đang được triển khai tới 50% người dùng ứng dụng Wikipedia dành cho Android. Bảng tin Trang chủ giúp người đọc khám phá nội dung liên quan thông qua hai tab mới: ''Cộng đồng'' và ''Dành cho Bạn''. Tab Cộng đồng cung cấp một bảng tin cuộn được chứa những nội dung được chọn lọc cùng những cập nhật từ không gian rộng lớn hơn của cộng đồng và phong trào Wikimedia, trong khi tab ''Dành cho Bạn'' cung cấp trải nghiệm toàn màn hình, có thể vuốt được để hiển thị nội dung được điều chỉnh theo sở thích của người dùng. Việc thiết kế lại này là một phần trong nỗ lực lớn hơn nhằm cải thiện khả năng tìm kiếm và nâng cao trải nghiệm học trong ứng dụng Wikipedia. * Trò chơi giải đố hàng ngày [[mw:Special:MyLanguage/Wikimedia Apps/Team/iOS/"Which came first?" Game|Sự kiện nào diễn ra trước nhỉ?]] nay đã có sẵn trong phiên bản beta của ứng dụng Wikipedia dành cho iOS bằng tiếng Anh, tiếng Đức, tiếng Pháp, tiếng Bồ Đào Nha, tiếng Nga, tiếng Tây Ban Nha, tiếng Ả Rập, tiếng Trung và tiếng Thổ Nhĩ Kỳ. Trò chơi này sử dụng các sự kiện lịch sử từ nội dung trong mục "Ngày này năm xưa" của Wikipedia và thử thách người đọc đoán xem sự kiện nào trong hai sự kiện đã xảy ra trước. Trò chơi này đã được phát hành trên Android trước đây. Những cộng đồng quan tâm đến việc cung cấp trò chơi này bằng ngôn ngữ của mình có thể [[mw:Special:MyLanguage/Wikimedia_Apps/Team/Games#Game availability by language|đọc qua hướng dẫn và yêu cầu]]. * [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Chú thích phụ]], một tính năng MediaWiki mới cho phép biên tập viên tái sử dụng nguồn tham khảo với nhiều chi tiết khác nhau, sẽ bắt đầu được triển khai đến các wiki của Wikimedia sau giải đoạn thí điểm thành công. Việc triển khai sẽ bắt đầu vào ngày 8 tháng 6 đối với hầu hết các [[wikitech:Deployments/Train#Wednesday|wiki Nhóm 1]] và Wikipedia tiếng Pháp, trong khi các phiên bản ngôn ngữ khác của Wikipedia sẽ nhận được tính năng này trong những tháng tới. Các cộng đồng được khuyến khích chuẩn bị bằng cách kiểm tra [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-cite&language=en&action_source=search&filter=%21translated&optional=1&action=translate các thông báo chưa được dịch của phần mở rộng Cite] bằng ngôn ngữ của họ và xem xét bất kỳ việc sử dụng [[mw:Special:MyLanguage/Reference Tooltips|Chú thích nổi]] nào, chúng có thể cần phải được [[:phab:T416304#11668731|cập nhật]] để hỗ trợ chức năng mới này. Những wiki sử dụng [[mw:Special:MyLanguage/Help:Reference Previews|Xem trước Chú thích]] không cần phải thực hiện bất kỳ hành động nào. Các cộng đồng cũng có thể mong muốn tạo [[Special:TrackingCategories|thể loại theo dõi]] ''cite-tracking-category-ref-details'' dưới dạng thể loại ẩn sử dụng <code><nowiki>__HIDDENCAT__</nowiki></code> (hoặc một bản mẫu chuyên dụng), và kết nối nó với khoản mục Wikidata [[d:Q129764848]] tương ứng. [https://phabricator.wikimedia.org/T425662] * [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews#Experimentation|Thử nghiệm Xem trước Trang]] trên giao diện web di động đã kết thúc. Nhóm đã quyết định không triển khai tính năng này sau khi kết quả cho thấy rằng không có tác động đáng kể nào về mặt thống kê lên tỷ lệ giữ chân người đọc, vì chỉ số thành công chính là việc cải thiện tỷ lệ giữ chân người đọc. Tính năng Xem trước Trang, vốn đã có sẵn trên máy tính để bàn và trong ứng dụng, hiển thị hình thu nhỏ, đoạn mở đầu và liên kết đến bài viết đầy đủ khi người đọc nhấn vào liên kết xanh. Thử nghiệm này đã thử trải nghiệm này trên giao diện web di động trên sáu trang Wikipedia. * [[mw:Special:MyLanguage/Codex/Design/Icons|Thư viện biểu tượng giao diện người dùng]] sẽ được [[phab:T399175|cập nhật vào cuối tuần này hoặc đầu tuần sau]]. Hầu hết trong số ~300 biểu tượng đã được điều chỉnh một chút và ~30 biểu tượng mới đã được thêm vào. Những thay đổi này cải thiện các biểu tượng để làm cho chúng thêm nhất quán và dễ hiểu hơn, đồng thời mang lại sự cân bằng trực quan hơn khi chúng được sử dụng theo nhóm. * Giao diện [[mw:Special:MyLanguage/Universal Language Selector|Bộ chọn Ngôn ngữ Toàn cục]] (ULS) trong MediaWiki, công cụ giúp người dùng chọn nội dung bằng các ngôn ngữ khác, đã được cập nhật. Phiên bản mới cải thiện tốc độ và khả năng truy cập, đồng thời giờ đây người dùng trên các dự án Wikimedia có thể ghim các ngôn ngữ để chuyển đổi ngôn ngữ một cách nhanh chóng hơn. Việc triển khai lên các trang web của Wikimedia sẽ diễn ra dần dần trong những tuần tới. Bạn có thể thử nghiệm tính năng này ngay bây giờ bằng cách chọn [[Special:Preferences#mw-prefsection-betafeatures|tính năng beta]] trong tùy chọn hồ sơ của mình và chia sẻ phản hồi của bạn trên [[mw:Special:MyLanguage/Universal Language Selector/New ULS|trang dự án]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:21}} {{PLURAL:21|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến bảng điều khiển Phân tích Lượt xem Trang trên pageviews.wmcloud.org ngừng cập nhật dữ liệu đồ thị vào tháng 5 năm 2026, ảnh hưởng đến tất cả người dùng, đã được giải quyết. [https://phabricator.wikimedia.org/T427171] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Chữ ký hàm cho <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink()</nowiki></code></bdi> đã được đơn giản hóa. Các nhà phát triển nay có thể truyền một đối tượng cấu hình thay vì một danh sách các tham số vị trí khi tạo liên kết portlet. Chữ ký hàm trước đây vẫn được hỗ trợ để đảm bảo khả năng tương thích ngược. Ví dụ, thay vì: <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', '#', 'Stub', 'ca-stubtag', 'Add a stub tag to this page');</nowiki></code></bdi> sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>mw.util.addPortletLink('p-cactions', { href: '#', text: 'Stub', id: 'ca-stubtag', tooltip: 'Add a stub tag to this page' });</nowiki></code></bdi>. Những người bảo trì đoạn mã được khuyến khích xem chỗ nào hiện đang sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>addPortletLink()</nowiki></code></bdi> và cập nhật chúng nếu thích hợp. Thay đổi này sẽ có mặt trên tất cả các wiki từ ngày 11 tháng 6. Xin cảm ơn tình nguyện viên cộng đồng Gerges đã đóng góp cải tiến này. [https://phabricator.wikimedia.org/T427945] * '''Thảo luận về Danh sách Mong muốn của Cộng đồng''': Nhóm Sản phẩm & Công nghệ [[m:Special:MyLanguage/Community Wishlist/Updates#May 20, 2026: Community Tech becomes a program|đã đưa ra những thay đổi]] nhằm mục đích tăng số lượng và độ phức tạp của những mong muốn được đáp ứng, bao gồm cả việc giải thể nhóm Công nghệ Cộng đồng. Họ đang [[m:Special:MyLanguage/Community Wishlist/Updates|tham gia thảo luận]] về một [[m:Talk:Community Wishlist#Proposed direction for Wishlist|đề xuất hướng đi cho danh sách mong muốn]] từ các thành viên cộng đồng. Bao gồm những cách để cấu trúc việc bỏ phiếu hàng năm, theo dõi mong muốn một cách tốt hơn, loại bỏ các lĩnh vực trọng tâm, và [[m:Special:MyLanguage/Community Wishlist/Updates|điều chỉnh việc quản lý nhân sự]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.6|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/24|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W24"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:30, ngày 8 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30650573 --> == Bản tin Kỹ thuật: Tuần 25-2026 == <section begin="technews-2026-W25"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/25|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[mw:Special:MyLanguage/Readers/Reader Growth|Nhóm Tăng trưởng Độc giả]] đã cho ra mắt tính năng beta [[mw:Special:MyLanguage/Readers/Reader Growth/Image Browsing|Duyệt Hình ảnh]] trên phiên bản web của thiết bị di động tại tất cả các phiên bản Wikipedia. Tính năng này hiển thị ở đầu bài viết một băng chuyền hình ảnh gồm 3 hình ảnh trở lên. Biên tập viên có thể cấu hình cho tính năng này với những thao tác sau: để ẩn một hình ảnh cụ thể khỏi một trang, hãy sử dụng <code>class=notpageimage</code> để loại trừ nó khỏi bản xem trước, hay dùng <code>class=noviewer</code> để loại trừ nó khỏi MediaViewer. Băng chuyền Hình ảnh còn có thể được tắt hoàn toàn ở một trang, với magic word <code><nowiki>__NOMEDIAVIEWERCAROUSEL__</nowiki></code>. Để gửi phản hồi hoặc báo cáo lỗi, hãy truy cập [[mw:Talk:Readers/Reader Growth/Image Browsing|trang dự án]]. * [[mw:Special:MyLanguage/Help:Tables#class="wikitable"|Wikitables]] nay đã có thể được [[mw:Special:MyLanguage/Help:Sortable tables#Forcing the initial sort direction|sắp xếp theo thứ tự giảm dần]] ngay lần nhấp chuột đầu tiên bằng cách thêm <code dir=ltr>data-sort-order="desc"</code> cho ô tiêu đề. Trước đây, theo mặc định, lần nhấp chuột đầu tiên vào tiêu đề cột sẽ sắp xếp cột theo thứ tự tăng dần. Sự bổ sung này cho Wikitable mang lại khả năng kiểm soát và tính linh hoạt cao hơn, trong khi hành vi mặc định cho những lần nhấp chuột tiếp theo vẫn được giữ nguyên. [https://phabricator.wikimedia.org/T398416] '''Cập nhật cho biên tập viên''' * Tính năng [[mw:Special:MyLanguage/Article guidance|Hướng dẫn bài viết]] hiện đang được thử nghiệm đối với một số biên tập viên tạo các bài viết mới trên các trang Wikipedia tiếng Anh đơn giản, tiếng Pháp và tiếng Thổ Nhĩ Kỳ. Thử nghiệm cũng sẽ sẽ sớm bắt đầu trên Wikipedia tiếng Ả Rập và tiếng Bengali. [[w:simple:Special:NewArticle|Tính năng này]] cung cấp cho các biên tập viên hướng dẫn do cộng đồng biên soạn để giúp họ tạo ra những bài viết tuân thủ tiêu chuẩn cộng đồng. Các biên tập viên có kinh nghiệm có thể tiếp tục tạo hoặc điều chỉnh dàn ý cho những loại bài viết cụ thể thường được tạo bởi những người đóng góp ít kinh nghiệm hơn. Những dàn ý này hướng dẫn các biên tập viên ít kinh nghiệm hơn trong việc tạo những bài viết chất lượng cao. Hướng dẫn nhanh về các ký hiệu được sử dụng trong dàn ý có thể được tìm thấy trên [[mw:Special:MyLanguage/Article guidance/Test feature guide#Markups in outlines|trang này]]. [[w:simple:Wikipedia:Article Guidance|Ví dụ về dàn ý]] có thể được điều chỉnh và hướng dẫn cách điều chỉnh chúng nằm trên [[mw:Special:MyLanguage/Article guidance#Adapting a sample outline in a Wikipedia|phần này]] của trang dự án. * Wiki mong muốn thay thế nút "vô thời hạn" trong Đặc biệt:Cấm dành cho tài khoản tạm thời (ví dụ, wiki chỉ cấm tài khoản tạm thời đến khi tài khoản đó hết hạn) sẽ có thể thực hiện điều đó bằng cách tạo [[MediaWiki:ipb-indefinite-expiry-temporary-account]] với khoảng thời gian cấm mà họ muốn. [https://phabricator.wikimedia.org/T427125] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:41}} {{PLURAL:41|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Đến cuối tháng 6, việc sử dụng một chuỗi user-agent hợp lệ là bắt buộc để tải xuống tự động các dump từ trang web dumps.wikimedia.org. Những yêu cầu tự động cung cấp user-agent trống hoặc chung chung sẽ bị chặn. Điều này [[phab:T400119|sẽ mở rộng việc thực thi]] [[foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|quy định về user-agent]] đã có từ lâu. Quyền truy cập tới Dịch vụ Đám mây của Wikimedia sẽ không thay đổi. * Quá trình triển khai [[mw:Wikimedia APIs/Rate limits|giới hạn truy cập API]] toàn cục đã hoàn tất, các giới hạn được áp dụng trên tất cả các API và ở tất cả các mức độ được ghi nhận cho tất cả các nhóm. Các bot chạy trong Toolforge/WMCS hoặc có quyền người dùng bot trên bất kỳ wiki nào vẫn được miễn trừ. Tất cả các bot nên tiếp tục theo những thực tiễn tốt nhất được ghi nhận để tránh bị vượt giới hạn truy cập. * [https://api.wikimedia.org/wiki/Main_Page Wiki Cổng API] sẽ ở chế độ chỉ đọc kể từ tuần này (15-18 tháng 6). Vào tuần tới (22-25 tháng 6), tất cả các URL của wiki Cổng API sẽ chuyển hướng đến [[mw:Wikimedia APIs|API Wikimedia trên mediawiki.org]]. Tìm hiểu thêm trên [[wikitech:API Portal/Deprecation|trang dự án]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.7|MediaWiki]] '''Các cuộc họp và sự kiện''' * Vào ngày 17 tháng 6 lúc 18:00 giờ UTC WMF sẽ tổ chức một cuộc gọi Discord tập trung vào việc đánh giá code. Chúng tôi đã lắng nghe thông qua [[mw:Special:MyLanguage/Developer Satisfaction Survey/2026|Khảo sát Sự hài lòng của Nhà phát triển]] rằng các tình nguyện viên đang gặp khó khăn trong việc đánh giá code và chúng tôi muốn thảo luận về những trải nghiệm này với mục tiêu tìm ra những giải pháp khả thi. Bạn có thể tham gia cuộc gọi [https://discord.gg/wikipedia?event=1514727511102062664 thông qua máy chủ Discord Cộng đồng Wikimedia]. * [[m:Special:MyLanguage/Conferencia Wikimedia de América Latina 2026|Hội nghị Wikimedia Mỹ La-tinh]] sẽ tổ chức cuộc thi hackathon khu vực quy tụ cộng đồng kỹ thuật của phong trào Wikimedia, gồm những nhà phát triển, quản trị viên hệ thống, nhà khoa học dữ liệu và các thành viên có quyền mở rộng. Những người đóng góp kỹ thuật quan tâm có thể [https://docs.google.com/forms/d/e/1FAIpQLSf4osJzTHBJjQbYJk7TMVEJjTEQv7IgtsUDfP-o-qTgeRQQxw/viewform đăng ký học bổng] tham gia cho đến nửa đêm ngày 21 tháng 6 (giờ Bolivia, UTC-4). * Hãy đăng ký tham gia Thử thách Nhóm của Wikimania để góp mặt tại sự kiện đặc biệt này. Thử thách nhóm sẽ diễn ra trực tuyến và trực tiếp từ ngày 21 đến 22 tháng 7, trước hội nghị Wikimania. Mọi người đều có thể tham gia, bất kể kỹ năng hay việc đăng ký Wikimania trước đó như thế nào. Các nhóm sẽ cùng nhau giải quyết 10 thử thách quan trọng trong việc hỗ trợ cộng đồng Wikimedia. Để biết thêm chi tiết, hãy truy cập [[wmania:Special:MyLanguage/2026:Team challenges|trang Thử thách Nhóm]] và [https://wikimedia.eventyay.com/wm/teamchallenges/ đăng ký tại đó]. Cổng đăng ký sẽ đóng vào ngày 20 tháng 6 lúc 23:00 UTC. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/25|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W25"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:48, ngày 15 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:UOzurumba (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30689604 --> == Bản tin Kỹ thuật: Tuần 26-2026 == <section begin="technews-2026-W26"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/26|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[mw:Special:MyLanguage/Growth/Feature summary|Các tính năng Phát triển (Growth)]] [[phab:T418115|nay đã có mặt trên Wikidata]]. Bản cập nhật này cho phép truy cập vào chức năng Cố vấn ([[mw:Special:MyLanguage/Help:Growth/Mentorship|nếu được cấu hình]]), mô đun Tác động, Bảng Trợ giúp và Trang chủ dành cho Người mới được đơn giản hóa (không có Đề xuất sửa đổi). Các bảo quản viên Wikidata vẫn đang cấu hình các tính năng thông qua Cấu hình Cộng đồng. '''Cập nhật cho biên tập viên''' * Trang đặc biệt [[{{#special:RangeCalculator}}]] đã được tạo. Trang này cho phép người dùng tìm một dải IP mà không cần phải dựa vào các công cụ bên ngoài. Cho đến hiện tại, công cụ này chỉ có sẵn cho các kiểm định viên. [https://phabricator.wikimedia.org/T268429] * [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing|Chú thích phụ]] là một tính năng mới của MediaWiki cho phép biên tập viên tái sử dụng các nguồn tham khảo với những chi tiết khác nhau. Tính năng này sẽ được triển khai đến hầu hết các phiên bản ngôn ngữ Wikipedia quy mô nhỏ và trung bình vào ngày 23 tháng 6. Trang [[m:Special:MyLanguage/WMDE Technical Wishes/Sub-referencing#deployment|Câu hỏi thường gặp]] liệt kê những hành động có thể thực hiện trên wiki của bạn để hỗ trợ việc triển khai này. Hãy kiểm tra [[:phab:T414094|kế hoạch triển khai]] để biết các bước triển khai tiếp theo. [https://phabricator.wikimedia.org/T428902] * Bắt đầu từ tuần sau, người dùng sẽ nhận được một thông báo khi họ bị cấm sửa đổi hoặc được bỏ cấm sửa đổi, hoặc khi lệnh cấm thay đổi. [https://phabricator.wikimedia.org/T100974] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:32}} {{PLURAL:32|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Bắt đầu từ tuần tới, các bộ lọc sai phạm được đặt ở mức "yêu cầu xác minh CAPTCHA" sẽ bắt đầu ảnh hưởng đến cả những người dùng có quyền <code>skipcaptcha</code>, bao gồm hầu hết những người dùng có quyền tự động xác nhận. Các bot sẽ được miễn trừ. Thay đổi này sẽ chỉ ảnh hưởng đến những sửa đổi kích hoạt bộ lọc sai phạm. Quyền <code>skipcaptcha</code> vẫn sẽ tiếp tục giúp người dùng được miễn yêu cầu xác minh CAPTCHA trong quá trình sử dụng wiki thông thường. [https://phabricator.wikimedia.org/T402595] * Tài liệu tham khảo cho [[wikitech:Machine_Learning/LiftWing/API|API Lift Wing]] đã được chuyển từ Cổng API sang [https://wikitech.wikimedia.org/w/index.php?api=lift-wing&title=Special%3ARestSandbox Chỗ thử REST] mang tính tương tác. * Wiki Cổng API hiện đã đóng. Để xem tài liệu API, hãy xem [[mw:Special:MyLanguage/Wikimedia_APIs|API Wikimedia trên mediawiki.org]]. Tất cả các URL của wiki Cổng API (https://api.wikimedia.org/wiki/) sẽ đổi hướng tới trang mediawiki.org bắt đầu từ ngày 22 tháng 6. [https://phabricator.wikimedia.org/T427537] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.8|MediaWiki]] '''Các cuộc họp và sự kiện''' * Hãy tham gia cuộc gọi trực tuyến vào ngày 25 tháng 6 lúc 2:30 chiều giờ UTC để gặp gỡ các thực tập sinh hiện tại của Wikimedia cho [[mw:Google_Summer_of_Code/2026|Google Summer of Code]] và [[mw:Outreachy/Round_32|Outreachy]]. Các thực tập sinh sẽ giới thiệu tổng quan về các dự án của họ và demo ngắn gọn công việc mà họ đã thực hiện cho đến nay. Người tham dự được khuyến khích [[mw:event:Google_Summer_of_Code/Summer_2026_June_Internship_open_session|chia sẻ ý tưởng và kết nối trong cộng đồng của họ]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/26|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W26"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13:05, ngày 23 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Trizek (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30722494 --> == RFC about AI-generated content in Wikimedia Commons == <bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|thảo luận]])</bdi> 17:12, ngày 23 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Codename Noreste@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == <span lang="en" dir="ltr">Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki</span> == <div lang="en" dir="ltr"> <section begin="Message"/> '''Legal & Safety Contacts''' Hello community, the Wikimedia Foundation has provided a [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement. We have already rolled out links to English, German, Italian, Spanish and other wikis and we will deploy to your wiki soon. [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Please read more on the project page]] and leave any comments in this thread or on the [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|talk page]]. <section end="Message"/> </div> -- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 13:31, ngày 25 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Sannita (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 --> == Bản tin Kỹ thuật: Tuần 27-2026 == <section begin="technews-2026-W27"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/27|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Là một phần của [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|Thử nghiệm Tạo Tài khoản]], nhóm Phát triển đã thử nghiệm việc thêm biểu tượng tài khoản người dùng vào tiêu đề trang web trên di động dành cho người dùng chưa đăng nhập, cung cấp quyền truy cập trực tiếp vào các tác vụ "Tạo tài khoản" và "Đăng nhập". Thử nghiệm đã tăng số tài khoản được tạo lên khoảng 20% mà không ảnh hưởng tiêu cực đến chất lượng sửa đổi hoặc tỷ lệ sửa đổi mang tính xây dựng. Tính năng này giờ sẽ được triển khai đến tất cả các trang wiki của Quỹ Wikimedia trên giao diện web di động trong tuần đầu tiên của tháng 7. [https://phabricator.wikimedia.org/T428220] * Sau một [[phab:T426248|thử nghiệm thành công]], người dùng đã đăng nhập nhưng chưa [[mw:Special:MyLanguage/Help:Email_confirmation|xác nhận địa chỉ email của mình]] khi tạo tài khoản sẽ nhìn thấy một biểu ngữ mới yêu cầu họ hoàn tất quy trình đó. Điều này giúp giảm nguy cơ người dùng bị mất quyền truy cập vào tài khoản của họ, và làm cho địa chỉ email của tài khoản nói chung trở nên đáng tin cậy hơn. Đây là một phần của dự án [[mw:Special:MyLanguage/Product Safety and Integrity/Account Security|Bảo mật Tài khoản]]. [https://phabricator.wikimedia.org/T428292] * Một bản cập nhật cho tính năng [[Special:Search|Tìm kiếm]] sẽ tinh chỉnh cách <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> hoạt động khi được sử dụng để loại trừ kết quả. Trước đây, việc sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> với phủ định có thể vô tình mở rộng kết quả tìm kiếm bằng cách thêm các không gian tên nằm trong phạm vi tìm kiếm, dẫn đến hành vi gây khó hiểu đối với những người dùng mong đợi một bộ lọc loại trừ đơn giản. Với lần cập nhật này, <bdi lang="zxx" dir="ltr"><code><nowiki>-prefix:</nowiki></code></bdi> nay sẽ loại trừ chặt những tiêu đề trang trùng khớp như mong đợi và có thể hiển thị cảnh báo nếu không gian tên có liên quan không được chọn một cách rõ ràng. Mặc dù vậy, hành vi của <bdi lang="zxx" dir="ltr"><code><nowiki>prefix:</nowiki></code></bdi> khi không có phủ định vẫn sẽ không thay đổi. [https://phabricator.wikimedia.org/T427443] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:33}} {{PLURAL:33|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố khiến người đánh giá sử dụng thanh công cụ Quản lý Trang (Page Curation) không tự động được đăng ký theo dõi các cuộc thảo luận mà họ bắt đầu bình luận trên trang nay đã được giải quyết. Người đánh giá giờ sẽ nhận được thông báo khi có người nào đó trả lời những cuộc thảo luận này. [https://phabricator.wikimedia.org/T329346] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Kể từ ngày 29 tháng 6, các lượt tải xuống tự động từ trang dumps.wikimedia.org sẽ phải tuân theo [[Foundation:Special:MyLanguage/Policy:Wikimedia Foundation User-Agent Policy|quy định về user-agent]]. Các yêu cầu tự động mà cung cấp user-agent trống hoặc chung chung sẽ bị chặn. Việc truy cập vào các bản sao lưu (dump) thông qua Dịch vụ Đám mây Wikimedia sẽ không bị ảnh hưởng. Đây là thông báo tiếp theo sau thông báo được đưa ra trong [[m:Special:MyLanguage/Tech/News/2026/25|Bản tin Kỹ thuật số 25-2026]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.9|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/27|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W27"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 11:48, ngày 29 tháng 6 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30744833 --> == <span lang="en" dir="ltr">Tech News: 2026-28</span> == <div lang="en" dir="ltr"> <section begin="technews-2026-W28"/><div class="plainlinks"> Latest '''[[m:Special:MyLanguage/Tech/News|tech news]]''' from the Wikimedia technical community. Please tell other users about these changes. Not all changes will affect you. [[m:Special:MyLanguage/Tech/News/2026/28|Translations]] are available. '''Updates for editors''' * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] View all {{formatnum:34}} community-submitted {{PLURAL:34|task|tasks}} that were [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|resolved last week]]. For example, an issue where the search bar results on Wikidata, showed English results instead of using the correct language fallback for users of language variants, has now been fixed. Search suggestions will now follow the expected language fallback chain. [https://phabricator.wikimedia.org/T429769] '''Updates for technical contributors''' * In preparation for [[m:Special:MyLanguage/Event:Celebrate Women|Celebrate Women campaign]] planned for March 2027, the Wikimedia Foundation’s [[m:Special:MyLanguage/Wikimedia Foundation/Advancement/Community Growth/Content Enablement|Content Enablement team]] has launched a 22-question survey to better understand technical contributions by women+ (anyone who identifies as a woman) across Wikimedia projects. The survey takes approximately 15–20 minutes to complete and will remain open until 20 July 2026. The [[m:Special:MyLanguage/Celebrate Women/Technical contributions survey|questions]] are also available on-wiki for review in advance. * The [[mw:Special:MyLanguage/Extension:Score|Score extension]] now supports rendering music scores as SVG images in addition to PNG, addressing a long-standing [[:phab:T49578|feature request]] and resolving historical image quality issues. Both formats are now provided to clients, with PNG in the <bdi lang="zxx" dir="ltr"><code><nowiki>src</nowiki></code></bdi> attribute and SVG in the <bdi lang="zxx" dir="ltr"><code><nowiki>srcset</nowiki></code></bdi> attribute. * The new [[wikitech:Parsoid|Parsoid]] parser [[mw:Special:MyLanguage/Parsoid/Parser_Unification/Updates|continues to be deployed to additional wikis]], making it easier to introduce new reading and editing features. It was enabled on French Wikipedia, bringing total progress to covering 78.9% of Wikipedia page views. Rollout to English Wikipedia desktop will progress through this week. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Recurrent item]] Detailed code updates later this week: [[mw:MediaWiki 1.47/wmf.10|MediaWiki]] '''In depth''' * The Wikimedia Hackathon 2026 [[diffblog:2026/06/29/wikimedia-hackathon-2026-building-collaborating-and-shaping-the-future-together/|recap blog post]] is now live. It highlights the projects, sessions, and social activities from this year’s event, and shares initial plans for the 2027 Wikimedia Hackathon. '''''[[m:Special:MyLanguage/Tech/News|Tech news]]''' prepared by [[m:Special:MyLanguage/Tech/News/Writers|Tech News writers]] and posted by [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Contribute]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/28|Translate]]&nbsp;• [[m:Tech|Get help]]&nbsp;• [[m:Talk:Tech/News|Give feedback]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Subscribe or unsubscribe]].'' </div><section end="technews-2026-W28"/> </div> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 13:57, ngày 6 tháng 7 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30773578 --> == Bản tin Kỹ thuật: Tuần 29-2026 == <section begin="technews-2026-W29"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/29|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Tính năng [[mw:Special:MyLanguage/Growth/Revise_Tone|Xem lại Giọng văn]] giúp người mới xác định những đoạn văn trong bài viết Wikipedia mà có thể chứa ngôn ngữ không bách khoa và khuyến khích họ xem xét lại giọng văn đó. Tính năng này đã được [[w:en:A/B_testing|thử nghiệm A/B]] trên các Wikipedia tiếng Ả Rập, tiếng Anh, tiếng Pháp và tiếng Bồ Đào Nha, tại đó tỷ lệ hoàn thành nhiệm vụ của người mới [[mw:Special:MyLanguage/Growth/Revise_Tone#Experiment_Results|tăng 38.7%]] so với nhiệm vụ Hiệu đính mặc định, mà không làm giảm chất lượng sửa đổi. Cuộc thử nghiệm đã kết thúc vào ngày 9 tháng 7 và tính năng này nay đã có sẵn cho tất cả mọi người trên các wiki này, đồng thời có thể cấu hình được thông qua Cấu hình Cộng đồng. [[phab:T426364|Kế hoạch]] dự kiến là sẽ phát hành Xem lại Giọng văn đến nhiều trang wiki hơn. * Cấu hình cộng đồng cho phép [[mw:Special:MyLanguage/Help:Growth/Mentorship#Automated mentor list cleanup|tự động loại bỏ cố vấn không hoạt động]] dựa trên các tiêu chí có thể cấu hình được sẽ được kích hoạt vào thứ 5, ngày 16, [[mw:Special:MyLanguage/Growth/Deployment|trên một số wiki]] để đảm bảo danh sách cố vấn được cập nhật. Cố vấn là những người đóng góp có kinh nghiệm, tự nguyện tham gia giúp đỡ người dùng mới trên wiki thông qua [[mw:Special:MyLanguage/Growth/Feature summary|Tính năng Phát triển (Growth)]]. Bảo quản viên nay có thể chuẩn bị các cài đặt thông qua [[w:Special:CommunityConfiguration/Mentorship|Đặc biệt:Cấu hình Cộng đồng/Cố vấn]]; những cài đặt này sẽ có hiệu lực kể từ thứ 5. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:38}} {{PLURAL:38|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố khiến một số người dùng ứng dụng Wikipedia trên thiết bị Android bị đăng xuất ngay sau khi đăng nhập, khiến họ không thể duy trì trạng thái đăng nhập và sửa đổi trang, nay đã được giải quyết. [https://phabricator.wikimedia.org/T316916] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Việc sửa đổi trang thông qua đoạn mã người dùng hoặc tiện ích khiến cho nhãn danh sách theo dõi mà người dùng gán cho trang đó bị đặt lại. Vấn đề này nay đã được giải quyết. [https://phabricator.wikimedia.org/T423778] * Để khắc phục lỗi Safari (xem [[phab:T425211]]), trên các wiki đã kích hoạt Parsoid, các liên kết wiki href nay sử dụng urls tuyệt đối thay vì url tương đối theo giao thức. Đầu ra API REST vẫn sẽ không thay đổi và sẽ tiếp tục sử dụng url tương đối theo giao thức. Các tiện ích, đoạn mã người dùng, bot và CSS có thể cần được điều chỉnh nếu chúng dựa vào sự hiện diện của url tương đối theo giao thức trong các liên kết wiki href. [https://phabricator.wikimedia.org/T431358] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.11|MediaWiki]] '''Chuyên sâu''' * Nhóm Nền tảng Thử nghiệm của Quỹ Wikimedia đã đăng bài viết trên blog phản ánh về năm đầu tiên thực hiện thử nghiệm có cấu trúc của họ. Bài viết nêu bật những thử nghiệm thành công như Kiểm tra Chép dán, Kiểm tra Nguồn tham khảo và Kiểm tra Giọng văn, những thử nghiệm đã cải thiện kết quả sửa đổi và được triển khai cho nhiều người dùng hơn, cũng như những thử nghiệm không dẫn đến việc thay đổi sản phẩm. [[diffblog:2026/07/07/moving-the-needle-how-we-test-new-ideas-across-wikimedia-projects|Đọc thêm]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/29|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W29"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 16:11, ngày 13 tháng 7 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30804401 --> == Bản tin Kỹ thuật: Tuần 30-2026 == <section begin="technews-2026-W30"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/30|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Reader/Reader Experience|Nhóm Trải nghiệm Người đọc]] đã kết hợp phản hồi của cộng đồng xoay quanh vị trí của các nút sao theo dõi và nút danh sách theo dõi đối với [[mw:Special:MyLanguage/Readers/Reader Experience/WE3.3.4 Reading lists|tính năng beta Danh sách Đọc]], nhằm cho phép lưu lại các bài viết để đọc sau – một [[m:Special:MyLanguage/Community Wishlist/W102|mục danh sách mong muốn]] để đưa chức năng này lên web. Các biên tập viên được mời kích hoạt tính năng beta để thử nghiệm tính năng này và [[phab:T426453|chia sẻ suy nghĩ của mình]]. * [[mw:Special:MyLanguage/VisualEditor/Suggestion Mode|Chế độ Đề xuất]] cung cấp những đề xuất sửa đổi trong Trình Soạn thảo Trực quan để cải thiện các bài viết trên Wikipedia. [[Special:EditChecks|Mọi đề xuất]] đều [[mw:Special:MyLanguage/Help:Suggestion mode#For administrators – local customization|có thể được cộng đồng cấu hình]]. Tính năng [[mw:Special:MyLanguage/Edit check/TextMatch|Văn bản Khớp chính xác]] (TextMatch) là một cách giúp cho các tình nguyện viên có thể tạo đề xuất tùy chỉnh cục bộ. Tính năng này tìm kiếm các chuỗi văn bản trong bài viết, và nay cũng bao gồm việc hỗ trợ cho các biểu thức chính quy. Điều này mang lại cho các tình nguyện viên độ chính xác và tính linh hoạt cao hơn đối với những loại đề xuất mà họ có thể tạo ra cục bộ. Lưu ý: Đề xuất [[mw:Special:MyLanguage/Edit check/Configuration#:~:text=maximumEditcount|có thể được nhắm tới]] dựa trên số lần sửa đổi của người thực hiện sửa đổi cũng như các khía cạnh khác của trang. Bạn có thể [[mw:Special:MyLanguage/Help:Suggestion mode#Create custom local types of Suggestions|tìm ví dụ từ các cộng đồng khác]] để lấy cảm hứng, kể cả việc sử dụng Văn bản Khớp chính xác nhằm phát hiện: lỗi chính tả, lỗi ngữ pháp, có khả năng quảng cáo, lời sáo rỗng, cách sử dụng dấu gạch ngang hoặc dấu gạch nối không chính xác, từ khóa thời gian không cụ thể, tên lỗi thời, v.v. Bất kỳ [[mw:Special:MyLanguage/Talk:VisualEditor/Suggestion Mode|phản hồi]] nào đều được chúng tôi hoan nghênh. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:27}} {{PLURAL:27|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, sự cố về công cụ SVG Translate khiến cho nó có thể sử dụng phiên bản tập tin lỗi thời, khiến các bản dịch hiện có bị ghi đè khi các bản dịch mới được tải lên, nay đã được [[phab:T430577|giải quyết]]. Nhìn chung, trong quý cuối cùng từ tháng 4 đến tháng 6 năm 2026, Quỹ Wikimedia đã giải quyết khoảng 337 tác vụ cộng đồng. '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Trên các wiki có hỗ trợ Parsoid, Parsoid nay hiển thị tối đa 1.250 hình ảnh mỗi trang. Một danh mục theo dõi mới, "media-limit-reached", sẽ sớm được cung cấp để xác định các trang đã đạt đến giới hạn này, giúp dễ dàng tìm thấy nội dung có thể bị hạn chế đầu ra phương tiện trong quá trình hiển thị. Xem [[phab:T430854]] để biết thêm thông tin và cung cấp phản hồi. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.12|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/30|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W30"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 05:46, ngày 21 tháng 7 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30836091 --> == Request for comment (the future of Abstract Wikipedia) == <bdi lang="en" dir="ltr" class="mw-content-ltr"> Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}} You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}} [[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 12:25, ngày 24 tháng 7 năm 2026 (UTC) </bdi> <!-- Tin nhắn của Thành viên:DreamRimmer@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 --> == Bản tin Kỹ thuật: Tuần 31-2026 == <section begin="technews-2026-W31"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/31|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Wishlist item]] Công cụ [[mw:Special:MyLanguage/ContentTranslation|Dịch Nội dung]] nay hỗ trợ chế độ tối, nhằm đáp ứng [[m:Community Wishlist/W544|yêu cầu từ Mong muốn Cộng đồng]]. Điều này giúp công cụ tương thích với các tính năng hỗ trợ khả năng tiếp cận có sẵn trong các giao diện Vector 2022 và Minerva, giúp giảm việc gây mỏi mắt cho người dùng khi dịch nội dung. [https://phabricator.wikimedia.org/T367077] * Chế độ soạn thảo mã nguồn của Công cụ Thảo luận (DiscussionTools) và Trình soạn thảo mã nguồn 2017 nay sẽ cung cấp tính năng tự động điền cho các liên kết (<bdi lang="zxx" dir="ltr"><code><nowiki>[[</nowiki></code></bdi>), bản mẫu (<bdi lang="zxx" dir="ltr"><code><nowiki>{{</nowiki></code></bdi>), thẻ HTML và phân tích cú pháp (<bdi lang="zxx" dir="ltr"><code><nowiki><</nowiki></code></bdi>), cũng như các từ ma thuật (<bdi lang="zxx" dir="ltr"><code><nowiki>__</nowiki></code></bdi>), giúp việc chèn các liên kết, bản mẫu và mã đánh dấu wiki khác trong quá trình sửa đổi trở nên nhanh chóng và dễ dàng hơn. [https://phabricator.wikimedia.org/T432400] * [[mw:Special:MyLanguage/Readers/Reader Growth/Mobile page previews|Nhóm Phát triển Người đọc]] đã kết thúc việc thử nghiệm với tính năng xem trước trang trên thiết bị di động và sẽ không triển khai tính năng này nữa. Tính năng Xem trước Trang là một cửa sổ bật lên ở cuối trang xuất hiện khi người đọc nhấn vào liên kết xanh, hiển thị hình thu nhỏ, đoạn mở đầu và tùy chọn mở bài viết. Thử ngiệm cho thấy tỷ lệ giữ chân người dùng không thay đổi nhưng các chỉ số khác đều mang tính tiêu cực, điều này có nghĩa là người đọc trên trang web dành cho thiết bị di động thích truy cập trực tiếp vào các bài viết được liên kết hơn là sử dụng tính năng xem trước trang. * Nhóm Trải nghiệm Người đọc đã bước đầu ghi nhận những kết quả khả quan từ [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|tính năng Danh sách Đọc]], trong đó 93% người dùng tham gia báo cáo rằng tính năng này hữu ích. Danh sách Đọc giúp người đọc hoạt động tích cực lưu lại các bài viết để đọc sau này và hỗ trợ mục tiêu học tập của họ trên các dự án Wikimedia. Nhóm dự định sẽ tiếp tục cải tiến trước khi mở rộng tính năng này cho nhiều người dùng hơn. * Sáng kiến ​​[[mw:Special:MyLanguage/Wikimedia Apps/Team/Explore Feed Refresh|Làm mới Nguồn cấp dữ liệu Khám phá]] đã được thử nghiệm với những người đọc mới và không thường xuyên sử dụng ứng dụng Wikipedia. Nguồn cấp dữ liệu được làm mới giúp người đọc khám phá những nội dung mới và phù hợp với mình. Với kết quả mức độ tương tác với nguồn cấp dữ liệu tăng 10,5%, nhóm Ứng dụng Wikimedia đã quyết định mở rộng việc thiết kế lại Nguồn cấp dữ liệu Trang chủ sang iOS, áp dụng những kinh nghiệm thu được từ phiên bản dành cho Android. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:23}} {{PLURAL:23|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một sự cố khiến cho tên chủ đề trong tính năng Hướng dẫn Bài viết hiển thị sai cách viết hoa trên Wikipedia tiếng Pháp nay đã được giải quyết. Tên chủ đề nay sẽ tuân theo đúng quy tắc viết hoa của ngôn ngữ đó. [https://phabricator.wikimedia.org/T427201] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Sau khi thực hiện một số [[mw:Special:MyLanguage/Contributors/Account Creation Experiments|Thử nghiệm Tạo Tài khoản]] để cải thiện tỷ lệ hoàn tất việc đăng ký, một phiên bản mới của trường tên người dùng trên trang [[Special:CreateAccount|Tạo Tài khoản]] đã được triển khai. Phiên bản này bao gồm [[:c:File:Create account - July 2026 updates.png|một cửa sổ bật lên nhằm tóm tắt quy định về tên người dùng]] để cung cấp hướng dẫn rõ ràng hơn trong quá trình tạo tài khoản. Là một phần của thay đổi này, các thông báo <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-helpusername</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-help</nowiki></code></bdi> mà một số cộng đồng đã cấu hình sẽ không còn được sử dụng nữa. Nếu cộng đồng muốn tùy chỉnh hướng dẫn hiển thị trong cửa sổ bật lên mới, cộng đồng có thể sửa đổi các thông báo sau: <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet1</nowiki></code></bdi>, <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet2</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>createacct-username-policy-popover-bullet3</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T430604] * Cuối tuần này, [[mw:Special:MyLanguage/Help:Extension:CodeMirror|trình làm nổi bật cú pháp CodeMirror]] sẽ cung cấp [[w:en:Theme (computing)|các chủ đề]]. Các chủ đề có thể được chọn từ menu thả xuống trong hộp thoại [[mw:Special:MyLanguage/Help:Extension:CodeMirror#CodeMirror preferences|tùy chọn CodeMirror]] hoàn chỉnh. Đối với mã wiki, các chủ đề có sẵn là mặc định, thân thiện với người mù màu (trước đây là tùy chọn dễ phân biệt cho người mù màu trong [[Special:Preferences#mw-prefsection-editing]]) và không làm nổi bật. Đối với các ngôn ngữ lập trình (ví dụ: CSS/JavaScript/JSON/Vue/Lua), hiện có sẵn một vài chủ đề. Các chủ đề tương tự này sau này cũng sẽ có sẵn cho mã wiki. [https://phabricator.wikimedia.org/T163533] * Kể từ giờ trở đi, các wiki có thể giới hạn sửa đổi trong không gian tên "Thành viên" chỉ cho chính thành viên đó và một số nhóm người dùng nhất định. [[mw:Special:MyLanguage/Manual:$wgRestrictUserPageEditing|Đọc tài liệu hướng dẫn cấu hình]] để tìm hiểu thêm. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.14|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/31|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W31"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:49, ngày 27 tháng 7 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30856308 --> == Bản tin Kỹ thuật: Tuần 32-2026 == <section begin="technews-2026-W32"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/32|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[mw:Special:MyLanguage/Readers/Reader Experience|Nhóm Trải nghiệm Người đọc]] đã phát triển một [https://82db7c8d4b.catalyst.wmcloud.org/w/index.php?title=Regent%27s_Park&uselang=de bản vá demo] nhằm bọc thanh công cụ trang thành hai dòng nếu không có đủ không gian bề ngang cho tất cả các nút. Điều này nhằm mục đích giảm tình trạng quá tải trên thanh công cụ trong giao diện Vector 2022, có thể xảy ra trên một số trang ngôn ngữ Wikipedia trên một số độ rộng màn hình nhất định. [https://phabricator.wikimedia.org/T429518] * Nhóm Trải nghiệm Người đọc dự kiến sẽ phát hành [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Danh sách Đọc]], một [[m:Special:MyLanguage/Community Wishlist Survey 2021/Mobile and apps/Have Apps reading lists available on Destop/Mobile|mục trong Danh sách Mong muốn Cộng đồng]], hiện đang có sẵn để dùng thử dưới dạng tính năng beta, dưới dạng tính năng đầy đủ vào tháng 9. Trước thời điểm đó, chúng tôi cần các tình nguyện viên biên dịch giúp [https://translatewiki.net/w/i.php?title=Special%3ATranslate&group=ext-readinglists&filter=&action=translate dịch các chuỗi này] sang những ngôn ngữ khác. Tính năng này giúp hỗ trợ các mục tiêu đọc và học tập trên Wikipedia. * Vào tuần tới, mục lục trên các trang tập tin Wikimedia Commons sẽ được cải thiện bằng cách hợp nhất mục lục trang tập tin với mục lục của trang. Điều này sẽ giúp việc hiểu cấu trúc trang tập tin, điều hướng đến những đề mục cụ thể, và chia sẻ liên kết đến các đề mục riêng biệt trở nên dễ dàng hơn. [https://phabricator.wikimedia.org/T332644] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:24}} {{PLURAL:24|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một lỗi khiến cho một số hình [[w:TIFF|TIFF]] không thể tải được sau khi nhấn vào hình thu nhỏ của nó, khiến cho hình bị hỏng được hiển thị thay vì hình có kích thước đầy đủ, nay đã được giải quyết. [https://phabricator.wikimedia.org/T429326] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Bộ chọn biến và hàm trong Bộ lọc Sai phạm (AbuseFilter) đã được cập nhật để hỗ trợ tìm kiếm và tự động điền. Điều này sẽ giúp những người quản lý bộ lọc tìm kiếm biến hoặc hàm mong muốn nhanh hơn. [https://phabricator.wikimedia.org/T323698] * Các định dạng MJPEG và VP8 đã bị loại bỏ khỏi trình phát video. Thay vào đó, định dạng MP4 (MPEG-4 Phần 2) được thêm vào, nhằm cung cấp video chất lượng cao hơn cho các thiết bị iPhone đời cũ. Việc cập nhật lại tất cả các video hiện có sẽ có thể mất vài tuần. Định dạng mặc định cho các thiết bị hiện đại vẫn sẽ được giữ nguyên (VP9/WebM). [https://phabricator.wikimedia.org/T358266] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.15|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/32|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W32"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 19:46, ngày 3 tháng 8 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30872536 --> == Bản tin Kỹ thuật: Tuần 33-2026 == <section begin="technews-2026-W33"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/33|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * [[File:Maki-gift-15.svg|12px|link=|class=skin-invert|Mục Mong muốn cộng đồng]] Công cụ mới Trình tạo Biểu đồ (ChartWizard) [[c:Special:ChartWizard/Data:Example.Pie.chart|nay đã có mặt trên Wikimedia Commons]] dành cho các thành viên có mong muốn tạo các biểu đồ từ dữ liệu của riêng mình. Trình hướng dẫn này giúp [[mw:Special:MyLanguage/Extension:Chart|phần mở rộng Chart]] trở nên thân thiện hơn với người mới bắt đầu bằng cách cho phép các biên tập viên tạo biểu đồ, chẳng hạn như biểu đồ cột và biểu đồ tròn, mà không cần phải sử dụng JSON. Các thành viên vẫn có thể chuyển sang trình soạn thảo mã JSON nếu họ muốn. Mọi ý kiến đóng góp về công cụ mới này đều được hoan nghênh trên [[m:Talk:Community Wishlist/W414|trang thảo luận của mong muốn này]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:19}} {{PLURAL:19|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho tiện ích Hình ảnh của Ngày của ứng dụng Wikipedia dành cho iOS hiển thị cùng một hình ảnh mỗi ngày thay vì cập nhật hàng ngày, nay đã được giải quyết. [https://phabricator.wikimedia.org/T430692] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Hình ảnh SVG cho [[mw:Special:MyLanguage/Extension:Math|công thức toán học]] sẽ sớm được tạo trong trình duyệt thay vì trên máy chủ. MathML vẫn sẽ tiếp tục được tạo trên máy chủ và hiển thị trong trình duyệt mà không cần JavaScript. Wikibooks sẽ áp dụng thay đổi này vào ngày 12 tháng 8, Wikisource vào ngày 19 tháng 8 và Wikipedia từ ngày 20-27 tháng 8. Bạn có thể thử thay đổi này bằng cách chọn "{{int:Mw-math-mathjax}}" trong phần tùy chọn của bạn. Thay đổi này là một phần trong lộ trình [[mw:Special:MyLanguage/RESTBase/deprecation|ngừng sử dụng RESTBase]] và [[phab:T431372|ngừng sử dụng Mathoid]]. [https://phabricator.wikimedia.org/T271001] * <span class="mw-translate-fuzzy">Các trang thể loại sẽ sớm hỗ trợ việc sắp xếp các mục theo thời gian chúng được thêm vào thể loại. Điều này sẽ giúp việc tìm kiếm các trang được xếp thể loại gần đây hoặc đã xếp từ lâu trở nên dễ dàng hơn. Tính năng này cũng sẽ cải thiện quy trình làm việc đối với các thể loại bảo trì chẳng hạn như danh sách trang chờ xóa và các tác vụ rà soát theo thời gian khác. Bạn có thể sử dụng tham số URL <bdi lang="zxx" dir="ltr"><code><nowiki>cldsort=timestamp</nowiki></code></bdi> trong chế độ xem thể loại để sắp xếp các mục này.</span> [https://phabricator.wikimedia.org/T433768] * Các [[mw:Special:MyLanguage/Extension:Gadgets|tiện ích]] và đoạn mã người dùng trên các wiki của Wikimedia nay có thể sử dụng [[phab:T395347|các tính năng theo chuẩn ES2018]] và [[phab:T419142|các tính năng theo chuẩn ES2019]] trong đoạn mã JavaScript. Trước đây, nền tảng chỉ cho phép sử dụng tối đa đến chuẩn ES2017. MediaWiki kiểm tra mã nguồn để bảo vệ chức năng khỏi các lỗi cú pháp và đảm bảo các đoạn mã đều hợp lệ trên tất cả [[mw:Special:MyLanguage/Compatibility#Browser_support_matrix|các trình duyệt được hỗ trợ]]. [https://phabricator.wikimedia.org/T419142] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/33|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W33"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:45, ngày 10 tháng 8 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30901051 --> == Bản tin Kỹ thuật: Tuần 34-2026 == <section begin="technews-2026-W34"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/34|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Worklist|Tính năng Danh sách Công việc (Worklist)]] dành cho công cụ Đăng ký Sự kiện nay đã có mặt trên tất cả các dự án wiki của Wikimedia. Với Danh sách Công việc, ban tổ chức sự kiện có thể thêm trực tiếp các bài viết mà sẽ là trọng tâm của sự kiện vào trang sự kiện. Danh sách Công việc cũng hỗ trợ tính năng [[mw:Special:MyLanguage/Help:Extension:CampaignEvents/Registration/Worklist#How Event Pathways uses the worklist|Lộ trình Sự kiện (Event Pathways)]] giúp thông báo cho các biên tập viên khác về sự kiện sắp hoặc đang diễn ra khi họ sửa đổi một bài viết có trong Danh sách Công việc của sự kiện đó. Đây là phiên bản khả thi tối thiểu (MVP), và chúng tôi hoan nghênh mọi ý kiến đóng góp. Các ban tổ chức được khuyến khích thử tính năng này. Buổi [[m:Special:MyLanguage/Event:Worklist Setup Workshop: Get Your Event Ready|Hội thảo Thực hành Danh sách Công việc]] sẽ diễn ra vào ngày 18 tháng 6 lúc 16:00 UTC và ngày 19 tháng 6 lúc 11:00 UTC. '''Cập nhật cho biên tập viên''' * [[Special:ShortPages]] hiển thị các trang ngắn dựa trên kích thước của chúng, nhưng trong nhiều trường hợp danh sách này bị lấp đầy bởi các trang định hướng và đổi hướng mềm, khiến việc tìm kiếm chính các bài viết ngắn đó trở nên khó khăn hơn. Kể từ cuối tuần này, bạn sẽ có thể loại bỏ một bài viết khỏi trang đặc biệt này bằng cách thêm từ ma thuật <bdi lang="zxx" dir="ltr"><code><nowiki>__EXPECTSHORTPAGE__</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T433203] * Một wiki mới đã được tạo ra: {{int:project-localized-name-group-wikipedia/vi}} tiếng [[d:Q3436680|Bole]] ([[w:bol:|<bdi lang="zxx" dir="ltr"><code><nowiki>w:bol:</nowiki></code></bdi>]]) [https://phabricator.wikimedia.org/T429921] * Kể từ tuần ngày 17 tháng 8, thanh công cụ trang sẽ tự động xuống thành hai hàng khi không còn đủ không gian theo chiều ngang để hiển thị tất cả các nút. Đây là một [[phab:T429518|bản vá đã được hợp nhất hoàn toàn từ nhóm Trải nghiệm Người đọc]] nhằm giảm bớt tình trạng chật không gian trên thanh công cụ của giao diện Vector 2022, một vấn đề mà có thể xảy ra trên một số phiên bản ngôn ngữ Wikipedia ở một số độ rộng màn hình nhất định. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:16}} {{PLURAL:16|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, việc tải các tập tin có dung lượng lớn lên Wikimedia Commons đã trở nên ổn định hơn và ít gặp lỗi hơn sau một số bản sửa lỗi liên quan đến lỗi tải lên "Không thể lấy khóa". [https://phabricator.wikimedia.org/T386640] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Debian Bullseye sẽ kết thúc Hỗ trợ Dài hạn vào ngày 31 tháng 8 năm 2026. [[phab:T434103|Một số dự án Cloud VPS]] vẫn còn instance đang chạy Debian Bullseye. Bảo trì viên của những dự án này được khuyến khích chuyển sang Debian Bookworm hoặc Debian Trixie. Hiện đã có trang [[wikitech:Help:Cloud VPS instance operating system migration|hướng dẫn di chuyển]] nhằm giúp thực hiện quy trình này, đồng thời các thành viên cũng có thể muốn xem xem liệu khối lượng công việc của họ có phù hợp hơn với Toolforge hay không. Nếu bạn cần trợ giúp hoặc không thể hoàn tất quá trình chuyển đổi trước ngày 31 tháng 8, vui lòng liên hệ với quản trị viên Cloud VPS càng sớm càng tốt. [[listarchive:list/cloud-announce@lists.wikimedia.org/thread/RVIPQSYLKMSL5M46JP6NEJVGVE6I2RXQ/|Đọc thêm]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.16|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/34|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W34"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 21:03, ngày 17 tháng 8 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30922806 --> == Bản tin Kỹ thuật: Tuần 35-2026 == <section begin="technews-2026-W35"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/35|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Trang [[Special:CreateAccount|Đặc biệt:Tạo tài khoản]] đã được đơn giản hóa như là một phần của nỗ lực nhằm hiện đại hóa trải nghiệm tạo tài khoản. Khung hiển thị số liệu thống kê về dự án sẽ không còn xuất hiện bên cạnh biểu mẫu trên giao diện trang web máy tính và di động. Nhiều thử nghiệm tạo tài khoản cho thấy việc sử dụng biểu mẫu đơn giản hơn giúp người dùng mới hoàn tất quy trình đăng ký dễ dàng hơn. [https://phabricator.wikimedia.org/T433783] * Để cải thiện hiệu suất trang, các hình ảnh nay sẽ chỉ được tải khi người dùng xem chúng. Điều này có nghĩa là những hình ảnh nằm ở phần dưới của bài viết sẽ không được tải nếu người đọc không bao giờ cuộn trang xuống phần đó của bài viết, điều này có thể ảnh hưởng đến một vài số liệu liên quan đến hình ảnh. [https://phabricator.wikimedia.org/T148047] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:42}} {{PLURAL:42|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho các hình thu nhỏ trên Abstract Wikipedia có thể không hiển thị được sau khi tập tin tương ứng được di chuyển trên Wikimedia Commons, nay đã được giải quyết. Các hình thu nhỏ nay sẽ được cập nhật chính xác khi tập tin được di chuyển. [https://phabricator.wikimedia.org/T433448] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Thẻ Thông tin Thành viên là một tính năng giúp các tuần tra viên xem thông tin về các tài khoản người dùng. Trước đây, tính năng này chỉ xuất hiện ở những nơi chẳng hạn như lịch sử trang, nhật trình và thay đổi gần đây. Giờ đây, các thành viên cũng có thể [[mw:Special:MyLanguage/Help:Extension:CheckUser#User_Info_card_in_page_content|đặt thẻ này vào nội dung trang]], bằng cách sử dụng hàm phân tích cú pháp <bdi lang="zxx" dir="ltr"><code><nowiki>{{#uic:}}</nowiki></code></bdi>. Điều này đặc biệt hữu ích trong các bản mẫu như [[:en:Template:Userlinks|<bdi lang="zxx" dir="ltr"><code><nowiki>{{Userlinks}}</nowiki></code></bdi>]] (hoặc các biến thể chuyên biệt của chúng), vì nó sẽ giúp việc xem thông tin về thành viên trên nhiều trang bảng tin nhắn trở nên dễ dàng hơn. Thẻ này sẽ chỉ được hiển thị với những người dùng đã kích hoạt tính năng này trong phần [[Special:Preferences#mw-input-wpcheckuser-userinfocard-enable|tùy chọn]] của mình. [https://phabricator.wikimedia.org/T424466] * Do những rủi ro về bảo mật và quyền riêng tư của người dùng, chúng tôi đã vô hiệu hóa quyền truy cập vào các URL dẫn đến trang <bdi lang="zxx" dir="ltr"><code><nowiki>Special:MyPage</nowiki></code></bdi> khi sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. Nếu điều này ảnh hưởng tới bạn, hãy cân nhắc xem bạn có thể sử dụng một phương thức nào đó thay thế hay không. Các URL dẫn đến trang <bdi lang="zxx" dir="ltr"><code><nowiki>Special:MyPage</nowiki></code></bdi> vẫn có thể truy cập và sử dụng được mà không cần sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. Các URL cụ thể cho trang thành viên (v.d. <bdi lang="zxx" dir="ltr"><code><nowiki>User:Myusername</nowiki></code></bdi>) vẫn có thể được sử dụng với <bdi lang="zxx" dir="ltr"><code><nowiki>action=raw</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T120386] * Nhờ một bản cập nhật, phần mềm tạo hình thu nhỏ đã được cải tiến. Nó bao gồm việc nâng cấp <bdi lang="zxx" dir="ltr"><code><nowiki>librsvg</nowiki></code></bdi> lên phiên bản 2.60 và <bdi lang="zxx" dir="ltr"><code><nowiki>ImageMagick</nowiki></code></bdi> lên 7, cũng như việc khắc phục một số lỗi tạo hình thu nhỏ đã tồn tại từ lâu chẳng hạn như lỗi hiển thị. [https://phabricator.wikimedia.org/T419815#12222841] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.17|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/35|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W35"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:45, ngày 24 tháng 8 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30961208 --> == Bản tin Kỹ thuật: Tuần 36-2026 == <section begin="technews-2026-W36"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/36|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Một hình thức mới cho Danh sách Mong muốn Cộng đồng hiện đang được lấy ý kiến đóng góp. Bạn có thể [[m:Special:MyLanguage/Community Wishlist/Community Wishlist 2027|đọc các ý tưởng đề xuất trên Meta]]. Quy trình mới này nhằm nâng cao hiệu quả sàng lọc, bỏ phiếu và ưu tiên cho các mong muốn nhằm đảm bảo tính minh bạch và sự cân bằng giữa các nhóm dự án và phiên bản ngôn ngữ. Đợt tham vấn này sẽ kéo dài trong vòng hai tuần. '''Cập nhật cho biên tập viên''' * Bản phát hành mới nhất của ứng dụng Wikipedia dành cho Android bao gồm các cập nhật đối với tính năng Đã lưu (Saved), giúp trải nghiệm lưu bài viết trên ứng dụng trở nên đồng bộ hơn với phiên bản iOS và Web. Bản cập nhật này thiết kế lại tab Đã lưu với giao diện “Tất cả bài viết”, xóa bỏ danh sách đọc mặc định “Đã lưu”, đổi tên các danh sách đọc thành “Bộ sưu tập” (Collections) và hiện đại hóa trải nghiệm lưu bài viết. [https://phabricator.wikimedia.org/T420788] * Tính năng [[mw:Special:MyLanguage/Readers/Reader Experience/Reading lists|Danh sách Đọc]] đã được kích hoạt cho tất cả người dùng đã đăng nhập trên Wikipedia tiếng Bengali, tiếng Trung, tiếng Séc và tiếng Việt vào ngày 25 tháng 8, sau vài tháng hoạt động dưới dạng tính năng thử nghiệm (beta). Danh sách Đọc sẽ được triển khai đến tất cả người dùng đã đăng nhập trên Wikipedia tiếng Ả Rập, tiếng Pháp và tiếng Indonesia vào ngày 1 tháng 9, sau đó là Wikipedia tiếng Anh vào ngày 14 tháng 9, và trên tất cả các wiki Wikipedia còn lại vào ngày 28 tháng 9. * Vào cuối tháng này, một số độc giả chưa đăng nhập trên Wikipedia tiếng Bengali, tiếng Séc, tiếng Ba Tư, tiếng Anh và tiếng Ba Lan sử dụng giao diện Minerva trên thiết bị di động sẽ nhìn thấy một [[mw:Special:MyLanguage/Readers/Reader_Growth/Minimal_Minerva|thanh điều hướng được cập nhật]] trong [[:w:vi:Thử nghiệm A/B|thử nghiệm A/B]]. Thử nghiệm này sẽ so sánh thanh điều hướng hiện tại với phiên bản mới được thiết kế nhằm giúp người dùng tìm kiếm thông tin một cách nhanh chóng và dễ dàng hơn. Mục tiêu là xác định xem những thay đổi này có khuyến khích độc giả quay lại thường xuyên hơn hay không. Thử nghiệm này sẽ không làm thay đổi trải nghiệm của người dùng và/hoặc biên tập viên đã đăng nhập. * Các biên tập viên chuyên bảo trì các trang đổi hướng, bản mẫu và thể loại được sử dụng trên các trang đổi hướng nay có thêm các phương thức cải tiến để tìm kiếm và quản lý trang đổi hướng. Trước đây, các trang đổi hướng không thể tìm kiếm được. Hai từ khóa tìm kiếm mới, <bdi lang="zxx" dir="ltr"><code><nowiki>onlyredirects:</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>withredirects:</nowiki></code></bdi>, giờ đây cho phép tìm kiếm trực tiếp các trang đổi hướng và có thể kết hợp với các từ khóa hiện có như <bdi lang="zxx" dir="ltr"><code><nowiki>incategory:</nowiki></code></bdi>, <bdi lang="zxx" dir="ltr"><code><nowiki>intitle:</nowiki></code></bdi> và <bdi lang="zxx" dir="ltr"><code><nowiki>insource:</nowiki></code></bdi>. [https://phabricator.wikimedia.org/T204089] * Các công cụ tìm kiếm ISBN để tạo các nguồn trích dẫn gần đây đã không hoạt động do các vấn đề liên quan đến dịch vụ bên ngoài. Các nhà phát triển đang nỗ lực để tìm giải pháp khắc phục. [https://phabricator.wikimedia.org/T435179] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:30}} {{PLURAL:30|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho việc tìm kiếm trang theo thể loại sử dụng <bdi lang="zxx" dir="ltr"><code><nowiki>deepcat</nowiki></code></bdi> có thể không trả về kết quả hoặc trả về kết quả không liên quan nay đã được giải quyết. [https://phabricator.wikimedia.org/T414859] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Tên miền của URL cho hình thu nhỏ đang được thay đổi từ $1 sang thumb.wikimedia.org. Các URL cũ sẽ tiếp tục hoạt động trong tương lai gần, nhưng MediaWiki sẽ chuyển sang sử dụng tên miền mới. Các URL trỏ đến các loại tập tin đa phương tiện khác như tập tin gốc, video và tập tin chuyển mã vẫn sẽ được phục vụ từ upload.wikimedia.org. [https://phabricator.wikimedia.org/T427465] * [https://www.mediawiki.org/w/index.php?api=wmf-math%2Fv1&title=Special%3ARestSandbox API Toán học (Math API)] của Wikimedia hiện đã lỗi thời và không còn được hỗ trợ. Các điểm cuối (endpoints) này sẽ chính thức ngừng hoạt động hoàn toàn vào cuối tháng 9 năm 2026. Các nhà phát triển gọi các điểm cuối này nên chuyển sang các giải pháp hiển thị toán học thay thế, chẳng hạn như [https://developer.mozilla.org/en-US/docs/Web/MathML MathML] tích hợp sẵn hoặc [https://www.mathjax.org/ MathJax]. Các hệ thống MediaWiki được cài đặt bởi bên thứ ba sử dụng phần mở rộng Math để hiển thị công thức bắt buộc phải nâng cấp lên phiên bản v1.43 trở lên để tránh gián đoạn dịch vụ. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.18|MediaWiki]] '''Chuyên sâu''' * Đọc thêm về [[mw:Special:MyLanguage/Edit_check/TextMatch|TextMatch]] trong một bài viết trên Diff có tiêu đề: [[diffblog:2026/08/28/custom-edit-suggestions-for-every-wiki-how-communities-are-shaping-suggestion-mode-with-textmatch/|Đề xuất sửa đổi tùy chỉnh cho mọi wiki: Cộng đồng đang định hình Chế độ Gợi ý với TextMatch như thế nào]]. '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/36|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W36"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 20:53, ngày 31 tháng 8 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=30990659 --> == Bản tin Kỹ thuật: Tuần 37-2026 == <section begin="technews-2026-W37"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/37|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Cập nhật cho biên tập viên''' * Tính năng [[mw:Special:MyLanguage/Help:Growth/Tools/Add_a_link|Thêm Liên kết]] đã được nâng cấp cho người dùng trên Wikipedia tiếng Anh với khả năng phát hiện tốt hơn các liên kết có sự khác biệt về cách viết hoa. Cải tiến này sẽ giúp giảm bớt những gợi ý mơ hồ gây ra do sự khác biệt về cách viết viết hoa trong tiêu đề bài viết, bao gồm cả những bài viết về các sản phẩm văn hóa. Hiện kế hoạch cải tiến giai đoạn 2 đã được lên lịch, kế hoạch cũng sẽ nhằm mục đích chuẩn bị phát hành tính năng này ở các ngôn ngữ khác. [https://phabricator.wikimedia.org/T435526#12240876] [https://phabricator.wikimedia.org/T434259] * Tính năng [[mw:Special:MyLanguage/Article_guidance|Chỉ dẫn bài viết]] sẽ được bật theo mặc định cho các biên tập viên mới trên Wikipedia tiếng Anh Đơn giản và Wikipedia tiếng Thổ Nhĩ Kỳ kể từ ngày 10 tháng 9 năm 2026 sau khi đã trải qua [[mw:Special:MyLanguage/Article_guidance/Updates#Summary_of_experiment_result|một cuộc thử nghiệm]]. Các biên tập viên mới có từ 0 đến 99 sửa đổi sẽ tự động nhìn thấy tính năng này khi họ nhấn vào liên kết đỏ hoặc sử dụng tùy chọn "[[tr:Vikipedi:Madde_sihirbazı|Madde oluşturto]]" (tạo bài viết) trên Wikipedia tiếng Thổ Nhĩ Kỳ để tạo bài viết mới. Thay đổi này nhằm mục đích giúp các biên tập viên mới tạo các bài viết có chất lượng cao hơn và đáp ứng các tiêu chuẩn của từng dự án Wikipedia. [[phab:maniphest/query/z3tcTjmLMxk5/#R|Các cải tiến bổ sung]] sẽ tiếp tục được thực hiện dựa trên kết quả thử nghiệm và phản hồi từ cộng đồng. * Công cụ [https://pageviews.wmcloud.org Phân tích Lượt xem Trang] nhằm cho phép người dùng so sánh lượt xem giữa nhiều trang, năm nay đã tròn 10 tuổi và được bổ sung thêm một số tính năng mới. Chúng bao gồm [[toolforge:wikinav|WikiNav]] nhằm cung cấp thông tin chuyên sâu vào cách độc giả Wikipedia khám phá nội dung, thống kê sửa đổi trong mục [https://pageviews.wmcloud.org/siteviews?range=latest-30&sites=en.wikipedia.org Siteviews], khả năng [https://pageviews.wmcloud.org/massviews?source=wikiproject&project=en.wikipedia.org tra cứu bài viết thuộc Dự án Wiki], cũng như hỗ trợ chế độ tối. [https://phabricator.wikimedia.org/T378549] * Một thanh điều hướng [[mw:Special:MyLanguage/Readers/Reader_Growth/Minimal_Minerva|Minerva được đơn giản hóa về mặt trực quan]] đang được thử nghiệm dành cho các độc giả chưa đăng nhập sử dụng giao diện web di động trên các dự án Wikipedia tiếng Bengal, tiếng Séc, tiếng Anh, tiếng Ba Tư và tiếng Ba Lan. Thử nghiệm này nhằm xác định xem việc đơn giản hóa thanh điều hướng có cải thiện việc giữ chân độc giả hay không. Thử nghiệm sẽ diễn ra từ ngày 31 tháng 8 đến ngày 28 tháng 9, và người dùng không cần phải thực hiện bất kỳ thao tác nào. * [[m:Special:MyLanguage/WMDE Technical Wishes|Nhóm Mong muốn Kỹ thuật của WMDE]] đang thực hiện việc cải tiến [[en:Wikipedia:VisualEditor/Named references|tên nguồn tham khảo được tạo tự động trong Trình Soạn thảo Trực quan]]. Các biên tập viên sẽ chỉ nhận thấy một thay đổi nhỏ kể từ tuần này. Khi thêm tên nguồn tham khảo tự động việc đánh số sẽ bắt đầu tại <bdi lang="zxx" dir="ltr"><code><nowiki>:1</nowiki></code></bdi> thay vì <bdi lang="zxx" dir="ltr"><code><nowiki>:0</nowiki></code></bdi>. Đọc thêm trên [[m:WMDE Technical Wishes/References/VisualEditor automatic reference names|trang dự án]]. [https://gerrit.wikimedia.org/r/c/VisualEditor/VisualEditor/+/1332704] * Tất cả các wiki sẽ [[m:Special:MyLanguage/Tech/Server switch|chuyển sang chế độ chỉ đọc trong vài phút]] vào ngày 23 tháng 9. Kế hoạch dự kiến diễn ra lúc 14:00 UTC. Thông tin thêm về kế hoạch này sẽ được xuất bản trong Bản tin Kỹ thuật và cũng sẽ được đăng lên trên từng wiki trong các tuần tiếp theo. [https://phabricator.wikimedia.org/T433363] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:25}} {{PLURAL:25|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến cho [[mw:Special:MyLanguage/Parsoid|Parsoid]] có thể xử lý sai các thẻ nowiki được lồng nhau, khiến nội dung bị mất và hiển thị nội dung không mong muốn nay đã được giải quyết. [https://phabricator.wikimedia.org/T435116] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Bảo quản viên giao diện có thể cấu hình các tiện ích từ [[MediaWiki:Gadgets-definition]]. Định dạng của định nghĩa tiện ích đã được cập nhật và không còn yêu cầu tùy chọn <bdi lang="zxx" dir="ltr"><code><nowiki>ResourceLoader</nowiki></code></bdi> nữa, vì các tiện ích luôn được tải thông qua <bdi lang="zxx" dir="ltr"><code><nowiki>ResourceLoader</nowiki></code></bdi>. Điều này giúp đơn giản hóa cấu hình tiện ích bằng cách loại bỏ một tùy chọn không còn cần thiết nữa, giúp việc định nghĩa tiện ích trở nên dễ dàng hơn cho các bảo quản viên. [https://phabricator.wikimedia.org/T298199] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.19|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/37|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W37"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 18:44, ngày 7 tháng 9 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=31008437 --> == Bản tin Kỹ thuật: Tuần 38-2026 == <section begin="technews-2026-W38"/><div class="plainlinks"> '''[[m:Special:MyLanguage/Tech/News|Tin tức kỹ thuật]]''' mới nhất từ cộng đồng kỹ thuật Wikimedia. Vui lòng chia sẻ với các thành viên khác về những thay đổi này. Không phải mọi thay đổi đều sẽ ảnh hưởng đến bạn. [[m:Special:MyLanguage/Tech/News/2026/38|Các bản dịch]] của bản tin này cũng có sẵn cho bạn. '''Nổi bật trong tuần''' * Nhóm Future Audiences đã mở một [[en:Special:MyLanguage/Wikipedia:Village pump (proposals)#New proposed experiment to let readers know about “Google preferred sources”|cuộc thảo luận trên Wikipedia tiếng Anh]] về một đề xuất thử nghiệm mới nhằm hiển thị thông báo tạm thời về tính năng mới [https://blog.google/products-and-platforms/products/search/original-high-quality-content-search/ Nguồn Ưu tiên của Google] dành cho độc giả Wikipedia truy cập từ Google. Thử nghiệm này nhằm kiểm tra xem liệu thông báo này có giúp thu hút khách truy cập quay lại Wikipedia thường xuyên hơn hay không. Tính năng Nguồn Ưu tiên cho phép người dùng chọn các trang web mà họ tin tưởng nhằm giúp Google có thể hiển thị nội dung từ các nguồn này một cách nổi bật hơn trong trải nghiệm trên Tìm kiếm và AI. Chúng tôi mong muốn triển khai thử nghiệm này trên các ngôn ngữ khác mà Google hỗ trợ và rất hoan nghênh sự hỗ trợ trong việc khởi xướng thảo luận trên các dự án wiki khác. Nếu bạn quan tâm, vui lòng liên hệ nhóm Future Audiences trên [[m:Special:MyLanguage/Future Audiences/Preferred sources|trang thảo luận]]. '''Cập nhật cho biên tập viên''' * Nền tảng trò chuyện Discord ra mắt cơ chế (framework) tự thiết lập mới nhằm cho phép các trang web có thể sử dụng để tùy chỉnh cách hiển thị những liên kết đó khi được chia sẻ trên Discord. Nhóm Future Audiences dự định sẽ bắt đầu sử dụng cơ chế này để cải thiện cách hiển thị các liên kết Wikipedia khi được chia sẻ trên Discord, nhằm ghi công sửa đổi của các tình nguyện viên một cách tốt hơn. Hình thức và cách thức hoạt động của liên kết sẽ không thay đổi trong giai đoạn đầu của dự án này vì chúng tôi muốn thu thập một số dữ liệu cơ sở trước để đánh giá tác động của những thay đổi này trong tương lai. Dù vậy, nếu các thành viên cộng đồng đang hoạt động trên Discord có phát hiện ra bất kỳ vấn đề nào, họ có thể liên hệ qua [[phab:tag/future-audiences/|Phabricator]] hoặc [[m:Special:MyLanguage/Future Audiences|Metawiki]]. * Nhóm Phát triển Độc giả sẽ tiến hành một thử nghiệm xem liệu [[mw:Special:MyLanguage/Readers/Reader_Growth/Compact Lead|việc rút gọn phần mở đầu của bài viết]] kèm theo nút "đọc thêm" có giúp cải thiện việc giữ chân người đọc hay không. Thử nghiệm này sẽ bắt đầu vào ngày 17 tháng 9 trên các phiên bản Wikipedia tiếng Ả Rập, tiếng Tây Ban Nha, tiếng Pháp, tiếng Indonesia, tiếng Ý, tiếng Nhật, tiếng Bồ Đào Nha, tiếng Việt và tiếng Trung và sẽ kéo dài trong bốn tuần. * Tất cả các wiki sẽ [[m:Special:MyLanguage/Tech/Server switch|chuyển sang chế độ chỉ đọc trong vòng vài phút]] vào ngày 23 tháng 9. Kế hoạch được lên lịch lúc 14:00 UTC. Thông tin chi tiết sẽ được đăng tải lên Bản tin Kỹ thuật và cũng sẽ được đăng lên từng wiki riêng lẻ trong tuần tới. [https://phabricator.wikimedia.org/T433363] * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Xem tất cả {{formatnum:28}} {{PLURAL:28|tác vụ}} được tạo bởi cộng đồng đã được [[m:Special:MyLanguage/Tech/News/Recently resolved community tasks|giải quyết vào tuần trước]]. Ví dụ, một vấn đề khiến [https://wikistats.wmcloud.org/ Wikistats] dành cho Wikipedia trả về lỗi HTTP 500 và không thể truy cập được, nay đã được giải quyết. [https://phabricator.wikimedia.org/T435959] '''Cập nhật cho những người đóng góp vào mảng kỹ thuật''' * Các nhà phát triển đang bảo trì công cụ truy vấn các bảng liên kết của Wikimedia Commons cần cập nhật mã nguồn của mình để kết nối với cụm cơ sở dữ liệu (database cluster) x4 mới. Các bảng liên kết đã được chuyển từ cụm s4 sang x4, và sẽ không còn nhận được cập nhật trên cụm s4 nữa. Các bảng trang và đổi hướng vẫn sẽ tiếp tục khả dụng trên cả hai cụm này. Một bản sao dữ liệu wiki (wiki replica) cho cụm x4 sẽ được thiết lập sau này. Thay đổi này được thực hiện do cụm s4 đã trở nên quá lớn gây ảnh hưởng đến hiệu quả vận hành của bảng liên kết. Bạn có thể [[wikitech:Special:MyLanguage/News/2026 Commons links tables database split|đọc thêm]]. * [[File:Reload icon with two arrows.svg|12px|link=|class=skin-invert|Đề mục định kỳ]] Chi tiết cập nhật mã nguồn sắp tới trong tuần này: [[mw:MediaWiki 1.47/wmf.20|MediaWiki]] '''''[[m:Special:MyLanguage/Tech/News|Tin tức Kỹ thuật]]''' do [[m:Special:MyLanguage/Tech/News/Writers|các biên tập viên Bản tin Kỹ thuật]] chuẩn bị và được đăng bởi [[m:Special:MyLanguage/User:MediaWiki message delivery|bot]]&nbsp;• [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]]&nbsp;• [[m:Special:MyLanguage/Tech/News/2026/38|Biên dịch]]&nbsp;• [[m:Tech|Nhờ giúp đỡ]]&nbsp;• [[m:Talk:Tech/News|Phản hồi]]&nbsp;• [[m:Global message delivery/Targets/Tech ambassadors|Đăng ký hoặc huỷ đăng ký]].'' </div><section end="technews-2026-W38"/> <bdi lang="en" dir="ltr">[[User:MediaWiki message delivery|MediaWiki message delivery]]</bdi> 15:31, ngày 14 tháng 9 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:STei (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/Tech_ambassadors&oldid=31039826 --> == Chuyển đổi máy chủ - Wiki của bạn sẽ sớm chuyển sang chế độ chỉ đọc trong một khoảng thời gian ngắn == <section begin="server-switch"/><div class="plainlinks"> [[:m:Special:MyLanguage/Tech/Server switch|Đọc thông báo này bằng ngôn ngữ khác]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch&language=&action=page&filter= {{int:please-translate}}] [[foundation:|Quỹ Wikimedia]] sẽ chuyển đổi lưu lượng qua lại giữa các trung tâm dữ liệu. Điều này sẽ giúp đảm bảo rằng Wikipedia và các wiki khác của Wikimedia vẫn có thể duy trì trực tuyến ngay cả sau tình huống thiên tai. Mọi lưu lượng sẽ chuyển đổi vào ngày '''{{#time:j xg|2026-09-23|vi}}'''. Việc chuyển đổi này sẽ bắt đầu vào lúc '''[https://zonestamp.toolforge.org/{{#time:U|2026-09-23T14:00|en}} {{#time:H:i e|2026-09-23T14:00}}]'''. Dù vậy, vì một số hạn chế của phần mềm [[mw:Special:MyLanguage/Manual:What is MediaWiki?|MediaWiki]], mọi sửa đổi đều phải bị ngưng lại khi việc chuyển đổi được thực hiện. Chúng tôi chân thành xin lỗi vì sự gián đoạn này, và chúng tôi đang tìm cách giảm thiểu những tình huống như vậy trong tương lai. Một biểu ngữ sẽ được hiển thị trên tất cả các wiki 30 phút trước khi quá trình này diễn ra. Biểu ngữ sẽ tiếp tục được hiển thị cho tới khi kết thúc quá trình này. Bạn có thể đóng góp bằng cách [https://meta.wikimedia.org/w/index.php?title=Special%3ATranslate&group=Centralnotice-tgroup-read_only_banner&task=view&language=&filter=&action=translate biên dịch và hiệu đính] dòng biểu ngữ này. '''Bạn sẽ có thể đọc, nhưng không thể sửa đổi, tất cả wiki trong một khoảng thời gian ngắn.''' * Bạn sẽ không thể sửa đổi trong vòng tối đa một giờ vào {{#time:l j xg Y|2026-09-23|vi}}. * Nếu bạn cố gắng sửa đổi hay lưu trang trong khoảng thời gian này, bạn sẽ nhìn thấy một thông báo lỗi. Chúng tôi hy vọng sẽ không có sửa đổi nào bị mất trong khoảng thời gian đó, nhưng chúng tôi không thể đảm bảo được điều đó. Nếu bạn nhìn thấy thông báo lỗi, vui lòng chờ đợi cho đến khi mọi thứ trở lại bình thường. Sau đó bạn sẽ có thể lưu lại sửa đổi của mình. Tuy nhiên, chúng tôi khuyên bạn trước hết nên tạo một bản sao những thay đổi của bạn, nhằm mục đích đề phòng. ''Những ảnh hưởng khác'': * Tác vụ xử lý nền sẽ bị chậm hơn và một số có thể bị ngừng hẳn. Các liên kết đỏ có thể sẽ không được cập nhật nhanh chóng như thường lệ. Nếu bạn tạo một bài viết đã được liên kết ở một nơi khác, liên kết đó vẫn sẽ có màu đỏ lâu hơn bình thường. Một số đoạn mã tốn nhiều thời gian chạy sẽ phải dừng lại. * Chúng tôi hy vọng việc triển khai mã nguồn vẫn sẽ diễn ra như bất kỳ tuần nào khác. Tuy vậy, một vài trường hợp đóng băng mã nguồn có thể xảy ra nếu quá trình yêu cầu chúng sau đó. * [[mw:Special:MyLanguage/GitLab|GitLab]] sẽ không khả dụng trong khoảng 90 phút. Dự án này có thể bị hoãn lại nếu cần thiết. Bạn có thể [[wikitech:Switch_Datacenter|đọc lịch trình tại wikitech.wikimedia.org]]. Bất kỳ thay đổi nào đều sẽ được thông báo trong lịch trình này. '''Xin hãy chia sẻ thông tin này với cộng đồng của bạn.'''</div><section end="server-switch"/> [[m:user:Trizek (WMF)|Trizek (WMF)]] 12:58, ngày 15 tháng 9 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Trizek (WMF)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=30513874 --> == Your feedback wanted: Remove ''(Language link added:) and similar'' edits from Special:RecentChanges == ''(Apologies for posting in English. You can help by translating it)'' Hello, I’m Danny from [[:en:w:Wikimedia_Deutschland|Wikimedia Deutschland’s]] [[m:Wikidata_For_Wikimedia_Projects|Wikidata For Wikimedia Projects]] team.<br/> We have been investigating and examining how Wikidata’s use in the [[Special:RecentChanges]] and [[Special:Watchlist]] pages can be made to be more useful, or less ‘noisy’ (fewer edits that have little value to the reader). We are currently exploring to make a change in the volume and the type of Wikidata edits that appear in these pages, and '''we need your feedback''' to help us ensure this is a positive change for the Wikis and won’t disrupt your workflows.<br/> Language links are also known as sitelinks or interlanguage links and describe when a Wikidata item is connected to a Wiki, adding it to the language dropdown tool for other connected Wikis. [[File:Types of Lang Link changes.png|x350px|frame|A variety of "Language Link" edits as seen in the Recent Changes feed]] The request for feedback is whether you support the removal of these language link edits from the Recent Changes and Watchlist feed, or would you oppose such a change and if so, why? Please share you thoughts on the dedicated '''[[m:Talk:Wikidata_For_Wikimedia_Projects/Clearer_Wikidata_Edit_Summaries/Hide_Language_Link_edits|metawiki Talk page]]'''. Further information about this change: [[m:Wikidata_For_Wikimedia_Projects/Clearer_Wikidata_Edit_Summaries/Hide_Language_Link_edits|m:Wikidata_For_Wikimedia_Projects/Hide_Language_Link_edits]] Thank you for any participation or feedback you give, -- [[m:User:Danny_Benjafield_(WMDE)|User:Danny Benjafield (WMDE)]] 12:48, ngày 25 tháng 9 năm 2026 (UTC) <!-- Tin nhắn của Thành viên:Danny Benjafield (WMDE)@metawiki gửi cho mọi người trong danh sách tại https://meta.wikimedia.org/w/index.php?title=User:Danny_Benjafield_(WMDE)/MassMessage_test_list&oldid=31081007 --> q0m1rf0agduqdewz7rrbgppd733iiy3 kalong 0 126571 2566519 2150520 2026-09-25T16:04:48Z WhoAlone 40420 2566519 wikitext text/x-wiki {{-eng-}} {{-noun-}} '''kalong''' # {{term|Động vật học}} [[dơi quạ|Dơi quạ]] (Mã-lai). {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Anh]] {{-zns-}} {{-pron-}} * {{IPA4|zns|[kāloŋ]}} {{-noun-}} {{head|zns|Danh từ}} # [[suối]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Vùng nước}} serwxkzdh72u61a5uiv0ys1al47mkg4 应变 0 215711 2566613 1987055 2026-09-26T08:46:46Z Hiyuune 50834 2566613 wikitext text/x-wiki {{also|應變}} =={{langname|zh}}== {{zh-see|應變}} 5142nkwsecufdmk98f2plr7cw6y1fij 应对 0 215713 2566608 1987057 2026-09-26T08:41:24Z Hiyuune 50834 2566608 wikitext text/x-wiki {{also|應對}} =={{langname|zh}}== {{zh-see|應對}} 81bpc8iqkamz3g18ccysdaw65d66g5w cô đọng 0 241347 2566626 1398991 2026-09-26T09:35:56Z Kelly zhrm 58416 2566626 wikitext text/x-wiki {{also|cổ đông|cổ động|cơ động}} =={{langname|vi}}== ==={{ĐM|etym}}=== Từ ghép giữa {{com|vi|cô|đọng}}. ==={{ĐM|pron}}=== {{vi-IPA}} ==={{ĐM|adj}}=== {{vi-adj}} # Có cách [[trình bày]], diễn đạt [[ngắn gọn]] nhưng [[bao hàm]] nhiều ý. #: {{syn|vi|súc tích}} ==={{ĐM|ref}}=== * {{R:Tratu}} 6qiwjuwcxmkoymhrxc3kzpj74pzj69f IUCN 0 249251 2566618 1787793 2026-09-26T09:02:57Z Kelly zhrm 58416 2566618 wikitext text/x-wiki =={{langname|en}}== ==={{ĐM|pr-noun}}=== {{en-proper noun}} # {{initialism of|en|w:en:International Union for Conservation of Nature||Liên minh Bảo tồn Thiên nhiên Quốc tế}}. ==={{ĐM|ana}}=== * {{anagrams|en|a=cinu|Cuin|NICU|UCNI|cu in|unci}} {{c|en|Sinh thái học}} bn3ycf8xw7tshwwk7i35ryb6wyhhjyh 2566619 2566618 2026-09-26T09:03:15Z Kelly zhrm 58416 2566619 wikitext text/x-wiki =={{langname|en}}== ==={{ĐM|pr-noun}}=== {{en-proper noun}} # {{initialism of|en|w:en:International Union for Conservation of Nature||Liên minh Bảo tồn Thiên nhiên Quốc tế}} ==={{ĐM|ana}}=== * {{anagrams|en|a=cinu|Cuin|NICU|UCNI|cu in|unci}} {{c|en|Sinh thái học}} ipx3esapqjvu79neoms36ilfcblhdyr Timor Leste 0 255162 2566622 2278306 2026-09-26T09:19:09Z Kelly zhrm 58416 /* {{ĐM|etym}} */ 2566622 wikitext text/x-wiki {{also|Timor-Leste}} =={{langname|id}}== {{wikipedia||lang=id}} ==={{ĐM|etym}}=== Từ {{borrowed|id|pt|Timor Leste|t=Timor-Leste}}, {{compound|pt|Timor|leste|gloss1=Timor|gloss2=đông|nocat=1}}. Cùng gốc của {{cognate|id|Timor Timur}} và {{cognate|tet|Timor Lorosa'e}}. ==={{ĐM|pron}}=== {{id-pr|timor lèsté|rhyme=0}} ==={{ĐM|pr-noun}}=== {{head|id|Danh từ riêng|head=[[Timor Leste]]}} # {{transclude|id|Đông Ti-mo|id=Q574}} ==={{ĐM|see}}=== {{danh sách:quốc gia châu Á/id}} * {{l|id|Timor Lorosa'e}} * {{l|id|Timor Timur}} ==={{ĐM|further}}=== * {{R:KBBI Daring}} =={{langname|pt}}== ==={{ĐM|pr-noun}}=== {{pt-proper noun|m|head=[[Timor]] [[leste|Leste]]}} # {{misspelling of|pt|Timor-Leste}} 4aauyu8nbpftisk085h6kna2m13am23 Mô đun:affix 828 256625 2566654 2376622 2026-09-26T11:06:56Z Hiyuune 50834 2566654 Scribunto text/plain local export = {} local debug_force_cat = false -- if set to true, always display categories even on userspace pages local m_links = require("Module:links") local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local decorations_module = "Module:decorations" local en_utilities_module = "Module:en-utilities" local etymology_module = "Module:etymology" local scripts_module = "Module:scripts" local utilities_module = "Module:utilities" -- Export this so the category code in [[Module:category tree/etymology]] can access it. export.affix_lang_data_module_prefix = "Module:affix/lang-data/" local ulen = m_str_utils.len local rfind = m_str_utils.find local rmatch = m_str_utils.match local pluralize = require(en_utilities_module).pluralize local singularize = require(en_utilities_module).singularize local u = m_str_utils.char local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility function export.affix_variants(canonical, variants) local mappings = {} for _, variant in ipairs(variants) do mappings[variant] = canonical end return mappings end function export.id_mapping(default, ids) local mapping = { default = default } if ids then for id, target in pairs(ids) do mapping[id] = target end end return mapping end function export.id_mapping_with_affix_variants(base, id_variants) local mappings = {} for id, variants in pairs(id_variants) do for _, variant in ipairs(variants) do mappings[variant] = export.id_mapping(base, {[id] = base}) end end return mappings end function export.merge_tables(...) local result = {} for i = 1, select('#', ...) do local t = select(i, ...) if t then for k, v in pairs(t) do result[k] = v end end end return result end -- Export this so the category code in [[Module:category tree/etymology]] can access it. export.langs_with_lang_specific_data = { ["az"] = true, ["fi"] = true, ["fr"] = true, ["izh"] = true, ["la"] = true, ["sah"] = true, ["tr"] = true, ["trk-pro"] = true, } local default_pos = "Từ" --[==[ intro: ===About different types of hyphens ("template", "display" and "lookup"):=== * The "template hyphen" is the per-script hyphen character that is used in template calls to indicate that a term is an affix. This is always a single Unicode char, but there may be multiple possible hyphens for a given script. Normally this is just the regular hyphen character "-", but for some non-Latin-script languages (currently only right-to-left languages), it is different. * The "display hyphen" is the string (which might be an empty string) that is added onto a term as displayed and linked, to indicate that a term is an affix. Currently this is always either the same as the template hyphen or an empty string, but the code below is written generally enough to handle arbitrary display hyphens. Specifically: *# For East Asian languages, the display hyphen is always blank. *# For Arabic-script languages, either tatweel (ـ) or ZWNJ (zero-width non-joiner) are allowed as template hyphens, where ZWNJ is supported primarily for Farsi, because some suffixes have non-joining behavior. The display hyphen corresponding to tatweel is also tatweel, but the display hyphen corresponding to ZWNJ is blank (tatweel is also the default display hyphen, for calls to {{tl|prefix}}/{{tl|suffix}}/etc. that don't include an explicit hyphen). * The "lookup hyphen" is the hyphen that is used when looking up language-specific affix mappings. (These mappings are discussed in more detail below when discussing link affixes.) It depends only on the script of the affix in question. Most scripts (including East Asian scripts) use a regular hyphen "-" as the lookup hyphen, but Hebrew and Arabic have their own lookup hyphens (respectively maqqef and tatweel). Note that for Arabic in particular, there are three possible template hyphens that are recognized (tatweel, ZWNJ and regular hyphen), but mappings must use tatweel. ===About different types of affixes ("template", "display", "link", "lookup" and "category"):=== * A "template affix" is an affix in its source form as it appears in a template call. Generally, a template affix has an attached template hyphen (see above) to indicate that it is an affix and indicate what type of affix it is (prefix, suffix, interfix or circumfix), but some of the older-style templates such as {{tl|suffix}}, {{tl|prefix}}, {{tl|confix}}, etc. have "positional" affixes where the presence of the affix in a certain position (e.g. the second or third parameter) indicates that it is a certain type of affix, whether or not it has an attached template hyphen. * A "display affix" is the corresponding affix as it is actually displayed to the user. The display affix may differ from the template affix for various reasons: *# The display affix may be specified explicitly using the {{para|alt<var>N</var>}} parameter, the `<alt:...>` inline modifier or a piped link of the form e.g. `<nowiki>[[-kas|-käs]]</nowiki>` (here indicating that the affix should display as `-käs` but be linked as `-kas`). Here, the template affix is arguably the entire piped link, while the display affix is `-käs`. *# Even in the absence of {{para|alt<var>N</var>}} parameters, `<alt:...>` inline modifiers and piped links, certain languages have differences between the "template hyphen" specified in the template (which always needs to be specified somehow or other in templates like {{tl|affix}}, to indicate that the term is an affix and what type of affix it is) and the display hyphen (see above), with corresponding differences between template and display affixes. * A (regular) "link affix" is the affix that is linked to when the affix is shown to the user. The link affix is usually the same as the display affix, but will differ in one of three circumstances: *# The display and link affixes are explicitly made different using {{para|alt<var>N</var>}} parameters, `<alt:...>` inline modifiers or piped links, as described above under "display affix". *# For certain languages, certain affixes are mapped to canonical form using language-specific mappings. For example, in Finnish, the adjective-forming suffix {{m|fi|-kas}} appears as {{m|fi|-käs}} after front vowels, but logically both forms are the same suffix and should be linked and categorized the same. Similarly, in Latin, the negative and intensive prefixes spelled {{m|la|in-}} (etymologically two distinct prefixes) appear variously as {{m|la|il-}}, {{m|la|im-}} or {{m|la|ir-}} before certain consonants. Mappings are supplied in [[Module:affix/lang-data/LANGCODE]] to convert Finnish {{m|fi|-käs}} to {{m|fi|-kas}} for linking and categorization purposes. Note that the affixes in the mappings use "lookup hyphens" to indicate the different types of affixes, which is usually the same as the template hyphen but differs for Arabic scripts, because there are multiple possible template hyphens recognized but only one lookup hyphen (tatweel). The form of the affix as used to look up in the mapping tables is called the "lookup affix"; see below. * A "stripped link affix" is a link affix that has been passed through the language's `stripDiacritics()` function, which may strip certain diacritics: e.g. macrons in Latin and Old English (indicating length); acute and grave accents in Russian and various other Slavic languages (indicating stress); vowel diacritics in most Arabic-script languages; and also tatweel in some Arabic-script languages (currently, for example, Persian, Arabic and Urdu strip tatweel, but Ottoman Turkish does not). Stripped link affixes are currently what are used in category names. * A "lookup affix" is the form of the affix as it is looked up in the language-specific lookup mappings described above under link affixes. There are actually two lookup stages: *# First, the affix is looked up in a modified display form (specifically, the same as the display affix but using lookup hyphens). Note that this lookup does not occur if an explicit display form is given using {{para|alt<var>N</var>}} or an `<alt:...>` inline modifier, or if the template affix contains a piped or embedded link. *# If no entry is found, the affix is then looked up in a modified link form (specifically, the modified display form passed through the language's `stripDiacritics()` function, which strips out certain diacritics, but with the lookup hyphen re-added if it was stripped out, as in the case of tatweel in many Arabic-script languages). The reason for this double lookup procedure is to allow for mappings that are sensitive to the extra diacritics, but also allow for mappings that are not sensitive in this fashion (e.g. Russian {{m|ru|-ливый}} occurs both stressed and unstressed, but is the same prefix either way). * A "category affix" is the affix as it appears in categories such as [[:Category:Finnish terms suffixed with -kas| Category:Finnish terms suffixed with ''-kas'']]. The category affix is currently always the same as the stripped link affix. This means that for Arabic-script languages, it may or may not have a tatweel, even if the correponding display affix and regular link affix have a tatweel. As mentioned above, stripDiacritics() strips tatweel for Arabic, Persian and Urdu, but not for Ottoman Turkish. Hence affix categories for Arabic, Persian and Urdu will be missing the tatweel, but affix categories for Ottoman Turkish will have it. An additional complication is that if the template affix contains a ZWNJ, the display (and hence the link and category affixes) will have no hyphen attached in any case. ]==] ----------------------------------------------------------------------------------------- -- Template and display hyphens -- ----------------------------------------------------------------------------------------- --[=[ Per-script template hyphens. The template hyphen is what appears in the {{affix}}/{{prefix}}/{{suffix}}/etc. template (in the wikicode). See above. They key below is a script code, after removing a hyphen and anything preceding. Hence, script codes like 'mnc-Mong' and 'xwo-Mong' will match 'Mong'. The value below is a string consisting of one or more hyphen characters. If there is more than one character, the default hyphen must come last and a non-default function must be specified for the script in display_hyphens[] so the correct display hyphen will be specified when no template hyphen is given (in {{suffix}}/{{prefix}}/etc.). Script detection is normally done when linking, but we need to do it earlier. However, under most circumstances we don't need to do script detection. Specifically, we only need to do script detection for a given language if (a) the language has multiple scripts; and (b) at least one of those scripts is listed below or in display_hyphens. ]=] local ZWNJ = u(0x200C) -- zero-width non-joiner local template_hyphens = { -- This covers all Arabic scripts. See above. ["Arab"] = "ـ" .. ZWNJ .. "-", -- tatweel + zero-width non-joiner + regular hyphen ["Aran"] = "ـ" .. ZWNJ .. "-", -- tatweel + zero-width non-joiner + regular hyphen ["Hebr"] = "־", -- Hebrew-specific hyphen termed "maqqef" ["Mong"] = "᠊", -- FIXME! What about the following right-to-left scripts? -- Adlm (Adlam) -- Armi (Imperial Aramaic) -- Avst (Avestan) -- Cprt (Cypriot) -- Khar (Kharoshthi) -- Mand (Mandaic/Mandaean) -- Mani (Manichaean) -- Mend (Mende/Mende Kikakui) -- Narb (Old North Arabian) -- Nbat (Nabataean/Nabatean) -- Nkoo (N'Ko) -- Orkh (Orkhon runes) -- Phli (Inscriptional Pahlavi) -- Phlp (Psalter Pahlavi) -- Phlv (Book Pahlavi) -- Phnx (Phoenician) -- Prti (Inscriptional Parthian) -- Rohg (Hanifi Rohingya) -- Samr (Samaritan) -- Sarb (Old South Arabian) -- Sogd (Sogdian) -- Sogo (Old Sogdian) -- Syrc (Syriac) -- Thaa (Thaana) } -- Hyphens used when looking up an affix in a lang-specific affix mapping. Defaults to regular hyphen (-). The keys -- are script codes, after removing a hyphen and anything preceding. Hence, script codes like 'mnc-Mong' and 'xwo-Mong' -- will match 'Mong'. The value should be a single character. local lookup_hyphens = { ["Hebr"] = "־", -- This covers all Arabic scripts. See above. ["Arab"] = "ـ", ["Aran"] = "ـ", } -- Default display-hyphen function. local function default_display_hyphen(script, hyph) if not hyph then return template_hyphens[script] or "-" end return hyph end local function arab_get_display_hyphen(_script, hyph) if not hyph then return "ـ" -- tatweel elseif hyph == ZWNJ then return "" else return hyph end end local function no_display_hyphen(_script, _hyph) return "" end -- Per-script function to return the correct display hyphen given the script and template hyphen. The function should -- also handle the case where the passed-in template hyphen is nil, corresponding to the situation in -- {{prefix}}/{{suffix}}/etc. where no template hyphen is specified. The key is the script code after removing a hyphen -- and anything preceding, so 'mnc-Mong', 'xwo-Mong' etc. will match 'Mong'. local display_hyphens = { -- This covers all Arabic scripts. See above. ["Arab"] = arab_get_display_hyphen, ["Aran"] = arab_get_display_hyphen, ["Bopo"] = no_display_hyphen, ["Hani"] = no_display_hyphen, ["Hans"] = no_display_hyphen, ["Hant"] = no_display_hyphen, -- The following is a mixture of several scripts. Hopefully the specs here are correct! ["Jpan"] = no_display_hyphen, ["Jurc"] = no_display_hyphen, ["Kitl"] = no_display_hyphen, ["Kits"] = no_display_hyphen, ["Laoo"] = no_display_hyphen, ["Nshu"] = no_display_hyphen, ["Shui"] = no_display_hyphen, ["Tang"] = no_display_hyphen, ["Thaa"] = no_display_hyphen, ["Thai"] = no_display_hyphen, ["Tibt"] = no_display_hyphen, } ----------------------------------------------------------------------------------------- -- Basic Utility functions -- ----------------------------------------------------------------------------------------- local function glossary_link(entry, text) text = text or entry return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]" end local function track(page) if type(page) == "table" then for i, pg in ipairs(page) do page[i] = "affix/" .. pg end else page = "affix/" .. page end require("Module:debug/track")(page) end local function ine(val) return val ~= "" and val or nil end ----------------------------------------------------------------------------------------- -- Compound types -- ----------------------------------------------------------------------------------------- local function make_compound_type(typ, alttext) return { text = glossary_link(typ, alttext) .. " compound", cat = "Từ ghép " .. typ, } end -- Make a compound type entry with a simple rather than glossary link. -- These should be replaced with a glossary link when the entry in the glossary -- is created. local function make_non_glossary_compound_type(typ, alttext) local link = alttext and "[[" .. typ .. "|" .. alttext .. "]]" or "[[" .. typ .. "]]" return { text = link .. " compound", cat = "Từ ghép " .. typ, } end local function make_raw_compound_type(typ, alttext) return { text = glossary_link(typ, alttext), cat = typ, } end local function make_borrowing_type(typ, alttext) return { text = glossary_link(typ, alttext), borrowing_type = typ, } end export.etymology_types = { ["adapted borrowing"] = make_borrowing_type("Vay mượn đã đồng hóa"), ["adap"] = "adapted borrowing", ["abor"] = "adapted borrowing", ["alliterative"] = make_non_glossary_compound_type("alliterative"), ["allit"] = "alliterative", ["antonymous"] = make_non_glossary_compound_type("antonymous"), ["ant"] = "antonymous", ["bahuvrihi"] = make_compound_type("bahuvrihi", "bahuvrīhi"), ["bahu"] = "bahuvrihi", ["bv"] = "bahuvrihi", ["coordinative"] = make_compound_type("coordinative"), ["coord"] = "coordinative", ["descriptive"] = make_compound_type("descriptive"), ["desc"] = "descriptive", ["determinative"] = make_compound_type("determinative"), ["det"] = "determinative", ["dvandva"] = make_compound_type("dvandva"), ["dva"] = "dvandva", ["dvigu"] = make_compound_type("dvigu"), ["dvi"] = "dvigu", ["endocentric"] = make_compound_type("nội tâm"), ["endo"] = "endocentric", ["exocentric"] = make_compound_type("exocentric"), ["exo"] = "exocentric", ["izafet I"] = make_compound_type("izafet I"), ["iz1"] = "izafet I", ["izafet II"] = make_compound_type("izafet II"), ["iz2"] = "izafet II", ["izafet III"] = make_compound_type("izafet III"), ["iz3"] = "izafet III", ["karmadharaya"] = make_compound_type("karmadharaya", "karmadhāraya"), ["karma"] = "karmadharaya", ["kd"] = "karmadharaya", ["kenning"] = make_raw_compound_type("kenning"), ["ken"] = "kenning", ["rhyming"] = make_non_glossary_compound_type("rhyming"), ["rhy"] = "rhyming", ["synonymous"] = make_non_glossary_compound_type("synonymous"), ["syn"] = "synonymous", ["tatpurusa"] = make_compound_type("tatpurusa", "tatpuruṣa"), ["tat"] = "tatpurusa", ["tp"] = "tatpurusa", } local function process_etymology_type(typ, nocap, notext, has_parts) local text_sections = {} local categories = {} local borrowing_type if typ then local typdata = export.etymology_types[typ] if type(typdata) == "string" then typdata = export.etymology_types[typdata] end if not typdata then error("Internal error: Unrecognized type '" .. typ .. "'") end local text = typdata.text if not nocap then text = ucfirst(text) end local cat = typdata.cat borrowing_type = typdata.borrowing_type local oftext = typdata.oftext or " của" if not notext then table.insert(text_sections, text) if has_parts then table.insert(text_sections, oftext) table.insert(text_sections, " ") end end if cat then table.insert(categories, cat) end end return text_sections, categories, borrowing_type end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- -- Iterate an array up to the greatest integer index found. local function ipairs_with_gaps(t) local indices = m_table.numKeys(t) local max_index = #indices > 0 and math.max(unpack(indices)) or 0 local i = 0 return function() if i < max_index then i = i + 1 return i, t[i] end end end export.ipairs_with_gaps = ipairs_with_gaps --[==[ Join formatted parts (in `parts_formatted`) together with any overall {{para|lit}} spec (in `lit`) plus categories, which are formatted by prepending the language name as found in `lang`. The value of an entry in `categories` can be either a string (which is formatted using `sort_key`) or a table of the form `{ {cat=<var>category</var>, sort_key=<var>sort_key</var>, sort_base=<var>sort_base</var>}`, specifying the sort key and sort base to use when formatting the category. If `nocat` is given, no categories are added; otherwise, `force_cat` causes categories to be added even on userspace pages. ]==] function export.join_formatted_parts(data) local cattext local lang = data.data.lang local force_cat = data.data.force_cat or debug_force_cat if data.data.nocat then cattext = "" else for i, cat in ipairs(data.categories) do if type(cat) == "table" then data.categories[i] = require(utilities_module).format_categories(cat.cat .. " " .. lang:getFullName(), lang, cat.sort_key, cat.sort_base, force_cat) else data.categories[i] = require(utilities_module).format_categories(cat .. " " .. lang:getFullName(), lang, data.data.sort_key, nil, force_cat) end end cattext = table.concat(data.categories) end local result = table.concat(data.parts_formatted, not data.separator_already_added and " +&lrm; " or nil) .. (data.data.lit and ", nghĩa đen " .. m_links.mark(data.data.lit, "gloss") or "") local q = data.data.q local qq = data.data.qq local l = data.data.l local ll = data.data.ll if q and q[1] or qq and qq[1] or l and l[1] or ll and ll[1] then result = require(decorations_module).format_decorations { lang = lang, text = result, q = q, qq = qq, l = l, ll = ll, } end return result .. cattext end -- Remove links and call lang:stripDiacritics(term). local function strip_diacritics_no_links(lang, term) return lang:stripDiacritics(m_links.remove_links(term)) end --[=[ Convert a raw part as passed into an entry point into a part ready for linking. `lang` and `sc` are the overall language and script objects. This uses the overall language and script objects as defaults for the part and parses off any fragment from the term. We need to do the latter so that fragments don't end up in categories and so that we correctly do affix mapping even in the presence of fragments. ]=] local function canonicalize_part(part, lang, sc) if not part then return end -- Save the original (user-specified, part-specific) value of `lang`. If such a value is specified, we don't insert -- a '*fixed with' category, and we format the part using format_derived() in [[Module:etymology]] rather than -- full_link() in [[Module:links]]. part.part_lang = part.lang part.lang = part.lang or lang part.sc = part.sc or sc local term = part.term if not term then return elseif not part.fragment then part.term, part.fragment = m_links.get_fragment(term) else part.term = m_links.get_fragment(term) end end --[==[ Construct a single linked part based on the information in `part`, for use by `show_affix()` and other entry points. This should be called after `canonicalize_part()` is called on the part. This is a thin wrapper around `full_link()` in [[Module:links]] unless `part.part_lang` is specified (indicating that a part-specific language was given), in which case `format_derived()` in [[Module:etymology]] is called to display a term in a language other than the language of the overall term (specified in `data.lang`). `data` contains the entire object passed into the entry point and is used to access information for constructing the categories added by `format_derived()`. ]==] function export.link_term(part, data, include_separator) local result if part.part_lang then result = require(etymology_module).format_derived { lang = data.lang, terms = {part}, sources = {part.lang}, sort_key = data.sort_key, nocat = data.nocat, template_name = "affix", decorations_on_outside = true, borrowing_type = data.borrowing_type, force_cat = data.force_cat or debug_force_cat, } else result = m_links.full_link(part, "term") end if include_separator and part.separator then return part.separator .. result else return result end end local function canonicalize_script_code(scode) -- Convert 'mnc-Mong', 'xwo-Mong' etc. to 'Mong'. return (scode:gsub("^.*%-", "")) end ----------------------------------------------------------------------------------------- -- Affix-handling functions -- ----------------------------------------------------------------------------------------- -- Figure out the appropriate script for the given affix and language (unless the script is explicitly passed in), and -- return the values of template_hyphens[], display_hyphens[] and lookup_hyphens[] for that script, substituting -- default values as appropriate. Four values are returned: -- DETECTED_SCRIPT, TEMPLATE_HYPHEN, DISPLAY_HYPHEN, LOOKUP_HYPHEN local function detect_script_and_hyphens(text, lang, sc) local scode -- 1. If the script is explicitly passed in, use it. if sc then scode = sc:getCode() else local possible_script_codes = lang:getScriptCodes() -- YUCK! `possible_script_codes` comes from loadData() so #possible_scripts doesn't work (always returns 0). local num_possible_script_codes = m_table.length(possible_script_codes) if num_possible_script_codes == 0 then -- This shouldn't happen; if the language has no script codes, -- the list {"None"} should be returned. error("Something is majorly wrong! Language " .. lang:getCanonicalName() .. " has no script codes.") end if num_possible_script_codes == 1 then -- 2. If the language has only one possible script, use it. scode = possible_script_codes[1] else -- 3. Check if any of the possible scripts for the language have non-default values for template_hyphens[] -- or display_hyphens[]. If so, we need to do script detection on the text. If not, just use "Latn", -- which may not be technically correct but produces the right results because Latn has all default -- values for template_hyphens[] and display_hyphens[]. local may_have_nondefault_hyphen = false for _, script_code in ipairs(possible_script_codes) do script_code = canonicalize_script_code(script_code) if template_hyphens[script_code] or display_hyphens[script_code] then may_have_nondefault_hyphen = true break end end if not may_have_nondefault_hyphen then scode = "Latn" else scode = lang:findBestScript(text):getCode() end end end scode = canonicalize_script_code(scode) local template_hyphen = template_hyphens[scode] or "-" local lookup_hyphen = lookup_hyphens[scode] or "-" local display_hyphen = display_hyphens[scode] or default_display_hyphen return scode, template_hyphen, display_hyphen, lookup_hyphen end --[=[ Given a template affix `term` and an affix type `affix_type`, change the relevant template hyphen(s) in the affix to the display or lookup hyphen specified in `new_hyphen`, or add them if they are missing. `new_hyphen` can be a string, specifying a fixed hyphen, or a function of two arguments (the script code `scode` and the discovered template hyphen, or nil of no relevant template hyphen is present). `thyph_re` is a Lua pattern (which must be enclosed in parens) that matches the possible template hyphens. Note that not all template hyphens present in the affix are changed, but only the "relevant" ones (e.g. for a prefix, a relevant template hyphen is one coming at the end of the affix). ]=] local function reconstruct_term_per_hyphens(term, affix_type, scode, thyph_re, new_hyphen) local function get_hyphen(hyph) if type(new_hyphen) == "string" then return new_hyphen end return new_hyphen(scode, hyph) end if affix_type == "non-affix" then return term elseif affix_type == "phụ tố chu vi" then local before, before_hyphen, after_hyphen, after = rmatch(term, "^(.*)" .. thyph_re .. " " .. thyph_re .. "(.*)$") if not before or ulen(term) <= 3 then -- Unlike with other types of affixes, don't try to add hyphens in the middle of the term to convert it to -- a circumfix. Also, if the term is just hyphen + space + hyphen, return it. return term end return before .. get_hyphen(before_hyphen) .. " " .. get_hyphen(after_hyphen) .. after elseif affix_type == "infix" or affix_type == "trung tố" then local before_hyphen, middle, after_hyphen = rmatch(term, "^" .. thyph_re .. "(.*)" .. thyph_re .. "$") if before_hyphen and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return get_hyphen(before_hyphen) .. (middle or term) .. get_hyphen(after_hyphen) elseif affix_type == "tiền tố" then local middle, after_hyphen = rmatch(term, "^(.*)" .. thyph_re .. "$") if middle and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return (middle or term) .. get_hyphen(after_hyphen) elseif affix_type == "hậu tố" then local before_hyphen, middle = rmatch(term, "^" .. thyph_re .. "(.*)$") if before_hyphen and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return get_hyphen(before_hyphen) .. (middle or term) else error(("Lỗi nội bộ: Không rõ loại phụ tố '%s'"):format(affix_type)) end end --[=[ Look up a mapping from a given affix variant to the canonical form used in categories and links. The lookup tables are language-specific according to `lang`, and may be ID-specific according to `affix_id`. The affixes as they appear in the lookup tables (both the variant and the canonical form) are in "lookup affix" format (approximately speaking, they use a regular hyphen for most scripts, but a tatweel for Arabic-script entries and a maqqef for Hebrew-script entries), but the passed-in `affix` param is in "template affix" format (which differs from the lookup affix for Arabic-script entries, because more types of hyphens are allowed in template affixes; see the comments at the top of the file). The remaining parameters to this function are used to convert from template affixes to lookup affixes; see the reconstruct_term_per_hyphens() function above. If the affix contains brackets, no lookup is done. Otherwise, a two-stage process is used, first looking up the affix directly and then stripping diacritics and looking it up again. The reason for this is documented above in the comments at the top of the file (specifically, the comments describing lookup affixes). The value of a mapping can either be a string (do the mapping regardless of affix ID) or a table indexed by affix ID (where the special value `false` indicates no affix ID). The values of entries in this table can also be strings, or tables with keys `affix` and `id` (again, use `false` to indicate no ID). This allows an affix mapping to map from one ID to another (for example, this is used in English to map the [[an-]] prefix with no ID to the [[a-]] prefix with the ID 'not'). The Given a template affix `term` and an affix type `affix_type`, change the relevant template hyphen(s) in the affix to the display or lookup hyphen specified in `new_hyphen`, or add them if they are missing. `new_hyphen` can be a string, specifying a fixed hyphen, or a function of two arguments (the script code `scode` and the discovered template hyphen, or nil of no relevant template hyphen is present). `thyph_re` is a Lua pattern (which must be enclosed in parens) that matches the possible template hyphens. Note that not all template hyphens present in the affix are changed, but only the "relevant" ones (e.g. for a prefix, a relevant template hyphen is one coming at the end of the affix). ]=] local function lookup_affix_mapping(affix, affix_type, lang, scode, thyph_re, lookup_hyph, affix_id) local function do_lookup(afx) -- Ensure that the affix uses lookup hyphens regardless of whether it used a different type of hyphens before -- or no hyphens. local lookup_affix = reconstruct_term_per_hyphens(afx, affix_type, scode, thyph_re, lookup_hyph) local function do_lookup_for_langcode(langcode) if export.langs_with_lang_specific_data[langcode] then local langdata = mw.loadData(export.affix_lang_data_module_prefix .. langcode) if langdata.affix_mappings then local mapping = langdata.affix_mappings[lookup_affix] if mapping then if type(mapping) == "table" then mapping = mapping[affix_id] or mapping.default or mapping[affix_id or false] if mapping then return mapping end else return mapping end end end end end -- If `lang` is an etymology-only language, look for a mapping both for it and its full parent. local langcode = lang:getCode() local mapping = do_lookup_for_langcode(langcode) if mapping then return mapping end local full_langcode = lang:getFullCode() if full_langcode ~= langcode then mapping = do_lookup_for_langcode(full_langcode) if mapping then return mapping end end return nil end if affix:find("%[%[") then return nil end return do_lookup(affix) or do_lookup(lang:stripDiacritics(affix)) or nil end --[==[ For a given template term in a given language (see the definition of "template affix" near the top of the file), possibly in an explicitly specified script `sc` (but usually nil), return the term's affix type ({"prefix"}, {"interfix"}, {"suffix"}, {"circumfix"} or {"non-affix"}) along with the corresponding link and display affixes (see definitions near the top of the file); also the corresponding lookup affix (if `return_lookup_affix` is specified). The term passed in should already have any fragment (after the # sign) parsed off of it. Four values are returned: `affix_type`, `link_term`, `display_term` and `lookup_term`. The affix type can be passed in instead of autodetected; in this case, the template term need not have any attached hyphens, and the appropriate hyphens will be added in the appropriate places. If `do_affix_mapping` is specified, look up the affix in the lang-specific affix mappings, as described in the comment at the top of the file; otherwise, the link and display terms will always be the same. (They will be the same in any case if the template term has a bracketed link in it or is not an affix.) If `return_lookup_affix` is given, the fourth return value contains the term with appropriate lookup hyphens in the appropriate places; otherwise, it is the same as the display term. (This functionality is used in [[Module:category tree/affixes and compounds]] to convert link affixes into lookup affixes so that they can be looked up in the affix mapping tables.) Exported because used by [[Module:headword utilities]] to determine the affix type of a given pagename. ]==] function export.parse_term_for_affixes(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) if not term then return "non-affix", nil, nil, nil end if term == "^" then -- Indicates a null term to emulate the behavior of {{suffix|foo||bar}}. term = "" return "non-affix", term, term, term end if term:find("^%^") then -- HACK! ^ at the beginning of Korean languages has a special meaning, triggering capitalization of the -- transliteration. Don't interpret it as "force non-affix" for those languages. local langcode = lang:getCode() if langcode ~= "ko" and langcode ~= "okm" and langcode ~= "jje" then -- Formerly we allowed ^ to force non-affix type; this is now handled using an inline modifier -- <naf>, <root>, etc. Throw an error for the moment when the old way is encountered. error("Use of ^ to force non-affix status is no longer supported; use an inline modifier <naf> or <root> " .. "after the component") end end -- Remove an asterisk if the morpheme is reconstructed and add it back at the end. local reconstructed = "" if term:find("^%*") then reconstructed = "*" term = term:gsub("^%*", "") end local scode, thyph, dhyph, lhyph = detect_script_and_hyphens(term, lang, sc) thyph = "([" .. thyph .. "])" if not affix_type then if rfind(term, thyph .. " " .. thyph) then affix_type = "phụ tố chu vi" else local has_beginning_hyphen = rfind(term, "^" .. thyph) local has_ending_hyphen = rfind(term, thyph .. "$") if has_beginning_hyphen and has_ending_hyphen then affix_type = "trung tố" elseif has_ending_hyphen then affix_type = "tiền tố" elseif has_beginning_hyphen then affix_type = "hậu tộ" else affix_type = "non-affix" end end end local link_term, display_term, lookup_term if affix_type == "non-affix" then link_term = term display_term = term lookup_term = term else display_term = reconstruct_term_per_hyphens(term, affix_type, scode, thyph, dhyph) if do_affix_mapping then link_term = lookup_affix_mapping(term, affix_type, lang, scode, thyph, lhyph, affix_id) -- The return value of lookup_affix_mapping() may be an affix mapping with lookup hyphens if a mapping -- was found, otherwise nil if a mapping was not found. We need to convert to display hyphens in -- either case, but in the latter case we can reuse the display term, which has already been converted. if link_term then link_term = reconstruct_term_per_hyphens(link_term, affix_type, scode, thyph, dhyph) else link_term = display_term end else link_term = display_term end if return_lookup_affix then lookup_term = reconstruct_term_per_hyphens(term, affix_type, scode, thyph, lhyph) else lookup_term = display_term end end link_term = reconstructed .. link_term display_term = reconstructed .. display_term lookup_term = reconstructed .. lookup_term return affix_type, link_term, display_term, lookup_term end --[==[ Add a hyphen to a term in the appropriate place, based on the specified affix type, stripping off any existing hyphens in that place. For example, if `affix_type` == {"prefix"}, we'll add a hyphen onto the end if it's not already there (or is of the wrong type). Three values are returned: the link term, display term and lookup term. This function is a thin wrapper around `parse_term_for_affixes`; see the comments above that function for more information. Note that this function is exposed externally because it is called by [[Module:category tree/affixes and compounds]]; see the comment in `parse_term_for_affixes` for more information. ]==] function export.make_affix(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) if not (affix_type == "tiền tố" or affix_type == "hậu tố" or affix_type == "phụ tố chu vi" or affix_type == "infix" or affix_type == "trung tố" or affix_type == "non-affix") then error("Internal error: Invalid affix type " .. (affix_type or "(nil)")) end local _, link_term, display_term, lookup_term = export.parse_term_for_affixes(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) return link_term, display_term, lookup_term end ----------------------------------------------------------------------------------------- -- Main entry points -- ----------------------------------------------------------------------------------------- --[==[ Core categorization logic for affixes. This is shared between show_affix(), show_compound_like() and get_affix_categories_only(). Returns the categories array and other metadata needed for formatting. ]==] local function generate_affix_categories(data) data.pos = data.pos or default_pos data.pos = data.pos local text_sections, categories, borrowing_type = process_etymology_type(data.type, data.surface_analysis or data.nocap, data.notext, #data.parts > 0) data.borrowing_type = borrowing_type -- Process each part local whole_words = 0 local is_affix_or_compound = false -- Canonicalize and generate links for all the parts first; then do categorization in a separate step, because when -- processing the first part for categorization, we may access the second part and need it already canonicalized. for i, part in ipairs_with_gaps(data.parts) do part = part or {} data.parts[i] = part canonicalize_part(part, data.lang, data.sc) -- Determine affix type and get link and display terms (see text at top of file). Store them in the part -- (in fields that won't clash with fields used by full_link() in [[Module:links]] or link_term()), so they -- can be used in the loop below when categorizing. part.affix_type, part.affix_link_term, part.affix_display_term = export.parse_term_for_affixes(part.term, part.lang, part.sc, part.type, not part.alt, nil, part.id) -- If link_term is an empty string, either a bare ^ was specified or an empty term was used along with inline -- modifiers. The intention in either case is not to link the term. part.term = ine(part.affix_link_term) -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. part.alt = part.alt or (part.affix_display_term ~= part.affix_link_term and part.affix_display_term) or nil end if not data.noaffixcat then -- Now do categorization. for i, part in ipairs_with_gaps(data.parts) do local affix_type = part.affix_type if affix_type ~= "non-affix" then is_affix_or_compound = true -- Make a sort key. For the first part, use the second part as the sort key; the intention is that if the -- term has a prefix, sorting by the prefix won't be very useful so we sort by what follows, which is -- presumably the root. local part_sort_base = nil local part_sort = part.sort or data.sort_key if i == 1 and data.parts[2] and data.parts[2].term then local part2 = data.parts[2] -- If the second-part link term is empty, the user requested an unlinked term; avoid a wikitext error -- by using the alt value if available. part_sort_base = ine(part2.affix_link_term) or ine(part2.alt) if part_sort_base then part_sort_base = strip_diacritics_no_links(part2.lang, part_sort_base) end end if part.pos and rfind(part.pos, "patronym") then table.insert(categories, {cat = "patronymics", sort_key = part_sort, sort_base = part_sort_base}) end if data.pos ~= "terms" and part.pos and rfind(part.pos, "giảm nhẹ nghĩa") then table.insert(categories, {cat = data.pos .. " giảm nhẹ nghĩa", sort_key = part_sort, sort_base = part_sort_base}) end -- Don't add a '*fixed with' category if the link term is empty or is in a different language. if ine(part.affix_link_term) and not part.part_lang then table.insert(categories, {cat = data.pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, part.affix_link_term) .. (part.id and " (" .. part.id .. ")" or ""), sort_key = part_sort, sort_base = part_sort_base}) end else whole_words = whole_words + 1 if whole_words == 2 then is_affix_or_compound = true table.insert(categories, data.pos .. " ghép") end end end -- Make sure there was either an affix or a compound (two or more non-affix terms). if not is_affix_or_compound and not data.allow_no_affixes_or_compounds then error("The parameters did not include any affixes, and the term is not a compound. Please provide at least one affix.") end end return text_sections, categories, borrowing_type end --[==[ Implementation of {{tl|affix}} and {{tl|surface analysis}}. `data` contains all the information describing the affixes to be displayed, and contains the following: * `.lang` ('''required'''): Overall language object. Different from term-specific language objects (see `.parts` below). * `.sc`: Overall script object (usually omitted). Different from term-specific script objects. * `.parts` ('''required'''): List of objects describing the affixes to show. The general format of each object is as would be passed to `full_link()`, except that the `.lang` field should be missing unless the term is of a language different from the overall `.lang` value (in such a case, the language name is shown along with the term and an additional "derived from" category is added). '''WARNING''': The data in `.parts` will be destructively modified. * `.pos`: Overall part of speech (used in categories, defaults to {"terms"}). Different from term-specific part of speech. * `.sort_key`: Overall sort key. Normally omitted except e.g. in Japanese. * `.type`: Type of compound, if the parts in `.parts` describe a compound. Strictly optional, and if supplied, the compound type is displayed before the parts (normally capitalized, unless `.nocap` is given). * `.nocap`: Don't capitalize the first letter of text displayed before the parts (relevant only if `.type` or `.surface_analysis` is given). * `.notext`: Don't display any text before the parts (relevant only if `.type` or `.surface_analysis` is given). * `.nocat`: Disable all categorization. * `.noaffixcat`: Disable affix (and compound) categorization. Relevant for e.g. blends, which may otherwise be incorrectly categorized as compound terms. * `.lit`: Overall literal definition. Different from term-specific literal definitions. * `.force_cat`: Always display categories, even on userspace pages. * `.surface_analysis`: Implement {{surface analysis}}; adds `By surface analysis, ` before the parts. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_affix(data) local text_sections, categories, _ = generate_affix_categories(data) -- Process each part for display local parts_formatted = {} for i, part in ipairs_with_gaps(data.parts) do -- Make a link for the part table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if data.surface_analysis then local text = "theo cách " .. glossary_link("phân tích mặt chữ") .. ": " if not data.nocap then text = ucfirst(text) end table.insert(text_sections, 1, text) end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Get only the categories that would be generated by show_affix(), without any text output or formatting. This is used by Module:etymon to get affix categorization. Returns an array of category objects, where each entry is either a string (simple category name) or a table with keys `cat`, `sort_key`, and `sort_base` for more complex categorization. `data` should have the same structure as passed to show_affix(): * `.lang` (required): Overall language object * `.parts` (required): Array of affix part objects with `.term`, `.lang`, `.id`, etc. * `.pos`: Part of speech (defaults to "terms") * `.sort_key`: Overall sort key for categories '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.get_affix_categories_only(data) local _, categories, _ = generate_affix_categories(data) return categories end function export.show_surface_analysis(data) data.surface_analysis = true data.allow_no_affixes_or_compounds = true return export.show_affix(data) end --[==[ Implementation of {{tl|compound}}. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_compound(data) data.pos = data.pos or default_pos data.pos = data.pos local text_sections, categories, borrowing_type = process_etymology_type(data.type, data.nocap, data.notext, #data.parts > 0) data.borrowing_type = borrowing_type local parts_formatted = {} table.insert(categories, data.pos .. " ghép") -- Make links out of all the parts local whole_words = 0 for i, part in ipairs(data.parts) do canonicalize_part(part, data.lang, data.sc) -- Determine affix type and get link and display terms (see text at top of file). local affix_type, link_term, display_term = export.parse_term_for_affixes(part.term, part.lang, part.sc, part.type, not part.alt, nil, part.id) -- If the term is an interfix or the type was explicitly given, recognize it as such (which means e.g. that we -- will display the term without hyphens for East Asian languages). Otherwise, ignore the fact that it looks -- like an affix and display as specified in the template (but pay attention to the detected affix type for -- certain tracking purposes). if affix_type == "trung tố" or (part.type and part.type ~= "non-affix") then -- If link_term is an empty string, either a bare ^ was specified or an empty term was used along with -- inline modifiers. The intention in either case is not to link the term. Don't add a '*fixed with' -- category in this case, or if the term is in a different language. -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. if link_term and link_term ~= "" and not part.part_lang then table.insert(categories, {cat = data.pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, link_term), sort_key = part.sort or data.sort_key}) end part.term = link_term ~= "" and link_term or nil part.alt = part.alt or (display_term ~= link_term and display_term) or nil else if affix_type ~= "non-affix" then local langcode = data.lang:getCode() -- If `data.lang` is an etymology-only language, track both using its code and its full parent's code. track { affix_type, affix_type .. "/lang/" .. langcode } local full_langcode = data.lang:getFullCode() if langcode ~= full_langcode then track(affix_type .. "/lang/" .. full_langcode) end else whole_words = whole_words + 1 end end table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if whole_words == 1 then track("one whole word") elseif whole_words == 0 then track("looks like confix") end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Implementation of {{tl|blend}}, {{tl|univerbation}} and similar "compound-like" templates. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_compound_like(data) data.allow_no_affixes_or_compounds = true local text_sections, categories, _ = generate_affix_categories(data) if data.cat then table.insert(categories, data.cat) end -- Process each part for display local parts_formatted = {} for i, part in ipairs_with_gaps(data.parts) do -- Make a link for the part table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if #data.parts > 0 and data.oftext then table.insert(text_sections, 1, " " .. data.oftext .. " ") end if data.text then table.insert(text_sections, 1, data.text) end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Make `part` (a structure holding information on an affix part) into an affix of type `affix_type`, and apply any relevant affix mappings. For example, if the desired affix type is "suffix", this will (in general) add a hyphen onto the beginning of the term, alt, tr and ts components of the part if not already present. The hyphen that's added is the "display hyphen" (see above) and may be script-specific. (In the case of East Asian scripts, the display hyphen is an empty string whereas the template hyphen is the regular hyphen, meaning that any regular hyphen at the beginning of the part will be effectively removed.) `lang` and `sc` hold overall language and script objects. Note that this also applies any language-specific affix mappings, so that e.g. if the language is Finnish and the user specified [[-käs]] in the affix and didn't specify an `.alt` value, `part.term` will contain [[-kas]] and `part.alt` will contain [[-käs]]. This function is used by the "legacy" templates ({{tl|prefix}}, {{tl|suffix}}, {{tl|confix}}, etc.) where the nature of the affix is specified by the template itself rather than auto-determined from the affix, as is the case with {{tl|affix}}. '''WARNING''': This destructively modifies `part`. ]==] local function make_part_into_affix(part, lang, sc, affix_type) canonicalize_part(part, lang, sc) local link_term, display_term = export.make_affix(part.term, part.lang, part.sc, affix_type, not part.alt, nil, part.id) part.term = link_term -- When we don't specify `do_affix_mapping` to make_affix(), link and display terms (first and second retvals of -- make_affix()) are the same. -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. part.alt = part.alt and export.make_affix(part.alt, part.lang, part.sc, affix_type) or (display_term ~= link_term and display_term) or nil local Latn = require(scripts_module).getByCode("Latn") part.tr = export.make_affix(part.tr, part.lang, Latn, affix_type) part.ts = export.make_affix(part.ts, part.lang, Latn, affix_type) end local function track_wrong_affix_type(template, part, expected_affix_type) if part and not part.type then local affix_type = export.parse_term_for_affixes(part.term, part.lang, part.sc) if affix_type ~= expected_affix_type then local part_name = expected_affix_type or "base" local langcode = part.lang:getCode() local full_langcode = part.lang:getFullCode() require("Module:debug/track") { template, template .. "/" .. part_name, template .. "/" .. part_name .. "/" .. (affix_type or "none"), template .. "/" .. part_name .. "/" .. (affix_type or "none") .. "/lang/" .. langcode } -- If `part.lang` is an etymology-only language, track both using its code and its full parent's code. if full_langcode ~= langcode then require("Module:debug/track")( template .. "/" .. part_name .. "/" .. (affix_type or "none") .. "/lang/" .. full_langcode ) end end end end local function insert_affix_category(categories, pos, affix_type, part, sort_key, sort_base) -- Don't add a '*fixed with' category if the link term is empty or is in a different language. if part.term and not part.part_lang then local cat = pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, part.term) .. (part.id and " (" .. part.id .. ")" or "") if sort_key or sort_base then table.insert(categories, {cat = cat, sort_key = sort_key, sort_base = sort_base}) else table.insert(categories, cat) end end end --[==[ Implementation of {{tl|circumfix}}. '''WARNING''': This destructively modifies both `data` and `.prefix`, `.base` and `.suffix`. ]==] function export.show_circumfix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.prefix, data.lang, data.sc, "tiền tố") make_part_into_affix(data.suffix, data.lang, data.sc, "hậu tố") track_wrong_affix_type("phụ tố chu vi", data.prefix, "tiền tố") track_wrong_affix_type("phụ tố chu vi", data.base, nil) track_wrong_affix_type("phụ tố chu vi", data.suffix, "hậu tố") -- Create circumfix term. local circumfix = nil if data.prefix.term and data.suffix.term then circumfix = data.prefix.term .. " " .. data.suffix.term data.prefix.alt = data.prefix.alt or data.prefix.term data.suffix.alt = data.suffix.alt or data.suffix.term data.prefix.term = circumfix data.suffix.term = circumfix end -- Make links out of all the parts. local parts_formatted = {} local categories = {} local sort_base if data.base.term then sort_base = strip_diacritics_no_links(data.base.lang, data.base.term) end table.insert(parts_formatted, export.link_term(data.prefix, data)) table.insert(parts_formatted, export.link_term(data.base, data)) table.insert(parts_formatted, export.link_term(data.suffix, data)) -- Insert the categories, but don't add a '*fixed with' category if the link term is in a different language. if not data.prefix.part_lang then table.insert(categories, {cat=data.pos .. " có phụ tố chu vi " .. strip_diacritics_no_links(data.prefix.lang, circumfix), sort_key=data.sort_key, sort_base=sort_base}) end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|confix}}. '''WARNING''': This destructively modifies both `data` and `.prefix`, `.base` and `.suffix`. ]==] function export.show_confix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.prefix, data.lang, data.sc, "tiền tố") make_part_into_affix(data.suffix, data.lang, data.sc, "hậu tố") track_wrong_affix_type("confix", data.prefix, "tiền tố") track_wrong_affix_type("confix", data.base, nil) track_wrong_affix_type("confix", data.suffix, "hậu tố") -- Make links out of all the parts. local parts_formatted = {} local prefix_sort_base if data.base and data.base.term then prefix_sort_base = strip_diacritics_no_links(data.base.lang, data.base.term) elseif data.suffix.term then prefix_sort_base = strip_diacritics_no_links(data.suffix.lang, data.suffix.term) end -- Insert the categories and parts. local categories = {} table.insert(parts_formatted, export.link_term(data.prefix, data)) insert_affix_category(categories, data.pos, "tiền tố", data.prefix, data.sort_key, prefix_sort_base) if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) end table.insert(parts_formatted, export.link_term(data.suffix, data)) -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "hậu tố", data.suffix) return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|infix}}. '''WARNING''': This destructively modifies both `data` and `.base` and `.infix`. ]==] function export.show_infix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.infix, data.lang, data.sc, "infix") track_wrong_affix_type("infix", data.base, nil) track_wrong_affix_type("infix", data.infix, "infix") -- Make links out of all the parts. local parts_formatted = {} local categories = {} table.insert(parts_formatted, export.link_term(data.base, data)) table.insert(parts_formatted, export.link_term(data.infix, data)) -- Insert the categories. -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "infix", data.infix) return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|prefix}}. '''WARNING''': This destructively modifies both `data` and the structures within `.prefixes`, as well as `.base`. ]==] function export.show_prefix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. for i, prefix in ipairs(data.prefixes) do make_part_into_affix(prefix, data.lang, data.sc, "tiền tố") end for i, prefix in ipairs(data.prefixes) do track_wrong_affix_type("tiền tố", prefix, "tiền tố") end track_wrong_affix_type("tiền tố", data.base, nil) -- Make links out of all the parts. local parts_formatted = {} local first_sort_base = nil local categories = {} if data.prefixes[2] then first_sort_base = ine(data.prefixes[2].term) or ine(data.prefixes[2].alt) if first_sort_base then first_sort_base = strip_diacritics_no_links(data.prefixes[2].lang, first_sort_base) end elseif data.base then first_sort_base = ine(data.base.term) or ine(data.base.alt) if first_sort_base then first_sort_base = strip_diacritics_no_links(data.base.lang, first_sort_base) end end for i, prefix in ipairs(data.prefixes) do table.insert(parts_formatted, export.link_term(prefix, data)) insert_affix_category(categories, data.pos, "tiền tố", prefix, data.sort_key, i == 1 and first_sort_base or nil) end if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) else table.insert(parts_formatted, "") end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|suffix}}. '''WARNING''': This destructively modifies both `data` and the structures within `.suffixes`, as well as `.base`. ]==] function export.show_suffix(data) local categories = {} data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. for i, suffix in ipairs(data.suffixes) do make_part_into_affix(suffix, data.lang, data.sc, "hậu tố") end track_wrong_affix_type("hậu tố", data.base, nil) for i, suffix in ipairs(data.suffixes) do track_wrong_affix_type("hậu tố", suffix, "hậu tố") end -- Make links out of all the parts. local parts_formatted = {} if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) else table.insert(parts_formatted, "") end for i, suffix in ipairs(data.suffixes) do table.insert(parts_formatted, export.link_term(suffix, data)) end -- Insert the categories. for i, suffix in ipairs(data.suffixes) do -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "hậu tố", suffix) if suffix.pos and rfind(suffix.pos, "patronym") then table.insert(categories, "patronymics") end end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end return export bngmmxvfc9cdpytumiyggg4giz0olr3 2566658 2566654 2026-09-26T11:21:18Z Hiyuune 50834 2566658 Scribunto text/plain local export = {} local debug_force_cat = false -- if set to true, always display categories even on userspace pages local m_links = require("Module:links") local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local decorations_module = "Module:decorations" local en_utilities_module = "Module:en-utilities" local etymology_module = "Module:etymology" local scripts_module = "Module:scripts" local utilities_module = "Module:utilities" -- Export this so the category code in [[Module:category tree/etymology]] can access it. export.affix_lang_data_module_prefix = "Module:affix/lang-data/" local ulen = m_str_utils.len local rfind = m_str_utils.find local rmatch = m_str_utils.match local pluralize = require(en_utilities_module).pluralize local singularize = require(en_utilities_module).singularize local u = m_str_utils.char local ucfirst = m_str_utils.ucfirst local unpack = unpack or table.unpack -- Lua 5.2 compatibility function export.affix_variants(canonical, variants) local mappings = {} for _, variant in ipairs(variants) do mappings[variant] = canonical end return mappings end function export.id_mapping(default, ids) local mapping = { default = default } if ids then for id, target in pairs(ids) do mapping[id] = target end end return mapping end function export.id_mapping_with_affix_variants(base, id_variants) local mappings = {} for id, variants in pairs(id_variants) do for _, variant in ipairs(variants) do mappings[variant] = export.id_mapping(base, {[id] = base}) end end return mappings end function export.merge_tables(...) local result = {} for i = 1, select('#', ...) do local t = select(i, ...) if t then for k, v in pairs(t) do result[k] = v end end end return result end -- Export this so the category code in [[Module:category tree/etymology]] can access it. export.langs_with_lang_specific_data = { ["az"] = true, ["fi"] = true, ["fr"] = true, ["izh"] = true, ["la"] = true, ["sah"] = true, ["tr"] = true, ["trk-pro"] = true, } local default_pos = "Từ" --[==[ intro: ===About different types of hyphens ("template", "display" and "lookup"):=== * The "template hyphen" is the per-script hyphen character that is used in template calls to indicate that a term is an affix. This is always a single Unicode char, but there may be multiple possible hyphens for a given script. Normally this is just the regular hyphen character "-", but for some non-Latin-script languages (currently only right-to-left languages), it is different. * The "display hyphen" is the string (which might be an empty string) that is added onto a term as displayed and linked, to indicate that a term is an affix. Currently this is always either the same as the template hyphen or an empty string, but the code below is written generally enough to handle arbitrary display hyphens. Specifically: *# For East Asian languages, the display hyphen is always blank. *# For Arabic-script languages, either tatweel (ـ) or ZWNJ (zero-width non-joiner) are allowed as template hyphens, where ZWNJ is supported primarily for Farsi, because some suffixes have non-joining behavior. The display hyphen corresponding to tatweel is also tatweel, but the display hyphen corresponding to ZWNJ is blank (tatweel is also the default display hyphen, for calls to {{tl|prefix}}/{{tl|suffix}}/etc. that don't include an explicit hyphen). * The "lookup hyphen" is the hyphen that is used when looking up language-specific affix mappings. (These mappings are discussed in more detail below when discussing link affixes.) It depends only on the script of the affix in question. Most scripts (including East Asian scripts) use a regular hyphen "-" as the lookup hyphen, but Hebrew and Arabic have their own lookup hyphens (respectively maqqef and tatweel). Note that for Arabic in particular, there are three possible template hyphens that are recognized (tatweel, ZWNJ and regular hyphen), but mappings must use tatweel. ===About different types of affixes ("template", "display", "link", "lookup" and "category"):=== * A "template affix" is an affix in its source form as it appears in a template call. Generally, a template affix has an attached template hyphen (see above) to indicate that it is an affix and indicate what type of affix it is (prefix, suffix, interfix or circumfix), but some of the older-style templates such as {{tl|suffix}}, {{tl|prefix}}, {{tl|confix}}, etc. have "positional" affixes where the presence of the affix in a certain position (e.g. the second or third parameter) indicates that it is a certain type of affix, whether or not it has an attached template hyphen. * A "display affix" is the corresponding affix as it is actually displayed to the user. The display affix may differ from the template affix for various reasons: *# The display affix may be specified explicitly using the {{para|alt<var>N</var>}} parameter, the `<alt:...>` inline modifier or a piped link of the form e.g. `<nowiki>[[-kas|-käs]]</nowiki>` (here indicating that the affix should display as `-käs` but be linked as `-kas`). Here, the template affix is arguably the entire piped link, while the display affix is `-käs`. *# Even in the absence of {{para|alt<var>N</var>}} parameters, `<alt:...>` inline modifiers and piped links, certain languages have differences between the "template hyphen" specified in the template (which always needs to be specified somehow or other in templates like {{tl|affix}}, to indicate that the term is an affix and what type of affix it is) and the display hyphen (see above), with corresponding differences between template and display affixes. * A (regular) "link affix" is the affix that is linked to when the affix is shown to the user. The link affix is usually the same as the display affix, but will differ in one of three circumstances: *# The display and link affixes are explicitly made different using {{para|alt<var>N</var>}} parameters, `<alt:...>` inline modifiers or piped links, as described above under "display affix". *# For certain languages, certain affixes are mapped to canonical form using language-specific mappings. For example, in Finnish, the adjective-forming suffix {{m|fi|-kas}} appears as {{m|fi|-käs}} after front vowels, but logically both forms are the same suffix and should be linked and categorized the same. Similarly, in Latin, the negative and intensive prefixes spelled {{m|la|in-}} (etymologically two distinct prefixes) appear variously as {{m|la|il-}}, {{m|la|im-}} or {{m|la|ir-}} before certain consonants. Mappings are supplied in [[Module:affix/lang-data/LANGCODE]] to convert Finnish {{m|fi|-käs}} to {{m|fi|-kas}} for linking and categorization purposes. Note that the affixes in the mappings use "lookup hyphens" to indicate the different types of affixes, which is usually the same as the template hyphen but differs for Arabic scripts, because there are multiple possible template hyphens recognized but only one lookup hyphen (tatweel). The form of the affix as used to look up in the mapping tables is called the "lookup affix"; see below. * A "stripped link affix" is a link affix that has been passed through the language's `stripDiacritics()` function, which may strip certain diacritics: e.g. macrons in Latin and Old English (indicating length); acute and grave accents in Russian and various other Slavic languages (indicating stress); vowel diacritics in most Arabic-script languages; and also tatweel in some Arabic-script languages (currently, for example, Persian, Arabic and Urdu strip tatweel, but Ottoman Turkish does not). Stripped link affixes are currently what are used in category names. * A "lookup affix" is the form of the affix as it is looked up in the language-specific lookup mappings described above under link affixes. There are actually two lookup stages: *# First, the affix is looked up in a modified display form (specifically, the same as the display affix but using lookup hyphens). Note that this lookup does not occur if an explicit display form is given using {{para|alt<var>N</var>}} or an `<alt:...>` inline modifier, or if the template affix contains a piped or embedded link. *# If no entry is found, the affix is then looked up in a modified link form (specifically, the modified display form passed through the language's `stripDiacritics()` function, which strips out certain diacritics, but with the lookup hyphen re-added if it was stripped out, as in the case of tatweel in many Arabic-script languages). The reason for this double lookup procedure is to allow for mappings that are sensitive to the extra diacritics, but also allow for mappings that are not sensitive in this fashion (e.g. Russian {{m|ru|-ливый}} occurs both stressed and unstressed, but is the same prefix either way). * A "category affix" is the affix as it appears in categories such as [[:Category:Finnish terms suffixed with -kas| Category:Finnish terms suffixed with ''-kas'']]. The category affix is currently always the same as the stripped link affix. This means that for Arabic-script languages, it may or may not have a tatweel, even if the correponding display affix and regular link affix have a tatweel. As mentioned above, stripDiacritics() strips tatweel for Arabic, Persian and Urdu, but not for Ottoman Turkish. Hence affix categories for Arabic, Persian and Urdu will be missing the tatweel, but affix categories for Ottoman Turkish will have it. An additional complication is that if the template affix contains a ZWNJ, the display (and hence the link and category affixes) will have no hyphen attached in any case. ]==] ----------------------------------------------------------------------------------------- -- Template and display hyphens -- ----------------------------------------------------------------------------------------- --[=[ Per-script template hyphens. The template hyphen is what appears in the {{affix}}/{{prefix}}/{{suffix}}/etc. template (in the wikicode). See above. They key below is a script code, after removing a hyphen and anything preceding. Hence, script codes like 'mnc-Mong' and 'xwo-Mong' will match 'Mong'. The value below is a string consisting of one or more hyphen characters. If there is more than one character, the default hyphen must come last and a non-default function must be specified for the script in display_hyphens[] so the correct display hyphen will be specified when no template hyphen is given (in {{suffix}}/{{prefix}}/etc.). Script detection is normally done when linking, but we need to do it earlier. However, under most circumstances we don't need to do script detection. Specifically, we only need to do script detection for a given language if (a) the language has multiple scripts; and (b) at least one of those scripts is listed below or in display_hyphens. ]=] local ZWNJ = u(0x200C) -- zero-width non-joiner local template_hyphens = { -- This covers all Arabic scripts. See above. ["Arab"] = "ـ" .. ZWNJ .. "-", -- tatweel + zero-width non-joiner + regular hyphen ["Aran"] = "ـ" .. ZWNJ .. "-", -- tatweel + zero-width non-joiner + regular hyphen ["Hebr"] = "־", -- Hebrew-specific hyphen termed "maqqef" ["Mong"] = "᠊", -- FIXME! What about the following right-to-left scripts? -- Adlm (Adlam) -- Armi (Imperial Aramaic) -- Avst (Avestan) -- Cprt (Cypriot) -- Khar (Kharoshthi) -- Mand (Mandaic/Mandaean) -- Mani (Manichaean) -- Mend (Mende/Mende Kikakui) -- Narb (Old North Arabian) -- Nbat (Nabataean/Nabatean) -- Nkoo (N'Ko) -- Orkh (Orkhon runes) -- Phli (Inscriptional Pahlavi) -- Phlp (Psalter Pahlavi) -- Phlv (Book Pahlavi) -- Phnx (Phoenician) -- Prti (Inscriptional Parthian) -- Rohg (Hanifi Rohingya) -- Samr (Samaritan) -- Sarb (Old South Arabian) -- Sogd (Sogdian) -- Sogo (Old Sogdian) -- Syrc (Syriac) -- Thaa (Thaana) } -- Hyphens used when looking up an affix in a lang-specific affix mapping. Defaults to regular hyphen (-). The keys -- are script codes, after removing a hyphen and anything preceding. Hence, script codes like 'mnc-Mong' and 'xwo-Mong' -- will match 'Mong'. The value should be a single character. local lookup_hyphens = { ["Hebr"] = "־", -- This covers all Arabic scripts. See above. ["Arab"] = "ـ", ["Aran"] = "ـ", } -- Default display-hyphen function. local function default_display_hyphen(script, hyph) if not hyph then return template_hyphens[script] or "-" end return hyph end local function arab_get_display_hyphen(_script, hyph) if not hyph then return "ـ" -- tatweel elseif hyph == ZWNJ then return "" else return hyph end end local function no_display_hyphen(_script, _hyph) return "" end -- Per-script function to return the correct display hyphen given the script and template hyphen. The function should -- also handle the case where the passed-in template hyphen is nil, corresponding to the situation in -- {{prefix}}/{{suffix}}/etc. where no template hyphen is specified. The key is the script code after removing a hyphen -- and anything preceding, so 'mnc-Mong', 'xwo-Mong' etc. will match 'Mong'. local display_hyphens = { -- This covers all Arabic scripts. See above. ["Arab"] = arab_get_display_hyphen, ["Aran"] = arab_get_display_hyphen, ["Bopo"] = no_display_hyphen, ["Hani"] = no_display_hyphen, ["Hans"] = no_display_hyphen, ["Hant"] = no_display_hyphen, -- The following is a mixture of several scripts. Hopefully the specs here are correct! ["Jpan"] = no_display_hyphen, ["Jurc"] = no_display_hyphen, ["Kitl"] = no_display_hyphen, ["Kits"] = no_display_hyphen, ["Laoo"] = no_display_hyphen, ["Nshu"] = no_display_hyphen, ["Shui"] = no_display_hyphen, ["Tang"] = no_display_hyphen, ["Thaa"] = no_display_hyphen, ["Thai"] = no_display_hyphen, ["Tibt"] = no_display_hyphen, } ----------------------------------------------------------------------------------------- -- Basic Utility functions -- ----------------------------------------------------------------------------------------- local function glossary_link(entry, text) text = text or entry return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]" end local function track(page) if type(page) == "table" then for i, pg in ipairs(page) do page[i] = "affix/" .. pg end else page = "affix/" .. page end require("Module:debug/track")(page) end local function ine(val) return val ~= "" and val or nil end ----------------------------------------------------------------------------------------- -- Compound types -- ----------------------------------------------------------------------------------------- local function make_compound_type(typ, alttext) return { text = glossary_link(typ, alttext) .. " compound", cat = "Từ ghép " .. typ, } end -- Make a compound type entry with a simple rather than glossary link. -- These should be replaced with a glossary link when the entry in the glossary -- is created. local function make_non_glossary_compound_type(typ, alttext) local link = alttext and "[[" .. typ .. "|" .. alttext .. "]]" or "[[" .. typ .. "]]" return { text = link .. " compound", cat = "Từ ghép " .. typ, } end local function make_raw_compound_type(typ, alttext) return { text = glossary_link(typ, alttext), cat = typ, } end local function make_borrowing_type(typ, alttext) return { text = glossary_link(typ, alttext), borrowing_type = typ, } end export.etymology_types = { ["adapted borrowing"] = make_borrowing_type("Vay mượn đã đồng hóa"), ["adap"] = "adapted borrowing", ["abor"] = "adapted borrowing", ["alliterative"] = make_non_glossary_compound_type("alliterative"), ["allit"] = "alliterative", ["antonymous"] = make_non_glossary_compound_type("antonymous"), ["ant"] = "antonymous", ["bahuvrihi"] = make_compound_type("bahuvrihi", "bahuvrīhi"), ["bahu"] = "bahuvrihi", ["bv"] = "bahuvrihi", ["coordinative"] = make_compound_type("coordinative"), ["coord"] = "coordinative", ["descriptive"] = make_compound_type("descriptive"), ["desc"] = "descriptive", ["determinative"] = make_compound_type("determinative"), ["det"] = "determinative", ["dvandva"] = make_compound_type("dvandva"), ["dva"] = "dvandva", ["dvigu"] = make_compound_type("dvigu"), ["dvi"] = "dvigu", ["endocentric"] = make_compound_type("nội tâm"), ["endo"] = "endocentric", ["exocentric"] = make_compound_type("exocentric"), ["exo"] = "exocentric", ["izafet I"] = make_compound_type("izafet I"), ["iz1"] = "izafet I", ["izafet II"] = make_compound_type("izafet II"), ["iz2"] = "izafet II", ["izafet III"] = make_compound_type("izafet III"), ["iz3"] = "izafet III", ["karmadharaya"] = make_compound_type("karmadharaya", "karmadhāraya"), ["karma"] = "karmadharaya", ["kd"] = "karmadharaya", ["kenning"] = make_raw_compound_type("kenning"), ["ken"] = "kenning", ["rhyming"] = make_non_glossary_compound_type("rhyming"), ["rhy"] = "rhyming", ["synonymous"] = make_non_glossary_compound_type("synonymous"), ["syn"] = "synonymous", ["tatpurusa"] = make_compound_type("tatpurusa", "tatpuruṣa"), ["tat"] = "tatpurusa", ["tp"] = "tatpurusa", } local function process_etymology_type(typ, nocap, notext, has_parts) local text_sections = {} local categories = {} local borrowing_type if typ then local typdata = export.etymology_types[typ] if type(typdata) == "string" then typdata = export.etymology_types[typdata] end if not typdata then error("Internal error: Unrecognized type '" .. typ .. "'") end local text = typdata.text if not nocap then text = ucfirst(text) end local cat = typdata.cat borrowing_type = typdata.borrowing_type local oftext = typdata.oftext or " của" if not notext then table.insert(text_sections, text) if has_parts then table.insert(text_sections, oftext) table.insert(text_sections, " ") end end if cat then table.insert(categories, cat) end end return text_sections, categories, borrowing_type end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- -- Iterate an array up to the greatest integer index found. local function ipairs_with_gaps(t) local indices = m_table.numKeys(t) local max_index = #indices > 0 and math.max(unpack(indices)) or 0 local i = 0 return function() if i < max_index then i = i + 1 return i, t[i] end end end export.ipairs_with_gaps = ipairs_with_gaps --[==[ Join formatted parts (in `parts_formatted`) together with any overall {{para|lit}} spec (in `lit`) plus categories, which are formatted by prepending the language name as found in `lang`. The value of an entry in `categories` can be either a string (which is formatted using `sort_key`) or a table of the form `{ {cat=<var>category</var>, sort_key=<var>sort_key</var>, sort_base=<var>sort_base</var>}`, specifying the sort key and sort base to use when formatting the category. If `nocat` is given, no categories are added; otherwise, `force_cat` causes categories to be added even on userspace pages. ]==] function export.join_formatted_parts(data) local cattext local lang = data.data.lang local force_cat = data.data.force_cat or debug_force_cat if data.data.nocat then cattext = "" else for i, cat in ipairs(data.categories) do if type(cat) == "table" then data.categories[i] = require(utilities_module).format_categories(cat.cat .. " " .. lang:getFullName(), lang, cat.sort_key, cat.sort_base, force_cat) else data.categories[i] = require(utilities_module).format_categories(cat .. " " .. lang:getFullName(), lang, data.data.sort_key, nil, force_cat) end end cattext = table.concat(data.categories) end local result = table.concat(data.parts_formatted, not data.separator_already_added and " +&lrm; " or nil) .. (data.data.lit and ", nghĩa đen " .. m_links.mark(data.data.lit, "gloss") or "") local q = data.data.q local qq = data.data.qq local l = data.data.l local ll = data.data.ll if q and q[1] or qq and qq[1] or l and l[1] or ll and ll[1] then result = require(decorations_module).format_decorations { lang = lang, text = result, q = q, qq = qq, l = l, ll = ll, } end return result .. cattext end -- Remove links and call lang:stripDiacritics(term). local function strip_diacritics_no_links(lang, term) return lang:stripDiacritics(m_links.remove_links(term)) end --[=[ Convert a raw part as passed into an entry point into a part ready for linking. `lang` and `sc` are the overall language and script objects. This uses the overall language and script objects as defaults for the part and parses off any fragment from the term. We need to do the latter so that fragments don't end up in categories and so that we correctly do affix mapping even in the presence of fragments. ]=] local function canonicalize_part(part, lang, sc) if not part then return end -- Save the original (user-specified, part-specific) value of `lang`. If such a value is specified, we don't insert -- a '*fixed with' category, and we format the part using format_derived() in [[Module:etymology]] rather than -- full_link() in [[Module:links]]. part.part_lang = part.lang part.lang = part.lang or lang part.sc = part.sc or sc local term = part.term if not term then return elseif not part.fragment then part.term, part.fragment = m_links.get_fragment(term) else part.term = m_links.get_fragment(term) end end --[==[ Construct a single linked part based on the information in `part`, for use by `show_affix()` and other entry points. This should be called after `canonicalize_part()` is called on the part. This is a thin wrapper around `full_link()` in [[Module:links]] unless `part.part_lang` is specified (indicating that a part-specific language was given), in which case `format_derived()` in [[Module:etymology]] is called to display a term in a language other than the language of the overall term (specified in `data.lang`). `data` contains the entire object passed into the entry point and is used to access information for constructing the categories added by `format_derived()`. ]==] function export.link_term(part, data, include_separator) local result if part.part_lang then result = require(etymology_module).format_derived { lang = data.lang, terms = {part}, sources = {part.lang}, sort_key = data.sort_key, nocat = data.nocat, template_name = "affix", decorations_on_outside = true, borrowing_type = data.borrowing_type, force_cat = data.force_cat or debug_force_cat, } else result = m_links.full_link(part, "term") end if include_separator and part.separator then return part.separator .. result else return result end end local function canonicalize_script_code(scode) -- Convert 'mnc-Mong', 'xwo-Mong' etc. to 'Mong'. return (scode:gsub("^.*%-", "")) end ----------------------------------------------------------------------------------------- -- Affix-handling functions -- ----------------------------------------------------------------------------------------- -- Figure out the appropriate script for the given affix and language (unless the script is explicitly passed in), and -- return the values of template_hyphens[], display_hyphens[] and lookup_hyphens[] for that script, substituting -- default values as appropriate. Four values are returned: -- DETECTED_SCRIPT, TEMPLATE_HYPHEN, DISPLAY_HYPHEN, LOOKUP_HYPHEN local function detect_script_and_hyphens(text, lang, sc) local scode -- 1. If the script is explicitly passed in, use it. if sc then scode = sc:getCode() else local possible_script_codes = lang:getScriptCodes() -- YUCK! `possible_script_codes` comes from loadData() so #possible_scripts doesn't work (always returns 0). local num_possible_script_codes = m_table.length(possible_script_codes) if num_possible_script_codes == 0 then -- This shouldn't happen; if the language has no script codes, -- the list {"None"} should be returned. error("Something is majorly wrong! Language " .. lang:getCanonicalName() .. " has no script codes.") end if num_possible_script_codes == 1 then -- 2. If the language has only one possible script, use it. scode = possible_script_codes[1] else -- 3. Check if any of the possible scripts for the language have non-default values for template_hyphens[] -- or display_hyphens[]. If so, we need to do script detection on the text. If not, just use "Latn", -- which may not be technically correct but produces the right results because Latn has all default -- values for template_hyphens[] and display_hyphens[]. local may_have_nondefault_hyphen = false for _, script_code in ipairs(possible_script_codes) do script_code = canonicalize_script_code(script_code) if template_hyphens[script_code] or display_hyphens[script_code] then may_have_nondefault_hyphen = true break end end if not may_have_nondefault_hyphen then scode = "Latn" else scode = lang:findBestScript(text):getCode() end end end scode = canonicalize_script_code(scode) local template_hyphen = template_hyphens[scode] or "-" local lookup_hyphen = lookup_hyphens[scode] or "-" local display_hyphen = display_hyphens[scode] or default_display_hyphen return scode, template_hyphen, display_hyphen, lookup_hyphen end --[=[ Given a template affix `term` and an affix type `affix_type`, change the relevant template hyphen(s) in the affix to the display or lookup hyphen specified in `new_hyphen`, or add them if they are missing. `new_hyphen` can be a string, specifying a fixed hyphen, or a function of two arguments (the script code `scode` and the discovered template hyphen, or nil of no relevant template hyphen is present). `thyph_re` is a Lua pattern (which must be enclosed in parens) that matches the possible template hyphens. Note that not all template hyphens present in the affix are changed, but only the "relevant" ones (e.g. for a prefix, a relevant template hyphen is one coming at the end of the affix). ]=] local function reconstruct_term_per_hyphens(term, affix_type, scode, thyph_re, new_hyphen) local function get_hyphen(hyph) if type(new_hyphen) == "string" then return new_hyphen end return new_hyphen(scode, hyph) end if affix_type == "non-affix" then return term elseif affix_type == "phụ tố chu vi" then local before, before_hyphen, after_hyphen, after = rmatch(term, "^(.*)" .. thyph_re .. " " .. thyph_re .. "(.*)$") if not before or ulen(term) <= 3 then -- Unlike with other types of affixes, don't try to add hyphens in the middle of the term to convert it to -- a circumfix. Also, if the term is just hyphen + space + hyphen, return it. return term end return before .. get_hyphen(before_hyphen) .. " " .. get_hyphen(after_hyphen) .. after elseif affix_type == "infix" or affix_type == "trung tố" then local before_hyphen, middle, after_hyphen = rmatch(term, "^" .. thyph_re .. "(.*)" .. thyph_re .. "$") if before_hyphen and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return get_hyphen(before_hyphen) .. (middle or term) .. get_hyphen(after_hyphen) elseif affix_type == "tiền tố" then local middle, after_hyphen = rmatch(term, "^(.*)" .. thyph_re .. "$") if middle and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return (middle or term) .. get_hyphen(after_hyphen) elseif affix_type == "hậu tố" then local before_hyphen, middle = rmatch(term, "^" .. thyph_re .. "(.*)$") if before_hyphen and ulen(term) <= 1 then -- If the term is just a hyphen, return it. return term end return get_hyphen(before_hyphen) .. (middle or term) else error(("Lỗi nội bộ: Không rõ loại phụ tố '%s'"):format(affix_type)) end end --[=[ Look up a mapping from a given affix variant to the canonical form used in categories and links. The lookup tables are language-specific according to `lang`, and may be ID-specific according to `affix_id`. The affixes as they appear in the lookup tables (both the variant and the canonical form) are in "lookup affix" format (approximately speaking, they use a regular hyphen for most scripts, but a tatweel for Arabic-script entries and a maqqef for Hebrew-script entries), but the passed-in `affix` param is in "template affix" format (which differs from the lookup affix for Arabic-script entries, because more types of hyphens are allowed in template affixes; see the comments at the top of the file). The remaining parameters to this function are used to convert from template affixes to lookup affixes; see the reconstruct_term_per_hyphens() function above. If the affix contains brackets, no lookup is done. Otherwise, a two-stage process is used, first looking up the affix directly and then stripping diacritics and looking it up again. The reason for this is documented above in the comments at the top of the file (specifically, the comments describing lookup affixes). The value of a mapping can either be a string (do the mapping regardless of affix ID) or a table indexed by affix ID (where the special value `false` indicates no affix ID). The values of entries in this table can also be strings, or tables with keys `affix` and `id` (again, use `false` to indicate no ID). This allows an affix mapping to map from one ID to another (for example, this is used in English to map the [[an-]] prefix with no ID to the [[a-]] prefix with the ID 'not'). The Given a template affix `term` and an affix type `affix_type`, change the relevant template hyphen(s) in the affix to the display or lookup hyphen specified in `new_hyphen`, or add them if they are missing. `new_hyphen` can be a string, specifying a fixed hyphen, or a function of two arguments (the script code `scode` and the discovered template hyphen, or nil of no relevant template hyphen is present). `thyph_re` is a Lua pattern (which must be enclosed in parens) that matches the possible template hyphens. Note that not all template hyphens present in the affix are changed, but only the "relevant" ones (e.g. for a prefix, a relevant template hyphen is one coming at the end of the affix). ]=] local function lookup_affix_mapping(affix, affix_type, lang, scode, thyph_re, lookup_hyph, affix_id) local function do_lookup(afx) -- Ensure that the affix uses lookup hyphens regardless of whether it used a different type of hyphens before -- or no hyphens. local lookup_affix = reconstruct_term_per_hyphens(afx, affix_type, scode, thyph_re, lookup_hyph) local function do_lookup_for_langcode(langcode) if export.langs_with_lang_specific_data[langcode] then local langdata = mw.loadData(export.affix_lang_data_module_prefix .. langcode) if langdata.affix_mappings then local mapping = langdata.affix_mappings[lookup_affix] if mapping then if type(mapping) == "table" then mapping = mapping[affix_id] or mapping.default or mapping[affix_id or false] if mapping then return mapping end else return mapping end end end end end -- If `lang` is an etymology-only language, look for a mapping both for it and its full parent. local langcode = lang:getCode() local mapping = do_lookup_for_langcode(langcode) if mapping then return mapping end local full_langcode = lang:getFullCode() if full_langcode ~= langcode then mapping = do_lookup_for_langcode(full_langcode) if mapping then return mapping end end return nil end if affix:find("%[%[") then return nil end return do_lookup(affix) or do_lookup(lang:stripDiacritics(affix)) or nil end --[==[ For a given template term in a given language (see the definition of "template affix" near the top of the file), possibly in an explicitly specified script `sc` (but usually nil), return the term's affix type ({"prefix"}, {"interfix"}, {"suffix"}, {"circumfix"} or {"non-affix"}) along with the corresponding link and display affixes (see definitions near the top of the file); also the corresponding lookup affix (if `return_lookup_affix` is specified). The term passed in should already have any fragment (after the # sign) parsed off of it. Four values are returned: `affix_type`, `link_term`, `display_term` and `lookup_term`. The affix type can be passed in instead of autodetected; in this case, the template term need not have any attached hyphens, and the appropriate hyphens will be added in the appropriate places. If `do_affix_mapping` is specified, look up the affix in the lang-specific affix mappings, as described in the comment at the top of the file; otherwise, the link and display terms will always be the same. (They will be the same in any case if the template term has a bracketed link in it or is not an affix.) If `return_lookup_affix` is given, the fourth return value contains the term with appropriate lookup hyphens in the appropriate places; otherwise, it is the same as the display term. (This functionality is used in [[Module:category tree/affixes and compounds]] to convert link affixes into lookup affixes so that they can be looked up in the affix mapping tables.) Exported because used by [[Module:headword utilities]] to determine the affix type of a given pagename. ]==] function export.parse_term_for_affixes(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) if not term then return "non-affix", nil, nil, nil end if term == "^" then -- Indicates a null term to emulate the behavior of {{suffix|foo||bar}}. term = "" return "non-affix", term, term, term end if term:find("^%^") then -- HACK! ^ at the beginning of Korean languages has a special meaning, triggering capitalization of the -- transliteration. Don't interpret it as "force non-affix" for those languages. local langcode = lang:getCode() if langcode ~= "ko" and langcode ~= "okm" and langcode ~= "jje" then -- Formerly we allowed ^ to force non-affix type; this is now handled using an inline modifier -- <naf>, <root>, etc. Throw an error for the moment when the old way is encountered. error("Use of ^ to force non-affix status is no longer supported; use an inline modifier <naf> or <root> " .. "after the component") end end -- Remove an asterisk if the morpheme is reconstructed and add it back at the end. local reconstructed = "" if term:find("^%*") then reconstructed = "*" term = term:gsub("^%*", "") end local scode, thyph, dhyph, lhyph = detect_script_and_hyphens(term, lang, sc) thyph = "([" .. thyph .. "])" if not affix_type then if rfind(term, thyph .. " " .. thyph) then affix_type = "phụ tố chu vi" else local has_beginning_hyphen = rfind(term, "^" .. thyph) local has_ending_hyphen = rfind(term, thyph .. "$") if has_beginning_hyphen and has_ending_hyphen then affix_type = "trung tố" elseif has_ending_hyphen then affix_type = "tiền tố" elseif has_beginning_hyphen then affix_type = "hậu tố" else affix_type = "non-affix" end end end local link_term, display_term, lookup_term if affix_type == "non-affix" then link_term = term display_term = term lookup_term = term else display_term = reconstruct_term_per_hyphens(term, affix_type, scode, thyph, dhyph) if do_affix_mapping then link_term = lookup_affix_mapping(term, affix_type, lang, scode, thyph, lhyph, affix_id) -- The return value of lookup_affix_mapping() may be an affix mapping with lookup hyphens if a mapping -- was found, otherwise nil if a mapping was not found. We need to convert to display hyphens in -- either case, but in the latter case we can reuse the display term, which has already been converted. if link_term then link_term = reconstruct_term_per_hyphens(link_term, affix_type, scode, thyph, dhyph) else link_term = display_term end else link_term = display_term end if return_lookup_affix then lookup_term = reconstruct_term_per_hyphens(term, affix_type, scode, thyph, lhyph) else lookup_term = display_term end end link_term = reconstructed .. link_term display_term = reconstructed .. display_term lookup_term = reconstructed .. lookup_term return affix_type, link_term, display_term, lookup_term end --[==[ Add a hyphen to a term in the appropriate place, based on the specified affix type, stripping off any existing hyphens in that place. For example, if `affix_type` == {"prefix"}, we'll add a hyphen onto the end if it's not already there (or is of the wrong type). Three values are returned: the link term, display term and lookup term. This function is a thin wrapper around `parse_term_for_affixes`; see the comments above that function for more information. Note that this function is exposed externally because it is called by [[Module:category tree/affixes and compounds]]; see the comment in `parse_term_for_affixes` for more information. ]==] function export.make_affix(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) if not (affix_type == "tiền tố" or affix_type == "hậu tố" or affix_type == "phụ tố chu vi" or affix_type == "infix" or affix_type == "trung tố" or affix_type == "non-affix") then error("Internal error: Invalid affix type " .. (affix_type or "(nil)")) end local _, link_term, display_term, lookup_term = export.parse_term_for_affixes(term, lang, sc, affix_type, do_affix_mapping, return_lookup_affix, affix_id) return link_term, display_term, lookup_term end ----------------------------------------------------------------------------------------- -- Main entry points -- ----------------------------------------------------------------------------------------- --[==[ Core categorization logic for affixes. This is shared between show_affix(), show_compound_like() and get_affix_categories_only(). Returns the categories array and other metadata needed for formatting. ]==] local function generate_affix_categories(data) data.pos = data.pos or default_pos data.pos = data.pos local text_sections, categories, borrowing_type = process_etymology_type(data.type, data.surface_analysis or data.nocap, data.notext, #data.parts > 0) data.borrowing_type = borrowing_type -- Process each part local whole_words = 0 local is_affix_or_compound = false -- Canonicalize and generate links for all the parts first; then do categorization in a separate step, because when -- processing the first part for categorization, we may access the second part and need it already canonicalized. for i, part in ipairs_with_gaps(data.parts) do part = part or {} data.parts[i] = part canonicalize_part(part, data.lang, data.sc) -- Determine affix type and get link and display terms (see text at top of file). Store them in the part -- (in fields that won't clash with fields used by full_link() in [[Module:links]] or link_term()), so they -- can be used in the loop below when categorizing. part.affix_type, part.affix_link_term, part.affix_display_term = export.parse_term_for_affixes(part.term, part.lang, part.sc, part.type, not part.alt, nil, part.id) -- If link_term is an empty string, either a bare ^ was specified or an empty term was used along with inline -- modifiers. The intention in either case is not to link the term. part.term = ine(part.affix_link_term) -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. part.alt = part.alt or (part.affix_display_term ~= part.affix_link_term and part.affix_display_term) or nil end if not data.noaffixcat then -- Now do categorization. for i, part in ipairs_with_gaps(data.parts) do local affix_type = part.affix_type if affix_type ~= "non-affix" then is_affix_or_compound = true -- Make a sort key. For the first part, use the second part as the sort key; the intention is that if the -- term has a prefix, sorting by the prefix won't be very useful so we sort by what follows, which is -- presumably the root. local part_sort_base = nil local part_sort = part.sort or data.sort_key if i == 1 and data.parts[2] and data.parts[2].term then local part2 = data.parts[2] -- If the second-part link term is empty, the user requested an unlinked term; avoid a wikitext error -- by using the alt value if available. part_sort_base = ine(part2.affix_link_term) or ine(part2.alt) if part_sort_base then part_sort_base = strip_diacritics_no_links(part2.lang, part_sort_base) end end if part.pos and rfind(part.pos, "patronym") then table.insert(categories, {cat = "patronymics", sort_key = part_sort, sort_base = part_sort_base}) end if data.pos ~= "terms" and part.pos and rfind(part.pos, "giảm nhẹ nghĩa") then table.insert(categories, {cat = data.pos .. " giảm nhẹ nghĩa", sort_key = part_sort, sort_base = part_sort_base}) end -- Don't add a '*fixed with' category if the link term is empty or is in a different language. if ine(part.affix_link_term) and not part.part_lang then table.insert(categories, {cat = data.pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, part.affix_link_term) .. (part.id and " (" .. part.id .. ")" or ""), sort_key = part_sort, sort_base = part_sort_base}) end else whole_words = whole_words + 1 if whole_words == 2 then is_affix_or_compound = true table.insert(categories, data.pos .. " ghép") end end end -- Make sure there was either an affix or a compound (two or more non-affix terms). if not is_affix_or_compound and not data.allow_no_affixes_or_compounds then error("The parameters did not include any affixes, and the term is not a compound. Please provide at least one affix.") end end return text_sections, categories, borrowing_type end --[==[ Implementation of {{tl|affix}} and {{tl|surface analysis}}. `data` contains all the information describing the affixes to be displayed, and contains the following: * `.lang` ('''required'''): Overall language object. Different from term-specific language objects (see `.parts` below). * `.sc`: Overall script object (usually omitted). Different from term-specific script objects. * `.parts` ('''required'''): List of objects describing the affixes to show. The general format of each object is as would be passed to `full_link()`, except that the `.lang` field should be missing unless the term is of a language different from the overall `.lang` value (in such a case, the language name is shown along with the term and an additional "derived from" category is added). '''WARNING''': The data in `.parts` will be destructively modified. * `.pos`: Overall part of speech (used in categories, defaults to {"terms"}). Different from term-specific part of speech. * `.sort_key`: Overall sort key. Normally omitted except e.g. in Japanese. * `.type`: Type of compound, if the parts in `.parts` describe a compound. Strictly optional, and if supplied, the compound type is displayed before the parts (normally capitalized, unless `.nocap` is given). * `.nocap`: Don't capitalize the first letter of text displayed before the parts (relevant only if `.type` or `.surface_analysis` is given). * `.notext`: Don't display any text before the parts (relevant only if `.type` or `.surface_analysis` is given). * `.nocat`: Disable all categorization. * `.noaffixcat`: Disable affix (and compound) categorization. Relevant for e.g. blends, which may otherwise be incorrectly categorized as compound terms. * `.lit`: Overall literal definition. Different from term-specific literal definitions. * `.force_cat`: Always display categories, even on userspace pages. * `.surface_analysis`: Implement {{surface analysis}}; adds `By surface analysis, ` before the parts. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_affix(data) local text_sections, categories, _ = generate_affix_categories(data) -- Process each part for display local parts_formatted = {} for i, part in ipairs_with_gaps(data.parts) do -- Make a link for the part table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if data.surface_analysis then local text = "theo cách " .. glossary_link("phân tích mặt chữ") .. ": " if not data.nocap then text = ucfirst(text) end table.insert(text_sections, 1, text) end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Get only the categories that would be generated by show_affix(), without any text output or formatting. This is used by Module:etymon to get affix categorization. Returns an array of category objects, where each entry is either a string (simple category name) or a table with keys `cat`, `sort_key`, and `sort_base` for more complex categorization. `data` should have the same structure as passed to show_affix(): * `.lang` (required): Overall language object * `.parts` (required): Array of affix part objects with `.term`, `.lang`, `.id`, etc. * `.pos`: Part of speech (defaults to "terms") * `.sort_key`: Overall sort key for categories '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.get_affix_categories_only(data) local _, categories, _ = generate_affix_categories(data) return categories end function export.show_surface_analysis(data) data.surface_analysis = true data.allow_no_affixes_or_compounds = true return export.show_affix(data) end --[==[ Implementation of {{tl|compound}}. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_compound(data) data.pos = data.pos or default_pos data.pos = data.pos local text_sections, categories, borrowing_type = process_etymology_type(data.type, data.nocap, data.notext, #data.parts > 0) data.borrowing_type = borrowing_type local parts_formatted = {} table.insert(categories, data.pos .. " ghép") -- Make links out of all the parts local whole_words = 0 for i, part in ipairs(data.parts) do canonicalize_part(part, data.lang, data.sc) -- Determine affix type and get link and display terms (see text at top of file). local affix_type, link_term, display_term = export.parse_term_for_affixes(part.term, part.lang, part.sc, part.type, not part.alt, nil, part.id) -- If the term is an interfix or the type was explicitly given, recognize it as such (which means e.g. that we -- will display the term without hyphens for East Asian languages). Otherwise, ignore the fact that it looks -- like an affix and display as specified in the template (but pay attention to the detected affix type for -- certain tracking purposes). if affix_type == "trung tố" or (part.type and part.type ~= "non-affix") then -- If link_term is an empty string, either a bare ^ was specified or an empty term was used along with -- inline modifiers. The intention in either case is not to link the term. Don't add a '*fixed with' -- category in this case, or if the term is in a different language. -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. if link_term and link_term ~= "" and not part.part_lang then table.insert(categories, {cat = data.pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, link_term), sort_key = part.sort or data.sort_key}) end part.term = link_term ~= "" and link_term or nil part.alt = part.alt or (display_term ~= link_term and display_term) or nil else if affix_type ~= "non-affix" then local langcode = data.lang:getCode() -- If `data.lang` is an etymology-only language, track both using its code and its full parent's code. track { affix_type, affix_type .. "/lang/" .. langcode } local full_langcode = data.lang:getFullCode() if langcode ~= full_langcode then track(affix_type .. "/lang/" .. full_langcode) end else whole_words = whole_words + 1 end end table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if whole_words == 1 then track("one whole word") elseif whole_words == 0 then track("looks like confix") end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Implementation of {{tl|blend}}, {{tl|univerbation}} and similar "compound-like" templates. '''WARNING''': This destructively modifies both `data` and the individual structures within `.parts`. ]==] function export.show_compound_like(data) data.allow_no_affixes_or_compounds = true local text_sections, categories, _ = generate_affix_categories(data) if data.cat then table.insert(categories, data.cat) end -- Process each part for display local parts_formatted = {} for i, part in ipairs_with_gaps(data.parts) do -- Make a link for the part table.insert(parts_formatted, export.link_term(part, data, "include_separator")) end if #data.parts > 0 and data.oftext then table.insert(text_sections, 1, " " .. data.oftext .. " ") end if data.text then table.insert(text_sections, 1, data.text) end table.insert(text_sections, export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories, separator_already_added = true }) return table.concat(text_sections) end --[==[ Make `part` (a structure holding information on an affix part) into an affix of type `affix_type`, and apply any relevant affix mappings. For example, if the desired affix type is "suffix", this will (in general) add a hyphen onto the beginning of the term, alt, tr and ts components of the part if not already present. The hyphen that's added is the "display hyphen" (see above) and may be script-specific. (In the case of East Asian scripts, the display hyphen is an empty string whereas the template hyphen is the regular hyphen, meaning that any regular hyphen at the beginning of the part will be effectively removed.) `lang` and `sc` hold overall language and script objects. Note that this also applies any language-specific affix mappings, so that e.g. if the language is Finnish and the user specified [[-käs]] in the affix and didn't specify an `.alt` value, `part.term` will contain [[-kas]] and `part.alt` will contain [[-käs]]. This function is used by the "legacy" templates ({{tl|prefix}}, {{tl|suffix}}, {{tl|confix}}, etc.) where the nature of the affix is specified by the template itself rather than auto-determined from the affix, as is the case with {{tl|affix}}. '''WARNING''': This destructively modifies `part`. ]==] local function make_part_into_affix(part, lang, sc, affix_type) canonicalize_part(part, lang, sc) local link_term, display_term = export.make_affix(part.term, part.lang, part.sc, affix_type, not part.alt, nil, part.id) part.term = link_term -- When we don't specify `do_affix_mapping` to make_affix(), link and display terms (first and second retvals of -- make_affix()) are the same. -- If part.alt would be the same as part.term, make it nil, so that it isn't erroneously tracked as being -- redundant alt text. part.alt = part.alt and export.make_affix(part.alt, part.lang, part.sc, affix_type) or (display_term ~= link_term and display_term) or nil local Latn = require(scripts_module).getByCode("Latn") part.tr = export.make_affix(part.tr, part.lang, Latn, affix_type) part.ts = export.make_affix(part.ts, part.lang, Latn, affix_type) end local function track_wrong_affix_type(template, part, expected_affix_type) if part and not part.type then local affix_type = export.parse_term_for_affixes(part.term, part.lang, part.sc) if affix_type ~= expected_affix_type then local part_name = expected_affix_type or "base" local langcode = part.lang:getCode() local full_langcode = part.lang:getFullCode() require("Module:debug/track") { template, template .. "/" .. part_name, template .. "/" .. part_name .. "/" .. (affix_type or "none"), template .. "/" .. part_name .. "/" .. (affix_type or "none") .. "/lang/" .. langcode } -- If `part.lang` is an etymology-only language, track both using its code and its full parent's code. if full_langcode ~= langcode then require("Module:debug/track")( template .. "/" .. part_name .. "/" .. (affix_type or "none") .. "/lang/" .. full_langcode ) end end end end local function insert_affix_category(categories, pos, affix_type, part, sort_key, sort_base) -- Don't add a '*fixed with' category if the link term is empty or is in a different language. if part.term and not part.part_lang then local cat = pos .. " có " .. affix_type .. " " .. strip_diacritics_no_links(part.lang, part.term) .. (part.id and " (" .. part.id .. ")" or "") if sort_key or sort_base then table.insert(categories, {cat = cat, sort_key = sort_key, sort_base = sort_base}) else table.insert(categories, cat) end end end --[==[ Implementation of {{tl|circumfix}}. '''WARNING''': This destructively modifies both `data` and `.prefix`, `.base` and `.suffix`. ]==] function export.show_circumfix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.prefix, data.lang, data.sc, "tiền tố") make_part_into_affix(data.suffix, data.lang, data.sc, "hậu tố") track_wrong_affix_type("phụ tố chu vi", data.prefix, "tiền tố") track_wrong_affix_type("phụ tố chu vi", data.base, nil) track_wrong_affix_type("phụ tố chu vi", data.suffix, "hậu tố") -- Create circumfix term. local circumfix = nil if data.prefix.term and data.suffix.term then circumfix = data.prefix.term .. " " .. data.suffix.term data.prefix.alt = data.prefix.alt or data.prefix.term data.suffix.alt = data.suffix.alt or data.suffix.term data.prefix.term = circumfix data.suffix.term = circumfix end -- Make links out of all the parts. local parts_formatted = {} local categories = {} local sort_base if data.base.term then sort_base = strip_diacritics_no_links(data.base.lang, data.base.term) end table.insert(parts_formatted, export.link_term(data.prefix, data)) table.insert(parts_formatted, export.link_term(data.base, data)) table.insert(parts_formatted, export.link_term(data.suffix, data)) -- Insert the categories, but don't add a '*fixed with' category if the link term is in a different language. if not data.prefix.part_lang then table.insert(categories, {cat=data.pos .. " có phụ tố chu vi " .. strip_diacritics_no_links(data.prefix.lang, circumfix), sort_key=data.sort_key, sort_base=sort_base}) end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|confix}}. '''WARNING''': This destructively modifies both `data` and `.prefix`, `.base` and `.suffix`. ]==] function export.show_confix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.prefix, data.lang, data.sc, "tiền tố") make_part_into_affix(data.suffix, data.lang, data.sc, "hậu tố") track_wrong_affix_type("confix", data.prefix, "tiền tố") track_wrong_affix_type("confix", data.base, nil) track_wrong_affix_type("confix", data.suffix, "hậu tố") -- Make links out of all the parts. local parts_formatted = {} local prefix_sort_base if data.base and data.base.term then prefix_sort_base = strip_diacritics_no_links(data.base.lang, data.base.term) elseif data.suffix.term then prefix_sort_base = strip_diacritics_no_links(data.suffix.lang, data.suffix.term) end -- Insert the categories and parts. local categories = {} table.insert(parts_formatted, export.link_term(data.prefix, data)) insert_affix_category(categories, data.pos, "tiền tố", data.prefix, data.sort_key, prefix_sort_base) if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) end table.insert(parts_formatted, export.link_term(data.suffix, data)) -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "hậu tố", data.suffix) return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|infix}}. '''WARNING''': This destructively modifies both `data` and `.base` and `.infix`. ]==] function export.show_infix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. make_part_into_affix(data.infix, data.lang, data.sc, "infix") track_wrong_affix_type("infix", data.base, nil) track_wrong_affix_type("infix", data.infix, "infix") -- Make links out of all the parts. local parts_formatted = {} local categories = {} table.insert(parts_formatted, export.link_term(data.base, data)) table.insert(parts_formatted, export.link_term(data.infix, data)) -- Insert the categories. -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "infix", data.infix) return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|prefix}}. '''WARNING''': This destructively modifies both `data` and the structures within `.prefixes`, as well as `.base`. ]==] function export.show_prefix(data) data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. for i, prefix in ipairs(data.prefixes) do make_part_into_affix(prefix, data.lang, data.sc, "tiền tố") end for i, prefix in ipairs(data.prefixes) do track_wrong_affix_type("tiền tố", prefix, "tiền tố") end track_wrong_affix_type("tiền tố", data.base, nil) -- Make links out of all the parts. local parts_formatted = {} local first_sort_base = nil local categories = {} if data.prefixes[2] then first_sort_base = ine(data.prefixes[2].term) or ine(data.prefixes[2].alt) if first_sort_base then first_sort_base = strip_diacritics_no_links(data.prefixes[2].lang, first_sort_base) end elseif data.base then first_sort_base = ine(data.base.term) or ine(data.base.alt) if first_sort_base then first_sort_base = strip_diacritics_no_links(data.base.lang, first_sort_base) end end for i, prefix in ipairs(data.prefixes) do table.insert(parts_formatted, export.link_term(prefix, data)) insert_affix_category(categories, data.pos, "tiền tố", prefix, data.sort_key, i == 1 and first_sort_base or nil) end if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) else table.insert(parts_formatted, "") end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end --[==[ Implementation of {{tl|suffix}}. '''WARNING''': This destructively modifies both `data` and the structures within `.suffixes`, as well as `.base`. ]==] function export.show_suffix(data) local categories = {} data.pos = data.pos or default_pos data.pos = data.pos canonicalize_part(data.base, data.lang, data.sc) -- Hyphenate the affixes and apply any affix mappings. for i, suffix in ipairs(data.suffixes) do make_part_into_affix(suffix, data.lang, data.sc, "hậu tố") end track_wrong_affix_type("hậu tố", data.base, nil) for i, suffix in ipairs(data.suffixes) do track_wrong_affix_type("hậu tố", suffix, "hậu tố") end -- Make links out of all the parts. local parts_formatted = {} if data.base then table.insert(parts_formatted, export.link_term(data.base, data)) else table.insert(parts_formatted, "") end for i, suffix in ipairs(data.suffixes) do table.insert(parts_formatted, export.link_term(suffix, data)) end -- Insert the categories. for i, suffix in ipairs(data.suffixes) do -- FIXME, should we be specifying a sort base here? insert_affix_category(categories, data.pos, "hậu tố", suffix) if suffix.pos and rfind(suffix.pos, "patronym") then table.insert(categories, "patronymics") end end return export.join_formatted_parts { data = data, parts_formatted = parts_formatted, categories = categories } end return export phrjwpkon8iuwgn9umxloxtbukvhfnr Mô đun:languages/data/3/m 828 260128 2566605 2565178 2026-09-26T07:56:25Z Lcsnes 40261 2566605 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["maa"] = { "San Jerónimo Tecóatl Mazatec", 7692927, "omq-maz", "Latn", } m["mab"] = { "Yutanduchi Mixtec", 12645448, "omq-mxt", "Latn", } m["mad"] = { "tiếng Madura", 36213, "poz-msa", "Latn", "Tiếng Madura", "Madura", } m["mae"] = { "Bo-Rukul", 34967, "nic-ple", "Latn", } m["maf"] = { "Mafa", 35819, "cdc-cbm", "Latn", } m["mag"] = { "tiếng Magaha", 33728, "inc-eas", "Deva, Kthi", "Tiếng Magaha", "Magaha", ancestors = "bh", } m["mai"] = { "tiếng Maithil", 36109, "inc-eas", "Deva, Tirh, Kthi, Newa", "Tiếng Maithil", "Maithil", ancestors = "bh", translit = { Deva = "mai-translit", Tirh = "mai-Tirh-translit", Kthi = "bho-Kthi-translit", }, } m["maj"] = { "Jalapa de Díaz Mazatec", 3915999, "omq-maz", "Latn", } m["mak"] = { "tiếng Makassar", 33643, "poz-ssw", "Latn, Bugi, Maka", "Tiếng Makassar", "Makassar", } m["mam"] = { "Mam", 33467, "myn", "Latn", } m["man"] = { "Mandingo", 35772, "dmn-man", "Latn", } m["maq"] = { "Chiquihuitlán Mazatec", 5101757, "omq-maz", "Latn", } m["mas"] = { "tiếng Maasai", 35787, "sdv-lma", "Latn", "Tiếng Maasai", "Maasai", } m["mat"] = { "Matlatzinca", 12953704, "omq", "Latn", } m["mau"] = { "Huautla Mazatec", 36230, "omq-maz", "Latn", } m["mav"] = { "Sateré-Mawé", 6794475, "tup", "Latn", } m["maw"] = { "tiếng Mampruli", 35804, "nic-wov", "Latn", "Tiếng Mampruli", "Mampruli", } m["max"] = { "tiếng Mã Lai Bắc Maluku", 7056136, "crp", "Latn", "Tiếng Mã Lai Bắc Maluku", "Mã Lai Bắc Maluku", } m["maz"] = { "tiếng Mazahua Trung", 36228, "oto", "Latn", "Tiếng Mazahua Trung", "Mazahua Trung", } m["mba"] = { "tiếng Higaonon", 5753411, "mno", "Latn", "Tiếng Higaonon", "Higaonon", } m["mbb"] = { "Western Bukidnon Manobo", 7987643, "mno", "Latn", } m["mbc"] = { "tiếng Macushi", 56633, "sai-pem", "Latn", "Tiếng Macushi", "Macushi", } m["mbd"] = { "tiếng Dibabawon", 18755523, "mno", "Latn", "Tiếng Dibabawon", "Dibabawon", } m["mbe"] = { "Molale", 3319444, "nai-plp", "Latn", } m["mbf"] = { "tiếng Mã Lai Baba", 18642798, "crp", "Latn", "Tiếng Mã Lai Baba", "Mã Lai Baba", ancestors = "ms", } m["mbh"] = { "Mangseng", 6749147, "poz-ocw", "Latn", } m["mbi"] = { "Ilianen Manobo", 14916911, "mno", "Latn", } m["mbj"] = { "Nadëb", 3335011, "sai-nad", "Latn", } m["mbk"] = { "Malol", 6744477, "poz-ocw", "Latn", } m["mbl"] = { "Maxakalí", 3029682, "sai-mje", "Latn", } m["mbm"] = { "Ombamba", 36407, "bnt-mbt", "Latn", } m["mbn"] = { "Macaguán", 3273980, "sai-guh", "Latn", } m["mbo"] = { -- is, like 'bqz', 'bsi' and 'bss', a dialect of Manenguba "Mbo (Cameroon)", nil, "bnt-mne", "Latn", } m["mbp"] = { "Wiwa", 3012604, "cba", "Latn", } m["mbq"] = { "Maisin", 3448149, nil, "Latn", } m["mbr"] = { "Nukak Makú", 3346228, "sai-nad", "Latn", } m["mbs"] = { "Sarangani Manobo", 7423093, "mno", "Latn", } m["mbt"] = { "Matigsalug Manobo", 6787447, "mno", "Latn", } m["mbu"] = { "Mbula-Bwazza", 3913324, "nic-jrn", "Latn", } m["mbv"] = { "Mbulungish", 36003, "alv-nal", "Latn", } m["mbw"] = { "Maring", 3293280, nil, "Latn", } m["mbx"] = { "Sepik Mari", 6760942, "paa-spk", "Latn", } m["mby"] = { "tiếng Memon", 4180871, "inc-snd", "Gujr, ur-Arab", "Tiếng Memon", "Memon", } m["mbz"] = { "Amoltepec Mixtec", 13583504, "omq-mxt", "Latn", } m["mca"] = { "Maca", 3281043, "sai-mtc", "Latn", } m["mcb"] = { "Machiguenga", 3915441, "awd", "Latn", } m["mcc"] = { "Bitur", 4919173, } m["mcd"] = { "Sharanahua", 12953881, "sai-pan", "Latn", } m["mce"] = { "Itundujia Mixtec", 12953727, "omq-mxt", "Latn", } m["mcf"] = { "Matsés", 2981620, "sai-pan", "Latn", } m["mcg"] = { "Mapoyo", 56946, "sai-map", "Latn", } m["mch"] = { "tiếng Ye'kwana", 3082027, "sai-car", "Latn", "Tiếng Ye'kwana", "Ye'kwana", sort_key = { remove_diacritics = "%-%s", from = {"'", "ñ", "ö", "sh", "ü"}, to = {"’", "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1]} } } m["mci"] = { "Mese", 6821190, } m["mcj"] = { "Mvanip", 3913281, "nic-mmb", "Latn", } m["mck"] = { "Mbunda", 34170, "bnt-clu", "Latn", } m["mcl"] = { "Macaguaje", 6722435, "sai-tuc", "Latn", } m["mcm"] = { "Kristang", 2669169, "crp", "Latn", ancestors = "pt", } m["mcn"] = { "Masana", 56668, "cdc-mas", } m["mco"] = { "Coatlán Mixe", 25559716, "nai-miz", "Latn", } m["mcp"] = { "Makaa", 35803, "bnt-mka", } m["mcq"] = { "tiếng Ese", 5397551, "ngf-koi", "Latn", "Tiếng Ese", "Ese", } m["mcr"] = { "Menya", 11732444, "ngf", } m["mcs"] = { "Mambai", 6748872, "alv-mbm", } m["mcu"] = { "Cameroon Mambila", 19359039, "nic-mmb", "Latn", } m["mcv"] = { "Minanibai", 6863167, "ngf", } m["mcw"] = { "Mawa", 3441333, "cdc-est", "Latn", } m["mcx"] = { "Mpiemo", 35908, "bnt-bek", } m["mcy"] = { "South Watut", 12953293, "poz-ocw", } m["mcz"] = { "Mawan", 11732429, "ngf-mad", } m["mda"] = { "Mada (Nigeria)", 3915843, "nic-nin", "Latn", } m["mdb"] = { "Morigi", 6912195, "paa-kiw", } m["mdc"] = { "Male", 6742927, "ngf-mad", } m["mdd"] = { "Mbum", 36170, "alv-mbm", } m["mde"] = { "tiếng Mabang", 35860, "ssa", "Arab, Latn", "Tiếng Mabang", "Mabang", } m["mdf"] = { "tiếng Moksha", 13343, "urj-mdv", "Cyrl", "Tiếng Moksha", "Moksha", translit = "mdf-translit", entry_name = {remove_diacritics = c.acute}, override_translit = true, sort_key = "mdf-sortkey", } m["mdg"] = { "Massalat", 759984, } m["mdh"] = { "tiếng Maguindanao", 33717, "phi", "Latn, Arab", "Tiếng Maguindanao", "Maguindanao", } m["mdi"] = { "Mamvu", 3033594, "csu-mle", } m["mdj"] = { "Mangbetu", 56327, "csu-maa", } m["mdk"] = { "Mangbutu", 6748877, "csu-mle", } m["mdl"] = { "Maltese Sign Language", 6744816, "sgn", } m["mdm"] = { "tiếng Mayogo", 6797580, "nic-nke", "Latn", "Tiếng Mayogo", "Mayogo", } m["mdn"] = { "Mbati", 36165, "bnt-ngn", } m["mdp"] = { "Mbala", 6799583, "bnt-pen", } m["mdq"] = { "Mbole", 6799727, "bnt-mbe", } m["mdr"] = { "Mandar", 35995, "poz-ssw", "Bugi, Latn", } m["mds"] = { "Maria", 3448673, } m["mdt"] = { "Mbere", 36062, "bnt-mbt", } m["mdu"] = { "Mboko", 36058, "bnt-mbo", } m["mdv"] = { "Santa Lucía Monteverde Mixtec", 12953722, "omq-mxt", "Latn", } m["mdw"] = { "Mbosi", 36035, "bnt-mbo", } m["mdx"] = { "tiếng Dizi", 35313, "omv-diz", "Ethi, Latn", "Tiếng Dizi", "Dizi", } m["mdy"] = { "tiếng Maale", 795327, "omv-ome", "Ethi", "Tiếng Maale", "Maale", } m["mdz"] = { "Suruí Do Pará", 10322149, "tup-gua", "Latn", } m["mea"] = { "Menka", 36078, "nic-grs", "Latn", } m["meb"] = { "Ikobi-Mena", 11732241, "ngf", "Latn", } m["mec"] = { "Mara", 6772774, } m["med"] = { "tiếng Melpa", 36166, nil, "Latn", "Tiếng Melpa", "Melpa", } m["mee"] = { "Mengen", 3305831, "poz-ocw", } m["mef"] = { "Megam", 6808589, } m["meg"] = { "Mea", 12952836, "poz-cln", } m["meh"] = { "Southwestern Tlaxiaco Mixtec", 7070686, "omq-mxt", "Latn", } m["mei"] = { "Midob", 36007, "nub", "Latn", } m["mej"] = { "Meyah", 11732436, "paa-wpa", } m["mek"] = { "Mekeo", 3304803, "poz-ocw", } m["mel"] = { "Central Melanau", 18638319, "poz-swa", "Latn", } m["mem"] = { "Mangala", 6748664, } m["men"] = { "tiếng Mende", 1478672, "dmn-msw", "Latn, Mend", "Tiếng Mende", "Mende", } m["meo"] = { "tiếng Mã Lai Kedah", 4925684, "poz-mly", "Latn, ms-Arab, Thai", "Tiếng Mã Lai Kedah", "Mã Lai Kedah", entry_name = { from = {u(0xF70F)}, to = {"ญ"} }, sort_key = {Thai = "Thai-sortkey"}, } m["mep"] = { "Miriwung", 3111847, } m["meq"] = { "Merey", 3502314, "cdc-cbm", "Latn", } m["mer"] = { "Meru", 13313, "bnt-kka", "Latn", } m["mes"] = { "Masmaje", 3440448, } m["met"] = { "Mato", 3299190, "poz-ocw", "Latn", } m["meu"] = { "tiếng Motu", 33516, "poz-ocw", "Latn", "Tiếng Motu", "Motu", } m["mev"] = { "tiếng Mano", 3913286, "dmn-mda", "Latn", "Tiếng Mano", "Mano", } m["mew"] = { "tiếng Maaka", 3438764, "cdc-wst", "Latn", "Tiếng Maaka", "Maaka", } m["mey"] = { "tiếng Ả Rập Hassaniya", 56231, "sem-arb", "Arab", "Tiếng Ả Rập Hassaniya", "Ả Rập Hassaniya", } m["mez"] = { "tiếng Menominee", 13363, "alg", "Latn", "Tiếng Menominee", "Menominee", sort_key = {remove_diacritics = "·"}, } m["mfa"] = { "tiếng Mã Lai Pattani", 1199751, "poz-mly", "Latn, ms-Arab, Thai", "Tiếng Mã Lai Pattani", "Mã Lai Pattani", entry_name = { from = {u(0xF70F)}, to = {"ญ"} }, sort_key = {Thai = "Thai-sortkey"}, } m["mfb"] = { "Bangka", 3258818, } m["mfc"] = { "Mba", 4286464, "nic-mbc", "Latn", } m["mfd"] = { "tiếng Mendankwe-Nkwen", 11129537, "nic-nge", "Latn", "Tiếng Mendankwe-Nkwen", "Mendankwe-Nkwen", } m["mfe"] = { "tiếng Creole Mauritius", 33661, "crp", "Latn", "Tiếng Creole Mauritius", "Creole Mauritius", ancestors = "fr", sort_key = s["roa-oil-sortkey"], } m["mff"] = { "Naki", 36083, "nic-bbe", "Latn", } m["mfg"] = { "Mixifore", 3914478, "dmn-mok", } m["mfh"] = { "tiếng Matal", 3501751, "cdc-cbm", "Latn", "Tiếng Matal", "Matal", } m["mfi"] = { "Wandala", 3441249, "cdc-cbm", "Latn", } m["mfj"] = { "Mefele", 3501871, "cdc-cbm", } m["mfk"] = { "North Mofu", 56303, "cdc-cbm", } m["mfl"] = { "Putai", 56291, } m["mfm"] = { "Marghi South", 56248, } m["mfn"] = { "tiếng Mbembe sông Cross", 3915395, "nic-uce", "Latn", "Tiếng Mbembe sông Cross", "Mbembe sông Cross", } m["mfo"] = { "Mbe", 36075, "nic-eko", "Latn", } m["mfp"] = { "Makassar Malay", 12952776, "qfa-mix", "Latn", } m["mfq"] = { "Moba", 19921578, "nic-grm", "Latn", } m["mfr"] = { "Marrithiyel", 6773014, "aus-dal", "Latn", } m["mfs"] = { "Mexican Sign Language", 3915511, "sgn", "Latn", -- when documented } m["mft"] = { "Mokerang", 3319387, "poz-aay", "Latn", } m["mfu"] = { "Mbwela", 11004988, "bnt-clu", ancestors = "lch", } m["mfv"] = { "Mandjak", 35822, "alv-pap", } m["mfw"] = { "Mulaha", 6933720, } m["mfx"] = { "tiếng Melo", 6813268, "omv-nom", "Latn, Ethi", "Tiếng Melo", "Melo", } m["mfy"] = { "Mayo", 56729, "azc-trc", "Latn", sort_key = {remove_diacritics = c.acute}, } m["mfz"] = { "tiếng Mabaan", 20526385, "sdv", "Latn", "Tiếng Mabaan", "Mabaan", } m["mga"] = { "tiếng Ireland trung đại", 36116, "cel-gae", "Latn", "Tiếng Ireland trung đại", "Ireland trung đại", ancestors = "sga", entry_name = {remove_diacritics = c.dotabove .. c.diaer .. "·"}, sort_key = "mga-sortkey", } m["mgb"] = { "Mararit", 56359, "sdv-tmn", } m["mgc"] = { "tiếng Morokodo", 6913216, "csu-bbk", "Latn", "Tiếng Morokodo", "Morokodo", } m["mgd"] = { "Moru", 6915014, "csu-mma", } m["mge"] = { "tiếng Mango", 713659, "csu-sar", "Latn", "Tiếng Mango", "Mango", } m["mgf"] = { "Maklew", 6739816, } m["mgg"] = { "Mpongmpong", 35924, "bnt-bek", } m["mgh"] = { "Makhuwa-Meetto", 33604, "bnt-mak", "Latn", ancestors = "vmw", } m["mgi"] = { "Jili", 3914497, "nic-pls", } m["mgj"] = { "Abureni", 3441256, "nic-cde", "Latn", } m["mgk"] = { "Mawes", 6794395, "paa", } m["mgl"] = { "Maleu-Kilenge", 3281884, } m["mgm"] = { "Mambae", 35774, "poz-tim", "Latn", } m["mgn"] = { "Mbangi", 11017443, "nic-ngd", "Latn", } m["mgo"] = { "Meta'", 36054, "nic-mom", "Latn", } m["mgp"] = { "tiếng Magar Đông", 12952758, "sit-gma", nil, "Tiếng Magar Đông", "Magar Đông", } m["mgq"] = { "Malila", 6743679, "bnt-mby", "Latn", } m["mgr"] = { "Mambwe-Lungu", 626210, "bnt-mwi", "Latn", } m["mgs"] = { "Manda (Tanzania)", 16939267, "bnt-bki", } m["mgt"] = { "Mongol", 11260674, "paa", "Latn", } m["mgu"] = { "Mailu", 3278246, "ngf", } m["mgv"] = { "Matengo", 6786446, "bnt-mbi", "Latn", } m["mgw"] = { "Matumbi", 6791974, "bnt-mbi", "Latn", } m["mgy"] = { "Mbunga", 6799817, "bnt-kil", } m["mgz"] = { "Mbugwe", 3426367, "bnt-mra", } m["mha"] = { "tiếng Manda (Ấn Độ)", 56760, "dra-kki", "Orya", "Tiếng Manda (Ấn Độ)", "Manda (Ấn Độ)", translit = "kxv-translit", } m["mhb"] = { "Mahongwe", 35816, "bnt-kel", } m["mhc"] = { "Mocho", 1941682, "myn", } m["mhd"] = { "Mbugu", 36152, "qfa-mix", "Latn", ancestors = "asa", } m["mhe"] = { "tiếng Mah Meri", 2742262, "mkh-asl", "Latn", "Tiếng Mah Meri", "Mah Meri" } m["mhf"] = { "Mamaa", 6745346, "ngf-fin", "Latn", } m["mhg"] = { "Marrgu", 6772812, } m["mhi"] = { "Ma'di", 56670, "csu-mma", } m["mhj"] = { "tiếng Mogholi", 13336, "xgn", "fa-Arab, Latn", "Tiếng Mogholi", "Mogholi", } m["mhk"] = { "Mungaka", 36068, "nic-nun", "Latn", } m["mhl"] = { "Mauwake", 6794095, "ngf-mad", } m["mhm"] = { "Makhuwa-Moniga", 6900145, "bnt-mak", } m["mhn"] = { "tiếng Mòcheno", 268130, "gmw-hgm", "Latn", "Tiếng Mòcheno", "Mòcheno", ancestors = "bar", sort_key = {remove_diacritics = c.grave}, } m["mho"] = { "Mashi", 10962737, "bnt-kav", "Latn", } m["mhp"] = { "Balinese Malay", 12473441, "crp", } m["mhq"] = { "Mandan", 1957120, "sio", } m["mhr"] = { "tiếng Mari Đông", 3906614, "chm", "Cyrl", "Tiếng Mari Đông", "Mari Đông", translit = "chm-translit", override_translit = true, entry_name = {remove_diacritics = c.grave .. c.acute}, sort_key = { from = {"ё", "ҥ", "ӧ", "ӱ"}, to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} } } m["mhs"] = { "Buru (Indonesia)", 2928650, "poz-cma", } m["mht"] = { "tiếng Mandahuaca", 6747924, "awd-nwk", "Latn", "Tiếng Mandahuaca", "Mandahuaca", } m["mhu"] = { "Taraon", 56400, "sit-gsi", "Latn", } m["mhw"] = { "Mbukushu", 2691548, } m["mhx"] = { "tiếng Lhao Vo", 11149315, "tbq-brm", "Latn", "Tiếng Lhao Vo", "Lhao Vo", } m["mhy"] = { "tiếng Ma'anyan", 2328761, "poz-bre", nil, "Tiếng Ma'anyan", "Ma'anyan", } m["mhz"] = { "Mor (Austronesian)", 2122792, "poz-hce", "Latn", } m["mia"] = { "tiếng Miami", 56523, "alg", "Latn", "Tiếng Miami", "Miami", } m["mib"] = { "Atatláhuca Mixtec", 32093046, "omq-mxt", "Latn", } m["mic"] = { "tiếng Mi'kmaq", 13321, "alg-eas", "Latn", "Tiếng Mi'kmaq", "Mi'kmaq", } m["mid"] = { "Mandaic", 6991742, "sem-ase", "Mand", ancestors = "myz", } m["mie"] = { "Ocotepec Mixtec", 25559575, "omq-mxt", "Latn", } m["mif"] = { "Mofu-Gudur", 1365132, "cdc-cbm", "Latn", } m["mig"] = { "San Miguel el Grande Mixtec", 12953719, "omq-mxt", "Latn", } m["mih"] = { "tiếng Mixtec Chayuco", 13583510, "omq-mxt", "Latn", "Tiếng Mixtec Chayuco", "Mixtec Chayuco", } m["mii"] = { "Chigmecatitlán Mixtec", 12953724, "omq-mxt", "Latn", } m["mij"] = { "Mungbam", 34725, "nic-beb", "Latn", } m["mik"] = { "Mikasuki", 13316, "nai-mus", "Latn", } m["mil"] = { "Peñoles Mixtec", 42411307, "omq-mxt", "Latn", } m["mim"] = { "Alacatlatzala Mixtec", 14697894, "omq-mxt", "Latn", } m["min"] = { "tiếng Minangkabau", 13324, "poz-mly", "Latn, Arab", "Tiếng Minangkabau", "Minangkabau", } m["mio"] = { "Pinotepa Nacional Mixtec", 7196415, "omq-mxt", "Latn", } m["mip"] = { "Apasco-Apoala Mixtec", 13583505, "omq-mxt", "Latn", } m["miq"] = { "tiếng Miskito", 1516803, "nai-min", "Latn", "Tiếng Miskito", "Miskito", entry_name = {remove_diacritics = c.circ}, } m["mir"] = { "Isthmus Mixe", 6088873, "nai-miz", } m["mit"] = { "Southern Puebla Mixtec", 7570345, "omq-mxt", "Latn", } m["miu"] = { "Cacaloxtepec Mixtec", 12953723, "omq-mxt", "Latn", } m["miw"] = { "Akoye", 3327462, "ngf", "Latn", } m["mix"] = { "Mixtepec Mixtec", 6884125, "omq-mxt", "Latn", } m["miy"] = { "Ayutla Mixtec", 13583508, "omq-mxt", "Latn", } m["miz"] = { "Coatzospan Mixtec", 3317290, "omq-mxt", "Latn", } m["mjb"] = { "tiếng Makalero", 35729, "paa-alp", "Latn", } m["mjc"] = { "San Juan Colorado Mixtec", 12953718, "omq-mxt", "Latn", } m["mjd"] = { "Northwest Maidu", 3198700, "nai-mdu", "Latn", } m["mje"] = { "Muskum", 3913334, } -- mjg "Monguor" is not recognized as a language, but it is a family code m["mji"] = { "tiếng Kim Môn", 1115317, "hmx-mie", "Latn", "Tiếng Kim Môn", "Kim Môn" } m["mjj"] = { "Mawak", 11732427, "ngf-mad", } m["mjk"] = { "Matukar", 6791963, "poz-ocw", "Latn", } m["mjl"] = { "tiếng Mandi", 6747931, "him", "Deva, Takr", "Tiếng Mandi", "Mandi", translit = {Deva = "hi-translit"}, } m["mjm"] = { "Medebur", 6805227, "poz-ocw", "Latn", } m["mjn"] = { "Mebu", 6804364, "ngf-fin", } m["mjo"] = { "tiếng Malankurava", 14916887, "dra-mal", "Mlym", "Tiếng Malankurava", "Malankurava", translit = "ml-translit", } m["mjp"] = { "tiếng Malapandaram", 10575729, "dra-tam", "Taml", "Tiếng Malapandaram", "Malapandaram", translit = "ta-translit", } m["mjq"] = { "tiếng Malarya", 12952773, "dra-mal", "Mlym", "Tiếng Malarya", "Malarya", translit = "ml-translit", } m["mjr"] = { "tiếng Malavedan", 12952775, "dra-mal", "Mlym", "Tiếng Malavedan", "Malavedan", translit = "ml-translit", } m["mjs"] = { "Miship", 3441264, "cdc-wst", "Latn", } m["mjt"] = { "tiếng Paharia Sauria", 33907, "dra-mlo", "Beng, Deva", "Tiếng Paharia Sauria", "Paharia Sauria", } m["mju"] = { "Manna-Dora", 10576453, "dra-tel", } m["mjv"] = { "tiếng Mannan", 3286037, "dra-tam", "Mlym, Taml", "Tiếng Mannan", "Mannan", translit = { Mlym = "ml-translit", Taml = "ta-translit", }, } m["mjw"] = { "tiếng Karbi", 56591, "tbq-kuk", "Latn, Beng", "Tiếng Karbi", "Karbi", } m["mjx"] = { "tiếng Mahal", 12953686, "mun", "Olck, Deva, Beng, Orya", "Tiếng Mahal", "Mahal", translit = { Olck = "Olck-translit", Deva = "hi-translit", Beng = "bn-translit", } } m["mjy"] = { "Mahican", 3182562, "alg-eas", "Latn", } m["mjz"] = { "Majhi", 6737786, "inc-eas", ancestors = "bh", } m["mka"] = { "Mbre", 3450154, "nic", --unclassified within niger-congo tho } m["mkb"] = { "Mal Paharia", 6583595, } m["mkc"] = { "Siliput", 7515090, "qfa-tor", "Latn", } m["mke"] = { "Mawchi", 21403317, } m["mkf"] = { "Miya", 43328, "cdc-wst", "Latn", } m["mkg"] = { "Mak (China)", 3280623, "qfa-kms", } m["mki"] = { "tiếng Dhatki", 32480, "inc-wes", "Arab, Deva", "Tiếng Dhatki", "Dhatki", ancestors = "mwr", } m["mkj"] = { "tiếng Mokil", 2335528, "poz-mic", "Latn", "Tiếng Mokil", "Mokil", } m["mkk"] = { "Byep", 35052, "bnt-mka", } m["mkl"] = { "Mokole", 36047, } m["mkm"] = { "tiếng Moklen", 3319380, "poz", "Latn, Thai", "Tiếng Moklen", "Moklen" } m["mkn"] = { "Kupang Malay", 18458203, "crp", } m["mko"] = { "Mingang Doso", 3915382, "alv-bwj", } m["mkp"] = { "Moikodi", 6894594, "ngf", } m["mkq"] = { "Bay Miwok", 3460957, "nai-you", "Latn", } m["mkr"] = { "Malas", 11732402, "ngf-mad", } m["mks"] = { "Silacayoapan Mixtec", 7514027, "omq-mxt", "Latn", } m["mkt"] = { "Vamale", 14916907, "poz-cln", "Latn", } m["mku"] = { "Konyanka Maninka", 11163298, "dmn-mnk", } m["mkv"] = { "Mafea", 3073532, "poz-vnc", "Latn", } m["mkx"] = { "Cinamiguin Manobo", 12953697, "mno", } m["mky"] = { "East Makian", 3512690, "poz-hce", "Latn", } m["mkz"] = { "tiếng Makasae", 35782, "paa-eti", "Latn", } m["mla"] = { "Tamambo", 1153276, "poz-vnc", "Latn", } m["mlb"] = { "Mbule", 35843, "nic-ymb", "Latn", } m["mlc"] = { "tiếng Sán Chay", 3446682, "tai-cho", "Latn, Hani", "Tiếng Sán Chay", "Sán Chay", sort_key = {Hani = "Hani-sortkey"}, } m["mle"] = { "Manambu", 11732406, "paa-spk", "Latn", } m["mlf"] = { "tiếng Mal", 3281057, "mkh-khm", "Thai", "Tiếng Mal", "Mal", } m["mlh"] = { "Mape", 6753787, } m["mli"] = { "Malimpung", 12473435, } m["mlj"] = { "Miltu", 3441310, } m["mlk"] = { "Ilwana", 6001357, "bnt-sab", } m["mll"] = { "Malua Bay", 6744946, "poz-vnc", "Latn", } m["mlm"] = { "Mulam", 3092284, "qfa-kms", "Latn", } m["mln"] = { "Malango", 3281522, "poz-sls", "Latn", } m["mlo"] = { "Mlomp", 36009, "alv-bak", } m["mlp"] = { "Bargam", 4860543, "ngf-mad", "Latn", } m["mlq"] = { "Western Maninkakan", 11028033, "dmn-wmn", } m["mlr"] = { "Vame", 3515088, } m["mls"] = { "Masalit", 56557, "ssa", } m["mlu"] = { "To'abaita", 36645, "poz-sls", "Latn", } m["mlv"] = { "tiếng Mwotlap", 2475538, "poz-vnc", "Latn", "Tiếng Mwotlap", "Mwotlap", } m["mlw"] = { "Moloko", 1965222, "cdc-cbm", "Latn", } m["mlx"] = { "Malfaxal", 2157421, "poz-vnc", "Latn", } m["mlz"] = { "Malaynon", 18755512, "phi", } m["mma"] = { "Mama", 3913963, "nic-jrn", } m["mmb"] = { "Momina", 6897297, } m["mmc"] = { "tiếng Mazahua Michoacán", 12953705, "oto", "Latn", "Tiếng Mazahua Michoacán", "Mazahua Michoacán", } m["mmd"] = { "tiếng Mao Nam", 3092293, "qfa-kms", "Latn", "Tiếng Mao Nam", "Mao Nam", } m["mme"] = { "Mae", 3276286, "poz-vnc", "Latn", } m["mmf"] = { "Mundat", 56263, "cdc-wst", "Latn", } m["mmg"] = { "North Ambrym", 2842468, "poz-vnc", "Latn", } m["mmh"] = { "Mehináku", 3501838, "awd", "Latn", } m["mmi"] = { "Musar", 6940113, "ngf-mad", } m["mmj"] = { "Majhwar", 6737795, } m["mmk"] = { "Mukha-Dora", 6933447, } m["mml"] = { "Man Met", 3194984, "mkh-pal", } m["mmm"] = { "Maii", 6735599, "poz-vnc", "Latn", } m["mmn"] = { "Mamanwa", 3206623, "phi", "Latn", } m["mmo"] = { "Mangga Buang", 12952294, "poz-ocw", "Latn", } m["mmp"] = { "Musan", 2605703, "paa-asa", } m["mmq"] = { "Aisi", 6940074, "ngf-mad", "Latn", } m["mmr"] = { "tiếng H'Mông Tương Tây Tây", 3307901, "hmn", nil, "Tiếng H'Mông Tương Tây Tây", "H'Mông Tương Tây Tây", } m["mmt"] = { "Malalamai", 3281496, "poz-ocw", "Latn", } m["mmu"] = { "Mmaala", 13123461, "nic-ymb", "Latn", } m["mmv"] = { "Miriti", 6873567, "sai-tuc", "Latn", } m["mmw"] = { "Emae", 3051961, "poz-pnp", "Latn", } m["mmx"] = { "Madak", 3275205, "poz-ocw", "Latn", } m["mmy"] = { "Migaama", 56259, "cdc-est", "Latn", } m["mmz"] = { "Mabaale", 11003249, "bnt-ngn", } m["mna"] = { "Mbula", 3303572, "poz-ocw", "Latn", } m["mnb"] = { "tiếng Muna", 6935584, "poz-mun", "Latn", "Tiếng Muna", "Muna", } m["mnc"] = { "tiếng Mãn Châu", 33638, "tuw-jrc", "mnc-Mong, Latn", "Tiếng Mãn Châu", "Mãn Châu", ancestors = "juc", translit = "mnc-translit", } m["mnd"] = { "Mondé", 6898840, "tup", "Latn", } m["mne"] = { "Naba", 760732, "csu-bgr", } m["mnf"] = { "Mundani", 35839, "nic-mom", "Latn", } m["mng"] = { "tiếng M'Nông Đông", 12953747, "mkh-ban", "Latn, Khmr", "Tiếng M'Nông Đông", "M'Nông Đông", } m["mnh"] = { "Mono (Congo)", 33501, "bad-cnt", "Latn", } m["mni"] = { "tiếng Manipur", 33868, "sit", "Mtei, Beng", "Tiếng Manipur", "Manipur", ancestors = "omp", translit = {Mtei = "Mtei-translit"}, } m["mnj"] = { "tiếng Munji", 33639, "ira-mny", "Arab", "Tiếng Munji", "Munji", } m["mnk"] = { "tiếng Mandinka", 33678, "dmn-wmn", "Latn, Arab", "Tiếng Mandinka", "Mandinka", } m["mnl"] = { "Tiale", 6744350, "poz-vnc", "Latn", } m["mnm"] = { "Mapena", 11732415, } m["mnn"] = { "tiếng M'Nông Nam", 23857582, "mkh-ban", nil, "Tiếng M'Nông Nam", "M'Nông Nam" } m["mnp"] = { "tiếng Mân Bắc", 36457, "zhx-inm", "Hants", "Tiếng Mân Bắc", "Mân Bắc", generate_forms = "zh-generateforms", translit = "zh-translit", sort_key = "Hani-sortkey", } m["mnq"] = { "tiếng Minriq", 2742268, "mkh-asl", "Latn", "Tiếng Minriq", "Minriq" } m["mnr"] = { "Mono (California)", 33591, "azc-num", "Latn", } m["mnt"] = { "Maykulan", 3915696, "aus-pam", "Latn", } m["mnu"] = { "Mer", 6817854, } m["mnv"] = { "Rennellese", 3397346, "poz-pnp", "Latn", } m["mnw"] = { "tiếng Môn", 13349, "mkh-mnc", "Mymr", "Tiếng Môn", "Môn", ancestors = "mkh-mmn", translit = "mnw-translit", sort_key = { from = {"ျ", "ြ", "ွ", "ှ", "ၞ", "ၟ", "ၠ", "ၚ", "ဿ"}, to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "္န", "္မ", "္လ", "င", "သ္သ"} }, } m["mnx"] = { "Manikion", 3507964, "paa-wpa", } m["mny"] = { "Manyawa", 11002622, "bnt-mak", ancestors = "vmw", } m["mnz"] = { "Moni", 6899857, } m["moa"] = { "tiếng Mwan", 3320111, "dmn-nbe", "Latn", "Tiếng Mwan", "Mwan", } m["moc"] = { "Mocoví", 3027906, "sai-guc", "Latn", } m["mod"] = { "Mobilian", 13333, "crp", "Latn", ancestors = "cho, cic", } m["moe"] = { "Montagnais", 13351, "alg", "Latn", ancestors = "cr", entry_name = {remove_diacritics = c.macron}, } m["mog"] = { "tiếng Mongondow", 3058458, "phi", "Latn", "Tiếng Mongondow", "Mongondow", } m["moh"] = { "tiếng Mohawk", 13339, "iro-nor", "Latn", "Tiếng Mohawk", "Mohawk", ancestors = "iro-omo", } m["moi"] = { "Mboi", 3914417, "alv-yun", } m["moj"] = { "Monzombo", 11154772, "nic-nkk", "Latn", } m["mok"] = { "Morori", 6913275, } m["mom"] = { "Monimbo", 56542, } m["moo"] = { "tiếng Mơ Nâm", 6901726, "mkh-nbn", "Latn", "Tiếng Mơ Nâm", "Mơ Nâm" } m["mop"] = { "Mopan Maya", 36183, "myn", "Latn", } m["moq"] = { "Mor (Papuan)", 11732468, "paa", } m["mor"] = { "tiếng Moro", 36172, "alv-hei", "Latn", "Tiếng Moro", "Moro", } m["mos"] = { "tiếng Mooré", 36096, "nic-mre", "Latn", "Tiếng Mooré", "Mooré", } m["mot"] = { "Barí", 2886281, "cba", "Latn", } m["mou"] = { "Mogum", 3440473, "cdc-est", "Latn", } m["mov"] = { "Mojave", 56510, "nai-yuc", "Latn", } m["mow"] = { "Moi (Congo)", 11124792, "bnt-bmo", "Latn", } m["mox"] = { "Molima", 3319495, "poz-ocw", "Latn", } m["moy"] = { "tiếng Shekkacho", 56827, "omv-gon", "Ethi, Latn", "Tiếng Shekkacho", "Shekkacho", } m["moz"] = { "Mukulu", 3440403, "cdc-est", } m["mpa"] = { "Mpoto", 6928303, "bnt-mbi", } m["mpb"] = { "Mullukmulluk", 6741120, } m["mpc"] = { "Mangarayi", 6748829, } m["mpd"] = { "Machinere", 12953681, "awd", "Latn", } m["mpe"] = { "tiếng Majang", 56724, "sdv", "Ethi", "Tiếng Majang", "Majang", } m["mpg"] = { "Marba", 56614, "cdc-mas", } m["mph"] = { "tiếng Maung", 6792550, "aus-wdj", "Latn", } m["mpi"] = { "tiếng Mpade", 3280670, "cdc-cbm", "Latn", "Tiếng Mpade", "Mpade", } m["mpj"] = { "Martu Wangka", 3295916, "aus-pam", "Latn", } m["mpk"] = { "Mbara (Chad)", 3912770, "cdc-cbm", } m["mpl"] = { "Middle Watut", 15887910, "poz-ocw", "Latn", } m["mpm"] = { "tiếng Mixtec Yosondúa", 12953741, "omq-mxt", "Latn", "Tiếng Mixtec Yosondúa", "Mixtec Yosondúa", } m["mpn"] = { "Mindiri", 6863842, "poz-ocw", "Latn", } m["mpo"] = { "Miu", 6883668, "poz-ocw", "Latn", } m["mpp"] = { "Migabac", 11732448, } m["mpq"] = { "Matís", 3299145, "sai-pan", "Latn", } m["mpr"] = { "Vangunu", 3554582, "poz-ocw", "Latn", } m["mps"] = { "tiếng Dadibi", 5208077, "ngf", "Latn", "Tiếng Dadibi", "Dadibi", } m["mpt"] = { "Mian", 12952846, "ngf-okk", "Latn", } m["mpu"] = { "Makuráp", 3281037, "tup", "Latn", } m["mpv"] = { "Mungkip", 11732485, "ngf-fin", "Latn", } m["mpw"] = { "Mapidian", 6753812, "awd", "Latn", } m["mpx"] = { "Misima-Paneati", 6875666, "poz-ocw", "Latn", } m["mpy"] = { "Mapia", 3287224, "poz-mic", "Latn", } m["mpz"] = { "tiếng Mpi", 6928276, "tbq-bka", "Thai", "Tiếng Mpi", "Mpi", } m["mqa"] = { "Maba", 3273750, } m["mqb"] = { "Mbuko", 3502213, "cdc-cbm", "Latn", } m["mqc"] = { "Mangole", 6749097, "poz-cma", "Latn", } m["mqe"] = { "Matepi", 11732426, "ngf-mad", } m["mqf"] = { "Momuna", 6897518, } m["mqg"] = { "Kota Bangun Kutai Malay", 12952778, } m["mqh"] = { "Tlazoyaltepec Mixtec", 12953740, "omq-mxt", "Latn", } m["mqi"] = { "Mariri", 6765544, } m["mqj"] = { "Mamasa", 6745452, "poz-ssw", "Latn", } m["mqk"] = { "Rajah Kabunsuwan Manobo", 12953700, "mno", } m["mql"] = { "tiếng Mbelime", 4286473, "nic-eov", "Latn", "Tiếng Mbelime", "Mbelime", } m["mqm"] = { "tiếng Marquises Nam", 19694214, "poz-pep", "Latn", "Tiếng Marquises Nam", "Marquises Nam", } m["mqn"] = { "Moronene", 642581, "poz-btk", "Latn", } m["mqo"] = { "Modole", 11732457, "paa-nha", } m["mqp"] = { "Manipa", 6749799, "poz-cma", "Latn", } m["mqq"] = { "Minokok", 18642293, } m["mqr"] = { "Mander", 6747979, "paa-tkw", } m["mqs"] = { "tiếng Tây Makian", 3033575, "paa-nha", nil, "Tiếng Tây Makian", "Tây Makian", } m["mqt"] = { "Mok", 13018559, "mkh-pal", } m["mqu"] = { "Mandari", 3285426, "sdv-bri", } m["mqv"] = { "Mosimo", 11732478, "ngf-mad", "Latn", } m["mqw"] = { "Murupi", 11732486, "ngf-mad", "Latn", } m["mqx"] = { "Mamuju", 6746004, "poz-ssw", "Latn", } m["mqy"] = { "tiếng Manggarai", 3285748, "poz-cet", "Latn", "Tiếng Manggarai", "Manggarai", } m["mqz"] = { "Malasanga", 14916889, "poz-ocw", "Latn", } m["mra"] = { "tiếng Mlabri", 3073465, "mkh-khm", nil, "Tiếng Mlabri", "Mlabri" } m["mrb"] = { "Marino", 3293299, } m["mrc"] = { "tiếng Maricopa", 56386, "nai-yuc", "Latn", "Tiếng Maricopa", "Maricopa", } m["mrd"] = { "tiếng Magar Tây", 22303263, "sit-gma", "Deva", "Tiếng Magar Tây", "Magar Tây", } m["mre"] = { "Martha's Vineyard Sign Language", 33494, "sgn", "Latn, Sgnw", } m["mrf"] = { "Elseng", 3915667, "paa-brd", } m["mrg"] = { "tiếng Mising", 3316328, "sit-tan", "Latn, Beng, Deva", "Tiếng Mising", "Mising", ancestors = "adi", } m["mrh"] = { "Mara Chin", 4175893, "tbq-kuk", "Latn", } m["mrj"] = { "tiếng Mari Tây", 1776032, "chm", "Cyrl", "Tiếng Mari Tây", "Mari Tây", translit = "chm-translit", sort_key = "mrj-sortkey", } m["mrk"] = { "Hmwaveke", 5873712, "poz-cln", "Latn", } m["mrl"] = { "Mortlockese", 3324598, "poz-mic", "Latn", } m["mrm"] = { "Merlav", 3331115, "poz-vnc", "Latn", } m["mrn"] = { "Cheke Holo", 2962165, "poz-ocw", "Latn", } m["mro"] = { "Mru", 1951521, "sit-mru", "Latn, Mroo", } m["mrp"] = { "Morouas", 6913299, "poz-vnc", "Latn", } m["mrq"] = { "tiếng Marquises Bắc", 2603808, "poz-pep", "Latn", "Tiếng Marquises Bắc", "Marquises Bắc", } m["mrr"] = { "tiếng Maria (Ấn Độ)", 27602, "dra-mdy", "Deva", "Tiếng Maria (Ấn Độ)", "Maria (Ấn Độ)", } m["mrs"] = { "Maragus", 6754640, "poz-vnc", "Latn", } m["mrt"] = { "Margi", 56241, "cdc-cbm", "Latn", } m["mru"] = { "Mono (Cameroon)", 11031964, "alv-mbm", "Latn", } m["mrv"] = { "Mangarevan", 36237, "poz-pep", "Latn", } m["mrw"] = { "tiếng Maranao", 33800, "phi", "Latn, Arab", "Tiếng Maranao", "Maranao", } m["mrx"] = { "Dineor", 5278044, "paa-tkw", } m["mry"] = { "Karaga Mandaya", 6747925, "phi", } m["mrz"] = { "Marind", 6763970, } m["msb"] = { "tiếng Masbatenyo", 33948, "phi", "Latn", "Tiếng Masbatenyo", "Masbatenyo", } m["msc"] = { "Sankaran Maninka", 11155812, "dmn-mnk", } m["msd"] = { "Yucatec Maya Sign Language", 34281, "sgn", "Latn", -- when documented } m["mse"] = { "Musey", 56328, "cdc-mas", } m["msf"] = { "Mekwei", 4544752, "paa-nim", "Latn", } m["msg"] = { "Moraid", 6909020, } m["msi"] = { "Sabah Malay", 10867404, "crp", } m["msj"] = { "Ma", 6720909, "nic-mbc", "Latn", } m["msk"] = { "tiếng Mansaka", 12952800, "phi", "Latn", "Tiếng Mansaka", "Mansaka", } m["msl"] = { "Molof", 4300950, } m["msm"] = { "Agusan Manobo", 12953696, "mno", } m["msn"] = { "tiếng Vurës", 3563857, "poz-vnc", "Latn", "Tiếng Vurës", "Vurës", } m["mso"] = { "Mombum", 6897079, } m["msp"] = { "Maritsauá", 6765915, "tup", "Latn", } m["msq"] = { "Caac", 2932212, "poz-cln", "Latn", } m["msr"] = { "Mongolian Sign Language", 3915499, "sgn", } m["mss"] = { "West Masela", 12952816, "poz-tim", } m["msu"] = { "Musom", 6943041, "poz-ocw", "Latn", } m["msv"] = { "Maslam", 3502273, } m["msw"] = { "Mansoanka", 35814, } m["msx"] = { "Moresada", 11732475, } m["msy"] = { "Aruamu", 3501809, "paa", "Latn", } m["msz"] = { "Momare", 6897030, } m["mta"] = { "Cotabato Manobo", 12953698, "mno", } m["mtb"] = { "Anyin Morofo", 3502338, "alv-ctn", "Latn", ancestors = "any", } m["mtc"] = { "Munit", 11732482, "ngf-mad", } m["mtd"] = { "Mualang", 3073458, "poz-mly", } m["mte"] = { "Alu", 33503, "poz-ocw", "Latn", } m["mtf"] = { "Murik (New Guinea)", 7050035, "paa-lsp", "Latn", } m["mtg"] = { "Una", 5580728, } m["mth"] = { "tiếng Munggui", 6936018, "poz-hce", "Latn", } m["mti"] = { "Maiwa (New Guinea)", 6737223, "ngf", "Latn", } m["mtj"] = { "Moskona", 11288953, } m["mtk"] = { "Mbe'", 10964025, "nic-nka", "Latn", } m["mtl"] = { "Montol", 3440457, "cdc-wst", "Latn", } m["mtm"] = { "tiếng Mator", 20669419, "syd", "Cyrl", "Tiếng Mator", "Mator", } m["mtn"] = { "Matagalpa", 3490756, "nai-min", } m["mto"] = { "Totontepec Mixe", 7828400, "nai-miz", } m["mtp"] = { "Wichí Lhamtés Nocten", 5908756, "sai-wic", "Latn", } m["mtq"] = { "tiếng Mường", 3236789, "mkh-vie", "Latn", "Tiếng Mường", "Mường", sort_key = "vi-sortkey", } m["mtr"] = { "Mewari", nil, "inc-wes", "Deva", ancestors = "raj", translit = "hi-translit", -- for now } m["mts"] = { "Yora", 3572572, "sai-pan", "Latn", } m["mtt"] = { "tiếng Mota", 3325052, "poz-vnc", "Latn", "Tiếng Mota", "Mota", } m["mtu"] = { "Tututepec Mixtec", 7857069, "omq-mxt", "Latn", } m["mtv"] = { "Asaro'o", 3503684, "ngf-fin", "Latn", } m["mtw"] = { "Magahat", 6729600, "phi", } m["mtx"] = { "Tidaá Mixtec", 7800805, "omq-mxt", "Latn", } m["mty"] = { "Nabi", 6956858, "qfa-tor", "Latn", } m["mua"] = { "Mundang", 36032, "alv-mbm", } m["mub"] = { "Mubi", 3440518, "cdc-est", "Latn", } m["muc"] = { "Mbu'", 35868, "nic-beb", "Latn", } m["mud"] = { "Mednyj Aleut", 1977419, "qfa-mix", ancestors = "ale, ru" } m["mue"] = { "tiếng Quichuañol", 36066, "crp", "Latn", "Tiếng Quichuañol", "Quichuañol", ancestors = "es, qu", } m["mug"] = { "Musgu", 3123545, "cdc-cbm", "Latn", } m["muh"] = { "Mündü", 35981, "nic-nke", "Latn", } m["mui"] = { "tiếng Musi", 615660, "poz-mly", "Latn", } m["muj"] = { "Mabire", 3440437, } m["mul"] = { "đa ngữ", 20923490, "qfa-not", "All", "Đa ngữ", "đa ngữ", wikipedia_article = "Translingualism", sort_key = { Hani = "Hani-sortkey", Jpan = "Jpan-sortkey", Hrkt = "Hira-sortkey", -- Sort all kana as Hira. Hira = "Hira-sortkey", Kana = "Hira-sortkey", }, standardChars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc, } m["mum"] = { "Maiwala", 12952764, "poz-ocw", "Latn", } m["muo"] = { "Nyong", 36373, "alv-lek", } m["mup"] = { "tiếng Malvi", 33413, "inc-wes", "Deva", "Tiếng Malvi", "Malvi", ancestors = "raj", translit = "hi-translit" } m["muq"] = { "Eastern Xiangxi Miao", 27431376, "hmn", } m["mur"] = { "tiếng Murle", 56727, "sdv", "Latn", "Tiếng Murle", "Murle", } m["mus"] = { "tiếng Muscogee", 523014, "nai-mus", "Latn", "Tiếng Muscogee", "Muscogee", } m["mut"] = { "Western Muria", 12952886, "dra-mur", } m["muu"] = { "tiếng Yaaku", 34222, "cus-eas", "Latn", "Tiếng Yaaku", "Yaaku", } m["muv"] = { "tiếng Muthuvan", 3327420, "dra-tam", "Mlym, Taml", "Tiếng Muthuvan", "Muthuvan", translit = { Mlym = "ml-translit", Taml = "ta-translit", }, } m["mux"] = { "Bo-Ung", 15831607, } m["muy"] = { "Muyang", 3502301, "cdc-cbm", "Latn", } m["muz"] = { "tiếng Mursi", 36013, "sdv", "Ethi, Latn", "Tiếng Mursi", "Mursi", } m["mva"] = { "Manam", 6746851, "poz-ocw", "Latn", } m["mvb"] = { "Mattole", 20824, "ath-pco", "Latn", } m["mvd"] = { "Mamboru", 578815, "poz", } m["mvg"] = { "Yucuañe Mixtec", 25562736, "omq-mxt", "Latn", } m["mvh"] = { "Mire", 3441359, } m["mvi"] = { "tiếng Miyako", 36218, "jpx-sry", "Jpan", "Tiếng Miyako", "Miyako", translit = s["Jpan-translit"], sort_key = s["Jpan-sortkey"], } m["mvk"] = { "Mekmek", 6810592, "paa-yua", } m["mvl"] = { "Mbara (Australia)", 6799620, "aus-pam", } m["mvm"] = { "Muya", 2422759, "sit-qia", } m["mvn"] = { "Minaveha", 6863278, "poz-ocw", "Latn", } m["mvo"] = { "Marovo", 3294683, "poz-ocw", "Latn", } m["mvp"] = { "Duri", 3915414, "poz-ssw", } m["mvq"] = { "Moere", 11732458, "ngf-mad", } m["mvr"] = { "tiếng Marau", 6755069, "poz-hce", "Latn", } m["mvs"] = { "Massep", 3502895, "paa-tkw", } m["mvt"] = { "Mpotovoro", 6928305, "poz-vnc", "Latn", } m["mvu"] = { "Marfa", 713633, } m["mvv"] = { "tiếng Tagal Murut", 7675300, "poz-san", "Latn", "Tiếng Tagal Murut", "Tagal Murut", } m["mvw"] = { "Machinga", 12952754, "bnt-rvm", } m["mvx"] = { "Meoswar", 6817777, "poz-hce", "Latn", } m["mvy"] = { "tiếng Kohistan", 33399, "inc-koh", nil, "Tiếng Kohistan", "Kohistan", } m["mvz"] = { "tiếng Mesqan", 6821677, "sem-eth", "Ethi", "Tiếng Mesqan", "Mesqan", } m["mwa"] = { "Mwatebu", 14916896, "poz-ocw", "Latn", } m["mwb"] = { "Juwal", 6319103, "qfa-tor", "Latn", } m["mwc"] = { "Are", 29277, "poz-ocw", "Latn", } m["mwe"] = { "Mwera", 6944725, "bnt-rvm", "Latn", } m["mwf"] = { "Murrinh-Patha", 2980398, "aus-dal", "Latn", } m["mwg"] = { "Aiklep", 3399652, "poz-ocw", "Latn", } m["mwh"] = { "Mouk-Aria", 3325498, "poz-ocw", "Latn", } m["mwi"] = { "Labo", 2157452, "poz-vnc", "Latn", } m["mwk"] = { "Kita Maninkakan", 3015523, "dmn-wmn", } m["mwl"] = { "tiếng Miranda", 13330, "roa-ibe", "Latn", "Tiếng Miranda", "Miranda", ancestors = "roa-ole", } m["mwm"] = { "tiếng Sar", 56850, "csu-sar", "Latn", "Tiếng Sar", "Sar", } m["mwn"] = { "Nyamwanga", 6944666, "bnt-mwi", } m["mwo"] = { "Central Maewo", 3276435, } m["mwp"] = { "Kala Lagaw Ya", 2591262, "aus-pam", "Latn", } m["mwq"] = { "Mün Chin", 331340, "tbq-kuk", } m["mwr"] = { "tiếng Marwar", 56312, "inc-wes", "Deva, Mahj", "Tiếng Marwar", "Marwar", ancestors = "raj", translit = { Deva = "hi-translit", -- for now Mahj = "Mahj-translit", }, } m["mws"] = { "Mwimbi-Muthambi", 15632357, "bnt-kka", "Latn", } m["mwt"] = { "tiếng Moken", 18648701, "poz", nil, "Tiếng Moken", "Moken" } m["mwu"] = { "Mittu", 6883573, "csu-bbk", "Latn", } m["mwv"] = { "tiếng Mentawai", 13365, "poz-nws", "Latn", "Tiếng Mentawai", "Mentawai", } m["mww"] = { "tiếng Mông Trắng", 3138829, "hmn", "Latn, Hmng, Hmnp", "Tiếng Mông Trắng", "Mông Trắng", } m["mwz"] = { "Moingi", 11011905, } m["mxa"] = { "Northwest Oaxaca Mixtec", 12953739, "omq-mxt", "Latn", } m["mxb"] = { "Tezoatlán Mixtec", 3317286, "omq-mxt", "Latn", } m["mxd"] = { "Modang", 6888037, "poz", } m["mxe"] = { "Mele-Fila", 3305008, "poz-pnp", "Latn", } m["mxf"] = { "Malgbe", 3502224, } m["mxg"] = { "Mbangala", 6799612, "bnt-yak", } m["mxh"] = { "Mvuba", 6944591, "csu-mle", "Latn", } m["mxi"] = { "tiếng Mozarab", 317044, "roa-ibe", "Arab, Hebr, Latn", "Tiếng Mozarab", "Mozarab", translit = "mxi-translit", } m["mxj"] = { "Miju", 56332, "sit-mdz", "Latn, Deva", } m["mxk"] = { "Monumbo", 6906792, "qfa-tor", } m["mxl"] = { "Maxi Gbe", 35770, "alv-gbe", } m["mxm"] = { "Meramera", 6817936, "poz-ocw", "Latn", } m["mxn"] = { "Moi (Indonesia)", 11732459, "paa", } m["mxo"] = { "Mbowe", 10962309, "bnt-kav", } m["mxp"] = { "Tlahuitoltepec Mixe", 7810697, } m["mxq"] = { "Juquila Mixe", 25559721, } m["mxr"] = { "Murik (Malaysia)", 3328150, nil, "Latn", } m["mxs"] = { "Huitepec Mixtec", 12953729, "omq-mxt", "Latn", } m["mxt"] = { "Jamiltepec Mixtec", 12953730, "omq-mxt", "Latn", } m["mxu"] = { "Mada (Cameroon)", 3441206, "cdc-cbm", "Latn", } m["mxv"] = { "Metlatónoc Mixtec", 36363, "omq-mxt", "Latn", } m["mxw"] = { "Namo", 12952923, } m["mxx"] = { "Mahou", 11004334, "dmn-mnk", } m["mxy"] = { "Southeastern Nochixtlán Mixtec", 7070684, "omq-mxt", "Latn", } m["mxz"] = { "Central Masela", 42575433, "poz-tim", } m["myb"] = { "tiếng Mbay", 3033565, "csu-sar", "Latn", "Tiếng Mbay", "Mbay", } m["myc"] = { "Mayeka", 11129517, "bnt-boa", } m["mye"] = { "tiếng Myene", 35832, "bnt-tso", "Latn", "Tiếng Myene", "Myene", } m["myf"] = { "tiếng Bambassi", 56540, "omv-mao", nil, "Tiếng Bambassi", "Bambassi", } m["myg"] = { "Manta", 35799, "nic-mom", "Latn", } m["myh"] = { "Makah", 3280640, "wak", "Latn", } m["myj"] = { "Mangayat", 35988, "nic-ser", } m["myk"] = { "tiếng Senoufo Mamara", 36187, "alv-sma", "Latn", "Tiếng Senoufo Mamara", "Senoufo Mamara", } m["myl"] = { "Moma", 6897018, "poz", } m["mym"] = { "tiếng Me'en", 3408516, "sdv", "Ethi, Latn", "Tiếng Me'en", "Me'en", } m["myo"] = { "Anfillo", 34928, "omv-gon", } m["myp"] = { "Pirahã", 33825, "sai-mur", "Latn", } m["myr"] = { "Muniche", 3915654, } m["mys"] = { "Mesmes", 3508617, "sem-eth", } m["myu"] = { "Mundurukú", 746723, "tup", "Latn", } m["myv"] = { "tiếng Erzya", 29952, "urj-mdv", "Cyrl", "Tiếng Erzya", "Erzya", translit = "myv-translit", override_translit = true, } m["myw"] = { "Muyuw", 3502878, "poz-ocw", "Latn", } m["myx"] = { "Masaba", 12952814, "bnt-msl", "Latn", } m["myy"] = { "Macuna", 3275059, "sai-tuc", "Latn", } m["myz"] = { "Classical Mandaic", 25559314, "sem-ase", "Mand", } m["mza"] = { "Santa María Zacatepec Mixtec", 8063756, "omq-mxt", "Latn", } m["mzb"] = { "tiếng Berber Bắc Sahara", 11156769, "ber", nil, "Tiếng Berber Bắc Sahara", "Berber Bắc Sahara", } m["mzc"] = { "Madagascar Sign Language", 12715020, "sgn", } m["mzd"] = { "Malimba", 35806, "bnt-saw", } m["mze"] = { "Morawa", 6909384, } m["mzg"] = { "Monastic Sign Language", 3217333, "sgn", } m["mzh"] = { "Wichí Lhamtés Güisnay", 7998197, "sai-wic", "Latn", } m["mzi"] = { "Ixcatlán Mazatec", 6101049, "omq-maz", "Latn", } m["mzj"] = { "Manya", 11006832, "dmn-mnk", } m["mzk"] = { "Nigeria Mambila", 11004163, "nic-mmb", "Latn", } m["mzl"] = { "Mazatlán Mixe", 25559728, } m["mzm"] = { "Mumuye", 36021, "alv-mum", "Latn", } m["mzn"] = { "tiếng Mazandaran", 13356, "ira-msh", "mzn-Arab", "Tiếng Mazandaran", "Mazandaran", } m["mzo"] = { "Matipuhy", 6787588, "sai-kui", "Latn", } m["mzp"] = { "Movima", 1659701, "qfa-iso", } m["mzq"] = { "Mori Atas", 3324070, "poz-btk", } m["mzr"] = { "Marúbo", 3296011, "sai-pan", "Latn", } m["mzs"] = { "Macanese", 35785, "crp", "Latn", ancestors = "pt", sort_key = {Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.cedilla}}, } m["mzt"] = { "tiếng Mintil", 6869641, "mkh-asl", nil, "Tiếng Mintil", "Mintil" } m["mzu"] = { "Inapang", 6013569, "paa", "Latn", } m["mzv"] = { "Manza", 36038, "alv-gbf", } m["mzw"] = { "Deg", 35183, "nic-gnw", "Latn", } m["mzx"] = { "Mawayana", 6794377, "awd", } m["mzy"] = { "Mozambican Sign Language", 6927809, "sgn", } m["mzz"] = { "Maiadomu", 6735234, "poz-ocw", "Latn", } return require("Module:languages").finalizeData(m, "language") 8r6j59vr8itv0oeafisj7xdcfzvy6q5 Mô đun:en-headword 828 261911 2566656 2487197 2026-09-26T11:17:15Z Hiyuune 50834 2566656 Scribunto text/plain local export = {} local pos_functions = {} --[==[ Author from 2020 on: mostly Benwing2, with significant contributions from Theknightwho. Based on a prior version by Rua (by now mostly rewritten), with contributions from Erutuon and others (see history for full attribution). ]==] local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require = require local require_when_needed = require("Module:require when needed") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local headword_module = "Module:headword" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local JSON_module = "Module:JSON" local labels_module = "Module:labels" local links_module = "Module:links" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local yesno_module = "Module:yesno" local iut = require_when_needed(inflection_utilities_module) local put = require_when_needed(parse_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local add_links_to_multiword_term = require_when_needed(headword_utilities_module, "add_links_to_multiword_term") local add_suffix = require_when_needed(en_utilities_module, "add_suffix") local apply_link_modifiers = require_when_needed(headword_utilities_module, "apply_link_modifiers") local concat = table.concat local deepEquals = require_when_needed(table_module, "deepEquals") local dump = mw.dumpObject local format_categories = require_when_needed(utilities_module, "format_categories") local full_headword = require_when_needed(headword_module, "full_headword") local get_label_info = require_when_needed(labels_module, "get_label_info") local get_link_page = require_when_needed(links_module, "get_link_page") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local insert = table.insert local insertIfNot = require_when_needed(table_module, "insertIfNot") local ipairs = ipairs local is_regular_plural = require_when_needed(en_utilities_module, "is_regular_plural") local list_to_set = require_when_needed(table_module, "listToSet") local pairs = pairs local process_params = require_when_needed(parameters_module, "process") local remove = table.remove local remove_links = require_when_needed(links_module, "remove_links") local replacement_escape = require_when_needed(string_utilities_module, "replacement_escape") local shallowCopy = require_when_needed(table_module, "shallowCopy") local singularize = require_when_needed(en_utilities_module, "singularize") local split = require_when_needed(string_utilities_module, "split") local toJSON = require_when_needed(JSON_module, "toJSON") local toNFD = mw.ustring.toNFD local type = type local ulen = require_when_needed(string_utilities_module, "len") local ulower = require_when_needed(string_utilities_module, "lower") local umatch = require_when_needed(string_utilities_module, "match") local u = require_when_needed(string_utilities_module, "char") local ugsub = require_when_needed(string_utilities_module, "gsub") local lang = require("Module:languages").getByCode("en") local langname = lang:getCanonicalName() local list_param = {list = true, disallow_holes = true} local list_allow_holes = {list = true, allow_holes = true} local boolean_param = {type = "boolean"} local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug/track")("en-headword/" .. page) return true end ------------------------------------------- UTILITY FUNCTIONS ------------------------------------------ -- Parse and return an inflection not requiring additional processing. The raw arguments come from `args[field]`, which -- is parsed for inline modifiers. local function parse_inflection(args, field, is_head) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end return m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[argfield], splitchar = ",", is_head = is_head, } end -- Insert the parsed inflections in `terms` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel, no_label) for _, termobj in ipairs(terms) do m_headword_utilities.remove_termobj_field_modifiers(termobj) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, no_label = no_label, accel = accel and {form = accel} or nil, } end -- Insert a fixed label `label` into the inflections for `data`. If `originating_term` is supplied, copy the qualifiers, -- labels and references from it into the fixed label. local function insert_fixed_inflection(data, label, originating_term) m_headword_utilities.insert_fixed_inflection { headdata = data, originating_term = originating_term, label = label, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end -- These functions are used directly in the <> format as well as in the utility functions #2 below. local function compute_double_last_cons_stem(term) local last_cons = term:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("Verb stem '" .. term .. "' must end in a consonant to use ++") end return term .. last_cons end local function compute_plusplus_s_form(term, default_s_form) if term:find("[szx]$") then -- regas -> regasses, derez -> derezzes return compute_double_last_cons_stem(term) .. "es" else return default_s_form end end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Bản mẫu:en-head" and "interjection" or error("Từ loại phải được chỉ rõ trong 1=") poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and "head" or poscat local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["sort"] = true, ["splithyph"] = boolean_param, ["nosplithyph"] = boolean_param, ["hyphspace"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean_param", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["nomultiwordcat"] = boolean_param, ["abbr"] = list_param, ["the"] = true, ["def"] = {alias_of = "the"}, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local pos_data = pos_functions[indexing_poscat] local pos_func if pos_data then local pos_params = pos_data.params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end pos_func = pos_data.func end local args = process_params(parargs, params) -- Account for unsupported titles, e.g. 'C|N>K' instead of 'Unsupported titles/C through N to K'. local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = parse_inflection(args, "head", "is_head") local heads = user_specified_heads local autohead if args.nolink or not pagename:find("[ '%-]") then autohead = pagename else local en_no_split_apostrophe_words = list_to_set { "one's", "someone's", "he's", "she's", "it's", } local en_include_hyphen_prefixes = list_to_set { -- We don't include things that are also words even though they are often (perhaps mostly) prefixes, e.g. -- "be", "counter", "cross", "extra", "half", "mid", "over", "pan", "under". "acro", "acousto", "Afro", "agro", "anarcho", "angio", "Anglo", "ante", "anti", "arch", "auto", "bi", "bio", "cis", "co", "cryo", "crypto", "de", "demi", "eco", "electro", "Euro", "ex", "Greco", "hemi", "hydro", "hyper", "hypo", "infra", "Indo", "inter", "intra", "Judeo", "macro", "meta", "micro", "mini", "multi", "neo", "neuro", "non", "para", "peri", "post", "pre", "pro", "proto", "pseudo", "re", "semi", "sub", "super", "trans", "un", "vice", } local function is_english(term) local title = mw.title.new(term) if title and title.exists then local content = title:getContent() if content and content:find("==English==\n") then return true end end return false end local function en_split_hyphen_when_space(word) if not word:find("-", nil, true) then return nil end if args.hyphspace then return "[[" .. word:gsub("%-+", " ") .. "|" .. word .. "]]" end if args.nosplithyph then return "[[" .. word .. "]]" end if not args.splithyph then local space_word = word:gsub("%-+", " ") if is_english(space_word) then return "[[" .. space_word .. "|" .. word .. "]]" end if is_english(word) then return "[[" .. word .. "]]" end end return nil end local function en_split_apostrophe(word) local base = word:match("^(.*)'s$") if base then return "[[" .. base .. "]][[-'s|'s]]" end -- Only treat final apostrophe as possessive if preceded by something that looks like a plural ending in /z/. -- In particular we don't want to do it for words like [[truckin']]. base = word:match("^(.*[sxz])'$") if base then if base:find("s$") then local sg = singularize(base) if is_english(sg) then return "[[" .. sg .. "|" .. base .. "]][[-'|']]" end end return "[[" .. base .. "]][[-'|']]" end return "[[" .. word .. "]]" end autohead = add_links_to_multiword_term(pagename, { split_hyphen_when_space = en_split_hyphen_when_space, split_apostrophe = en_split_apostrophe, no_split_apostrophe_words = en_no_split_apostrophe_words, include_hyphen_prefixes = en_include_hyphen_prefixes, }) end if not heads[1] then heads = {{term = autohead}} else for _, headobj in ipairs(heads) do local head = headobj.term if head:find("^~") then head = apply_link_modifiers(autohead, head:sub(2), lang) headobj.term = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. headobj.term = autohead .. head end if head == autohead then track("redundant-head") end end end -- handle the=/def= if args.the == "~" then local newheads = {} for _, headobj in ipairs(heads) do local barehead = shallowCopy(headobj) insert(newheads, barehead) headobj.term = "the " .. headobj.term insert(newheads, headobj) end heads = newheads elseif args.the then local the = require(yesno_module)(args.the) if the then for _, headobj in ipairs(heads) do headobj.term = "the " .. headobj.term end end end local data = { lang = lang, pos_category = poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, inflections = {}, nomultiwordcat = args.nomultiwordcat, sort_key = args.sort, pagename = pagename, id = args.id, force_cat_output = force_cat, } local function inscat(cat) insert(data.categories, cat .. " " .. langname) end local is_suffix = false if args.suffix or not args.nosuffix and pagename:find("^%-") and not pagename:find("^%-%-") and poscat ~= "Biến thể hình thái hậu tố" then is_suffix = true data.pos_category = "Hậu tố" local singular_poscat = singularize(poscat) inscat("Dạng hậu tố của " .. singular_poscat) insert(data.inflections, {label = "dạng hậu tố của " .. singular_poscat}) end if pos_func then pos_func(args, data, is_suffix) end local extra_categories = {} if pagename:find("[Qq]") then -- Check for q not followed by u. We want to exclude things like [[13q deletion syndrome]] and [[BFOQ]] that -- don't have a lowercase letter on either side, as well as things like [[& seq.]] and [[acq.]] that are -- abbreviations for words containing a following u. -- -- Approximate range of combining diacritics; we want to remove them so the checks below for -- a lowercase letter next to the q aren't tripped up by diacritics on the letter. local u300 = u(0x0300) local u36F = u(0x036F) local pagename_no_diacritics = ugsub(toNFD(pagename), "[" .. u300 .. "-" .. u36F .. "]", "") if pagename_no_diacritics:find("[Qq][a-tv-z]") or pagename_no_diacritics:find("[a-z]q[^u.]") or pagename_no_diacritics:find("[a-z]q$") then inscat("Từ chứa Q không theo sau U") end end -- toNFD performs decomposition, so letters that decompose to an ASCII -- vowel and a diacritic, such as é, are counted as vowels and do not do not -- need to be included in the pattern. if not umatch(ulower(toNFD(pagename)), "[aeiouyæœøəªºαεηιουω]") then inscat("Từ không có nguyên âm") end if pagename:find("yre$") then inscat('Từ kết thúc bằng "-yre"') end if not pagename:find(" ") and ulen(pagename) >= 25 then insert(extra_categories, "Từ dài " .. langname) end if pagename:find("^[^aeiou ]*a[^aeiou ]*e[^aeiou ]*i[^aeiou ]*o[^aeiou ]*u[^aeiou ]*$") then inscat("Từ dùng tất cả nguyên âm theo thứ tự bảng chữ cái") end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return toJSON(data) end return full_headword(data) .. (extra_categories[1] and format_categories(extra_categories, lang, args.sort) or "") end local function make_default_comparative(word) if word == "good" or word == "well" then return {"better"} elseif word == "bad" or word == "badly" then return {"worse"} elseif word == "far" then return {"further", "farther"} else return {add_suffix(word, "r")} end end local function make_default_superlative(word) if word == "good" or word == "well" then return {"best"} elseif word == "bad" or word == "badly" then return {"worst"} elseif word == "far" then return {"furthest", "farthest"} else return {add_suffix(word, "st.superlative")} end end -- This function does the common work between adjectives and adverbs. local function process_comparative_args(data, args, plpos) local pagename = data.pagename local comps = parse_inflection(args, 1) local sups = parse_inflection(args, "sup") local outcomps, outsups if args.componly then if comps[1] then error("Không thể xác định dạng so sánh hơn của " .. plpos .. " chỉ có so sánh hơn") end insert(data.inflections, {label = "chỉ có dạng " .. glossary_link("so sánh hơn")}) insert(data.categories, plpos .. " chỉ có so sánh hơn " .. langname) -- Set to empty list so we don't get any comparatives output, but process superlatives if specified. outcomps = {} if not sups[1] then -- Set to empty list so we don't get any superlatives output unless explicitly given. outsups = {} end elseif args.suponly then if comps[1] or sups[1] then error("Can't specify comparatives or superlatives of or superlative-only " .. plpos) end insert(data.inflections, {label = "chỉ có dạng " .. glossary_link("so sánh nhất")}) insert(data.categories, plpos .. " chỉ có so sánh nhất " .. langname) return end -- If the first parameter is ?, then don't show anything, just return. if comps[1] and comps[1].term == "?" then if comps[2] then error("Không thể xác định thêm các dạng so sánh hơn khác cùng với '?'") end if sups[1] then error("Không thể xác định dạng so sánh nhất cùng với '?' cho dạng so sánh hơn") end return end if comps[1] and comps[1].term == "-" then local hyphencomp = remove(comps, 1) -- Remove the "-" but retain for qualifiers, labels, references -- Not (generally) comparable; may occasionally have a comparative if comps[1] then insert_fixed_inflection(data, "thường không dùng ở dạng <<so sánh được>>", hyphencomp) elseif not sups[1] then insert_fixed_inflection(data, "không <<so sánh được>>", hyphencomp) insert(data.categories, plpos .. " không so sánh được " .. langname) return else -- No comparative, but a superlative. insert_inflection() will correctly generate 'no comparative' if we -- pass in "-" as the value. outcomps = {hyphencomp} end elseif not comps[1] then comps = {{term = "more"}} end if not outcomps then -- not if we set `outcomps` to "-" above or processed a comparative-only term outcomps = {} -- Go over each parameter given and create a comparative and superlative form. for _, compobj in ipairs(comps) do local comp = compobj.term if comp == "-" then error("Comparative of '-' only allowed as first comparative") end if comp == "+" then comp = "+more" elseif comp == "more" and pagename ~= "many" and pagename ~= "much" then comp = "+more" elseif comp == "further" and pagename ~= "far" then comp = "+further" elseif comp == "better" and pagename ~= "good" and pagename ~= "well" then comp = "+better" elseif comp:find("~") then comp = comp:gsub("~", replacement_escape(pagename)) end compobj.origterm = comp if comp == "+more" then comp = "more [[" .. pagename .. "]]" elseif comp == "+further" then comp = {"further [[" .. pagename .. "]]", "farther [[" .. pagename .. "]]"} elseif comp == "+better" then comp = "better [[" .. pagename .. "]]" elseif comp == "er" then -- Add -er. comp = add_suffix(pagename, "r") elseif comp == "ier" then if pagename:sub(-1) ~= "y" then error("Chỉ chấp nhận đuôi so sánh hơn '-ier' cho các từ kết thúc bằng 'y': " .. pagename) end comp = pagename:gsub("e?y$", "ier") elseif comp:find("^%+") then local special = m_headword_utilities.get_special_indicator(comp, "noerror") if special then comp = m_headword_utilities.handle_multiword(pagename, special, make_default_comparative) end end if type(comp) == "table" and not comp[2] then comp = comp[1] end if type(comp) == "table" then for i = 1, #comp - 1 do local outobj = shallowCopy(compobj) outobj.term = comp[i] insert(outcomps, outobj) end compobj.term = comp[#comp] insert(outcomps, compobj) else compobj.term = comp insert(outcomps, compobj) end end end if sups[1] and sups[1].term == "-" then if sups[2] then error("Can't specify '-' as superlative followed by further values") end -- No superlative. insert_inflection() will correctly generate 'no superlative' if we pass in "-" as the value. outsups = sups else if not sups[1] then sups = {{term = "+"}} end end -- `outsups` will be set if we set `outsups` to "-" above or processed a comparative-only term without superlatives. if not outsups then outsups = {} local function process_sup(sup, special, supobj, compobj) if special then sup = m_headword_utilities.handle_multiword(pagename, special, make_default_superlative) elseif sup == "-" or sup == "+" then error(("Internal error: Superlative value of '%s' should have been handled earlier"):format(sup)) elseif sup == "+most" then sup = "most [[" .. pagename .. "]]" elseif sup == "+furthest" then sup = {"furthest [[" .. pagename .. "]]", "farthest [[" .. pagename .. "]]"} elseif sup == "+best" then sup = "best [[" .. pagename .. "]]" elseif sup == "est" then -- Add -est. sup = add_suffix(pagename, "st.superlative") elseif sup == "iest" then if pagename:sub(-1) ~= "y" then error("Can't specify 'iest' superlative unless the term ends with 'y': " .. pagename) end sup = pagename:gsub("e?y$", "iest") end if type(sup) == "table" and not sup[2] then sup = sup[1] end if compobj then supobj = shallowCopy(supobj) supobj = m_headword_utilities.combine_termobj_decorations(supobj, compobj) end if type(sup) == "table" then for i = 1, #sup - 1 do local outobj = shallowCopy(supobj) outobj.term = sup[i] insert(outsups, outobj) end supobj.term = sup[#sup] insert(outsups, supobj) else supobj.term = sup insert(outsups, supobj) end end for _, supobj in ipairs(sups) do local sup = supobj.term if sup == "-" then error("Superlative of '-' only allowed as first superlative") end if sup == "+" then if not comps[1] then error("Không thể chỉ định dạng so sánh nhất cho '+' khi chưa có dạng so sánh hơn") end for _, compobj in ipairs(comps) do local comp = compobj.origterm local special if comp == "+more" then sup = "+most" elseif comp == "+further" then sup = "+furthest" elseif comp == "+better" then sup = "+best" elseif comp == "er" then sup = "est" elseif comp == "ier" then sup = "iest" else if comp:find("^%+") then special = m_headword_utilities.get_special_indicator(comp, "noerror") end if not special then -- If the full comparative was given, then derive the superlative by replacing -er with -- -est. if comp:sub(-2) == "er" then sup = comp:sub(1, -3) .. "est" else error(("The superlative cannot be derived automatically from comparative '%s' because it doesn't end in -er"):format(comp)) end end end process_sup(sup, special, supobj, compobj) end else local special = m_headword_utilities.get_special_indicator(sup, "noerror") -- Do some work here rather than in process_sup() so we don't end up double-processing a term with a '~' -- in it or a term that happens to be 'most' or similar after substitution of ~ in the comparative. if not special then if sup == "most" and pagename ~= "many" and pagename ~= "much" then sup = "+most" elseif sup == "furthest" and pagename ~= "far" then sup = "+furthest" elseif sup == "best" and pagename ~= "good" and pagename ~= "well" then sup = "+best" elseif sup:find("~") then sup = sup:gsub("~", replacement_escape(pagename)) end end process_sup(sup, special, supobj) end end end insert_inflection(data, outcomps, "<<so sánh hơn>>", "so sánh hơn") insert_inflection(data, outsups, "<<so sánh nhất>>", "so sánh nhất") end pos_functions["Tính từ"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "Tính từ") end, } pos_functions["Phó từ"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "Phó từ") end, } local function escape(str) return (str:gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0")) end local function canonicalize_plural(pl, pagename, pos) if pl == "+" then return escape(add_suffix(pagename, "s.plural", pos)) elseif pl == "++" then return escape(compute_plusplus_s_form(pagename, add_suffix(pagename, "s.plural", pos))) elseif pl == "*" then return escape(pagename) elseif pl == "ies" then if pagename:sub(-1) == "y" then return escape(pagename:gsub("e?y$", pl)) end error("Can't specify 'ies' plural unless the term ends with 'y'.") elseif pl == "s" or pl == "es" or pl == "'s" then return escape(pagename .. pl) end end local function do_nouns(args, data, pos) local pagename = data.pagename pos = pos or "noun" local plurals = parse_inflection(args, 1) local function insert_plurale_tantum_inflections(is_plural_only, originating_label) if args.sg[1] then insert_fixed_inflection(data, "thường số nhiều", originating_label) parse_and_insert_inflection(data, args, "sg", "số ít") elseif is_plural_only then insert_fixed_inflection(data, "chỉ có số nhiều", originating_label) end if args.attr[1] then parse_and_insert_inflection(data, args, "attr", "attributive") end end local function first_pl_term() return plurals[1] and plurals[1].term or nil end if first_pl_term() == "p" then -- plurale tantum if plurals[2] then error("With plurale tantum noun, can't specify more than one plural") end data.genders = {"p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections("chỉ có số nhiều", plurals[1]) return end local function inscat(cat) insert(data.categories, cat .. " " .. langname) end local need_default_plural = pos == "noun" if first_pl_term() == "sp" then -- construed as singular or plural sp = remove(plurals, 1) -- Remove the "sp" but retain it for its qualifiers, labels, references inscat("nouns construed as singular or plural") data.genders = {"s", "p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections(nil, sp) need_default_plural = false elseif first_pl_term() == "-" then -- Uncountable noun; may occasionally have a plural local hyphpl = remove(plurals, 1) -- Remove the "-" but retain for qualifiers, labels, references inscat("Danh từ không đếm được") -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert_fixed_inflection(data, "thường <<không đếm được>>", hyphpl) else insert_fixed_inflection(data, "<<không đếm được>>", hyphpl) end need_default_plural = false elseif first_pl_term() == "#" then -- Usually countable (e.g., "grilled cheese") local hashpl = remove(plurals, 1) -- Remove the "#" but retain for qualifiers, labels, references insert_fixed_inflection(data, "thường <<đếm được>>", hashpl) inscat("Danh từ không đếm được") inscat("Danh từ đếm được") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end elseif first_pl_term() == "~" then -- Mixed countable/uncountable noun, always has a plural local tildepl = remove(plurals, 1) -- Remove the "~" but retain for qualifiers, labels, references insert_fixed_inflection(data, "<<đếm được>> và <<không đếm được>>", tildepl) inscat("Danh từ không đếm được") inscat("Danh từ đếm được") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end end -- Plural is unknown if first_pl_term() == "?" then local questionpl = remove(plurals, 1) -- Remove the "?" but retain for qualifiers, labels, references -- Not desired; see [[Wiktionary:Tea_room/2021/August#"Plural unknown or uncertain"]] -- insert_fixed_inflection(data, "plural unknown or uncertain", questionpl) inscat("Danh từ có số nhiều không rõ") if plurals[1] then error("Can't specify explicit plurals along with '?' for unknown/uncertain plural") end return end -- Plural is not attested if first_pl_term() == "!" then local exclampl = remove(plurals, 1) -- Remove the "!" but retain for qualifiers, labels, references insert_fixed_inflection(data, "số nhiều chưa được chứng thực", exclampl) inscat("Danh từ có số nhiều chưa được chứng thực") if plurals[1] then error("Can't specify explicit plurals along with '!' for unattested plural") end return end -- If no plural was given, maybe add a default one, otherwise (when "-" was given or proper noun) return. if not plurals[1] then if not need_default_plural then inscat("Danh từ không đếm được") return end plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end -- There are plural forms to show, so show them. inscat("Danh từ đếm được") local irregular, indeclinable for i, pl in ipairs(plurals) do local canon_pl = canonicalize_plural(pl.term, pagename, pos) if canon_pl then pl.term = canon_pl end local pl_term = get_link_page(pl.term, lang) if not (pagename:find(" ") or is_regular_plural(pl_term, pagename)) then irregular = true if pl_term == pagename then indeclinable = true end end end if irregular then inscat("Danh từ có số nhiều bất quy tắc") end if indeclinable then inscat("Danh từ không biến cách") end insert_inflection(data, plurals, "số nhiều", "p") end -- Return the parameters to be used for nouns and proper nouns. Currently the same. local noun_params = { [1] = list_param, ["pl\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the plural", }, -- The following four only used for pluralia tantum (1=p) ["sg"] = list_param, ["attr"] = list_param, } pos_functions["Danh từ"] = { params = noun_params, func = do_nouns, } pos_functions["Danh từ riêng"] = { params = noun_params, func = function(args, data) return do_nouns(args, data, "Danh từ riêng") end, } local function base_default_verb_forms(verb) return escape(add_suffix(verb, "s.verb")), escape(add_suffix(verb, "ing")), escape(add_suffix(verb, "d")) end local function default_verb_forms(verb) local full_s_form, full_ing_form, full_ed_form = base_default_verb_forms(verb) if verb:find(" ") then local first, rest = verb:match("^(.-)( .*)$") local first_s_form, first_ing_form, first_ed_form = base_default_verb_forms(first) return full_s_form, full_ing_form, full_ed_form, first_s_form .. rest, first_ing_form .. rest, first_ed_form .. rest, first, rest else return full_s_form, full_ing_form, full_ed_form, nil, nil, nil, nil, nil end end local function compute_double_last_cons_stem_of_split_verb(verb, ending) local first, rest = verb:match("^(.-)( .*)$") if not first then error("Verb '" .. verb .. "' must have a space in it to use **") end local last_cons = first:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("First word '" .. first .. "' must end in a consonant to use **") end return first .. last_cons .. ending .. rest end local function check_non_nil_star_form(form, pagename) if form == nil then error("Verb '" .. pagename .. "' must have a space in it to use *, **, *l, *! or *'") end return form end local function sub_tilde(form, pagename) if not form then return nil end if form:find("~") then form = form:gsub("~", replacement_escape(pagename)) end return form end local deprecated_qual_replaced_by_inline_modifier = { list = true, allow_holes = true, replaced_by = false, instead = "use an inline modifier <q:...> or <l:...> on the value" } pos_functions["Động từ"] = { params = { [1] = {list = "pres_3sg", disallow_holes = true}, ["pres_3sg\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [2] = {list = "pres_ptc", disallow_holes = true}, ["pres_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [3] = {list = "past", disallow_holes = true}, ["past\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [4] = {list = "past_ptc", allow_holes = true}, ["past_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, ["noautolinkverb"] = boolean_param, ["angle_bracket"] = boolean_param, }, func = function(args, data) -- Get parameters local par1s local par2s = parse_inflection(args, {2, "pres_ptc"}) local par3s = parse_inflection(args, {3, "past"}) local par4s = parse_inflection(args, {4, "past_ptc"}) local pres_3sgs, pres_ptcs, pasts, past_ptcs local pagename = data.pagename ------------------------------------------- UTILITY FUNCTIONS #2 ------------------------------------------ -- These functions are used in both in the separate-parameter format and in the override params such as past_ptc2=. local full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed local lemma local function set_lemma_and_default_forms(the_lemma) lemma = the_lemma full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed, lemma_first, lemma_rest = default_verb_forms(the_lemma) end local function canonicalize_s_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_s elseif form == "*" then return check_non_nil_star_form(split_default_s, lemma) elseif form == "++" then return compute_plusplus_s_form(lemma, full_default_s) elseif form == "**" then if lemma:find("^[^ ]*[szx] ") then return compute_double_last_cons_stem_of_split_verb(lemma, "es") else return check_non_nil_star_form(split_default_s, lemma) end elseif form == "+!" then return lemma .. "s" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "s" .. lemma_rest elseif form == "+'" then return lemma .. "'s" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'s" .. lemma_rest elseif form == "+l" then if lemma:find("[szx]$") then return {{term = full_default_s, l = {"US"}}, {term = compute_plusplus_s_form(lemma, full_default_s), l = {"UK"}}} else return compute_plusplus_s_form(lemma, full_default_s) end elseif form == "*l" then if lemma:find("^[^ ]*[szx] ") then return {{term = check_non_nil_star_form(split_default_s, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "es"), l = {"UK"}}} else return check_non_nil_star_form(split_default_s, lemma) end else return sub_tilde(form, lemma) end end local function canonicalize_ing_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ing elseif form == "*" then return check_non_nil_star_form(split_default_ing, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ing" elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ing") elseif form == "+!" then return lemma .. "ing" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ing" .. lemma_rest elseif form == "+'" then return lemma .. "'ing" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'ing" .. lemma_rest elseif form == "+l" then return {{term = full_default_ing, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ing", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ing, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ing"), l = {"UK"}}} else return sub_tilde(form, lemma) end end local function canonicalize_ed_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ed elseif form == "*" then return check_non_nil_star_form(split_default_ed, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ed" elseif form == "+!" then return lemma .. "ed" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ed" .. lemma_rest elseif form == "+'" then return {{term = lemma .. "'d"}, {term = lemma .. "'ed"}} elseif form == "*'" then return {{term = check_non_nil_star_form(lemma_first) .. "'d" .. lemma_rest}, {term = check_non_nil_star_form(lemma_first) .. "'ed" .. lemma_rest}} elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ed") elseif form == "+l" then return {{term = full_default_ed, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ed", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ed, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ed"), l = {"UK"}}} else return sub_tilde(form, lemma) end end -- FIXME: options should be "+", "*", "++", "**", "+n", "*n", "++n" and "**n", but not "n" local function canonicalize_en_form(form) if form == "n" then track("n4") return add_suffix(lemma, "n") end return canonicalize_ed_form(form) end --------------------------------- MAIN PARSING/CONJUGATING CODE -------------------------------- local is_angle_bracket = args.angle_bracket if is_angle_bracket then if par2s[1] or par3s[1] or par4s[1] then error("Can't specify explicit values for 2=, 3= or 4= along with the angle-bracket format") end elseif is_angle_bracket == nil and not par2s[1] and not par3s[1] and not par4s[1] and not args[1][2] and args[1][1] and args[1][1]:find("<") then if put.term_contains_top_level_html(args[1][1]) then -- Often, term_contains_top_level_html() returns true on the angle-bracket format, which would -- make the pcall() below succeed but leave the angle brackets as-is. Check for this and only do the -- pcall() if term_contains_top_level_html() returns false. is_angle_bracket = true else -- If it's ambiguous whether it's an angle-bracket format or separate params with an inline modifier, -- try to parse as the latter. If an error occurs, treat as the former. local ok ok, par1s = pcall(parse_inflection, args, {1, "pres_3sg"}) if not ok then par1s = nil is_angle_bracket = true end end end if is_angle_bracket then -------------------------- ANGLE-BRACKET FORMAT -------------------------- -- (0) Expand multiword term with angle brackets just on the first word. local arg11 = args[1][1] if arg11:find("^<.*>$") and pagename:find(" ") then local first, rest = pagename:match("^(.-)( .*)$") arg11 = first .. arg11 .. rest end -- (1) Parse the indicator specs inside of angle brackets. local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = put.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec, expected at most 4: " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. concat(separated_group) .. "'") end if not footnotes then footnotes = {} end insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group) if not comma_separated_group then return {{term = "+"}} end local specs = {} local colon_separated_groups = put.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do local form = colon_separated_group[1] if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error("*, **, *l, *! and *' not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = "+" end local termobj = { term = form } local footnotes = fetch_footnotes(colon_separated_group) if footnotes then for _, footnote in ipairs(footnotes) do m_headword_utilities.add_footnote_to_termobj(termobj, footnote) end end insert(specs, termobj) end return specs end local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, } end local parse_props = { parse_indicator_spec = parse_indicator_spec, } local alternant_multiword_spec = iut.parse_inflected_text(arg11, parse_props) -- (2) Check for user-specified brackets; remove any links from the lemma, but remember the original -- form so we can use it below in the 'lemma_linked' form. -- Check to see if there are brackets in the pre-text or post-text. If so, use the linked lemma (with the -- verb autolinked unless noautolinkverb is given). Otherwise, use the default headword algorithm. local function check_bracket(val) if val:find("%[%[") then alternant_multiword_spec.saw_bracket = true end end for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do check_bracket(alternant_or_word_spec.before_text) if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for _, word_spec in ipairs(multiword_spec.word_specs) do check_bracket(word_spec.before_text) end check_bracket(multiword_spec.post_text) end end end check_bracket(alternant_multiword_spec.post_text) iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end base.orig_lemma = base.lemma base.lemma = remove_links(base.lemma) if args.noautolinkverb or base.orig_lemma:find("%[%[") then base.linked_lemma = base.orig_lemma else base.linked_lemma = "[[" .. base.orig_lemma .. "]]" end end) -- (3) Conjugate the verbs according to the indicator specs parsed above. local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", } local function conjugate_verb(base) local function process_specs(slot, specs, canon_func, default_values, default_already_formobj) local function insert_termobj_into_slot(termobj) local formobj = m_headword_utilities.convert_termobj_to_formobj(termobj) -- If the form is -, don't insert any forms, which will result in there being no overall forms -- (in fact it will be nil). We check for that down below and substitute a single "-" as the -- form, which in turn gets turned into special labels like "no present participle". if formobj.form == "-" then if formobj.footnotes then error("Unable to preserve footnotes specified on missing form '-': FIXME: " .. dump(formobj.footnotes)) end else iut.insert_form(base.forms, slot, formobj) end end local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg insert_termobj_into_slot(arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_decorations(canon, arg) insert_termobj_into_slot(canon) end end end for _, arg in ipairs(specs) do if arg.term == "+" then if default_values then -- will be nil if past tense specified as - and no past ptc given for _, val in ipairs(default_values) do val = shallowCopy(val) if default_already_formobj then local argformobj = m_headword_utilities.convert_termobj_to_formobj(arg) val.footnotes = iut.combine_footnotes(val.footnotes, argformobj.footnotes) iut.insert_form(base.forms, slot, val) else m_headword_utilities.combine_termobj_decorations(val, arg) canonicalize_and_insert(val) end end end else canonicalize_and_insert(arg) end end end set_lemma_and_default_forms(base.lemma) local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error(("Internal error: '%s' should have already thrown an error"):format(form)) end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_specs("s_form", base.s_specs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_specs("ing_form", base.ing_specs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_specs("ed_form", base.ed_specs, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_specs("en_form", base.en_specs, function(arg) return canonicalize_en_form(arg.term) end, base.forms.ed_form, "default already formobj") iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's -- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.linked_lemma:find("%[%[") then return base.linked_lemma else return form end end)) end local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given. local function fetch_termobjs(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - for a spec. if not forms or not forms[1] then return {{term = "-"}} end local termobjs = {} for _, formobj in ipairs(forms) do insert(termobjs, m_headword_utilities.convert_formobj_to_termobj(formobj)) end return termobjs end pres_3sgs = fetch_termobjs("s_form") pres_ptcs = fetch_termobjs("ing_form") pasts = fetch_termobjs("ed_form") past_ptcs = fetch_termobjs("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given and the user specified -- brackets in one of the lemmas. Otherwise we use the default headword-linking algorithm. if not data.user_specified_heads[1] and alternant_multiword_spec.saw_bracket then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do insert(data.heads, m_headword_utilities.convert_formobj_to_termobj(lemma_obj)) end end else -------------------------- SEPARATE-PARAM FORMAT -------------------------- set_lemma_and_default_forms(pagename) par1s = par1s or parse_inflection(args, {1, "pres_3sg"}) pres_3sgs = {} pres_ptcs = {} pasts = {} past_ptcs = {} if not par1s[1] then par1s = {{term = "+"}} end if not par2s[1] then par2s = {{term = "+"}} end if not par3s[1] then par3s = {{term = "+"}} end if not par4s[1] then par4s = {{term = "+"}} end local function process_argument(args, dest, canon_func, default_values, default_already_canonicalized) local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg m_headword_utilities.insert_termobj_combining_duplicates(dest, arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_decorations(canon, arg) m_headword_utilities.insert_termobj_combining_duplicates(dest, canon) end end end for _, arg in ipairs(args) do if arg.term == "+" then for _, val in ipairs(default_values) do val = shallowCopy(val) m_headword_utilities.combine_termobj_decorations(val, arg) if default_already_canonicalized then m_headword_utilities.insert_termobj_combining_duplicates(dest, val) else canonicalize_and_insert(val) end end else canonicalize_and_insert(arg) end end end local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" or form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_argument(par1s, pres_3sgs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_argument(par2s, pres_ptcs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_argument(par3s, pasts, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_argument(par4s, past_ptcs, function(arg) return canonicalize_en_form(arg.term) end, pasts, "default already canonicalized") end ------------------------------------------- INSERT INFLECTIONS ------------------------------------------ insert_inflection(data, pres_3sgs, "hiện tại đơn ở ngôi thứ ba số ít", "s-verb-form") insert_inflection(data, pres_ptcs, "phân từ hiện tại", "ing-form") if deepEquals(pasts, past_ptcs) then insert_inflection(data, pasts, "quá khứ đơn và phân từ quá khứ", "ed-form", "không có quá khứ đơn hoặc phân từ quá khứ") else insert_inflection(data, pasts, "quá khứ đơn", "spast") insert_inflection(data, past_ptcs, "phân từ quá khứ", "past|part") end if pagename:find(" ") then -- Check for placeholder "it" local words = split(pagename, " ") for _, word in ipairs(words) do if word == "it" or word == "its" or word == "it's" then insert(data.categories, langname .. ' terms with placeholder "it"') break end end -- Check for phrasal verbs local phrasal_adverbs = list_to_set{ -- NOTE: This should only contain common phrasal adverbs, not random words like [[low]], -- [[adrift]], etc. "aback", "about", "above", "across", "after", "against", "ahead", "along", "apart", "around", "as", "aside", "at", "away", "back", "before", "behind", "below", "between", "beyond", "by", "down", "for", "forth", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "past", "round", "through", "to", "together", "towards", "under", "up", "upon", "with", "without", } local allowed_non_adverb_words = list_to_set{ "it", "one", "oneself", "someone", } local base = pagename local seen_adverbs = {} -- Only consider a verb to be phrasal if it consists of a single base verb followed exclusively by either -- adverbs from `phrasal_adverbs` or placeholder words from `allowed_non_adverb_words`, where at -- least one following word is from `phrasal_adverbs` (hence [[can it]] is not a phrasal verb). while true do local prev, word = base:match("^(.+) (.-)$") if not prev then break end if phrasal_adverbs[word] then insert(seen_adverbs, word) elseif allowed_non_adverb_words[word] then -- do nothing else break end base = prev end if not base:find(" ") and seen_adverbs[1] then insert(data.categories, "Cụm động từ " .. langname) for i = #seen_adverbs, 1, -1 do insert(data.categories, "Cụm động từ với ''" .. seen_adverbs[i] .. "'' " .. langname) end end end end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["Biến thể hình thái hậu tố"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, }, func = function(args, data, is_suffix) local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "dạng hậu tố của " .. typ) end insert(data.inflections, {label = "mục từ biến thể hình thái của " .. m_table.serialCommaJoin(suffix_type, {conj = "or"})}) end, } return export 2g4ro8ra42eiul5hzvnc8d41xnm3zb6 Mô đun:fr-headword 828 261942 2566662 2395442 2026-09-26T11:24:41Z Hiyuune 50834 2566662 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local check_missing = false -- whether to check for missing forms local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local lang = require("Module:languages").getByCode("fr") local langname = lang:getCanonicalName() local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local concat = table.concat local insert = table.insert local remove = table.remove local sort = table.sort local u = mw.ustring.char local nnbsp = u(0x202F) -- NNBSP = narrow non-breaking space, used before ? and ! in French local prepositions = { "à ", "aux? ", "d[eu] ", "d['’]", "des ", "en ", "sous ", "sur ", "avec ", "pour ", "par ", "dans ", "contre ", "sans ", "comme ", "jusqu['’]", -- We could list others but you get diminishing returns } local no_split_apostrophe_words = { ["c'est"] = true, ["quelqu'un"] = true, ["aujourd'hui"] = true, } local function track(page) require("Module:debug").track("fr-headword/" .. page) return true end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end local function make_plural(form, special) local retval = require(romut_module).handle_multiword(form, special, make_plural, prepositions) if retval then if #retval > 1 then error("Lỗi nội bộ: Got multiple plurals from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("[sxz]$") then return form elseif form:match("au$") then return form .. "x" elseif form:match("al$") then return form:gsub("al$", "aux") end return form .. "s" end local function make_feminine(form, special) local retval = require(romut_module).handle_multiword(form, special, make_feminine, prepositions) if retval then if #retval > 1 then error("Lỗi nội bộ: Got multiple feminines from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("e$") then return form elseif form:match("en$") then return form .. "ne" elseif form:match("er$") then return form:gsub("er$", "ère") elseif form:match("el$") then return form .. "le" elseif form:match("et$") then return form .. "te" elseif form:match("on$") then return form .. "ne" elseif form:match("ieur$") then return form .. "e" elseif form:match("teur$") then return form:gsub("teur$", "trice") elseif form:match("eu[rx]$") then return form:gsub("eu[rx]$", "euse") elseif form:match("if$") then return form:gsub("if$", "ive") elseif form:match("c$") then return form:gsub("c$", "que") elseif form:match("eau$") then return form:gsub("eau$", "elle") else return form .. "e" end end -- For bot use function export.make_feminine(frame) local masc = frame.args[1] or error("giống đực trong tham số đầu tiên bắt buộc phải có.") local special = frame.args[2] return make_feminine(masc, special) end -- Handle generation of feminine or plural inflections when "+" is encountered. `list` is the existing base forms -- (strings or form objects) that need to be inflected. `defobj` is the form object whose `term` field is "+"; any -- qualifiers, labels and/or references from that form object will be combined with those of the base form. `inflfun` -- is the function to do the inflection, which is passed two arguments, the base form value (a string) and the -- `special` value specified for handling multiword expressions (or nil if no value specified). Returns the new list -- of inflected form objects. local function make_inflection(list, defobj, inflfun, special) local newlist = {} for _, form in ipairs(list) do if type(form) == "string" then form = {term = form} end local infl = inflfun(form.term, special) local formobj = m_table.shallowCopy(form) formobj.term = infl m_headword_utilities.combine_termobj_decorations(formobj, defobj) insert(newlist, formobj) end return newlist end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Từ loại không được chỉ rõ. Vui lòng thêm tham số đầu tiên để gọi mô đun.") local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["abbr"] = list_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if not heads[1] then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, no_split_apostrophe_words) if not heads[1] then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, head:sub(2)) heads[i] = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head after a -- NNBSP (thin non-breaking space). head = auto_linked_head .. nnbsp .. head heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = not user_specified_heads[1], genders = {}, inflections = {}, pagename = pagename, id = args.id, checkredlinks = check_missing and (pos_functions[poscat] and pos_functions[poscat].redlink_pos or true) or false, } if pagename:find("^%-") and poscat ~= "Biến thể hình thái hậu tố" then data.is_suffix = true data.pos_category = "Hậu tố" data.checkredlinks = check_missing local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, "Dạng hậu tố " .. singular_poscat .. " " .. langname) insert(data.inflections, {label = "dạng hậu tố " .. singular_poscat}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end parse_and_insert_inflection(data, args, "abbr", "từ viết tắt") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet { "m", "f", "mf", "mfbysense", "mfequiv", "gneut", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "?", "?-p", } local additional_allowed_pronoun_genders = m_table.listToSet { "m-s", "f-s", "mf-s", "p", -- mf-p doesn't make sense for e.g. [[iels]]/[[ielles]] "n", -- e.g. [[ceci]]/[[cela]] } local function validate_genders(genders, is_pronoun) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] and (not is_pronoun or not additional_allowed_pronoun_genders[g]) then error("Không rõ giống: " .. g) end end end local function make_qual_replaced_by(replacement) return {list = true, allow_holes = true, replaced_by = false, instead = ("use an inline modifier on |%s= such as <q:...>, <qq:...>, <l:...> or <ll:...>"):format(replacement) } end local function make_alias_replaced_by(replacement, reason) return {list = true, disallow_holes = true, replaced_by = replacement, reason = reason or "for consistency with the corresponding parameter in other Romance-language headword templates" } end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, [2] = list_param, --plural override(s) ["pqual"] = make_qual_replaced_by("2"), ["f"] = list_param, --feminine form(s) ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, --masculine form(s) ["fqual"] = make_qual_replaced_by("m"), ["dim"] = list_param, --diminutive(s) ["dimqual"] = make_qual_replaced_by("dim"), ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end local function do_noun(args, data, pos, is_proper) local is_plurale_tantum = false local has_singular = false if pos == "Danh từ số đếm" then pos = "Số từ" insert(data.categories, 1, "Số đếm " .. langname) end if data.is_suffix then pos = "Hậu tố" end local plpos = pos validate_genders(args[1]) data.genders = args[1] -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true end end local lemma = data.pagename -- Plural local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. pos) end insert(data.inflections, {label = glossary_link("chỉ có số nhiều")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" and not mode:find("[a-zA-Z]") then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "đôi khi " .. glossary_link("chỉ có số nhiều") .. ", trong biến thể"}) end if mode == "?" then -- Plural is unknown insert(data.categories, plpos .. " số nhiều chưa được chứng thực hoặc không rõ " .. langname) elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "số nhiều chưa được chứng thực"}) insert(data.categories, plpos .. " số nhiều chưa được chứng thực " .. langname) if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, plpos .. " không đếm được " .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")}) insert(data.categories, plpos .. " đếm được " .. langname) else insert(data.inflections, {label = glossary_link("không đếm được")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")}) insert(data.categories, plpos .. " không " .. langname) insert(data.categories, plpos .. " đếm được " .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, plpos .. " đếm được " .. langname) else -- Uncountable nouns insert(data.categories, plpos .. " không đếm được " .. langname) end end -- Gather plurals, handling requests for default plurals. for _, pl in ipairs(plurals) do if pl.term == "+" then pl.term = make_plural(lemma) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) pl.term = make_plural(lemma, pl.term) elseif pl.term == "s" or pl.term == "x" then -- FIXME, convert to #s or #x pl.term = lemma .. pl.term else pl.term = replace_hash_with_lemma(pl.term, lemma) end end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("không biến cách"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, plpos .. " không biến cách " .. langname) else insert_noun_inflection(plurals, "số nhiều", "p") end if plurals[2] then insert(data.categories, plpos .. " với nhiều dạng số nhiều " .. langname) end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); and `inflect` is a function of one or two -- arguments to generate the default masculine or feminine from the lemma (the arguments are the lemma and -- optionally a "special" flag to indicate how to handle multiword lemmas, and the function is normally -- make_feminine or make_masculine [which doesn't exist, FIXME]). local function handle_mf(field, inflect, default_plurals) local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = call_inflect() elseif term == "e" and field == "f" then -- FIXME: remove this special case term = lemma .. "e" else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = call_inflect(special) end return term end } return mfs end local feminines = handle_mf("f", make_feminine) local masculine_plurals = {} local masculines = handle_mf("m", nil) local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end insert_noun_inflection(feminines, "giống cái", "f") insert_noun_inflection(masculines, "giống đực") parse_and_insert_noun_inflection("dim", "giảm nhẹ nghĩa") parse_and_insert_noun_inflection("aug", "tăng kích") parse_and_insert_noun_inflection("pej", "nghĩa xấu") parse_and_insert_noun_inflection("dem", "tên gọi dân cư") parse_and_insert_noun_inflection("fdem", "tên gọi dân cư dành cho nữ") end pos_functions["Danh từ"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "Danh từ") end, } pos_functions["Danh từ riêng"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "Danh từ", "is proper") end, } pos_functions["Danh từ số đếm"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "Danh từ số đếm") end, pos_category = "Số từ", } local function get_pronoun_pos(pos) return { params = { [1] = {list = "g", disallow_holes = true, required = true, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["type"] = list_param, }, func = function(args, data) -- Validate and add genders. validate_genders(args[1], "is pronoun") data.genders = args[1] local plpos = pos local function parse_and_insert_pronoun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end -- Parse and insert all inflections. parse_and_insert_pronoun_inflection("m", "giống đực") parse_and_insert_pronoun_inflection("mv", "nguyên âm trước ở giống đực số ít") parse_and_insert_pronoun_inflection("f", "giống cái") parse_and_insert_pronoun_inflection("mpl", "giống đực số nhiều") parse_and_insert_pronoun_inflection("fpl", "giống cái số nhiều") parse_and_insert_pronoun_inflection("pl", "số nhiều") -- Categorize by "type" for _, ty in ipairs(args.type) do local category if ty == "indefinite" then category = "bất định" elseif ty == "interrogative" then category = "nghi vấn" elseif ty == "personal" then category = "nhân xưng" elseif ty == "possessive" then category = "sở hữu" elseif ty == "reflexive" then category = "phản thân" elseif ty == "relative" then category = "quan hệ" end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, "Đại từ " .. cat .. " " .. langname) end else insert(data.categories, langname .. " " .. category .. " pronouns") end end end end } end pos_functions["Đại từ"] = get_pronoun_pos("Đại từ") pos_functions["Từ hạn định"] = get_pronoun_pos("Từ hạn định") local function get_misc_pos() return { params = { [1] = {replaced_by = "head", reason = "for consistency with other French headword templates"}, }, func = function(args, data) end } end pos_functions["Phó từ"] = get_misc_pos() pos_functions["Giới từ"] = get_misc_pos() pos_functions["Cụm từ"] = get_misc_pos() pos_functions["Cụm giới từ"] = get_misc_pos() pos_functions["Tục ngữ"] = get_misc_pos() pos_functions["Dấu câu"] = get_misc_pos() pos_functions["Dấu phụ"] = get_misc_pos() pos_functions["Thán từ"] = get_misc_pos() pos_functions["Tiền tố"] = get_misc_pos() pos_functions["Từ viết tắt"] = get_misc_pos() local function do_adjective(pos) return { params = { [1] = true, ["inv"] = boolean_param, ["sp"] = true, -- special indicator: "first", "first-last", etc. ["onlyg"] = true, ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["base"] = list_param, ["current"] = make_alias_replaced_by("base", "because the old name was obscure and did not clarify the purpose of the parameter"), ["comp"] = list_param, ["compqual"] = make_qual_replaced_by("comp"), ["sup"] = list_param, ["supqual"] = make_qual_replaced_by("sup"), ["intr"] = boolean_param, }, pos_category = pos == "Tính từ số đếm" and "Số từ" or nil, redlink_pos = pos == "Phân từ" and "Phân từ" or nil, func = function(args, data) local is_numeral = false if pos == "Tính từ số đếm" then pos = "Số từ" is_numeral = true insert(data.categories, 1, "Số đếm " .. langname) end if data.is_suffix then pos = "Hậu tố" end local plpos = pos if not is_numeral then if args.onlyg == "p" or args.onlyg == "m-p" or args.onlyg == "f-p" then insert(data.categories, "Danh từ chỉ có số nhiều " .. langname) end if args.onlyg == "s" or args.onlyg == "f-s" or args.onlyg == "f-s" then insert(data.categories, "Danh từ chỉ có số ít " .. langname) end if args.onlyg then insert(data.categories, plpos .. " khiếm khuyết " .. langname) end end local lemma = data.pagename local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end local function process_inflection(label, arg, accel, get_default, explicit_default_only) local orig_infls = m_headword_utilities.parse_term_list_with_modifiers { paramname = arg, forms = args[arg], splitchar = ",", } if not orig_infls[1] then if explicit_default_only or not get_default then orig_infls = {} else orig_infls = {{term = "+"}} end end local infls = {} if orig_infls[1] then for _, infl in ipairs(orig_infls) do if infl.term == "+" then local defs if get_default then defs = get_default(infl) else error("Can't use '+' with " .. arg .. "=; no default available") end for _, def in ipairs(defs) do insert(infls, def) end elseif infl.term == "e" or infl.term == "s" or infl.term == "x" then -- FIXME: delete this in favor of #e, #s, #x infl.term = lemma .. infl.term insert(infls, infl) else infl.term = replace_hash_with_lemma(infl.term, lemma) insert(infls, infl) end end insert_inflection(infls, label, accel) end return infls end if args.sp and not require(romut_module).allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(require(romut_module).allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end local function get_base() return args.base[1] and args.base or {lemma} end if args.onlyg == "p" then insert(data.inflections, {label = "chỉ có số nhiều"}) if args[1] ~= "mf" then -- Handle feminine plurals process_inflection("giống cái số nhiều", "fpl", "f|p") end elseif args.onlyg == "s" then insert(data.inflections, {label = "chỉ có số ít"}) if not (args[1] == "mf" or not args.f[1] and lemma:match("e$")) then -- Handle feminines process_inflection("giống cái số ít", "f", "f", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) end elseif args.onlyg == "m" then insert(data.genders, "m") insert(data.inflections, {label = "chỉ có giống đực"}) -- Handle masculine plurals process_inflection("giống đực số nhiều", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg == "f" then insert(data.genders, "f") insert(data.inflections, {label = "chỉ có giống cái"}) -- Handle feminine plurals process_inflection("giống cái số nhiều", "fpl", "f|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg then insert(data.genders, args.onlyg) insert(data.inflections, {label = "khiếm khuyết"}) else -- Gather genders local gender = args[1] -- Default to mf if base form ends in -e and no feminine, -- feminine plural or gender specified if not gender and not args.f[1] and not args.fpl[1] and lemma:match("e$") and not lemma:find(" ", nil, true) then gender = "mf" end if args.intr then insert(data.inflections, {label = glossary_link("nội động từ")}) insert(data.inflections, {label = glossary_link("không biến cách")}) args.inv = true elseif args.inv then insert(data.inflections, {label = glossary_link("không biến cách")}) end -- Handle plurals of mf adjectives if not args.inv and gender == "mf" then process_inflection("số nhiều", "pl", "p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) end if not args.inv and gender ~= "mf" then -- Handle masculine form if not same as lemma; e.g. [[sûr de soi]] with m=+, m2=sûr de lui process_inflection("giống đực số ít", "m", "m|s", function(defobj) defobj = m_table.shallowCopy(defobj) defobj.term = lemma return {defobj} end, "explicit default only") -- Handle case of special masculine singular before vowel process_inflection("nguyên âm trước ở giống đực số ít", "mv", "m|s") -- Handle feminines local feminines = process_inflection("giống cái", "f", "f|s", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) -- Handle masculine plurals process_inflection("giống đực số nhiều", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) -- Handle feminine plurals process_inflection("giống cái số nhiều", "fpl", "f|p", function(defobj) return make_inflection(feminines, defobj, make_plural, args.sp) end) end end -- Handle comparatives process_inflection("so sánh hơn", "comp", "so sánh hơn") -- Handle superlatives process_inflection("so sánh nhất", "sup", "so sánh nhất") end } end pos_functions["Tính từ"] = do_adjective("Tính từ") pos_functions["Phân từ quá khứ"] = do_adjective("Phân từ") pos_functions["Tính từ số đếm"] = do_adjective("cardinal adjective") pos_functions["Động từ"] = { params = { ["type"] = list_param, }, func = function(args, data) local pos = "Động từ" for _, ty in ipairs(args.type) do local category, label if ty == "auxiliary" then category = "trợ động từ" elseif ty == "defective" then category = "khiếm khuyết" label = glossary_link("defective") elseif ty == "impersonal" then category = "không ngôi" label = glossary_link("impersonal") elseif ty == "modal" then category = "khiếm khuyết" elseif ty == "reflexive" then category = "phản thân" elseif ty == "transitive" then label = glossary_link("ngoại động từ") category = "goại động từ" elseif ty == "intransitive" then label = glossary_link("nội động từ") category = "nội động từ" elseif ty == "ambitransitive" or ty == "ambi" then category = {"ngoại động từ", "nội động từ"} label = glossary_link("ngoại động từ") .. " và " .. glossary_link("nội động từ") end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, pos .. " " .. cat .. " " .. langname) end else insert(data.categories, pos .. " " .. category .. " " .. langname) end end if label then insert(data.inflections, {label = label}) end end end } pos_functions["Số đếm không biến cách"] = { params = {}, func = function(args, data) data.pos_category = "Số từ" insert(data.categories, "Số đếm " .. langname) insert(data.categories, "Số đếm không biến cách" .. langname) insert(data.inflections, {label = glossary_link("không biến cách")}) end } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["Biến thể hình thái hậu tố"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "dang hậu tố " .. typ) end insert(data.inflections, {label = "dạng biến thể hình thái của " .. m_table.serialCommaJoin(suffix_type, {conj = "hoặc"})}) end, } return export 0mgaz15vuhu1ce2s9n0l160umavo8hd Thảo luận Thành viên:SpaceEncoder 3 263364 2566433 2046917 2026-09-25T15:36:31Z Pminh141 53740 Pminh141 đã đổi [[Thảo luận Thành viên:Knoweverythingwiki]] thành [[Thảo luận Thành viên:SpaceEncoder]]: Tự động di chuyển trang khi đổi tên thành viên “[[Special:CentralAuth/Knoweverythingwiki|Knoweverythingwiki]]” thành “[[Special:CentralAuth/SpaceEncoder|SpaceEncoder]]” 2046917 wikitext text/x-wiki ==Hoan nghênh== <div style="border:1px solid #FDA; vertical-align:top; padding: 0.5em; background: #FFFFE5;"> <div style="margin-left:0.5em; margin-right: 0.5em; margin-bottom:1em; margin-top: 0.1em;"> <span style="font-size: 1.3rem;">'''Xin chào Knoweverythingwiki! Chào mừng bạn đến với Wiktionary tiếng Việt!'''</span> <div class="plainlinks"><p style="margin-top:0.1em; margin-bottom: 1em;">Wiktionary là từ điển mở mà ai cũng đều có thể chỉnh sửa. Cách sử dụng và quy định có thể gây khó khăn cho bạn, nhưng hãy dần học hỏi và '''[[Wiktionary:Táo bạo|mạnh dạn đóng góp]]'''. Các thông tin dưới đây sẽ có thể giúp bạn sử dụng và chỉnh sửa Wiktionary.</p></div> </div> <!-- Quan trọng --> <div style="clear: both; margin-left: 1.5em; margin-right 1.5em; font-size: 100%;"> {| class="plainlinks" width="100%" style="margin:auto;" | style="text-align:center; padding:4px" | [[File:OOjs UI icon search-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Trợ giúp:Tìm kiếm|Tìm kiếm Wiktionary]]''' <br />Tìm hiểu cách tìm và tra cứu mục từ trên Wiktionary. | style="text-align:center; padding:4px" | [[File:OOjs UI icon lightbulb.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Yêu cầu mục từ|Yêu cầu mục từ]]'''<br />Nơi để bạn thêm những từ cần viết nhưng chưa có tại Wiktionary. |- | style="text-align:center; padding:4px" | [[File:OOjs UI icon userAvatar.svg|30px|link=|]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Cộng đồng|Cổng Cộng đồng Wiktionary tiếng Việt]]'''<br />Nơi tìm hiểu mọi thông tin về của Wiktionary. | style="text-align:center; padding:4px" | [[File:OOjs UI icon articleCheck-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Quy định và hướng dẫn|Quy định và hướng dẫn]]''' <br />Chính sách của Wiktionary là gì? Xin vui lòng đọc nó trước khi thực hiện chỉnh sửa! |- | style="text-align:center; padding:4px" | [[File:OOjs UI icon edit-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Trợ giúp:Viết trang mới|Viết trang mới]]'''<br />Tham khảo cách viết trang hay mục từ mới tại Wiktionary. | style="text-align:center; padding:4px" | [[File:OOjs UI icon tray.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Chỗ thử|Chỗ thử]]'''<br />Nơi để bạn viết nháp và thử nghiệm. |- | style="text-align:center; padding:4px" | [[File:OOjs UI icon wikiText.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Trợ giúp:Sửa đổi|Thực hiện sửa đổi]]'''<br />Tham khảo hướng dẫn sửa đổi và cùng bắt đầu sửa đổi Wiktionary. | style="text-align:center; padding:4px" | [[File:OOjs UI icon helpNotice-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Bàn giúp đỡ|Bàn giúp đỡ]]'''<br />Nơi hỏi đáp khi gặp khó khăn trên Wiktionary. |- | style="text-align:center; padding:4px" | [[File:OOjs UI icon book-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Trợ giúp:Mục lục|Mục lục trợ giúp]]''' <br />Mục lục giúp bạn thông tin và hướng dẫn khác khi gặp khó khăn trong những lúc đóng góp! | style="text-align:center; padding:4px" | [[File:OOjs UI icon speechBubbles-ltr.svg|30px|link=]] | style="width:50%; padding:4px;" | '''[[Wiktionary:Thảo luận|Thảo luận chung]]'''<br />Nơi trao đổi ý kiến giữa bạn và các thành viên khác! |}</div> <div style="padding: 0.5em; background: #FEC; border: 1px solid #FDA; margin-top: 1em; font-size: 1em"> [[File:Vector sig vi.png|250px|right]] '''Hãy luôn nhớ rằng, sau khi viết thảo luận xong thì đừng quên bước quan trọng đó là ký tên ở phía sau thảo luận'''. Phương thức ký tên được sử dụng trong Wiktionary không phải là viết tên trực tiếp, nhưng xin hãy ký tên bằng cách sử dụng 4 dấu ngã (<code><nowiki>--~~~~</nowiki></code>) hoặc bằng cách nhấp vào nút chữ ký ([[File:OOUI JS signature icon LTR.svg|20px|border]]) trong cửa sổ chỉnh sửa của phiên bản trình soạn thảo mã nguồn thông thường.<br/> [[Wiktionary:Guestbook_for_non-Vietnamese_speakers|Welcome! If you are not good at Vietnamese or do not speak it, click here.]] </div> </div>&nbsp;--.--[[Thành viên:TheHighFighter2|TheHighFighter2]] ([[Thảo luận Thành viên:TheHighFighter2|thảo luận]]) 07:43, ngày 7 tháng 3 năm 2022 (UTC) 7ebli8hm3bc099j5b6rfopnj8d5gyjq Thành viên:SpaceEncoder 2 263574 2566431 2097030 2026-09-25T15:36:31Z Pminh141 53740 Pminh141 đã đổi [[Thành viên:Knoweverythingwiki]] thành [[Thành viên:SpaceEncoder]]: Tự động di chuyển trang khi đổi tên thành viên “[[Special:CentralAuth/Knoweverythingwiki|Knoweverythingwiki]]” thành “[[Special:CentralAuth/SpaceEncoder|SpaceEncoder]]” 2097030 wikitext text/x-wiki [[File:Animated rainbow rule revers.gif|600px|center]] Hello, I'm <u>'''Knoweverythingwiki'''</u>. Welcome! [[File:Animated rainbow rule revers.gif|600px|center]] 0djhwna8z1c1gwmewirw206w3d8tonm найман 0 268464 2566651 2512779 2026-09-26T10:48:38Z Hiyuune 50834 /* Tiếng Mông Cổ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566651 wikitext text/x-wiki =={{langname|bua}}== {{cardinalbox|bua|7|8|9|долоон|юһэн|ord=}} ==={{ĐM|etym}}=== {{inh+|bua|xng|ᠨ᠋ᠠᠢ᠍ᠮᠠᠨ}}, từ {{inh|bua|xgn-pro|*nayiman}}. So sánh với {{cog|xal|нәәмн}}, {{cog|mn|найм}},.v.v. ==={{ĐM|pron}}=== * {{IPA4|bua|/nɛː.man/|[nɛː.mʷɐɴ̟]}} * {{hyph|bua|най|ман}} ==={{ĐM|numeral}}=== {{head|bua|Số từ}} # [[tám|Tám]]. =={{langname|mn}}== {{mn-variant|ᠨᠠᠶᠢᠮᠠᠨ|найман}} ==={{ĐM|numeral}}=== {{mn-head|Số từ}} # [[tám|Tám]]. ===={{ĐM|rel}}==== * {{l|mn|найм}} {{cln|mn|Số đếm}} 5syp3nsemgxu5vmpaao6ma12731g85o 2566652 2566651 2026-09-26T10:50:56Z Hiyuune 50834 /* {{langname|mn}} */ 2566652 wikitext text/x-wiki =={{langname|bua}}== {{cardinalbox|bua|7|8|9|долоон|юһэн|ord=}} ==={{ĐM|etym}}=== {{inh+|bua|xng|ᠨ᠋ᠠᠢ᠍ᠮᠠᠨ}}, từ {{inh|bua|xgn-pro|*nayiman}}. So sánh với {{cog|xal|нәәмн}}, {{cog|mn|найм}},.v.v. ==={{ĐM|pron}}=== * {{IPA4|bua|/nɛː.man/|[nɛː.mʷɐɴ̟]}} * {{hyph|bua|най|ман}} ==={{ĐM|numeral}}=== {{head|bua|Số từ}} # [[tám|Tám]]. =={{langname|mn}}== {{mn-variant|ᠨᠠᠶᠢᠮᠠᠨ|найман}} ==={{ĐM|numeral}}=== {{mn-head|Số từ}} # {{infl of|mn|найм|t=tám||obl}} ===={{ĐM|rel}}==== * {{l|mn|найм}} {{cln|mn|Số đếm}} 5vo4j8pm1fmyn803lhqa7mnif7vcel4 жаран 0 268502 2566635 2333570 2026-09-26T10:19:17Z Hiyuune 50834 /* Tiếng Kyrgyz */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566635 wikitext text/x-wiki =={{langname|bua}}== ==={{section|num}}=== {{head|bua|Số từ}} # [[sáu mươi|Sáu mươi]]. =={{langname|ky}}== ==={{section|pron}}=== * {{IPA|ky|/d͡ʒɑrɑn/}} ==={{section|n}}=== {{ky-noun}} # [[công dân|Công dân]]. ===={{section|decl}}==== {{ky-decl-noun}} ===={{section|drv}}==== * {{l|ky|жарандык}} * {{l|ky|жарандуулук}} 6f3lk5u4f4s546o6vxs9rq0rqn8gq4s 2566636 2566635 2026-09-26T10:20:00Z Hiyuune 50834 + etym 2566636 wikitext text/x-wiki =={{langname|bua}}== ==={{section|num}}=== {{head|bua|Số từ}} # [[sáu mươi|Sáu mươi]]. =={{langname|ky}}== ==={{section|etym}}=== Từ {{m|ky|жара-}} ==={{section|pron}}=== * {{IPA|ky|/d͡ʒɑrɑn/}} ==={{section|n}}=== {{ky-noun}} # [[công dân|Công dân]]. ===={{section|decl}}==== {{ky-decl-noun}} ===={{section|drv}}==== * {{l|ky|жарандык}} * {{l|ky|жарандуулук}} hera4adcsydr3nhdvq1ymls7sttzc76 2566637 2566636 2026-09-26T10:20:43Z Hiyuune 50834 2566637 wikitext text/x-wiki =={{langname|bua}}== ==={{section|num}}=== {{head|bua|Số từ}} # [[sáu mươi|Sáu mươi]]. =={{langname|ky}}== ==={{section|etym}}=== Từ {{m|ky|жара-}} ==={{section|pron}}=== * {{IPA|ky|/d͡ʒɑrɑn/}} ==={{section|n}}=== {{ky-noun}} # [[công dân|Công dân]]. ===={{section|decl}}==== {{ky-decl-noun}} ===={{section|drv}}==== * {{l|ky|жарандык}} * {{l|ky|жарандуулук}} =={{langname|mn}}== ==={{section|num}}=== {{mn-head|Biến thể hình thái số từ|ᠵᠢᠷᠠᠨ}} # {{inflection of|mn|жар||obl|t=[[sáu mươi]]}} 1s6qobjwi5ixbmgiqqvqsckx1jquvt7 tarix 0 270076 2566537 2128926 2026-09-25T16:06:46Z WhoAlone 40420 2566537 wikitext text/x-wiki {{-uzb-}} {{-noun-}} {{uz-noun}} # [[lịch sử]]. # [[ngày]]. {{catname|Danh từ|tiếng Uzbek}} {{c|uz|Lịch sử}} k3gc14wov98y26a9vq0lm1n2jmo97lx Mô đun:headword utilities 828 270803 2566645 2561598 2026-09-26T10:37:48Z Hiyuune 50834 2566645 Scribunto text/plain local export = {} local require_when_needed = require("Module:utilities/require when needed") local affix_module = "Module:affix" local debug_track_module = "Module:debug/track" local decorations_module = "Module:decorations" local en_utilities_module = "Module:en-utilities" local fun_is_callable_module = "Module:fun/isCallable" local headword_module = "Module:headword" local headword_data_module = "Module:headword/data" local languages_module = "Module:languages" local links_module = "Module:links" local parameters_module = "Module:parameters" local parse_interface_module = "Module:parse interface" local parse_utilities_module = "Module:parse utilities" local string_pattern_escape_module = "Module:string/patternEscape" local string_replacement_escape_module = "Module:string/replacementEscape" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local yesno_module = "Module:yesno" local dump = mw.dumpObject local unpack = unpack or table.unpack -- Lua 5.2 compatibility local insert = table.insert local concat = table.concat local remove = table.remove local sort = table.sort local deep_equals = require_when_needed(table_module, "deepEquals") local extend = require_when_needed(table_module, "extend") local insert_if_not = require_when_needed(table_module, "insertIfNot") local list_to_set = require_when_needed(table_module, "listToSet") local serial_comma_join = require_when_needed(table_module, "serialCommaJoin") local shallow_copy = require_when_needed(table_module, "shallowCopy") local split = require_when_needed(string_utilities_module, "split") local ugsub = require_when_needed(string_utilities_module, "gsub") local umatch = require_when_needed(string_utilities_module, "match") local pattern_escape = require_when_needed(string_pattern_escape_module) local replacement_escape = require_when_needed(string_replacement_escape_module) local escape_wikicode = require_when_needed(parse_utilities_module, "escape_wikicode") local parse_inline_modifiers = require_when_needed(parse_utilities_module, "parse_inline_modifiers") local term_contains_top_level_html = require_when_needed(parse_utilities_module, "term_contains_top_level_html") local get_lang_by_code = require_when_needed(languages_module, "getByCode") local is_callable = require_when_needed(fun_is_callable_module) local format_decorations = require_when_needed(decorations_module, "format_decorations") local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end --[=[ Add decorations to a term. `termobj` is the object describing the term, which should optionally contain: * left qualifiers in `q`, an array of strings; * right qualifiers in `qq`, an array of strings; * left labels in `l`, an array of strings; * right labels in `ll`, an array of strings; * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` (formatted reference text) and optionally `name` and/or `group`; `text` is the text of the term itself, and `lang` is the language object. ]=] local function add_decorations(text, termobj, lang) local function field_non_empty(field) local list = termobj[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `termobj.%s`=%s, should be \"table\""):format( field, mw.dumpObject(list))) end return list[1] end if field_non_empty("q") or field_non_empty("qq") or field_non_empty("l") or field_non_empty("ll") or field_non_empty("refs") then text = format_decorations { lang = lang, text = text, q = termobj.q, qq = termobj.qq, l = termobj.l, ll = termobj.ll, refs = termobj.refs, } end return text end local param_mods = { id = {}, -- disabled when `is_head = true` q = {type = "qualifier"}, qq = {type = "qualifier"}, l = {type = "labels"}, ll = {type = "labels"}, -- [[Module:headword]] expects part references in `.refs`. ref = {item_dest = "refs", type = "references", store = "insert-flattened"}, } local optional_param_mods = { g = {item_dest = "genders", type = "genders"}, alt = {}, lang = {type = "language"}, sc = {type = "script"}, t = {item_dest = "gloss"}, gloss = {}, pos = {}, lit = {}, tr = {}, ts = {}, face = {}, nolinkinfl = {type = "boolean"}, } local optional_headword_param_mods = { sc = {type = "script"}, tr = {}, ts = {}, } --[==[ Parse a single inflection or headword form or list of such forms. In either case, inline modifiers may be attached. `data` is an object with the following fields: * `val`: The raw value to parse. Required. * `paramname`: The name of the parameter from which the value was taken; used in error messages. Required. * `is_head`: We are parsing a headword parameter (a value which goes into the `heads` field of `data`). This changes the allowed modifiers, disabling the `id` modifier and only allowing a subset of optional modifiers. * `frob`: An optional function of one value to apply to the form after inline modifiers have been removed (i.e. to apply to the `.term` field of the returned object). * `include_mods`: List of extra inline modifiers to include, besides the default ones (see below). Each list item is either a string specifying a recognized extra inline modifier (see `optional_param_mods` in the code), or a two-item list of modifier name and modifier spec, where the spec should follow the syntax for modifier specs in `parse_inline_modifiers` in [[Module:parse utilities]]. * `exclude_mods`: List of default inline modifiers to not include. * `splitchar`: If specified, the value in `val` can be a list of forms to parse, separated by the value of `splitchar` (which is a Lua pattern, as in `parse_inline_modifiers` in [[Module:parse utilities]]). Most commonly, `splitchar` is a single comma and the values are comma-separated (in this case, splitting will not happen if a space follows the comma). * `parse_lang_prefix`: If specified, allow a language prefix to precede a form, and if found, store into the `.lang` field of the returned object. * `preserve_splitchar`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_inline_modifiers` in [[Module:parse utilities]]. Returns an object suitable for storing as one element of one of the lists in `headdata.inflections`, where `headdata` is the structure passed to [[Module:headword]]. If `splitchar` is specified, howeve, the return value is a list of such objects. The following default inline modifiers are currently recognized: * `q`: Left qualifier. * `qq`: Right qualifier. * `l`: Comma-separated list of left labels. No space should follow the comma. * `ll`: Comma-separated list of right labels. No space should follow the comma. * `ref`: Reference or references. See {{tl|IPA}} for the syntax. * `id`: Sense ID, in case there are multiple senses. See {{tl|l}}. The following are the recognized additional inline modifiers: * `g`: Comma-separated list of genders. * `alt`: Display text. * `lang`: Language code of language of the form, if different from the language of the headword. * `sc`: Script code of script of the form. Almost never needed. * `t`: Gloss for the form. * `gloss`: Gloss for the form (alias for `t`). * `pos`: Part of speech of the form. * `lit`: Literal meaning of the form. * `tr`: Manual transliteration of the form. * `ts`: Transcription of the form, for languages where the transliteration differs markedly from the pronunciation. * `face`: Face to display the form in, e.g. {"hypothetical"} for a hypothetical form (unlinkable and displayed in italics). * `nolinkinfl`: Make the form unlinkable. ]==] function export.parse_term_with_modifiers(data) local paramname, val, frob = data.paramname, data.val, data.frob local function generate_obj(term, parse_err) if frob then term = frob(term, parse_err) end if data.parse_lang_prefix and term:find(":") then return require(parse_utilities_module).generate_obj_maybe_parsing_lang_prefix { term = term, paramname = paramname, parse_lang_prefix = true, parse_err = parse_err, } else return {term = term} end end -- Check for inline modifier, e.g. מרים<tr:Miryem>. But exclude top-level HTML entry with <span ...>, -- <sup> or similar in it. if (val:find("<", nil, true) or data.splitchar) and not term_contains_top_level_html(val) and -- don't parse inline modifiers if is_head and the value begins with a ~ (link modifier syntax) (not data.is_head or not val:find("^~")) then local param_mods = param_mods if data.is_head then param_mods = shallow_copy(param_mods) param_mods.id = nil end if data.include_mods or data.exclude_mods then if not data.is_head then -- already copied when data.is_head param_mods = shallow_copy(param_mods) end if data.include_mods then local optional_mods = data.is_head and optional_headword_param_mods or optional_param_mods for _, mod in ipairs(data.include_mods) do if type(mod) == "table" then if #mod ~= 2 then error(("Internal error: Modifier spec %s in `include_mods` should be of length 2"):format( dump(mod))) end local modkey, modvalue = unpack(mod) param_mods[modkey] = modvalue elseif not optional_mods[mod] then error(("Internal error: Unrecognized modifier spec %s in `include_mods`"):format( dump(mod))) else param_mods[mod] = optional_mods[mod] end end end if data.exclude_mods then for _, mod in ipairs(data.exclude_mods) do if not param_mods[mod] then error(("Internal error: Modifier spec %s in `exclude_mods` not found among existing modifiers" ):format(dump(mod))) else param_mods[mod] = nil end end end end return parse_inline_modifiers(val, { paramname = paramname, param_mods = param_mods, generate_obj = generate_obj, splitchar = data.splitchar, preserve_splitchar = data.preserve_splitchar, delimiter_key = data.delimiter_key, escape_fun = data.escape_fun, unescape_fun = data.unescape_fun, pre_normalize_modifiers = data.pre_normalize_modifiers, }) else local retval = generate_obj(val) if data.splitchar then retval = {retval} end return retval end end --[==[ Parse a list of inflection forms that may have inline modifiers attached. `data` is an object with the following fields: * `forms`: The list of raw values to parse. Required. * `paramname`: The name of the first parameter from which the value was taken; used in error messages. If this is a two-element list, the first element is the first parameter and the second element is the prefix of the remaining parameters. Parameter names that are numbers are handled correctly, as are those with \1 in it marking where the parameter index goes. Required. * `qualifiers`: If specified, a possibly gappy list of left qualifiers to add to the parsed terms (for compatibility purposes). * `splitchar`: As in `parse_term_with_modifiers()`. The resulting per-term lists will be flattened. * `frob`, `include_mods`, `exclude_mods`, `is_head`, `preserve_splitchar`, `parse_lang_prefix`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_with_modifiers()`. Returns a list of objects, suitable for storing as one of the lists in `headdata.inflections` (once a label is added), where `headdata` is the structure passed to [[Module:headword]]. ]==] function export.parse_term_list_with_modifiers(data) local paramname, forms = data.paramname, data.forms local qualifiers = data.qualifiers local first, restpref if type(paramname) == "table" then first = paramname[1] restpref = paramname[2] else first = paramname restpref = paramname end local terms = {} data = shallow_copy(data) for i, val in ipairs(forms) do data.paramname = i == 1 and first or type(restpref) == "number" and restpref + i - 1 or restpref:find("\1", nil, true) and restpref:gsub("\1", tostring(i)) or restpref .. i data.val = val local parsed = export.parse_term_with_modifiers(data) if qualifiers and qualifiers[i] then if data.splitchar then for _, term in ipairs(parsed) do term.q = {qualifiers[i]} end else parsed.q = {qualifiers[i]} end end if data.splitchar then extend(terms, parsed) else terms[i] = parsed end end return terms end --[==[ Construct a link to [[Appendix:Glossary]] for `entry`. If `text` is specified, it is the display text; otherwise, `entry` is used. ]==] function export.glossary_link(entry, text) text = text or entry return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]" end function export.replace_glossary_links_in_label(label) if label:find("<<", nil, true) then label = label:gsub("<<(.-)|(.-)>>", export.glossary_link):gsub("<<(.-)>>", export.glossary_link) end return label end --[==[ Insert a fixed inflection (a label not associated with any inflection values) into an `inflections` field. The `inflections` field will be initialized if needed. `data` is an object with the following fields: * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs to be set for nested inflections, which are specified for an inflection object rather than the headword data structure as a whole. * `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required. * `originating_term`: The term object from which this label is derived. If specified, decorations will be taken from this object. ]==] function export.insert_fixed_inflection(data) local headdata, origterm, label = data.headdata, data.originating_term, data.label local inflobj = data.inflobj or headdata inflobj.inflections = inflobj.inflections or {} if not origterm then insert(inflobj.inflections, { label = export.replace_glossary_links_in_label(label) }) else if origterm.id then error(("It doesn't make sense to pass in an ID '%s' for label '%s' in conjunction with a term value '%s'" ):format(origterm.id, label, origterm.term)) end origterm = shallow_copy(origterm) -- Preserve decorations origterm.term = nil origterm.label = export.replace_glossary_links_in_label(label) insert(inflobj.inflections, origterm) end end --[==[ Insert previously-parsed terms into an `inflections` field. The `inflections` field will be initialized if needed. `data` is an object with the following fields: * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs to be set for nested inflections, which are specified for an inflection object rather than the headword data structure as a whole. * `terms`: The list of parsed terms. If {nil} or omitted, nothing happens unless `request` is set. * `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required. * `no_label`: If the term is {"-"} and there are no other terms, insert a fixed label with this value. Defaults to {"no "} plus the label. * `usually_no_label`: If the term is {"-"} and there are other terms, insert a fixed label with this value. Defaults to {"usually no "} plus the label. * `cats`: List of categories to insert when terms are given that are not {"-"}. Each category is a string naming a full category to insert (including the appropriate language name prefixed). * `no_cats`: List of categories to insert when a term is given as {"-"}. * `usually_no_cats`: List of categories to insert when a term is given as {"-"} and additional terms are specified as well (representing, e.g. for the inflection {"plural"}, a term which usually has no plural but does under some circumstances). If omitted, both the categories in `cats` and `no_cats` are inserted. * `accel`: If specified, a full accelerator object to add to the inflections. * `request`: If specified and no terms are given, insert a label with a request for inflections to be given. * `enable_auto_translit`: If specified and terms are given, display automatic transliteration of the terms. The return value indicates whether the inflection exists and how many terms are in it. It is an object with the following fields: * `exists`: {"yes"} if one or more terms were specified; {"no"} if the value was given as {"-"}; {"usually no"} if the first value was given as {"-"} but additional terms were supplied; otherwise {nil}, indicating that the status is unspecified. * `numterms`: Number of terms in the inflection. Will be 0 unless `exists` has the value {"yes"} or {"usually no"}. * `request`: True if no terms were specified but a term request was inserted into the inflection (because `data.request` was specified). Otherwise {nil}. ]==] function export.insert_inflection(data) local headdata, terms, label = data.headdata, data.terms, data.label local inflobj = data.inflobj or headdata local retval = {} local accel = data.accel if data.accel_form then if accel then error("Internal error: can't specify both data.accel and data.accel_form") end if headdata.heads then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(headdata.heads) do lemmas[i] = headobj.term if lemmas[i] == "+" then error("Internal error: If you use data.accel_form, you should have resolved all occurrences of + in heads appropriately") end lemma_translits[i] = headobj.tr end accel = { lemma = lemmas, lemma_translit = lemma_translits, form = data.accel_form, } else accel = { form = data.accel_form, } end end local function insert_cats(cats) for _, cat in ipairs(cats) do insert(headdata.categories, cat) end end if terms and terms[1] then terms = shallow_copy(terms) if terms[1].term == "-" then if terms[2] then export.insert_fixed_inflection { headdata = headdata, inflobj = inflobj, originating_term = terms[1], label = data.usually_no_label or "thường không " .. label, } remove(terms, 1) retval.numterms = #terms retval.exists = "thường không" if data.usually_no_cats then insert_cats(data.usually_no_cats) else if data.no_cats then insert_cats(data.no_cats) end if data.cats then insert_cats(data.cats) end end else export.insert_fixed_inflection { headdata = headdata, inflobj = inflobj, originating_term = terms[1], label = data.no_label or "no " .. label, } retval.numterms = 0 retval.exists = "không" if data.no_cats then insert_cats(data.no_cats) end return retval end else retval.numterms = #terms retval.exists = "có" if data.cats then insert_cats(data.cats) end end if data.check_missing then error("Internal error: check_missing support removed; use checkredlinks=true in [[Module:headword]]") end terms.label = export.replace_glossary_links_in_label(label) if accel then terms.accel = accel end terms.enable_auto_translit = data.enable_auto_translit inflobj.inflections = inflobj.inflections or {} insert(inflobj.inflections, terms) elseif data.request then inflobj.inflections = inflobj.inflections or {} insert(inflobj.inflections, { label = export.replace_glossary_links_in_label(label), request = true, }) retval.numterms = 0 -- retval.exists = nil retval.request = true else retval.numterms = 0 -- retval.exists = nil end return retval end --[==[ Parse raw arguments from `forms` for inline modifiers, and insert the resulting terms (which should not require significant additional processing) into `headdata.inflections`. `data` is an object with the following fields: * `forms`: The list of raw values to parse. If {nil} or omitted, nothing happens. * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `paramname`: As in `parse_term_list_with_modifiers()`. Required. * `label`: As in `insert_inflection()`. Required. * `qualifiers`, `frob`, `include_mods`, `exclude_mods`, `is_head`, `splitchar`, `preserve_splitchar`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_list_with_modifiers()`. * `accel`: As in `insert_inflection()`. Return value is as in `insert_inflection()`. ]==] function export.parse_and_insert_inflection(data) local forms = data.forms if forms and forms[1] then data = shallow_copy(data) data.forms = forms data.terms = export.parse_term_list_with_modifiers(data) return export.insert_inflection(data) end return { numterms = 0 } end --[==[ Canonicalize a single term or term-like object or a list of either into a list of term-like objects. `abterms` is the term or list to canonicalize, and `field` is the name of the field holding the term (defaulting to {"term"}). This does the minimal work necessary, meaning that the return value may partly or completely share memory with the value passed in. As a special case, if `abterms` is {nil}, {nil} is returned. If `origin_val` is specified, add a field `origin` containing the value of `origin_val` to each resulting term-like object (in this case, the object will be copied a necessary to avoid side-effecting the passed-in objects). ]==] function export.canonicalize_termobj_list(abterms, field, origin_val) if abterms == nil then return nil end field = field or "term" if type(abterms) == "string" then return {{[field] = abterms, origin = origin_val}} elseif not abterms[1] then if origin_val ~= nil then abterms = shallow_copy(abterms) abterms.origin = origin_val end return {abterms} else -- Check if already in full list term and return directly if so (unless `origin_val` is given, in which case we -- need to shallow-copy both the list and each term in it). local must_convert = false for _, term in ipairs(abterms) do if type(term) == "string" then must_convert = true break end end if not must_convert then if origin_val ~= nil then abterms = shallow_copy(abterms) for i, abterm in ipairs(abterms) do abterms[i] = shallow_copy(abterm) abterms[i].origin = origin_val end end return abterms end end local retval = {} for _, term in ipairs(abterms) do if type(term) == "string" then insert(retval, {[field] = term, origin = origin_val}) else if origin_val ~= nil then term = shallow_copy(term) term.origin = origin_val end insert(retval, term) end end return retval end --[==[ Combine two sets of decorations. If either is {nil}, just return the other, and if both are {nil}, return {nil}. ]==] function export.combine_decorations(decs1, decs2) if not decs1 and not decs2 then return nil end if not decs1 then return decs2 end if not decs2 then return decs1 end local combined = shallow_copy(decs1) for _, dec in ipairs(decs2) do insert_if_not(combined, dec) end return combined end function export.combine_qualifiers_or_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng combine_decorations") end --[==[ Combine the decorations (qualifiers, labels, references) and ID's of two term objects. `destobj` is the "destination term object" into which the combined properties are written, and `srcobj` is the "source object" into which the properties are merged. `destobj` is side-effected (but the lists inside of `destobj` are not); if this is undesirable, make sure to shallow-copy `destobj` first. If both objects have values for a given decoration, the values of `destobj` come first. If both objects have a value for `id`, the values must match or an error is thrown; otherwise, the resulting value of `id` comes from whichever one is defined. '''NOTE:''' This may not be the correct behavior when deduplicating a list of term objects. See `insert_termobj_combining_duplicates` for a different approach. ]==] function export.combine_termobj_decorations(destobj, srcobj) destobj.q = export.combine_decorations(destobj.q, srcobj.q) destobj.qq = export.combine_decorations(destobj.qq, srcobj.qq) destobj.l = export.combine_decorations(destobj.l, srcobj.l) destobj.ll = export.combine_decorations(destobj.ll, srcobj.ll) destobj.refs = export.combine_decorations(destobj.refs, srcobj.refs) if destobj.id and srcobj.id and destobj.id ~= srcobj.id then -- FIXME: We probably want to pass in an error function error(("Can't specify two different ID's %s and %s when combining objects"):format(srcobj.id, destobj.id)) end destobj.id = destobj.id or srcobj.id return destobj end function export.combine_termobj_qualifiers_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng combine_termobj_decorations") end function export.termobj_has_decorations(obj) return obj.q and obj.q[1] or obj.qq and obj.qq[1] or obj.l and obj.l[1] or obj.ll and obj.ll[1] or obj.refs and obj.refs[1] end function export.termobj_has_qualifiers_or_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng termobj_has_decorations") end local function one_decoration_equal(prop1, prop2) local prop1_is_nil = not prop1 or not prop1[1] local prop2_is_nil = not prop2 or not prop2[1] if prop1_is_nil and prop2_is_nil then return true end if prop1_is_nil or prop2_is_nil then return false end return deep_equals(prop1, prop2) end function export.termobj_decorations_equal(obj1, obj2) return one_decoration_equal(obj1.q, obj2.q) and one_decoration_equal(obj1.qq, obj2.qq) and one_decoration_equal(obj1.l, obj2.l) and one_decoration_equal(obj1.ll, obj2.ll) and one_decoration_equal(obj1.refs, obj2.refs) and obj1.id == obj2.id end function export.termobj_ancillary_properties_equal(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng termobj_decorations_equal") end function export.convert_termobj_to_formobj(termobj) local formobj = { form = termobj.term, translit = termobj.tr, } local footnotes local function mods_to_footnote(mod_prefix, mod_vals) if mod_vals and mod_vals[1] then footnotes = footnotes or {} for _, val in ipairs(mod_vals) do insert(footnotes, "[" .. mod_prefix .. ":" .. val .. "]") end end end mods_to_footnote("q", termobj.q) mods_to_footnote("qq", termobj.qq) mods_to_footnote("l", termobj.l) mods_to_footnote("ll", termobj.ll) mods_to_footnote("ref", termobj.refs) mods_to_footnote("id", termobj.id and {termobj.id} or nil) formobj.footnotes = footnotes return formobj end local recognized_multi_mods = { q = "q", qq = "qq", l = "l", ll = "ll", ref = "refs", } local recognized_single_mods = { id = "id", } function export.add_footnote_to_termobj(termobj, footnote) local stripped_footnote = footnote:match("^%[(.*)%]$") if not stripped_footnote then error("Internal error: Footnote should be surrounded by brackets at this stage: " .. footnote) end local prefix, rest = stripped_footnote:match("^([a-z]+):(.+)$") local field, is_multi if prefix then if recognized_multi_mods[prefix] then field = recognized_multi_mods[prefix] is_multi = true elseif recognized_single_mods[prefix] then field = recognized_single_mods[prefix] is_multi = false end end if not field then rest = stripped_footnote field = "l" is_multi = true end if is_multi then if not termobj[field] then termobj[field] = {} end insert(termobj[field], rest) else if termobj[field] and termobj[field] ~= rest then error(("Không thể đặt hai giá trị của '%s': '%s' và '%s'"):format(field, termobj[field], rest)) end termobj[field] = rest end end function export.convert_formobj_to_termobj(formobj) local termobj = { term = formobj.form, tr = formobj.translit, } if formobj.footnotes then for _, footnote in ipairs(formobj.footnotes) do export.add_footnote_to_termobj(termobj, footnote) end end return termobj end local function extract_termobj_field_modifiers(fieldval) return fieldval:match("^([*+]?)(.*)$") end function export.remove_termobj_field_modifiers(termobj) local function remove_field_modifiers(field) if termobj[field] and termobj[field][1] then local any_field_modifiers = false for _, val in ipairs(termobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods ~= "" then any_field_modifiers = true break end end local new_field = {} if any_field_modifiers then for _, val in ipairs(termobj[field]) do local _, field_without_mods = extract_termobj_field_modifiers(val) insert_if_not(new_field, field_without_mods) end termobj[field] = new_field end end end remove_field_modifiers("q") remove_field_modifiers("qq") remove_field_modifiers("l") remove_field_modifiers("ll") remove_field_modifiers("refs") end function export.insert_termobj_combining_duplicates(destobjs, termobj) for _, destobj in ipairs(destobjs) do if destobj.term == termobj.term and destobj.tr == termobj.tr then -- Form already present; maybe combine footnotes. local function combine_field_values(field) if termobj[field] and termobj[field][1] then -- Check to see if there are existing values with *; if so, remove them. if destobj[field] and destobj[field][1] then local any_values_with_asterisk = false for _, val in ipairs(destobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods:find("%*") then any_values_with_asterisk = true break end end if any_values_with_asterisk then local filtered_values = {} for _, val in ipairs(destobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if not field_mods:find("%*") then insert(filtered_values, val) end end if filtered_values[1] then destobj[field] = filtered_values else destobj[field] = nil end end end local any_footnotes_with_plus = false for _, val in ipairs(termobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods:find("%+") then any_footnotes_with_plus = true break end end if any_footnotes_with_plus then if not destobj[field] then destobj[field] = {} else destobj[field] = shallow_copy(destobj[field]) end for _, val in ipairs(termobj[field]) do local already_seen = false local field_mods, field_without_mods = extract_termobj_field_modifiers(val) if field_mods:find("%+") then for _, existing_val in ipairs(destobj[field]) do local _, existing_field_without_mods = extract_termobj_field_modifiers(existing_val) if existing_field_without_mods == field_without_mods then already_seen = true break end end if not already_seen then insert(destobj[field], val) end end end end end end combine_field_values("q") combine_field_values("qq") combine_field_values("l") combine_field_values("ll") combine_field_values("refs") if destobj.id and termobj.id and destobj.id ~= termobj.id then -- FIXME: We probably want to pass in an error function error(("Can't specify two different ID's %s and %s when combining objects"):format(termobj.id, destobj.id)) end destobj.id = destobj.id or termobj.id return end end insert(destobjs, termobj) end export.allowed_special_indicators = { ["first"] = true, ["first-second"] = true, ["first-last"] = true, ["second"] = true, ["last"] = true, ["each"] = true, ["+"] = true, -- requests the default behavior with preposition handling } --[==[ Check for special indicators (values such as {"+first"} or {"+first-last"} that are used in a `pl`, `f`, etc. argument and indicate how to inflect a multiword term). If `form` is such an indicator, the return value is `form` minus the initial `+` sign; otherwise, if form begins with a `+` sign, an error is thrown; otherwise the return value is nil. ]==] function export.get_special_indicator(form, noerror) if form:find("^%+") then form = form:gsub("^%+", "") if not export.allowed_special_indicators[form] then if noerror then return nil end local indicators = {} for indic, _ in pairs(export.allowed_special_indicators) do insert(indicators, "+" .. indic) end sort(indicators) error("Special inflection indicator beginning with '+' can only be " .. mw.text.listToText(indicators) .. ": +" .. form) end return form end return nil end local function add_endings(bases, endings) local retval = {} if type(bases) ~= "table" then bases = {bases} end if type(endings) ~= "table" then endings = {endings} end for _, base in ipairs(bases) do for _, ending in ipairs(endings) do insert(retval, base .. ending) end end return retval end --[==[ Inflect a possibly multiword or hyphenated term `form` using the function `inflect`, which is a function of one argument that is called on a single word to inflect and should return either the inflected word or a list of inflected words. `special` indicates how to inflect the multiword term and should be e.g. {"first"} to inflect only the first word, {"first-last"} to inflect the first and last words, {"each"} to inflect each word, etc. See `allowed_special_indicators` above for the possibilities. If `special` is `+`, or is omitted and the term is multiword (i.e. containing a space character), and `prepositions` is supplied, the function checks for multiword or hyphenated terms containing the prepositions in `prepositions`, e.g. Italian [[senso di marcia]] or [[medaglia d'oro]] or Portuguese [[tartaruga-do-mar]]. If such a term is found, only the first word is inflected. Otherwise, the default is {"first-last"}. `prepositions` is a list of Lua patterns matching prepositions. The patterns will automatically have the separator character (space or hyphen) added to the left side but not the right side, so they should contain a space character (which will automatically be converted to the appropriate separator) on the right side unless the preposition is joined on the right side with an apostrophe. Examples of preposition patterns for Italian are {"di "}, {"sull'"} and {"d?all[oae] "} (which matches {"dallo "}, {"dalle "}, {"alla "}, etc.). The return value is always either a list of inflected multiword or hyphenated terms, or nil if `special` is omitted and `form` is not multiword. (If `special` is specified and `form` is not multiword or hyphenated, an error results.) ]==] function export.handle_multiword(form, special, inflect, prepositions, sep) sep = sep or form:find(" ") and " " or "%-" local raw_sep = sep == " " and " " or "-" -- Used to add regex version of separator in the replacement portion of ugsub() or :gsub() local sep_replacement = sep == " " and " " or "%%-" -- Given a Lua pattern, replace space with the appropriate separator. local function hack_re(re) if sep == " " then return re end return (re:gsub(" ", sep_replacement)) end if special == "first" then local first, rest = form:match(hack_re("^(.-)( .*)$")) if not first then error("Special indicator 'first' can only be used with a multiword term: " .. form) end return add_endings(inflect(first), rest) elseif special == "second" then local first, second, rest = form:match(hack_re("^([^ ]+ )([^ ]+)( .*)$")) if not first then error("Special indicator 'second' can only be used with a term with three or more words: " .. form) end return add_endings(add_endings({first}, inflect(second)), rest) elseif special == "first-second" then local first, space, second, rest = form:match(hack_re("^([^ ]+)( )([^ ]+)( .*)$")) if not first then error("Special indicator 'first-second' can only be used with a term with three or more words: " .. form) end return add_endings(add_endings(add_endings(inflect(first), space), inflect(second)), rest) elseif special == "each" then local terms = split(form, sep) if #terms < 2 then error("Special indicator 'each' can only be used with a multiword term: " .. form) end for i, term in ipairs(terms) do terms[i] = inflect(term) if i > 1 then terms[i] = add_endings(raw_sep, terms[i]) end end local result = "" for _, term in ipairs(terms) do result = add_endings(result, term) end return result elseif special == "first-last" then local first, middle, last = form:match(hack_re("^(.-)( .* )(.-)$")) if not first then first, middle, last = form:match(hack_re("^(.-)( )(.*)$")) end if not first then error("Special indicator 'first-last' can only be used with a multiword term: " .. form) end return add_endings(add_endings(inflect(first), middle), inflect(last)) elseif special == "last" then local rest, last = form:match(hack_re("^(.* )(.-)$")) if not rest then error("Special indicator 'last' can only be used with a multiword term: " .. form) end return add_endings(rest, inflect(last)) elseif special and special ~= "+" then error("Unrecognized special=" .. special) end -- Only do default behavior if special indicator '+' explicitly given or separator is space; otherwise we will -- break existing behavior with hyphenated words. if (special == "+" or sep == " ") and form:find(sep) then if prepositions then -- check for prepositions in the middle of the word; do it this way so we can handle -- more than one word before the preposition (and usually inflect each word) for _, prep in ipairs(prepositions) do local first, space_prep_rest = umatch(form, hack_re("^(.-)( " .. prep .. ".*)$")) if first then return add_endings(inflect(first), space_prep_rest) end end end -- multiword or hyphenated expressions default to first-last; we need to pass in the separator to avoid -- problems with multiword terms containing hyphens in the individual words return export.handle_multiword(form, "first-last", inflect, prepositions, sep) end return nil end local function link_hyphen_split_component(word, data) if data.link_hyphen_split_component then return data.link_hyphen_split_component(word) else return "[[" .. word .. "]]" end end -- Default function to split a word on apostrophes. Don't split apostrophes at the beginning or end of a word (e.g. -- [['ndrangheta]] or [[po']]). Handle multiple apostrophes correctly, e.g. [[l'altr'ieri]] -> [[l']][altr']][[ieri]]. function export.default_split_apostrophe(word, data) local apostrophe_parts = split(word, "'", true, true) local linked_apostrophe_parts = {} local apostrophes_at_beginning = "" local i = 1 -- Apostrophes at beginning get attached to the first word after (which will always exist but may -- be blank if the word consists only of apostrophes). while i < #apostrophe_parts do -- <, not <=, in case the word consists only of apostrophes local apostrophe_part = apostrophe_parts[i] i = i + 1 if apostrophe_part == "" then apostrophes_at_beginning = apostrophes_at_beginning .. "'" else break end end apostrophe_parts[i] = apostrophes_at_beginning .. apostrophe_parts[i] -- Now, do the remaining parts. A blank part indicates more than one apostrophe in a row; we join -- all of them to the preceding word. while i <= #apostrophe_parts do local apostrophe_part = apostrophe_parts[i] if apostrophe_part == "" then linked_apostrophe_parts[#linked_apostrophe_parts] = linked_apostrophe_parts[#linked_apostrophe_parts] .. "'" elseif i == #apostrophe_parts then insert(linked_apostrophe_parts, apostrophe_part) else insert(linked_apostrophe_parts, apostrophe_part .. "'") end i = i + 1 end for j, tolink in ipairs(linked_apostrophe_parts) do linked_apostrophe_parts[j] = link_hyphen_split_component(tolink, data) end return concat(linked_apostrophe_parts) end --[=[ Auto-add links to a word that should not have spaces but may have hyphens and/or apostrophes. We split off final punctuation, then split on hyphens if `data.split_hyphen` is given, and also split on apostrophes if `data.split_apostrophe` is given. We only split on hyphens if they are in the middle of the word, not at the beginning or end (hyphens at the beginning or end indicate suffixes or prefixes, respectively). `include_hyphen_prefixes`, if given, is a set of prefixes (not including the final hyphen) where we should include the final hyphen in the prefix. Hence, e.g. if "anti" is in the set, a Portuguese word like [[anti-herói]] "anti-hero" will be split [[anti-]][[herói]] (whereas a word like [[código-fonte]] "source code" will be split as [[código]]-[[fonte]]). If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French [[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word to split, and the return value should be the split and linked word. ]=] local function add_single_word_links(space_word, data, term_has_spaces) local space_word_no_punct, punct local punct_pattern = data.punctuation if punct_pattern and is_callable(punct_pattern) then space_word_no_punct, punct = punct_pattern(space_word) else if punct_pattern == nil then punct_pattern = "[,;:?!]" end space_word_no_punct, punct = umatch(space_word, "^(.*)(" .. punct_pattern .. ")$") end space_word_no_punct = space_word_no_punct or space_word punct = punct or "" local words if space_word_no_punct:sub(1, 1) == "-" or space_word_no_punct:sub(-1) == "-" then -- don't split prefixes and suffixes words = {space_word_no_punct} else local splitter if term_has_spaces then splitter = data.split_hyphen_when_space else splitter = data.split_hyphen_when_no_space end if is_callable(splitter) then words = splitter(space_word_no_punct) if type(words) == "string" then return words .. punct end end end if not words then local split_hyphen if term_has_spaces then split_hyphen = data.split_hyphen_when_space else split_hyphen = data.split_hyphen_when_no_space if split_hyphen == nil then -- default to true; use `false` to avoid this split_hyphen = true end end if split_hyphen then words = split(space_word_no_punct, "-", true, true) else words = {space_word_no_punct} end end local linked_words = {} for j, word in ipairs(words) do if j < #words and data.include_hyphen_prefixes and data.include_hyphen_prefixes[word] then word = "[[" .. word .. "-]]" elseif j > 1 and data.include_hyphen_suffixes and data.include_hyphen_suffixes[word] then word = "[[-" .. word .. "]]" else -- Don't split on apostrophes if the word is in `no_split_apostrophe_words`. if (not data.no_split_apostrophe_words or not data.no_split_apostrophe_words[word]) and data.split_apostrophe and word:find("'", nil, true) then if data.split_apostrophe == true then word = export.default_split_apostrophe(word, data) else -- custom apostrophe splitter/linker word = data.split_apostrophe(word) end elseif word ~= "" then -- avoid -[[]]- (e.g. f--k) word = link_hyphen_split_component(word, data) end if j < #words then word = word .. "-" end end insert(linked_words, word) end return concat(linked_words) .. punct end --[=[ Auto-add links to a multiword term. `data` contains fields customizing how to do this. By default we proceed as follows: (1) If the term already has embedded links in it, they are left unchanged. (2) Otherwise, if there are spaces present, we split on spaces and link each word separately. (3) If a given space-separated component ends in punctuation (defaulting to [,;:?!]), it is separated off, the remainder of the algorithm run, and the punctuation pasted back on. (4) If there are hyphens in a given space-separated component, we may link each hyphenated term separately depending on the settings in `data`. Normally the hyphens are not included in the linked terms, but this can be overridden for specific prefixes and/or suffixes. By default, if there are spaces in the multiword term, we do not link hyphenated components (because of cases like "boire du petit-lait" where "petit-lait" should be linked as a whole), but do so otherwise (e.g. for "avant-avant-hier"); this can overridden for cases like "croyez-le ou non". Cases where only some of the hyphens should be split can always be handled by explicitly specifying the head (e.g. "Nord-Pas-de-Calais" given as head=[[Nord]]-[[Pas-de-Calais]]). (5) If there are apostrophes in a given component, we may link each apostrophe-separated term separately depending on the settings in `data`, including the apostrophe in the link to its left (so we split "de l'eau" as "[[de]] [[l']][[eau]]"). The settings in `data` are as follows: `split_hyphen_when_no_space`: Whether to split on hyphens when the term has no spaces. Defaults to true if set to `nil`. This can be a function of one argument, to implement a custom splitting algorithm for hyphen-separated terms. If this returns [FIXME: FINISH ME ...] If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French [[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word to split, and the return value should be the split and linked word. We don't always split on hyphens because of cases like "boire du petit-lait" where "petit-lait" should be linked as a whole, but provide the option to do it for cases like "croyez-le ou non". If there's no space, however, then it makes sense to split on hyphens by `no_split_apostrophe_words` and `include_hyphen_prefixes` allow for special-case handling of particular words and are as described in the comment above add_single_word_links(). ]=] function export.add_links_to_multiword_term(term, data) if term:match("[%[%]]") then return term end local words = split(term, " ", true, true) local term_has_spaces = #words > 1 local linked_words = {} for _, word in ipairs(words) do insert(linked_words, add_single_word_links(word, data, term_has_spaces)) end local retval = concat(linked_words, " ") -- If we ended up with a single link consisting of the entire term, -- remove the link. return retval:match("^%[%[([^%[%]]*)%]%]$") or retval end local function canonicalize_begin_end_spec(spec) local from, to = spec:match("^(.-):(.*)$") if not from then from = spec to = "" end return from, to end --[==[ Given a `linked_term` that is the output of add_links_to_multiword_term(), apply modifications as given in `modifier_spec` to change the link destination of subterms (normally single-word non-lemma forms; sometimes collections of adjacent words). This is usually used to link non-lemma forms to their corresponding lemma, but can also be used to replace a span of adjacent separately-linked words to a single multiword lemma. The format of `modifier_spec` is one or more semicolon-separated subterm specs, where each such spec is of the form SUBTERM:DEST, where SUBTERM is one or more words in the `linked_term` but without brackets in them, and DEST is the corresponding link destination to link the subterm to. Any occurrence of ~ in DEST is replaced with SUBTERM. Alternatively, a single modifier spec can be of the form BEGIN[FROM:TO], which is equivalent to writing BEGINFROM:BEGINTO (see example below). For example, given the source phrase [[il bue che dice cornuto all'asino]] "the pot calling the kettle black" (literally "the ox that calls the donkey horned/cuckolded"), the result of calling add_links_to_multiword_term() is [[il]] [[bue]] [[che]] [[dice]] [[cornuto]] [[all']][[asino]]. With a modifier_spec of 'dice:dire', the result is [[il]] [[bue]] [[che]] [[dire|dice]] [[cornuto]] [[all']][[asino]]. Here, based on the modifier spec, the non-lemma form [[dice]] is replaced with the two-part link [[dire|dice]]. Another example: given the source phrase [[chi semina vento raccoglie tempesta]] "sow the wind, reap the whirlwind" (literally (he) who sows wind gathers [the] tempest"). The result of calling add_links_to_multiword_term() is [[chi]] [[semina]] [[vento]] [[raccoglie]] [[tempesta]], and with a modifier_spec of 'semina:~re; raccoglie:~re', the result is [[chi]] [[seminare|semina]] [[vento]] [[raccogliere|raccoglie]] [[tempesta]]. Here we use the ~ notation to stand for the non-lemma form in the destination link. A more complex example is [[se non hai altri moccoli puoi andare a letto al buio]], which becomes [[se]] [[non]] [[hai]] [[altri]] [[moccoli]] [[puoi]] [[andare]] [[a]] [[letto]] [[al]] [[buio]] after calling add_links_to_multiword_term(). With the following modifier_spec: 'hai:avere; altr[i:o]; moccol[i:o]; puoi: potere; andare a letto:~; al buio:~', the result of applying the spec is [[se]] [[non]] [[avere|hai]] [[altro|altri]] [[moccolo|moccoli]] [[potere|puoi]] [[andare a letto]] [[al buio]]. Here, we rely on the alternative notation mentioned above for e.g. 'altr[i:o]', which is equivalent to 'altri:altro', and link multiword subterms using e.g. 'andare a letto:~'. (The code knows how to handle multiword subexpressions properly, and if the link text and destination are the same, only a single-part link is formed.) ]==] function export.apply_link_modifiers(linked_term, modifier_spec, lang) local split_modspecs = split(modifier_spec, "%s*;%s*") for j, modspec in ipairs(split_modspecs) do local id if modspec:find("<") then local rest rest, id = modspec:match("^(.*)<id:(.-)>$") if rest then modspec = rest end end local subterm, dest, otherlang local begin_spec, rest, end_spec = modspec:match("^%[(.-)%]([^:]*)%[(.-)%]$") if begin_spec then local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec) local end_from, end_to = canonicalize_begin_end_spec(end_spec) subterm = begin_from .. rest .. end_from dest = begin_to .. rest .. end_to end if not subterm then rest, end_spec = modspec:match("^([^:]*)%[(.-)%]$") if rest then local end_from, end_to = canonicalize_begin_end_spec(end_spec) subterm = rest .. end_from dest = rest .. end_to end end if not subterm then begin_spec, rest = modspec:match("^%[(.-)%]([^:]*)$") if begin_spec then local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec) subterm = begin_from .. rest dest = begin_to .. rest end end if not subterm then subterm, dest = modspec:match("^(.-)%s*:%s*(.*)$") if subterm and subterm ~= "^" and subterm ~= "$" then local langdest -- Parse off an initial language code (e.g. 'en:Higgs', 'la:minūtia' or 'grc:σκατός'). Also handle -- Wikipedia prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa'). otherlang, langdest = dest:match("^([A-Za-z0-9._-]+):([^ ].*)$") if otherlang == "w" then local foreign_wikipedia, foreign_term = langdest:match("^([A-Za-z0-9._-]+):([^ ].*)$") if foreign_wikipedia then otherlang = otherlang .. ":" .. foreign_wikipedia langdest = foreign_term end dest = ("%s:%s"):format(otherlang, langdest) otherlang = nil elseif otherlang then otherlang = get_lang_by_code(otherlang, true, "allow etym") dest = langdest end end end if not subterm then if modspec == "?" or modspec == "!" then subterm = "$" dest = modspec elseif modspec == "..." or modspec == "...?" then subterm = "$" dest = " " .. modspec elseif modspec:find("^[A-Z]$") then -- X, Y, etc. by themselves are unlinked, to help with snowclones subterm = modspec dest = "_" else subterm = modspec dest = "~" end end if subterm == "^" then linked_term = dest:gsub("_", " ") .. linked_term elseif subterm == "$" then linked_term = linked_term .. dest:gsub("_", " ") else if subterm:find("[", nil, true) then error(("Subterm '%s' in modifier spec '%s' cannot have brackets in it"):format( escape_wikicode(subterm), escape_wikicode(modspec))) end local escaped_subterm = pattern_escape(subterm) local subterm_re = "%[%[" .. escaped_subterm:gsub("(%%?[ ',%-])", "%%]*%1%%[*") .. "%]%]" local expanded_dest if dest:find("~", nil, true) then expanded_dest = dest:gsub("~", replacement_escape(subterm)) else expanded_dest = dest end if otherlang then expanded_dest = expanded_dest .. "#" .. otherlang:getCanonicalName() end local subterm_replacement if expanded_dest == "_" then subterm_replacement = subterm if id then error("Can't supply <id:...> with an unlinked subterm") end if otherlang then error("Can't supply prefixed language with an unlinked subterm") end elseif id or otherlang then if id and expanded_dest:find("[", nil, true) then error("Can't supply <id:...> with destination with embedded brackets") end subterm_replacement = require(links_module).language_link { lang = otherlang or lang, term = expanded_dest, alt = subterm, id = id, } elseif expanded_dest:find("[", nil, true) then -- Use the destination directly if it has brackets in it (e.g. to put brackets around parts of a word). subterm_replacement = expanded_dest elseif expanded_dest == subterm then subterm_replacement = "[[" .. subterm .. "]]" else subterm_replacement = "[[" .. expanded_dest .. "|" .. subterm .. "]]" end local escaped_subterm_replacement = replacement_escape(subterm_replacement) local replaced_linked_term = ugsub(linked_term, subterm_re, escaped_subterm_replacement) if replaced_linked_term == linked_term then mw.log(("Attempted to replace %s with %s in %s"):format(subterm_re, escaped_subterm_replacement, linked_term)) error(("Subterm '%s' could not be located in %slinked expression %s, or replacement same as subterm"):format( subterm, j > 1 and "intermediate " or "", escape_wikicode(linked_term))) else linked_term = replaced_linked_term end end end return linked_term end local inflection_to_cats = { plural = { filter_plpos = function(plpos) -- plurals also occur with determiners, adjectives etc. and we don't want to generate categories like -- 'countable determiners', 'countable adjectives', etc. Note that the passed-in `plpos` has `proper nouns` -- converted to `nouns`. return plpos == "Danh từ" end, cats = {"{plpos} đếm được"}, no_cats = {"{plpos} không đếm được"}, }, comparative = { cats = {"{plpos} so sánh được"}, no_cats = {"{plpos} không so sánh được"}, }, ["female equivalent"] = { cats = {"{plpos} with other-gender equivalents"}, }, ["male equivalent"] = { cats = {"{plpos} with other-gender equivalents"}, }, } --[=[ Validate the items in `items` against the list or set of valid items in `valid_items`. If `field` is given, fetch the item to check from that-named field of each object in `items`; otherwise use the items in `items` directly. If an error occurs, `item_type` specifies the type of item to mention in the error message, which will also list the allowed items (either taken directly from `valid_items` if a list, or from the sorted keys if a set). ]=] local function validate_items(data) local items, field, valid_items, item_type = data.items, data.field, data.valid_items, data.item_type local valid_set if valid_items[1] then valid_set = list_to_set(valid_items) else valid_set = valid_items end for _, item in ipairs(items) do if field then item = item[field] end if not valid_set[item] then local valid_list if valid_items[1] then valid_list = valid_items else valid_list = {} for valid_item, _ in pairs(valid_items) do insert(valid_list, valid_item) end table.sort(valid_list) end error(("Invalid %s: %s; expected one of %s"):format(item_type, item, mw.text.listToText(valid_list))) end end end local Headdata = {} function Headdata:get_canonicalized_plpos() return (self.pos_category:gsub("proper noun", "noun")) end --[==[ Canonicalize a category. The category string will have the full language name (i.e. the name of the L2 language under which an entry is inserted, which may a parent language if the language in question is an etymology-only language) prepended to it, and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech (with some canonicalization; specifically, `proper nouns` is converted to `nouns` when replacing `{plpos}`). To specify a full category and not have the language name prepended to it, precede it with {"Category:"}, which will be removed. ]==] function Headdata:canonicalize_category(category) if category:find("{plpos}") then local plpos = self:get_canonicalized_plpos() category = category:gsub("{plpos}", plpos) end if category:find("^Category:") then return (category:gsub("^Category:", "")) else return self.langfullname .. " " .. category end end --[==[ Canonicalize a list of categories according to the process described in `Headdata:canonicalize_category`. This simply loops over each category in `categories` and calls `Headdata:canonicalize_category` on each one. ]==] function Headdata:canonicalize_categories(categories) if not categories then return categories end local canon_cats = {} for _, cat in ipairs(categories) do insert(canon_cats, self:canonicalize_category(cat)) end return canon_cats end --[==[ Insert a category into the `categories` list in the headword `data` structure. `category` is normally a string naming the category, which will have the full language name prepended to it and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech (with some canonicalization; specifically, `proper nouns` is converted to `nouns` when replacing `{plpos}`). To specify a full category and not have the language name prepended to it, precede it with {"Category:"}. ]==] function Headdata:insert_category(category) insert(self.categories, self:canonicalize_category(category)) end --[==[ Validate the genders in `genders` (a list of gender spec objects, as produced by {type = "genders"} in [[Module:parameters]] and accepted by [[Module:gender and number]]), checking that all specified genders are in the list given in `valid_genders`. Optional `props` controls how the validation happens. In particular, unless `props.no_augment` is given, then for any gender beginning with `m`, if a corresponding gender beginning with `f` occurs, analogous genders beginning with `mf`, `mfbysense` and `mfequiv` are also allowed. For example, if `m-d` (masculine dual) and `f-d` (feminine dual) both occur, genders `mf-d`, `mfbysense-d` and `mfequiv-d` are also allowed. If a disallowed gender is given, an error occurs, giving the disallowed gender along with the list of all allowed genders. ]==] function Headdata:validate_genders(genders, valid_genders, props) if not genders then return end props = props or {} local gender_type, no_augment = props.gender_type, props.no_augment gender_type = gender_type or "headword" local valid_gender_set = list_to_set(valid_genders) local augmented_gender_set if no_augment then augmented_gender_set = valid_gender_set else augmented_gender_set = {} for g, _ in pairs(valid_gender_set) do augmented_gender_set[g] = true if g:find("^m") and not g:find("^mf") and valid_gender_set[g:gsub("^m", "f")] then augmented_gender_set[g:gsub("^m", "mf")] = true augmented_gender_set[g:gsub("^m", "mfbysense")] = true augmented_gender_set[g:gsub("^m", "mfequiv")] = true end end end validate_items { items = genders, field = "spec", valid_items = augmented_gender_set, item_type = ("%s gender"):format(gender_type), } end --[==[ Parse an inflection specified in `field`, the name of a parameter holding an inflection. If the parameter is numeric, the field should be given as a number (as with the `params` structure passed to [[Module:parameters]]), not a string containing the representation of a number. The field can specify multiple comma-separated terms, and each term can have associated inline modifiers that will be parsed (unless there is top-level HTML in the parameter, i.e. HTML not contained inside an inline modifier, e.g. as may be generated by using {{tl|l}} or similar template inside a parameter). This is a wrapper around the top-level `parse_term_with_modifiers()` function. `props` is an optional structure containing additional properties, including all additional properties documented for the top-level `parse_term_with_modifiers()` function. If the parameter in `field` is unspecified, the return value of this function will be an empty list, not {nil}, so it is always safe to iterate over the return value. By default, the allowed modifiers are the same as for `parse_term_with_modifiers()`, except that (normally) the `<tr:...>` modifier will be allowed if `include_tr` was specified in the original call to `process_headword()`; likewise for the `<ts:...>` modifier if `include_ts` was specified and the `<sc:...>` modifier if `include_sc` was specified. If If you pass in your own `include_mods` list of additional allowed modifiers, it will (normally) automatically be augmented with {"tr"}, {"ts"} and/or {"sc"} if `include_tr`, `include_ts` and/or `include_sc` was specified when calling `process_headword()`. To disable automatic augmentation of these modifiers (whether or not you specify an `include_mods` property), specify {no_augment_include_mods = true} in `props`. ]==] function Headdata:parse_inflection(field, props) local val = self.process_props.args[field] if not val then return {} end props = props and shallow_copy(props) or {} local include_mods = props.include_mods local data = self.process_props.data if not props.no_augment_include_mods and (data.include_tr or data.include_ts or data.include_sc) then include_mods = include_mods and shallow_copy(include_mods) or {} if data.include_tr then insert_if_not(include_mods, "tr") end if data.include_ts then insert_if_not(include_mods, "ts") end if data.include_sc then insert_if_not(include_mods, "sc") end end props.val = val props.paramname = field props.splitchar = props.splitchar or "," props.include_mods = include_mods return export.parse_term_with_modifiers(props) or {} end --[==[ Insert previously-parsed terms into the `inflections` of the headword `data` structure. This is a wrapper around the top-level `insert_inflection()` function. `terms` is the list of parsed terms. (If {nil}, nothing happens unless `request` is set in `props`.) `label` is the the label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) `props` is an optional structure containing additional properties, including all additional properties documented for the top-level `insert_inflection()` function. Unless `no_auto_cats` is given in `props`, certain labels automatically trigger the insertion of additional categories in specific circumstances. This is controlled by the `inflection_to_cats` structure in [[Module:headword utilities]]. For example, if the part of speech is {"nouns"} or {"proper nouns"} and the label (after removing any links and `<<...>>` glossary specs) is {"plural"}, an additional category <code><var>lang</var> countable nouns</code> will be added if a plural value is given (i.e. the value is not {"-"}). If the value is {"-"} (which indicates that there is no plural and triggers the insertion of the fixed inflection label {"no plural"}), <code><var>lang</var> uncountable nouns</code> will be inserted instead, and if both {"-"} and a value are given (which triggers the insertion of the {"usually no plural"} fixed inflection label), both categories are added. Similar categories are inserted when a comparative is given (with a label {"comparative"}), and if the label is {"female equivalent"} or {"male equivalent"} and the value is not {"-"}, a category such as <code><var>lang</var> nouns with other-gender equivalents</code> is inserted. ]==] function Headdata:insert_inflection(terms, label, props) props = props and shallow_copy(props) or {} if not props.no_auto_cats then local bare_label = label if bare_label:find("[[", nil, true) then bare_label = require(links_module).remove_links(bare_label) end if bare_label:find("<<", nil, true) then bare_label = bare_label:gsub("<<.-|(.-)>>", "%1"):gsub("<<(.-)>>", "%1") end local cats = inflection_to_cats[bare_label] if cats then if not cats.filter_plpos or cats.filter_plpos(self:get_canonicalized_plpos()) then if props.cats == nil then props.cats = self:canonicalize_categories(cats.cats) end if props.usually_no_cats == nil then props.usually_no_cats = self:canonicalize_categories(cats.usually_no_cats) end if props.no_cats == nil then props.no_cats = self:canonicalize_categories(cats.no_cats) end end end end props.headdata = self props.terms = terms props.label = label return export.insert_inflection(props) end --[==[ Insert a "fixed" inflection (a label without associated values) into the `inflections` table of the headword `data` structure, labeled according to `label` (which can have glossary links in it specified using `<<...>>`, exactly as for `:insert_inflection()`). An example label (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"}, specifying that the noun belongs to the hidden-''g'' declension. This is a direct wrapper around the top-level function `insert_fixed_inflection()`; see that function for more details on optional `props`. ]==] function Headdata:insert_fixed_inflection(label, props) props = props and shallow_copy(props) or {} props.headdata = self props.label = label export.insert_fixed_inflection(props) end --[==[ Parse the inflection(s) specified in `field` and insert them into the `inflections` table of the headword `data` structure, labeled according to `label`. This is equivalent to calling {terms = data:parse_inflection(field, props)} followed by {return data:insert_inflection(terms, label, props)} and behaves the same as the combination of those two functions. See their documentation for more details. ]==] function Headdata:parse_and_insert_inflection(field, label, props) local terms = self:parse_inflection(field, props) return self:insert_inflection(terms, label, props) end --[==[ Generate an inflection that may be specified explicitly or defaulted (which involves looping over the specified or defaulted heads and determining the script of each one, since the formation of the default depends on the script). `data` is the data object passed into the POS handler. `terms` is the list of terms to process. Those where the term itself is not `+` will be returned unchanged, while those where the term is `+` will be handled by generating the appropriate inflections from the headwords using `make_inflection` (which is passed three arguments, `head`, `tr` and `sccode`, i.e. the script code of `head`) and should return two values, term and translit, either of which can be nil. A nil head will be ignored, and otherwise the decorations specified on the `+` term will be combined with the decorations specified on the head. The return value is a list of inflections where no requests for the default inflection remain. ]==] function Headdata:resolve_special(terms, handle_special, props) props = props or {} local infls = {} local is_special = props.is_special or function(_data, infl) return infl.term == "+" end for _, termobj in ipairs(terms) do if not is_special(self, termobj) then insert(infls, termobj) else for _, headobj in ipairs(self.heads) do local head = headobj.term or self.pagename local head_no_links if props.with_links then head = head:find("%[") and head or require(headword_module).add_multiword_links(head, not headobj.term) head_no_links = require(links_module).remove_links(head) else head = require(links_module).remove_links(head) head_no_links = head end local newterms = handle_special { head = head, tr = headobj.tr, infl = termobj, sc = self.lang:findBestScript(head_no_links), } if newterms then newterms = export.canonicalize_termobj_list(newterms, "term", "resolve_special") for _, newterm in ipairs(newterms) do if not props.no_combine_handle_special_retval_with_origin then export.combine_termobj_decorations(newterm, termobj) end if not props.no_combine_handle_special_retval_with_head then export.combine_termobj_decorations(newterm, headobj) end insert(infls, newterm) end end end end end return infls end --[==[ Add the current page to a tracking page named `Wiktionary:Tracking/``lang``-headword/``page```, where ``lang`` is the language code of the current language. For example, if the current language is `mak` and `page` is {"redundant-lon"}, the current page will get added to the tracking page `Wiktionary:Tracking/mak-headword/redundant-lon`. All pages added to that tracking page can be seen by going to [[Special:WhatLinksHere/Wiktionary:Tracking/mak-headword/redundant-lon]]. This is typically used to track issues occurring in user-specified parameters that do not rise to the level of errors (e.g. redundant parameters, deprecated usages or other dispreferred values). ]==] function Headdata:track(page) return require(debug_track_module)(self.langcode .. "-headword/" .. page) end local boolean_param = {type = "boolean"} --[==[ Process an arbitrary headword in an arbitrary language, handling generic and language-specific arguments and calling `full_headword()` in [[Module:headword]]. This is intended for use in implementing headword modules (e.g. [[Module:uz-headword]] for Uzbek, [[Module:mn-headword]] for Uzbek, [[Module:gsw-headword]] for Alemannic German, etc.) and provides a general implementation of such modules. On input, `data` is an object with the following fields: * `lang`: The language object of the language being handled. '''Required.''' Use the special value {false} to indicate that the language is specified by the user in {{para|1}}. * `frame`: The frame object passed into the `show()` function of your module, which implements headword-handling for all parts of speech in the module, including a generic POS-handling template (e.g. {{tl|uz-head}} or {{tl|mn-head}}), which allows arbitrary parts of speech to be handled. '''Required.''' * `pos_functions`: A table listing, for each part of speech requiring special handling, the extra parameters (if any) that the part of speech accepts, along with how to handle them. See the examples below. '''Required.''' * `validate_lang`: If {lang = true} is specified, this is a function of one argument (a language object, based on the language specified in {{para|1}}) that should throw an error if the language object is disallowed. If omitted, all languages are allowed. * `numbered_head`: If true, explicit headwords are specified in a numbered param instead of in {{para|head}}. The param used is usually {{para|1}}, but is {{para|2}} for generic POS templates such as {{tl|mn-head}} or for POS-specific templates when {lang = true} is specified (e.g. {{tl|arb-noun}}), and is {{para|3}} for generic POS templates when {lang = true} is spcified (e.g. {{tl|arb-head}}). * `include_tr`: If true, allow explicit transliterations to be specified. The transliteration(s) for the headword(s) themselves is/are specified in {{para|tr}} or through the {{cd|<tr:...>}} inline modifier on headwords, and transliterations of inflections are specified through the {{cd|<tr:...>}} inline modifier. This should generally be given when a headword for the language may be in a script other than Latin. * `include_ts`: If true, allow explicit transcriptions to be specified. The transcription(s) for the headword(s) themselves is/are specified in {{para|ts}} or through the {{cd|<ts:...>}} inline modifier on headwords, and transcriptions of inflections are specified through the {{cd|<ts:...>}} inline modifier. This should generally only be given for certain languages where the spelling is radically different from the pronunciation (e.g. in cuneiform languages such as Hittite and Akkadian, and potentially in Tibetan), and represents a pronunciation-based rendering (usually not direct IPA). * `include_sc`: If true, allow an explicit script code to be specified. The overall script code for the headword(s) themselves can be specified using {{para|sc}}, and per-headword or per-inflection script codes are specified using the {{cd|<sc:...>}} inline modifier. This should generally be given when a language supports multiple scripts. * `infls`: An inflections structure specifying extra generic parameters that apply to all parts of speech and how to handle them. The format is the same as for the `infls` structure in `pos_functions`. * `augment_params`: A callback function to add extra generic parameters, or modify existing generic parameters in the `params` structure; but in general, extra generic parameters should be added through the `infls` structure instead. This callback should not be used to add part-of-speech-specific parameters; those are handled through the appropriate setting in `pos_functions`. It is passed two single arguments, the `headdata` object and the `params` table to be augmented. See below for extra fields stored in the `process_props` structure of the `headdata` object. This function is called after initializing the `params` table and processing the overall `infls` structure, but just before adding part-of-speech-specific parameters (from `pos_functions`) to `params`. Thus, it can override any generic parameters but may itself be overridden by a part-of-speech-specific parameter. * `augment_headdata`: A callback function to modify the `headdata` object passed to `full_headword()` in [[Module:headword]]. This should not be used to for part-of-speech-specific parameter handling; this is handled through the appropriate setting in `pos_functions`. It is passed a single argument, the `headdata` object, as for `augment_params`; but the `process_props` structure and other fields will be more filled out, as this callback is called later. This can be used, for example, to override the value of a generic setting in `headdata` (e.g. [[Module:uz-headword]] uses this to mark non-Latin terms as variant forms by setting `headdata.var`, being careful not to override a value already set by the user). This function is called after initializing the `headdata` table with all information taken from generic parameters and processing generic parameters specified in the overall `infls` structure, and just before processing the appropriate part-of-speech-specific `infls` structure in `pos_functions` (which in turn is followed by any handler function in `pos_functions`). Thus, it can override any value set during generic parameter processing but may itself be overridden by a part-of-speech-specific parameter or handler. * `force_cat`: If true, add the headword to the appropriate categories even on non-mainspace pages. This can be used for testing category handling in sample template calls on userspace test pages or template documentation pages. It should not be set in production code. * `enable_auto_translit`: If true, turn on automatic transliteration of inflections at a global level (i.e. applying to all inflections). This has no effect on headwords, which are automatically transliterated by default if in a non-Latin script and automatic transliteration is available for the language. You can also set this value for particular inflections in the `insert_inflection()` function. The `headdata` headword data structure has an extra field in it called `process_props` that is specific to the `process_headword()` function, containing various extra properies. As the operation of `process_headword()` proceeds, this object gets filled out with more fields. For example, once parameter parsing happens, the resulting values are available in the `args` field of `process_props`. The following fields are found in `process_props` (note that `poscat`, the canonicalized plural part of speech of the headword being processed, is *not* present here; it's directly on `headdata`): * `namespace`: The name of the current namespace; an empty string for the mainspace. This references the namespace of the actual page and isn't affected by the {{para|pagename}} parameter. * `indexing_poscat`: The canonicalized part of speech of the headword used to index into `pos_functions`. This is the same as `poscat` for specific part-of-speech templates such as {{tl|uz-noun}}, but has the value {"head"} for generic part-of-speech templates such as {{tl|uz-head}}. (Note that `poscat` is directly available on `headdata`.) * `generic_pos_template`: True if a generic POS templates like {{tl|uz-head}} or {{tl|mn-head}} was used. (This is signaled by omitting the invocation parameter {{para|1}} to `process_headword`.) * `lang_in_1`: True if the language code is to be fetched from {{para|1}}. * `pos_param`: The parameter holding the part of speech, if a generic POS tempalte like {{tl|mn-head}} is being processed (i.e. `generic_pos_template` is set). In such a case, it will have the value of {1} or {2}, depending on whether the language code is being fetched from {{para|1}} (see `lang_in_1`). Otherwise it will be {nil}. * `head_param`: The parameter holding the explicit headword. If `numbered_head` was specified (as for Mongolian headword templates), this has the value {1}, {2} or {3} depending on whether the language code is being fetched from {{para|1}} (see `lang_in_1`) and whether a generic POS template like {{tl|mn-head}} is being processed (see `generic_pos_template`). Otherwise, it has the value {"head"}. Also see the `lang` and `numbered_head` properties in the `data` structure sent to `process_headword()`. * `is_suffix`: True if the current term is a suffix. This is set when processing the `suffix`, `nosuffix` and `clitic` parameters; it is always {false} beforehand (i.e. during `augment_params` and processing of the general `infls` structure). * `insert_specs`: This is a table mapping parameter names to the return value of `Headdata:insert_inflection()`, filled out as parameter values are processed. This lets a given parameter processing function in `infls` gain access to the result of calling `insert_inflection()` on previous parameters (which indicates the number of items inserted as well as whether `-` was specified). The `pos_functions` table contains an entry for each part of speech needing special handling, where the key is the canonical plural part of speech (e.g. {"adverbs"} or {"proper nouns"}). The value associated with each key is a table normally containing a field `infls`, listing the extra part-of-speech-specific inflection and other parameters along with how to handle them. The specs in `infls` are used in three ways: # to augment the `params` object passed to the `process()` function in [[Module:parameters]], specifying how to parse the appropriate inflectional parameters; # to specify how to process any inflectional parameters given and insert them into the `headdata` object passed to `full_headword()` in [[Module:headword]]; # to generate appropriate documentation for the parameters and other changes made by the headword template (e.g. inserting categories). Alternatively, you can separately control the augmentation of the `params` object and the procesing of the resulting arguments. This is done by specifying two fields in place of `infls`, named `params` and `func`. `params` is a table containing extra parameters to add to the overall `params` object passed to the `process()` function in [[Module:parameters]]. `func` is a function of two arguments, normally called `data` (the headword data structure `headdata`) and `args` (the processed arguments table). However, this alternative method is not normally recommended because it leads to duplication between the `params and `func` fields and the documentation, which must be manually specified. A simple example, as used to handle pronouns for Turoyo, is { local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"} pos_functions["pronouns"] = { infls = { {2, type = "genders", validate = valid_genders}, {"f", label = "feminine"}, {"pl", label = "plural"}, }, } } The equivalent using `params` and `func` is { local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"} pos_functions["pronouns"] = { params = { [2] = {type = "genders"}, f = true, pl = true, }, func = function(data, args) data:validate_genders(args[2], valid_genders) data.genders = args[2] data:parse_and_insert_inflection("f", "feminine") data:parse_and_insert_inflection("pl", "plural") end } } Note how the version with separate `params and `func` is longer and splits information on the parameters between the two fields. The `params` structure sets extra user-specifiable parameters {{para|2}} for genders (since the headword is in {{para|1}}) as well a {{para|f}} and {{para|pl}}, and the `func` handler processes those parameters. Note how this is done by calling methods on the headword `data` structure. Each such parameter can have multiple comma-separated values, and each value can have inline modifiers attached to it to specify further properties of the value. The `infls` version ends up making the same method calls, but does it for you instead of you having to do it yourself. These methods are implemented through a metatable set on the headword `data` structure, which is removed before calling `full_headword()` in [[Module:headword]]. The methods access extra information related to headword processing (such as the `args` table) that is stored in the `process_props` field of the headword `data` strucuture. This field is also removed prior to calling `full_headword()`. The methods available on the headword `data` structure are as follows. Each one also has its own documentation. * {parse_inflection(field, props)}: Parse value(s) specified in `field` (a user-specified parameter in the `args` table) and return a list of term objects. Optional `props` specifies additional properties controlling the parsing. * {insert_inflection(terms, label, props)}: Insert the terms in `terms` (a list of term objects as returned by `parse_inflection()`) into the `inflections` list in the headword `data` structure, giving the inflection the label as specified in `label`. Optional `props` specifies additional properties controlling the parsing. * {parse_and_insert_inflection(field, label, props)}: A combination of `parse_inflection()` and `insert_inflection()`, if no further processing of the parsed values needs to be done before insertion. * {insert_fixed_inflection(label, props)}: Insert a "fixed" inflection (a label without associated values) into the `inflections` table. An example (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"}, specifying that the noun belongs to the hidden-''g'' declension. * {resolve_special(terms, handle_special, props)}: Resolve "special" indicators as specified by the user in an inflection parameter. A typical example is {"+"}, requesting a default value. `terms` is the list of parsed term objects and `handle_special` is a handler function to process special indicators and convert them to their actual values. * {validate_genders(genders, valid_genders, props)}: Validate that the user-specified genders in `genders` all belong to the list given in `valid_genders`, throwing an error if not. * {insert_category(category)}: Insert a category into the `categories` list in the headword `data` structure. `category` is normally a string naming the category, which will have the language prepended to it and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech. ]==] function export.process_headword(data) local lang, frame, pos_functions, validate_lang, numbered_head, include_tr, include_ts, include_sc, force_cat, enable_auto_translit, infls, augment_params, augment_headdata = data.lang, data.frame, data.pos_functions, data.validate_lang, data.numbered_head, data.include_tr, data.include_ts, data.include_sc, data.force_cat, data.enable_auto_translit, data.infls, data.augment_params, data.augment_headdata local iparams = { [1] = true, def = true, } local iargs = require(parameters_module).process(frame.args, iparams) local parargs = frame:getParent().args local langcode if not lang then error("Internal error: `data.lang` must be specified; either a language object or `true` for a user-specified language") end local lang_in_1 if lang == true then lang_in_1 = true langcode = ine(parargs[1]) if langcode then langcode = mw.text.trim(langcode) lang = require(languages_module).getByCode(langcode, 1, true) if validate_lang then validate_lang(lang) end else error("Language code (see [[WT:Language codes]]) must be specified in 1=") end else langcode = lang:getCode() if validate_lang then error("Internal error: `data.validate_lang` must not be specified if a language code is given in `data.lang`") end end local poscat = iargs[1] local generic_pos_template = not poscat local pos_param if generic_pos_template then pos_param = lang_in_1 and 2 or 1 poscat = ine(parargs[pos_param]) or mw.title.getCurrentTitle().fullText == ("Bản_mẫu:%s-head"):format(langcode) and "interjection" or error(("Part of speech must be specified in %s="):format(pos_param)) poscat = require(headword_module).canonicalize_pos(poscat) end local head_param = numbered_head and (generic_pos_template and lang_in_1 and 3 or (generic_pos_template or lang_in_1) and 2 or 1) or "head" local indexing_poscat = generic_pos_template and "head" or poscat local namespace = mw.loadData(headword_data_module).page.namespace -- Partly initialize headdata now for use in generic infls callbacks. Will be further initialized later after -- processing parameters. local headdata = { lang = lang, langcode = langcode, langfullcode = lang:getFullCode(), langname = lang:getCanonicalName(), langfullname = lang:getFullName(), process_props = { namespace = namespace, data = data, indexing_poscat = indexing_poscat, generic_pos_template = generic_pos_template, lang_in_1 = lang_in_1, pos_param = pos_param, head_param = head_param, is_suffix = false, insert_specs = {}, }, pos_category = poscat, orig_poscat = poscat, -- preserve user-specified poscat in case pos_category is changed to 'suffixes' categories = {}, inflections = {enable_auto_translit = enable_auto_translit}, force_cat_output = force_cat, no_redundant_head_cat = true, } setmetatable(headdata, {__index = Headdata}) local params = { [head_param] = {template_default = iargs.def}, head2 = {replaced_by = false, instead = ("use comma-separated |%s="):format(head_param)}, id = true, sort = true, cat = true, nolink = boolean_param, nolinkhead = {type = "boolean", alias_of = "nolink"}, suffix = boolean_param, nosuffix = boolean_param, clitic = true, addlpos = true, var = {type = "boolean", allow = {"both"}}, json = boolean_param, pagename = true, -- for testing } if include_sc then params.sc = {type = "script"} end if include_tr then params.tr = true params.tr2 = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"} end if include_ts then params.ts = true params.ts2 = {replaced_by = false, instead = "use comma-separated |ts= or <ts:...> inline modifier on head"} end if lang_in_1 then params[1] = {required = true} -- required but ignored as already processed above end if generic_pos_template then params[pos_param] = {required = true} -- required but ignored as already processed above end local function resolve_prop(prop, ...) if type(prop) == "function" then prop = prop(headdata, ...) end return prop end local function augment_params_from_infls(infls) infls = resolve_prop(infls) for _, infl in ipairs(infls) do local function interr(txt) error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl))) end local param = infl[1] if param then param = resolve_prop(param) if type(param) ~= "string" and type(param) ~= "number" then interr(("Parameter name %s must be a string or number"):format(dump(param))) end -- We handle defaults as well as validation ourselves. local typ = resolve_prop(infl.type) or "string" if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then -- FIXME: Handle more types. interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format( dump(typ))) end params[param] = {type = typ, required = resolve_prop(infl.required), template_default = resolve_prop(infl.template_default)} if typ ~= "boolean" and type(param) == "string" then params[param .. "2"] = {replaced_by = false, instead = ("use comma-separated |%s="):format(param)} end end end end if infls then augment_params_from_infls(infls) end if augment_params then augment_params(headdata, params) end if pos_functions[indexing_poscat] then local pos_infls = pos_functions[indexing_poscat].infls if pos_infls then augment_params_from_infls(pos_infls) end local pos_params = pos_functions[indexing_poscat].params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData(headword_data_module).pagename local sc = args.sc or lang:findBestScript(pagename) headdata.pagename = pagename headdata.process_props.args = args headdata.sc = sc headdata.id = args.id headdata.sort = args.sort -- No redundant script cat unless the user explicitly gave sc= headdata.no_script_code_cat = not args.sc headdata.var = args.var local extra_term_mods = {} if include_tr then insert(extra_term_mods, "tr") end if include_ts then insert(extra_term_mods, "ts") end if include_sc then insert(extra_term_mods, "sc") end if not extra_term_mods[1] then extra_term_mods = nil end local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local tss = args.ts and split_on_comma(args.ts) or {} local num_tss = #tss local heads = args[head_param] and export.parse_term_with_modifiers { val = args[head_param], paramname = head_param, splitchar = ",", is_head = true, include_mods = extra_term_mods, } or {} local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or default automatic translit and '-' to stand for no translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end if num_heads > 0 and num_tss > 0 and num_heads ~= num_tss then error(("%s head%s specified explicitly but %s transcription%s; they must match; use '+' to stand for the default head (the pagename) and '-' to stand for no transcription"):format( num_heads, num_heads > 1 and "s" or "", num_tss, num_tss > 1 and "s" or "")) end if num_trs > 0 and num_tss > 0 and num_trs ~= num_tss then error(("%s translit%s specified explicitly but %s transcription%s; they must match; use '+' to stand for default automatic translit and '-' to stand for no translit or transcription"):format( num_trs, num_trs > 1 and "s" or "", num_tss, num_tss > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. local max_tr_ts = math.max(num_trs, num_tss) if num_heads == 0 and max_tr_ts > 0 then heads = {} for i = 1, max_tr_ts do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s"):format( headobj.tr, trs[i], i)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end if headobj.ts and tss[i] then if headobj.ts ~= tss[i] then error(("Saw two different transcriptions '%s' and '%s' for head #%s"):format( headobj.ts, tss[i], i)) end else headobj.ts = headobj.ts or tss[i] end if headobj.ts == "-" then headobj.ts = nil end if headobj.term == "+" then headobj.term = args.nolink and pagename or nil if headobj.term and namespace == "Reconstruction" then headobj.term = "*" .. headobj.term end end end headdata.heads = heads local function pagename_is_suffix() if sc:getCode() == "Latn" then -- shortcut Latin terms to avoid unnecessarily loading [[Module:affix]] return pagename:find("^%-") and not pagename:find("%-$") else local affix_type, _, _, _ = require(affix_module).parse_term_for_affixes(pagename, lang, sc) return affix_type == "suffix" end end local clitic_label if args.clitic then clitic_label = require(yesno_module)(args.clitic, args.clitic) end if clitic_label == true then clitic_label = "clitic" end if clitic_label then headdata:insert_category("clitics") headdata:insert_fixed_inflection(clitic_label) elseif args.suffix or ( not args.nosuffix and pagename_is_suffix() and poscat ~= "suffixes" and poscat ~= "suffix forms" ) then headdata.process_props.is_suffix = true local function handle_suffix_pos(pos, is_first) local form_type = pos:match("^(.*) forms$") local actual_poscat if form_type then headdata:insert_category(("%s suffix forms"):format(form_type)) headdata:insert_fixed_inflection(form_type .. " suffix form") else local singular_pos = require(en_utilities_module).singularize(pos) headdata:insert_category(("%s-forming suffixes"):format(singular_pos)) headdata:insert_fixed_inflection(singular_pos .. "-forming suffix") end local postype = require(headword_module).pos_lemma_or_nonlemma(pos) if not postype then error(("Unrecognized canonicalized part of speech '%s' in addlpos=, cannot determine whether lemma or non-lemma form"):format( pos )) end actual_poscat = postype == "lemma" and "suffixes" or "suffix forms" if is_first then headdata.pos_category = actual_poscat elseif headdata.pos_category ~= actual_poscat then error(("Cannot mix suffixes and suffix forms using addlpos=; '%s' is a %s while overall POS '%s' is a %s; use separate POS headers for the two"): format(pos, actual_poscat, poscat, headdata.pos_category)) end end handle_suffix_pos(poscat, true) if args.addlpos then for _, addlpos in ipairs(split(args.addlpos, "%s*,%s*")) do addlpos = require(headword_module).canonicalize_pos(addlpos) handle_suffix_pos(addlpos, false) end end end if args.cat then for _, cat in ipairs(split_on_comma(args.cat)) do headdata:insert_category(cat) end end local function augment_headdata_from_infls(infls) infls = resolve_prop(infls) for _, infl in ipairs(infls) do local function interr(txt) error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl))) end local function process_labelobjs(labelobjs, originating_term, handle_labelobj) if labelobjs == nil then return end if type(labelobjs) ~= "string" and type(labelobjs) ~= "table" then interr(("Wrong type '%s' for label object(s) %s, expected string or table"):format( type(labelobjs), dump(labelobjs) )) end if type(labelobjs) == "string" or type(labelobjs) == "table" and not labelobjs[1] then labelobjs = {labelobjs} end for _, labelobj in ipairs(labelobjs) do local label, termobj if type(labelobj) == "string" then label = labelobj termobj = originating_term elseif type(labelobj) ~= "table" then interr(("Wrong type '%s' for label object %s, expected string or table"):format( type(labelobj), dump(labelobj) )) label = labelobj.term if type(label) ~= "string" then interr(("Wrong type '%s' for label %s from label object %s, expected string"):format( type(label), dump(label), dump(labelobj) )) end termobj = labelobj end handle_labelobj(label, termobj) end end local param = infl[1] if param then local vals -- Fetch the param and make sure it's a string or number. param = resolve_prop(param) if type(param) ~= "string" and type(param) ~= "number" then interr(("Parameter name %s must be a string or number"):format(dump(param))) end -- Fetch the type and validate. local typ = resolve_prop(infl.type) if typ == nil then typ = "string" end if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then -- FIXME: Handle more types. interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format( dump(typ))) end -- Fetch the value(s). if typ == "genders" or typ == "boolean" then vals = args[param] elseif typ == "string" then local parse_inflection_props = resolve_prop(infl.parse_inflection_props) local include_mods = resolve_prop(infl.include_mods) local no_augment_include_mods = resolve_prop(infl.no_augment_include_mods) if include_mods ~= nil or no_augment_include_mods ~= nil then if parse_inflection_props == nil then parse_inflection_props = {} else parse_inflection_props = shallow_copy(parse_inflection_props) end if include_mods ~= nil then parse_inflection_props.include_mods = include_mods end if no_augment_include_mods ~= nil then parse_inflection_props.no_augment_include_mods = no_augment_include_mods end end vals = headdata:parse_inflection(param, parse_inflection_props) -- Convert an empty list to nil for consistent checking below. if not vals[1] then vals = nil end else interr(("Unrecognized type '%s"):format(typ)) end -- If value(s) nil, fetch the default. if vals == nil and infl.default ~= nil then local default = resolve_prop(infl.default) if typ == "genders" then vals = export.canonicalize_termobj_list(default, "spec", "default") elseif typ == "boolean" then vals = default elseif typ == "string" then vals = export.canonicalize_termobj_list(default, "term", "default") else interr(("Unrecognized type '%s"):format(typ)) end end -- Resolve "special" values (special signals a string values, such as requesting the default with "+"). if vals ~= nil and infl.resolve_special then if typ ~= "string" then interr(("Cannot specify resolve_special= for type %s"):format(dump(typ))) end local resolve_special_props = resolve_prop(infl.resolve_special_props, vals) if infl.is_special ~= nil then if resolve_special_props == nil then resolve_special_props = {} else resolve_special_props = shallow_copy(resolve_special_props) end resolve_special_props.is_special = infl.is_special end vals = headdata:resolve_special(vals, infl.resolve_special, resolve_special_props) end -- Validate the value(s). if vals ~= nil and infl.validate ~= nil then if typ == "boolean" then interr('Cannot specify validate= when type is "boolean"') elseif type(infl.validate) == "function" then infl.validate(headdata, vals) elseif typ == "genders" then headdata:validate_genders(vals, infl.validate) elseif typ == "string" then validate_items { items = vals, field = "term", valid_items = infl.validate, item_type = ("values in |%s="):format(param), } else interr(("Unrecognized type '%s"):format(typ)) end end -- Run the process_after_parse handler, if it exists. if vals ~= nil and infl.process_after_parse ~= nil then local intentionally_nil vals, intentionally_nil = infl.process_after_parse(headdata, vals) if vals == nil and not intentionally_nil then interr("If you return nil from process_after_parse, you must return a second non-nil return " .. "value to indicate that the nil return value was intentional") end end -- "Implement" the values, if non-falsy (i.e. we don't want to fire on boolean false or empty list). -- If a fixed label is specified, insert it. Then, depending on the type, attach the values to a label -- as an inflection, set the `genders` field, or do nothing if boolean (throwing an error if there was -- no fixed label). if vals == true or type(vals) == "table" and vals[1] then if infl.fixed_label and infl.all_fixed_label then interr("Cannot specify both fixed_label= and all_fixed_label=; specify one or the other") end local function check_fixed_label_references_val(label) if type(label) == "table" and label[1] then for _, lab in ipairs(label) do if check_fixed_label_references_val(lab) then return true end end return false end if type(label) == "table" then if not label.term then interr(("Fixed label structure %s does not have a value for `.term`"):format(dump(label))) end label = label.term end if type(label) ~= "string" then interr(("Wrong type for fixed label %s, should be string"):format(type(label))) end return not not label:find("{val}") end local fixed_label = infl.fixed_label local all_fixed_label = infl.all_fixed_label -- If the value being processed is boolean, there's only one value so treat a fixed_label as an -- all_fixed_label and output only once; likewise if the caller specified a fixed_label without -- {val} in it. if fixed_label and (typ == "boolean" or type(fixed_label) ~= "function" and not check_fixed_label_references_val(fixed_label)) then all_fixed_label = fixed_label fixed_label = nil end local inserted_fixed_label if fixed_label then if typ == "boolean" then interr("Boolean fixed_label values should have been converted to all_fixed_label") end for _, valobj in ipairs(vals) do local labelobjs = resolve_prop(fixed_label, valobj) process_labelobjs(labelobjs, valobj, function(label, termobj) if label:find("{val}") then if typ ~= "string" then interr(('Cannot specify {val} in fixed_label %s when type is "%s"'):format(dump(label), typ)) end label = label:gsub("{val}", replacement_escape(valobj.term)) end headdata:insert_fixed_inflection(label, { originating_term = termobj }) inserted_fixed_label = true end) end elseif all_fixed_label then local labelobjs = resolve_prop(all_fixed_label, vals) process_labelobjs(labelobjs, nil, function(label, termobj) if label:find("{vals}") then if typ ~= "string" then interr(('Cannot specify {vals} in all_fixed_label %s when type is "%s"'):format(dump(label), typ)) end local formatted_labels = {} for _, valobj in ipairs(vals) do insert(formatted_labels, add_decorations(valobj.term, valobj, lang)) end label = label:gsub("{vals}", replacement_escape(serial_comma_join(formatted_labels))) end headdata:insert_fixed_inflection(label, termobj) inserted_fixed_label = true end) end local inserted_vals if infl.label ~= nil then if typ ~= "string" then interr(("label=%s can only be specified for type 'string', not '%s'"):format( dump(infl.label), typ )) end local label = resolve_prop(infl.label, vals) if label ~= nil then local insert_inflection_props = resolve_prop(infl.insert_inflection_props, vals) local no_auto_cats = resolve_prop(infl.no_auto_cats, vals) if no_auto_cats ~= nil then if insert_inflection_props == nil then insert_inflection_props = {} else insert_inflection_props = shallow_copy(insert_inflection_props) end insert_inflection_props.no_auto_cats = infl.no_auto_cats end local insert_spec = headdata:insert_inflection(vals, label, insert_inflection_props) headdata.process_props.insert_specs[param] = insert_spec inserted_vals = true end end if typ == "genders" then headdata.genders = vals end local inserted_cat if infl.cat then local allcats = {} for _, valobj in ipairs(vals) do local cats = resolve_prop(infl.cat, valobj) if type(cats) == "string" then cats = {cats} end if cats ~= nil then for _, cat in ipairs(cats) do if cat:find("{val}") then cat = cat:gsub("{val}", replacement_escape(valobj.term)) end insert_if_not(allcats, cat) end end end for _, cat in ipairs(allcats) do headdata:insert_category(cat) inserted_cat = true end end if typ == "boolean" then if not inserted_fixed_label and not inserted_cat then interr(("User set boolean setting for %s= but no fixed label added and no category " .. "inserted; if you took action in process_after_parse(), make sure to return " .. "`nil, true`"):format(param)) end elseif typ == "string" then if not inserted_vals and not inserted_fixed_label then interr(("User set value(s) %s for %s= but no inflection inserted and no fixed label " .. "added; if you took action in process_after_parse(), make sure to return " .. "`nil, true`"):format(dump(vals), param)) end end end else -- no param specified if infl.label or infl.all_fixed_label then interr("Cannot have label= or all_fixed_label= without specifying a param") end if infl.fixed_label then local labelobjs = resolve_prop(infl.fixed_label) process_labelobjs(labelobjs, nil, function(label, termobj) if label:find("{val}") then interr("Cannot specify {val} in a fixed_label= value without specifying a param") end headdata:insert_fixed_inflection(label, { originating_term = termobj }) end) end if infl.cat then local cats = resolve_prop(infl.cat) if type(cats) == "string" then cats = {cats} end if cats ~= nil then for _, cat in ipairs(cats) do if cat:find("{val}") then interr("Cannot specify {val} in a cat= value without specifying a param") end headdata:insert_category(cat) end end end end end end if infls then augment_headdata_from_infls(infls) end if augment_headdata then augment_headdata(headdata, args) end if pos_functions[indexing_poscat] then local pos_infls = pos_functions[indexing_poscat].infls if pos_infls then augment_headdata_from_infls(pos_infls) end local func = pos_functions[indexing_poscat].func if func then func(headdata, args) end end setmetatable(headdata, nil) if args.json then return require("Module:JSON").toJSON(headdata) end headdata.process_props = nil return require(headword_module).full_headword(headdata) end return export 5mp3fiu95xxuw5fgt100kyakgs3gsr7 2566650 2566645 2026-09-26T10:48:31Z Hiyuune 50834 2566650 Scribunto text/plain local export = {} local require_when_needed = require("Module:utilities/require when needed") local affix_module = "Module:affix" local debug_track_module = "Module:debug/track" local decorations_module = "Module:decorations" local en_utilities_module = "Module:en-utilities" local fun_is_callable_module = "Module:fun/isCallable" local headword_module = "Module:headword" local headword_data_module = "Module:headword/data" local languages_module = "Module:languages" local links_module = "Module:links" local parameters_module = "Module:parameters" local parse_interface_module = "Module:parse interface" local parse_utilities_module = "Module:parse utilities" local string_pattern_escape_module = "Module:string/patternEscape" local string_replacement_escape_module = "Module:string/replacementEscape" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local yesno_module = "Module:yesno" local dump = mw.dumpObject local unpack = unpack or table.unpack -- Lua 5.2 compatibility local insert = table.insert local concat = table.concat local remove = table.remove local sort = table.sort local deep_equals = require_when_needed(table_module, "deepEquals") local extend = require_when_needed(table_module, "extend") local insert_if_not = require_when_needed(table_module, "insertIfNot") local list_to_set = require_when_needed(table_module, "listToSet") local serial_comma_join = require_when_needed(table_module, "serialCommaJoin") local shallow_copy = require_when_needed(table_module, "shallowCopy") local split = require_when_needed(string_utilities_module, "split") local ugsub = require_when_needed(string_utilities_module, "gsub") local umatch = require_when_needed(string_utilities_module, "match") local pattern_escape = require_when_needed(string_pattern_escape_module) local replacement_escape = require_when_needed(string_replacement_escape_module) local escape_wikicode = require_when_needed(parse_utilities_module, "escape_wikicode") local parse_inline_modifiers = require_when_needed(parse_utilities_module, "parse_inline_modifiers") local term_contains_top_level_html = require_when_needed(parse_utilities_module, "term_contains_top_level_html") local get_lang_by_code = require_when_needed(languages_module, "getByCode") local is_callable = require_when_needed(fun_is_callable_module) local format_decorations = require_when_needed(decorations_module, "format_decorations") local function split_on_comma(val) if val:find(",") then return require(parse_interface_module).split_on_comma(val) else return {val} end end local function ine(val) if val == "" then return nil else return val end end --[=[ Add decorations to a term. `termobj` is the object describing the term, which should optionally contain: * left qualifiers in `q`, an array of strings; * right qualifiers in `qq`, an array of strings; * left labels in `l`, an array of strings; * right labels in `ll`, an array of strings; * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` (formatted reference text) and optionally `name` and/or `group`; `text` is the text of the term itself, and `lang` is the language object. ]=] local function add_decorations(text, termobj, lang) local function field_non_empty(field) local list = termobj[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `termobj.%s`=%s, should be \"table\""):format( field, mw.dumpObject(list))) end return list[1] end if field_non_empty("q") or field_non_empty("qq") or field_non_empty("l") or field_non_empty("ll") or field_non_empty("refs") then text = format_decorations { lang = lang, text = text, q = termobj.q, qq = termobj.qq, l = termobj.l, ll = termobj.ll, refs = termobj.refs, } end return text end local param_mods = { id = {}, -- disabled when `is_head = true` q = {type = "qualifier"}, qq = {type = "qualifier"}, l = {type = "labels"}, ll = {type = "labels"}, -- [[Module:headword]] expects part references in `.refs`. ref = {item_dest = "refs", type = "references", store = "insert-flattened"}, } local optional_param_mods = { g = {item_dest = "genders", type = "genders"}, alt = {}, lang = {type = "language"}, sc = {type = "script"}, t = {item_dest = "gloss"}, gloss = {}, pos = {}, lit = {}, tr = {}, ts = {}, face = {}, nolinkinfl = {type = "boolean"}, } local optional_headword_param_mods = { sc = {type = "script"}, tr = {}, ts = {}, } --[==[ Parse a single inflection or headword form or list of such forms. In either case, inline modifiers may be attached. `data` is an object with the following fields: * `val`: The raw value to parse. Required. * `paramname`: The name of the parameter from which the value was taken; used in error messages. Required. * `is_head`: We are parsing a headword parameter (a value which goes into the `heads` field of `data`). This changes the allowed modifiers, disabling the `id` modifier and only allowing a subset of optional modifiers. * `frob`: An optional function of one value to apply to the form after inline modifiers have been removed (i.e. to apply to the `.term` field of the returned object). * `include_mods`: List of extra inline modifiers to include, besides the default ones (see below). Each list item is either a string specifying a recognized extra inline modifier (see `optional_param_mods` in the code), or a two-item list of modifier name and modifier spec, where the spec should follow the syntax for modifier specs in `parse_inline_modifiers` in [[Module:parse utilities]]. * `exclude_mods`: List of default inline modifiers to not include. * `splitchar`: If specified, the value in `val` can be a list of forms to parse, separated by the value of `splitchar` (which is a Lua pattern, as in `parse_inline_modifiers` in [[Module:parse utilities]]). Most commonly, `splitchar` is a single comma and the values are comma-separated (in this case, splitting will not happen if a space follows the comma). * `parse_lang_prefix`: If specified, allow a language prefix to precede a form, and if found, store into the `.lang` field of the returned object. * `preserve_splitchar`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_inline_modifiers` in [[Module:parse utilities]]. Returns an object suitable for storing as one element of one of the lists in `headdata.inflections`, where `headdata` is the structure passed to [[Module:headword]]. If `splitchar` is specified, howeve, the return value is a list of such objects. The following default inline modifiers are currently recognized: * `q`: Left qualifier. * `qq`: Right qualifier. * `l`: Comma-separated list of left labels. No space should follow the comma. * `ll`: Comma-separated list of right labels. No space should follow the comma. * `ref`: Reference or references. See {{tl|IPA}} for the syntax. * `id`: Sense ID, in case there are multiple senses. See {{tl|l}}. The following are the recognized additional inline modifiers: * `g`: Comma-separated list of genders. * `alt`: Display text. * `lang`: Language code of language of the form, if different from the language of the headword. * `sc`: Script code of script of the form. Almost never needed. * `t`: Gloss for the form. * `gloss`: Gloss for the form (alias for `t`). * `pos`: Part of speech of the form. * `lit`: Literal meaning of the form. * `tr`: Manual transliteration of the form. * `ts`: Transcription of the form, for languages where the transliteration differs markedly from the pronunciation. * `face`: Face to display the form in, e.g. {"hypothetical"} for a hypothetical form (unlinkable and displayed in italics). * `nolinkinfl`: Make the form unlinkable. ]==] function export.parse_term_with_modifiers(data) local paramname, val, frob = data.paramname, data.val, data.frob local function generate_obj(term, parse_err) if frob then term = frob(term, parse_err) end if data.parse_lang_prefix and term:find(":") then return require(parse_utilities_module).generate_obj_maybe_parsing_lang_prefix { term = term, paramname = paramname, parse_lang_prefix = true, parse_err = parse_err, } else return {term = term} end end -- Check for inline modifier, e.g. מרים<tr:Miryem>. But exclude top-level HTML entry with <span ...>, -- <sup> or similar in it. if (val:find("<", nil, true) or data.splitchar) and not term_contains_top_level_html(val) and -- don't parse inline modifiers if is_head and the value begins with a ~ (link modifier syntax) (not data.is_head or not val:find("^~")) then local param_mods = param_mods if data.is_head then param_mods = shallow_copy(param_mods) param_mods.id = nil end if data.include_mods or data.exclude_mods then if not data.is_head then -- already copied when data.is_head param_mods = shallow_copy(param_mods) end if data.include_mods then local optional_mods = data.is_head and optional_headword_param_mods or optional_param_mods for _, mod in ipairs(data.include_mods) do if type(mod) == "table" then if #mod ~= 2 then error(("Internal error: Modifier spec %s in `include_mods` should be of length 2"):format( dump(mod))) end local modkey, modvalue = unpack(mod) param_mods[modkey] = modvalue elseif not optional_mods[mod] then error(("Internal error: Unrecognized modifier spec %s in `include_mods`"):format( dump(mod))) else param_mods[mod] = optional_mods[mod] end end end if data.exclude_mods then for _, mod in ipairs(data.exclude_mods) do if not param_mods[mod] then error(("Internal error: Modifier spec %s in `exclude_mods` not found among existing modifiers" ):format(dump(mod))) else param_mods[mod] = nil end end end end return parse_inline_modifiers(val, { paramname = paramname, param_mods = param_mods, generate_obj = generate_obj, splitchar = data.splitchar, preserve_splitchar = data.preserve_splitchar, delimiter_key = data.delimiter_key, escape_fun = data.escape_fun, unescape_fun = data.unescape_fun, pre_normalize_modifiers = data.pre_normalize_modifiers, }) else local retval = generate_obj(val) if data.splitchar then retval = {retval} end return retval end end --[==[ Parse a list of inflection forms that may have inline modifiers attached. `data` is an object with the following fields: * `forms`: The list of raw values to parse. Required. * `paramname`: The name of the first parameter from which the value was taken; used in error messages. If this is a two-element list, the first element is the first parameter and the second element is the prefix of the remaining parameters. Parameter names that are numbers are handled correctly, as are those with \1 in it marking where the parameter index goes. Required. * `qualifiers`: If specified, a possibly gappy list of left qualifiers to add to the parsed terms (for compatibility purposes). * `splitchar`: As in `parse_term_with_modifiers()`. The resulting per-term lists will be flattened. * `frob`, `include_mods`, `exclude_mods`, `is_head`, `preserve_splitchar`, `parse_lang_prefix`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_with_modifiers()`. Returns a list of objects, suitable for storing as one of the lists in `headdata.inflections` (once a label is added), where `headdata` is the structure passed to [[Module:headword]]. ]==] function export.parse_term_list_with_modifiers(data) local paramname, forms = data.paramname, data.forms local qualifiers = data.qualifiers local first, restpref if type(paramname) == "table" then first = paramname[1] restpref = paramname[2] else first = paramname restpref = paramname end local terms = {} data = shallow_copy(data) for i, val in ipairs(forms) do data.paramname = i == 1 and first or type(restpref) == "number" and restpref + i - 1 or restpref:find("\1", nil, true) and restpref:gsub("\1", tostring(i)) or restpref .. i data.val = val local parsed = export.parse_term_with_modifiers(data) if qualifiers and qualifiers[i] then if data.splitchar then for _, term in ipairs(parsed) do term.q = {qualifiers[i]} end else parsed.q = {qualifiers[i]} end end if data.splitchar then extend(terms, parsed) else terms[i] = parsed end end return terms end --[==[ Construct a link to [[Appendix:Glossary]] for `entry`. If `text` is specified, it is the display text; otherwise, `entry` is used. ]==] function export.glossary_link(entry, text) text = text or entry return "[[Phụ lục:Từ điển thuật ngữ#" .. entry .. "|" .. text .. "]]" end function export.replace_glossary_links_in_label(label) if label:find("<<", nil, true) then label = label:gsub("<<(.-)|(.-)>>", export.glossary_link):gsub("<<(.-)>>", export.glossary_link) end return label end --[==[ Insert a fixed inflection (a label not associated with any inflection values) into an `inflections` field. The `inflections` field will be initialized if needed. `data` is an object with the following fields: * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs to be set for nested inflections, which are specified for an inflection object rather than the headword data structure as a whole. * `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required. * `originating_term`: The term object from which this label is derived. If specified, decorations will be taken from this object. ]==] function export.insert_fixed_inflection(data) local headdata, origterm, label = data.headdata, data.originating_term, data.label local inflobj = data.inflobj or headdata inflobj.inflections = inflobj.inflections or {} if not origterm then insert(inflobj.inflections, { label = export.replace_glossary_links_in_label(label) }) else if origterm.id then error(("It doesn't make sense to pass in an ID '%s' for label '%s' in conjunction with a term value '%s'" ):format(origterm.id, label, origterm.term)) end origterm = shallow_copy(origterm) -- Preserve decorations origterm.term = nil origterm.label = export.replace_glossary_links_in_label(label) insert(inflobj.inflections, origterm) end end --[==[ Insert previously-parsed terms into an `inflections` field. The `inflections` field will be initialized if needed. `data` is an object with the following fields: * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `inflobj`: The object whose `inflections` field the terms are inserted into. Defaults to `headdata`. Only needs to be set for nested inflections, which are specified for an inflection object rather than the headword data structure as a whole. * `terms`: The list of parsed terms. If {nil} or omitted, nothing happens unless `request` is set. * `label`: The label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) Required. * `no_label`: If the term is {"-"} and there are no other terms, insert a fixed label with this value. Defaults to {"no "} plus the label. * `usually_no_label`: If the term is {"-"} and there are other terms, insert a fixed label with this value. Defaults to {"usually no "} plus the label. * `cats`: List of categories to insert when terms are given that are not {"-"}. Each category is a string naming a full category to insert (including the appropriate language name prefixed). * `no_cats`: List of categories to insert when a term is given as {"-"}. * `usually_no_cats`: List of categories to insert when a term is given as {"-"} and additional terms are specified as well (representing, e.g. for the inflection {"plural"}, a term which usually has no plural but does under some circumstances). If omitted, both the categories in `cats` and `no_cats` are inserted. * `accel`: If specified, a full accelerator object to add to the inflections. * `request`: If specified and no terms are given, insert a label with a request for inflections to be given. * `enable_auto_translit`: If specified and terms are given, display automatic transliteration of the terms. The return value indicates whether the inflection exists and how many terms are in it. It is an object with the following fields: * `exists`: {"yes"} if one or more terms were specified; {"no"} if the value was given as {"-"}; {"usually no"} if the first value was given as {"-"} but additional terms were supplied; otherwise {nil}, indicating that the status is unspecified. * `numterms`: Number of terms in the inflection. Will be 0 unless `exists` has the value {"yes"} or {"usually no"}. * `request`: True if no terms were specified but a term request was inserted into the inflection (because `data.request` was specified). Otherwise {nil}. ]==] function export.insert_inflection(data) local headdata, terms, label = data.headdata, data.terms, data.label local inflobj = data.inflobj or headdata local retval = {} local accel = data.accel if data.accel_form then if accel then error("Internal error: can't specify both data.accel and data.accel_form") end if headdata.heads then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(headdata.heads) do lemmas[i] = headobj.term if lemmas[i] == "+" then error("Internal error: If you use data.accel_form, you should have resolved all occurrences of + in heads appropriately") end lemma_translits[i] = headobj.tr end accel = { lemma = lemmas, lemma_translit = lemma_translits, form = data.accel_form, } else accel = { form = data.accel_form, } end end local function insert_cats(cats) for _, cat in ipairs(cats) do insert(headdata.categories, cat) end end if terms and terms[1] then terms = shallow_copy(terms) if terms[1].term == "-" then if terms[2] then export.insert_fixed_inflection { headdata = headdata, inflobj = inflobj, originating_term = terms[1], label = data.usually_no_label or "thường không " .. label, } remove(terms, 1) retval.numterms = #terms retval.exists = "thường không" if data.usually_no_cats then insert_cats(data.usually_no_cats) else if data.no_cats then insert_cats(data.no_cats) end if data.cats then insert_cats(data.cats) end end else export.insert_fixed_inflection { headdata = headdata, inflobj = inflobj, originating_term = terms[1], label = data.no_label or "no " .. label, } retval.numterms = 0 retval.exists = "không" if data.no_cats then insert_cats(data.no_cats) end return retval end else retval.numterms = #terms retval.exists = "có" if data.cats then insert_cats(data.cats) end end if data.check_missing then error("Internal error: check_missing support removed; use checkredlinks=true in [[Module:headword]]") end terms.label = export.replace_glossary_links_in_label(label) if accel then terms.accel = accel end terms.enable_auto_translit = data.enable_auto_translit inflobj.inflections = inflobj.inflections or {} insert(inflobj.inflections, terms) elseif data.request then inflobj.inflections = inflobj.inflections or {} insert(inflobj.inflections, { label = export.replace_glossary_links_in_label(label), request = true, }) retval.numterms = 0 -- retval.exists = nil retval.request = true else retval.numterms = 0 -- retval.exists = nil end return retval end --[==[ Parse raw arguments from `forms` for inline modifiers, and insert the resulting terms (which should not require significant additional processing) into `headdata.inflections`. `data` is an object with the following fields: * `forms`: The list of raw values to parse. If {nil} or omitted, nothing happens. * `headdata`: The headword structure passed to [[Module:headword]]. Required. * `paramname`: As in `parse_term_list_with_modifiers()`. Required. * `label`: As in `insert_inflection()`. Required. * `qualifiers`, `frob`, `include_mods`, `exclude_mods`, `is_head`, `splitchar`, `preserve_splitchar`, `delimiter_key`, `escape_fun`, `unescape_fun`, `pre_normalize_modifiers`: As in `parse_term_list_with_modifiers()`. * `accel`: As in `insert_inflection()`. Return value is as in `insert_inflection()`. ]==] function export.parse_and_insert_inflection(data) local forms = data.forms if forms and forms[1] then data = shallow_copy(data) data.forms = forms data.terms = export.parse_term_list_with_modifiers(data) return export.insert_inflection(data) end return { numterms = 0 } end --[==[ Canonicalize a single term or term-like object or a list of either into a list of term-like objects. `abterms` is the term or list to canonicalize, and `field` is the name of the field holding the term (defaulting to {"term"}). This does the minimal work necessary, meaning that the return value may partly or completely share memory with the value passed in. As a special case, if `abterms` is {nil}, {nil} is returned. If `origin_val` is specified, add a field `origin` containing the value of `origin_val` to each resulting term-like object (in this case, the object will be copied a necessary to avoid side-effecting the passed-in objects). ]==] function export.canonicalize_termobj_list(abterms, field, origin_val) if abterms == nil then return nil end field = field or "term" if type(abterms) == "string" then return {{[field] = abterms, origin = origin_val}} elseif not abterms[1] then if origin_val ~= nil then abterms = shallow_copy(abterms) abterms.origin = origin_val end return {abterms} else -- Check if already in full list term and return directly if so (unless `origin_val` is given, in which case we -- need to shallow-copy both the list and each term in it). local must_convert = false for _, term in ipairs(abterms) do if type(term) == "string" then must_convert = true break end end if not must_convert then if origin_val ~= nil then abterms = shallow_copy(abterms) for i, abterm in ipairs(abterms) do abterms[i] = shallow_copy(abterm) abterms[i].origin = origin_val end end return abterms end end local retval = {} for _, term in ipairs(abterms) do if type(term) == "string" then insert(retval, {[field] = term, origin = origin_val}) else if origin_val ~= nil then term = shallow_copy(term) term.origin = origin_val end insert(retval, term) end end return retval end --[==[ Combine two sets of decorations. If either is {nil}, just return the other, and if both are {nil}, return {nil}. ]==] function export.combine_decorations(decs1, decs2) if not decs1 and not decs2 then return nil end if not decs1 then return decs2 end if not decs2 then return decs1 end local combined = shallow_copy(decs1) for _, dec in ipairs(decs2) do insert_if_not(combined, dec) end return combined end function export.combine_qualifiers_or_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng combine_decorations") end --[==[ Combine the decorations (qualifiers, labels, references) and ID's of two term objects. `destobj` is the "destination term object" into which the combined properties are written, and `srcobj` is the "source object" into which the properties are merged. `destobj` is side-effected (but the lists inside of `destobj` are not); if this is undesirable, make sure to shallow-copy `destobj` first. If both objects have values for a given decoration, the values of `destobj` come first. If both objects have a value for `id`, the values must match or an error is thrown; otherwise, the resulting value of `id` comes from whichever one is defined. '''NOTE:''' This may not be the correct behavior when deduplicating a list of term objects. See `insert_termobj_combining_duplicates` for a different approach. ]==] function export.combine_termobj_decorations(destobj, srcobj) destobj.q = export.combine_decorations(destobj.q, srcobj.q) destobj.qq = export.combine_decorations(destobj.qq, srcobj.qq) destobj.l = export.combine_decorations(destobj.l, srcobj.l) destobj.ll = export.combine_decorations(destobj.ll, srcobj.ll) destobj.refs = export.combine_decorations(destobj.refs, srcobj.refs) if destobj.id and srcobj.id and destobj.id ~= srcobj.id then -- FIXME: We probably want to pass in an error function error(("Can't specify two different ID's %s and %s when combining objects"):format(srcobj.id, destobj.id)) end destobj.id = destobj.id or srcobj.id return destobj end function export.combine_termobj_qualifiers_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng combine_termobj_decorations") end function export.termobj_has_decorations(obj) return obj.q and obj.q[1] or obj.qq and obj.qq[1] or obj.l and obj.l[1] or obj.ll and obj.ll[1] or obj.refs and obj.refs[1] end function export.termobj_has_qualifiers_or_labels(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng termobj_has_decorations") end local function one_decoration_equal(prop1, prop2) local prop1_is_nil = not prop1 or not prop1[1] local prop2_is_nil = not prop2 or not prop2[1] if prop1_is_nil and prop2_is_nil then return true end if prop1_is_nil or prop2_is_nil then return false end return deep_equals(prop1, prop2) end function export.termobj_decorations_equal(obj1, obj2) return one_decoration_equal(obj1.q, obj2.q) and one_decoration_equal(obj1.qq, obj2.qq) and one_decoration_equal(obj1.l, obj2.l) and one_decoration_equal(obj1.ll, obj2.ll) and one_decoration_equal(obj1.refs, obj2.refs) and obj1.id == obj2.id end function export.termobj_ancillary_properties_equal(...) -- FIXME: Đã thêm vào ngày 25 tháng 9 năm 2026. error("Vui lòng dùng termobj_decorations_equal") end function export.convert_termobj_to_formobj(termobj) local formobj = { form = termobj.term, translit = termobj.tr, } local footnotes local function mods_to_footnote(mod_prefix, mod_vals) if mod_vals and mod_vals[1] then footnotes = footnotes or {} for _, val in ipairs(mod_vals) do insert(footnotes, "[" .. mod_prefix .. ":" .. val .. "]") end end end mods_to_footnote("q", termobj.q) mods_to_footnote("qq", termobj.qq) mods_to_footnote("l", termobj.l) mods_to_footnote("ll", termobj.ll) mods_to_footnote("ref", termobj.refs) mods_to_footnote("id", termobj.id and {termobj.id} or nil) formobj.footnotes = footnotes return formobj end local recognized_multi_mods = { q = "q", qq = "qq", l = "l", ll = "ll", ref = "refs", } local recognized_single_mods = { id = "id", } function export.add_footnote_to_termobj(termobj, footnote) local stripped_footnote = footnote:match("^%[(.*)%]$") if not stripped_footnote then error("Internal error: Footnote should be surrounded by brackets at this stage: " .. footnote) end local prefix, rest = stripped_footnote:match("^([a-z]+):(.+)$") local field, is_multi if prefix then if recognized_multi_mods[prefix] then field = recognized_multi_mods[prefix] is_multi = true elseif recognized_single_mods[prefix] then field = recognized_single_mods[prefix] is_multi = false end end if not field then rest = stripped_footnote field = "l" is_multi = true end if is_multi then if not termobj[field] then termobj[field] = {} end insert(termobj[field], rest) else if termobj[field] and termobj[field] ~= rest then error(("Không thể đặt hai giá trị của '%s': '%s' và '%s'"):format(field, termobj[field], rest)) end termobj[field] = rest end end function export.convert_formobj_to_termobj(formobj) local termobj = { term = formobj.form, tr = formobj.translit, } if formobj.footnotes then for _, footnote in ipairs(formobj.footnotes) do export.add_footnote_to_termobj(termobj, footnote) end end return termobj end local function extract_termobj_field_modifiers(fieldval) return fieldval:match("^([*+]?)(.*)$") end function export.remove_termobj_field_modifiers(termobj) local function remove_field_modifiers(field) if termobj[field] and termobj[field][1] then local any_field_modifiers = false for _, val in ipairs(termobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods ~= "" then any_field_modifiers = true break end end local new_field = {} if any_field_modifiers then for _, val in ipairs(termobj[field]) do local _, field_without_mods = extract_termobj_field_modifiers(val) insert_if_not(new_field, field_without_mods) end termobj[field] = new_field end end end remove_field_modifiers("q") remove_field_modifiers("qq") remove_field_modifiers("l") remove_field_modifiers("ll") remove_field_modifiers("refs") end function export.insert_termobj_combining_duplicates(destobjs, termobj) for _, destobj in ipairs(destobjs) do if destobj.term == termobj.term and destobj.tr == termobj.tr then -- Form already present; maybe combine footnotes. local function combine_field_values(field) if termobj[field] and termobj[field][1] then -- Check to see if there are existing values with *; if so, remove them. if destobj[field] and destobj[field][1] then local any_values_with_asterisk = false for _, val in ipairs(destobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods:find("%*") then any_values_with_asterisk = true break end end if any_values_with_asterisk then local filtered_values = {} for _, val in ipairs(destobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if not field_mods:find("%*") then insert(filtered_values, val) end end if filtered_values[1] then destobj[field] = filtered_values else destobj[field] = nil end end end local any_footnotes_with_plus = false for _, val in ipairs(termobj[field]) do local field_mods, _ = extract_termobj_field_modifiers(val) if field_mods:find("%+") then any_footnotes_with_plus = true break end end if any_footnotes_with_plus then if not destobj[field] then destobj[field] = {} else destobj[field] = shallow_copy(destobj[field]) end for _, val in ipairs(termobj[field]) do local already_seen = false local field_mods, field_without_mods = extract_termobj_field_modifiers(val) if field_mods:find("%+") then for _, existing_val in ipairs(destobj[field]) do local _, existing_field_without_mods = extract_termobj_field_modifiers(existing_val) if existing_field_without_mods == field_without_mods then already_seen = true break end end if not already_seen then insert(destobj[field], val) end end end end end end combine_field_values("q") combine_field_values("qq") combine_field_values("l") combine_field_values("ll") combine_field_values("refs") if destobj.id and termobj.id and destobj.id ~= termobj.id then -- FIXME: We probably want to pass in an error function error(("Can't specify two different ID's %s and %s when combining objects"):format(termobj.id, destobj.id)) end destobj.id = destobj.id or termobj.id return end end insert(destobjs, termobj) end export.allowed_special_indicators = { ["first"] = true, ["first-second"] = true, ["first-last"] = true, ["second"] = true, ["last"] = true, ["each"] = true, ["+"] = true, -- requests the default behavior with preposition handling } --[==[ Check for special indicators (values such as {"+first"} or {"+first-last"} that are used in a `pl`, `f`, etc. argument and indicate how to inflect a multiword term). If `form` is such an indicator, the return value is `form` minus the initial `+` sign; otherwise, if form begins with a `+` sign, an error is thrown; otherwise the return value is nil. ]==] function export.get_special_indicator(form, noerror) if form:find("^%+") then form = form:gsub("^%+", "") if not export.allowed_special_indicators[form] then if noerror then return nil end local indicators = {} for indic, _ in pairs(export.allowed_special_indicators) do insert(indicators, "+" .. indic) end sort(indicators) error("Special inflection indicator beginning with '+' can only be " .. mw.text.listToText(indicators) .. ": +" .. form) end return form end return nil end local function add_endings(bases, endings) local retval = {} if type(bases) ~= "table" then bases = {bases} end if type(endings) ~= "table" then endings = {endings} end for _, base in ipairs(bases) do for _, ending in ipairs(endings) do insert(retval, base .. ending) end end return retval end --[==[ Inflect a possibly multiword or hyphenated term `form` using the function `inflect`, which is a function of one argument that is called on a single word to inflect and should return either the inflected word or a list of inflected words. `special` indicates how to inflect the multiword term and should be e.g. {"first"} to inflect only the first word, {"first-last"} to inflect the first and last words, {"each"} to inflect each word, etc. See `allowed_special_indicators` above for the possibilities. If `special` is `+`, or is omitted and the term is multiword (i.e. containing a space character), and `prepositions` is supplied, the function checks for multiword or hyphenated terms containing the prepositions in `prepositions`, e.g. Italian [[senso di marcia]] or [[medaglia d'oro]] or Portuguese [[tartaruga-do-mar]]. If such a term is found, only the first word is inflected. Otherwise, the default is {"first-last"}. `prepositions` is a list of Lua patterns matching prepositions. The patterns will automatically have the separator character (space or hyphen) added to the left side but not the right side, so they should contain a space character (which will automatically be converted to the appropriate separator) on the right side unless the preposition is joined on the right side with an apostrophe. Examples of preposition patterns for Italian are {"di "}, {"sull'"} and {"d?all[oae] "} (which matches {"dallo "}, {"dalle "}, {"alla "}, etc.). The return value is always either a list of inflected multiword or hyphenated terms, or nil if `special` is omitted and `form` is not multiword. (If `special` is specified and `form` is not multiword or hyphenated, an error results.) ]==] function export.handle_multiword(form, special, inflect, prepositions, sep) sep = sep or form:find(" ") and " " or "%-" local raw_sep = sep == " " and " " or "-" -- Used to add regex version of separator in the replacement portion of ugsub() or :gsub() local sep_replacement = sep == " " and " " or "%%-" -- Given a Lua pattern, replace space with the appropriate separator. local function hack_re(re) if sep == " " then return re end return (re:gsub(" ", sep_replacement)) end if special == "first" then local first, rest = form:match(hack_re("^(.-)( .*)$")) if not first then error("Special indicator 'first' can only be used with a multiword term: " .. form) end return add_endings(inflect(first), rest) elseif special == "second" then local first, second, rest = form:match(hack_re("^([^ ]+ )([^ ]+)( .*)$")) if not first then error("Special indicator 'second' can only be used with a term with three or more words: " .. form) end return add_endings(add_endings({first}, inflect(second)), rest) elseif special == "first-second" then local first, space, second, rest = form:match(hack_re("^([^ ]+)( )([^ ]+)( .*)$")) if not first then error("Special indicator 'first-second' can only be used with a term with three or more words: " .. form) end return add_endings(add_endings(add_endings(inflect(first), space), inflect(second)), rest) elseif special == "each" then local terms = split(form, sep) if #terms < 2 then error("Special indicator 'each' can only be used with a multiword term: " .. form) end for i, term in ipairs(terms) do terms[i] = inflect(term) if i > 1 then terms[i] = add_endings(raw_sep, terms[i]) end end local result = "" for _, term in ipairs(terms) do result = add_endings(result, term) end return result elseif special == "first-last" then local first, middle, last = form:match(hack_re("^(.-)( .* )(.-)$")) if not first then first, middle, last = form:match(hack_re("^(.-)( )(.*)$")) end if not first then error("Special indicator 'first-last' can only be used with a multiword term: " .. form) end return add_endings(add_endings(inflect(first), middle), inflect(last)) elseif special == "last" then local rest, last = form:match(hack_re("^(.* )(.-)$")) if not rest then error("Special indicator 'last' can only be used with a multiword term: " .. form) end return add_endings(rest, inflect(last)) elseif special and special ~= "+" then error("Unrecognized special=" .. special) end -- Only do default behavior if special indicator '+' explicitly given or separator is space; otherwise we will -- break existing behavior with hyphenated words. if (special == "+" or sep == " ") and form:find(sep) then if prepositions then -- check for prepositions in the middle of the word; do it this way so we can handle -- more than one word before the preposition (and usually inflect each word) for _, prep in ipairs(prepositions) do local first, space_prep_rest = umatch(form, hack_re("^(.-)( " .. prep .. ".*)$")) if first then return add_endings(inflect(first), space_prep_rest) end end end -- multiword or hyphenated expressions default to first-last; we need to pass in the separator to avoid -- problems with multiword terms containing hyphens in the individual words return export.handle_multiword(form, "first-last", inflect, prepositions, sep) end return nil end local function link_hyphen_split_component(word, data) if data.link_hyphen_split_component then return data.link_hyphen_split_component(word) else return "[[" .. word .. "]]" end end -- Default function to split a word on apostrophes. Don't split apostrophes at the beginning or end of a word (e.g. -- [['ndrangheta]] or [[po']]). Handle multiple apostrophes correctly, e.g. [[l'altr'ieri]] -> [[l']][altr']][[ieri]]. function export.default_split_apostrophe(word, data) local apostrophe_parts = split(word, "'", true, true) local linked_apostrophe_parts = {} local apostrophes_at_beginning = "" local i = 1 -- Apostrophes at beginning get attached to the first word after (which will always exist but may -- be blank if the word consists only of apostrophes). while i < #apostrophe_parts do -- <, not <=, in case the word consists only of apostrophes local apostrophe_part = apostrophe_parts[i] i = i + 1 if apostrophe_part == "" then apostrophes_at_beginning = apostrophes_at_beginning .. "'" else break end end apostrophe_parts[i] = apostrophes_at_beginning .. apostrophe_parts[i] -- Now, do the remaining parts. A blank part indicates more than one apostrophe in a row; we join -- all of them to the preceding word. while i <= #apostrophe_parts do local apostrophe_part = apostrophe_parts[i] if apostrophe_part == "" then linked_apostrophe_parts[#linked_apostrophe_parts] = linked_apostrophe_parts[#linked_apostrophe_parts] .. "'" elseif i == #apostrophe_parts then insert(linked_apostrophe_parts, apostrophe_part) else insert(linked_apostrophe_parts, apostrophe_part .. "'") end i = i + 1 end for j, tolink in ipairs(linked_apostrophe_parts) do linked_apostrophe_parts[j] = link_hyphen_split_component(tolink, data) end return concat(linked_apostrophe_parts) end --[=[ Auto-add links to a word that should not have spaces but may have hyphens and/or apostrophes. We split off final punctuation, then split on hyphens if `data.split_hyphen` is given, and also split on apostrophes if `data.split_apostrophe` is given. We only split on hyphens if they are in the middle of the word, not at the beginning or end (hyphens at the beginning or end indicate suffixes or prefixes, respectively). `include_hyphen_prefixes`, if given, is a set of prefixes (not including the final hyphen) where we should include the final hyphen in the prefix. Hence, e.g. if "anti" is in the set, a Portuguese word like [[anti-herói]] "anti-hero" will be split [[anti-]][[herói]] (whereas a word like [[código-fonte]] "source code" will be split as [[código]]-[[fonte]]). If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French [[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word to split, and the return value should be the split and linked word. ]=] local function add_single_word_links(space_word, data, term_has_spaces) local space_word_no_punct, punct local punct_pattern = data.punctuation if punct_pattern and is_callable(punct_pattern) then space_word_no_punct, punct = punct_pattern(space_word) else if punct_pattern == nil then punct_pattern = "[,;:?!]" end space_word_no_punct, punct = umatch(space_word, "^(.*)(" .. punct_pattern .. ")$") end space_word_no_punct = space_word_no_punct or space_word punct = punct or "" local words if space_word_no_punct:sub(1, 1) == "-" or space_word_no_punct:sub(-1) == "-" then -- don't split prefixes and suffixes words = {space_word_no_punct} else local splitter if term_has_spaces then splitter = data.split_hyphen_when_space else splitter = data.split_hyphen_when_no_space end if is_callable(splitter) then words = splitter(space_word_no_punct) if type(words) == "string" then return words .. punct end end end if not words then local split_hyphen if term_has_spaces then split_hyphen = data.split_hyphen_when_space else split_hyphen = data.split_hyphen_when_no_space if split_hyphen == nil then -- default to true; use `false` to avoid this split_hyphen = true end end if split_hyphen then words = split(space_word_no_punct, "-", true, true) else words = {space_word_no_punct} end end local linked_words = {} for j, word in ipairs(words) do if j < #words and data.include_hyphen_prefixes and data.include_hyphen_prefixes[word] then word = "[[" .. word .. "-]]" elseif j > 1 and data.include_hyphen_suffixes and data.include_hyphen_suffixes[word] then word = "[[-" .. word .. "]]" else -- Don't split on apostrophes if the word is in `no_split_apostrophe_words`. if (not data.no_split_apostrophe_words or not data.no_split_apostrophe_words[word]) and data.split_apostrophe and word:find("'", nil, true) then if data.split_apostrophe == true then word = export.default_split_apostrophe(word, data) else -- custom apostrophe splitter/linker word = data.split_apostrophe(word) end elseif word ~= "" then -- avoid -[[]]- (e.g. f--k) word = link_hyphen_split_component(word, data) end if j < #words then word = word .. "-" end end insert(linked_words, word) end return concat(linked_words) .. punct end --[=[ Auto-add links to a multiword term. `data` contains fields customizing how to do this. By default we proceed as follows: (1) If the term already has embedded links in it, they are left unchanged. (2) Otherwise, if there are spaces present, we split on spaces and link each word separately. (3) If a given space-separated component ends in punctuation (defaulting to [,;:?!]), it is separated off, the remainder of the algorithm run, and the punctuation pasted back on. (4) If there are hyphens in a given space-separated component, we may link each hyphenated term separately depending on the settings in `data`. Normally the hyphens are not included in the linked terms, but this can be overridden for specific prefixes and/or suffixes. By default, if there are spaces in the multiword term, we do not link hyphenated components (because of cases like "boire du petit-lait" where "petit-lait" should be linked as a whole), but do so otherwise (e.g. for "avant-avant-hier"); this can overridden for cases like "croyez-le ou non". Cases where only some of the hyphens should be split can always be handled by explicitly specifying the head (e.g. "Nord-Pas-de-Calais" given as head=[[Nord]]-[[Pas-de-Calais]]). (5) If there are apostrophes in a given component, we may link each apostrophe-separated term separately depending on the settings in `data`, including the apostrophe in the link to its left (so we split "de l'eau" as "[[de]] [[l']][[eau]]"). The settings in `data` are as follows: `split_hyphen_when_no_space`: Whether to split on hyphens when the term has no spaces. Defaults to true if set to `nil`. This can be a function of one argument, to implement a custom splitting algorithm for hyphen-separated terms. If this returns [FIXME: FINISH ME ...] If `data.split_apostrophe` is specified, we split on apostrophes unless `data.no_split_apostrophe_words` is given and the word is in the specified set, such as French [[c'est]] and [[quelqu'un]]. If `data.split_apostrophe` is true, the default algorithm applies, which splits on all apostrophes except those at the beginning and end of a word (as in Italian [['ndrangheta]] or [[po']]), and includes the apostrophe in the link to its left (so we auto-split French [[l'eau]] as [[l']][[eau]] and [[l'altr'ieri]] as [[l']][altr']][[ieri]]). If `data.split_apostrophe` is specified but not `true`, it should be a function of one argument that does custom apostrophe-splitting. The argument is the word to split, and the return value should be the split and linked word. We don't always split on hyphens because of cases like "boire du petit-lait" where "petit-lait" should be linked as a whole, but provide the option to do it for cases like "croyez-le ou non". If there's no space, however, then it makes sense to split on hyphens by `no_split_apostrophe_words` and `include_hyphen_prefixes` allow for special-case handling of particular words and are as described in the comment above add_single_word_links(). ]=] function export.add_links_to_multiword_term(term, data) if term:match("[%[%]]") then return term end local words = split(term, " ", true, true) local term_has_spaces = #words > 1 local linked_words = {} for _, word in ipairs(words) do insert(linked_words, add_single_word_links(word, data, term_has_spaces)) end local retval = concat(linked_words, " ") -- If we ended up with a single link consisting of the entire term, -- remove the link. return retval:match("^%[%[([^%[%]]*)%]%]$") or retval end local function canonicalize_begin_end_spec(spec) local from, to = spec:match("^(.-):(.*)$") if not from then from = spec to = "" end return from, to end --[==[ Given a `linked_term` that is the output of add_links_to_multiword_term(), apply modifications as given in `modifier_spec` to change the link destination of subterms (normally single-word non-lemma forms; sometimes collections of adjacent words). This is usually used to link non-lemma forms to their corresponding lemma, but can also be used to replace a span of adjacent separately-linked words to a single multiword lemma. The format of `modifier_spec` is one or more semicolon-separated subterm specs, where each such spec is of the form SUBTERM:DEST, where SUBTERM is one or more words in the `linked_term` but without brackets in them, and DEST is the corresponding link destination to link the subterm to. Any occurrence of ~ in DEST is replaced with SUBTERM. Alternatively, a single modifier spec can be of the form BEGIN[FROM:TO], which is equivalent to writing BEGINFROM:BEGINTO (see example below). For example, given the source phrase [[il bue che dice cornuto all'asino]] "the pot calling the kettle black" (literally "the ox that calls the donkey horned/cuckolded"), the result of calling add_links_to_multiword_term() is [[il]] [[bue]] [[che]] [[dice]] [[cornuto]] [[all']][[asino]]. With a modifier_spec of 'dice:dire', the result is [[il]] [[bue]] [[che]] [[dire|dice]] [[cornuto]] [[all']][[asino]]. Here, based on the modifier spec, the non-lemma form [[dice]] is replaced with the two-part link [[dire|dice]]. Another example: given the source phrase [[chi semina vento raccoglie tempesta]] "sow the wind, reap the whirlwind" (literally (he) who sows wind gathers [the] tempest"). The result of calling add_links_to_multiword_term() is [[chi]] [[semina]] [[vento]] [[raccoglie]] [[tempesta]], and with a modifier_spec of 'semina:~re; raccoglie:~re', the result is [[chi]] [[seminare|semina]] [[vento]] [[raccogliere|raccoglie]] [[tempesta]]. Here we use the ~ notation to stand for the non-lemma form in the destination link. A more complex example is [[se non hai altri moccoli puoi andare a letto al buio]], which becomes [[se]] [[non]] [[hai]] [[altri]] [[moccoli]] [[puoi]] [[andare]] [[a]] [[letto]] [[al]] [[buio]] after calling add_links_to_multiword_term(). With the following modifier_spec: 'hai:avere; altr[i:o]; moccol[i:o]; puoi: potere; andare a letto:~; al buio:~', the result of applying the spec is [[se]] [[non]] [[avere|hai]] [[altro|altri]] [[moccolo|moccoli]] [[potere|puoi]] [[andare a letto]] [[al buio]]. Here, we rely on the alternative notation mentioned above for e.g. 'altr[i:o]', which is equivalent to 'altri:altro', and link multiword subterms using e.g. 'andare a letto:~'. (The code knows how to handle multiword subexpressions properly, and if the link text and destination are the same, only a single-part link is formed.) ]==] function export.apply_link_modifiers(linked_term, modifier_spec, lang) local split_modspecs = split(modifier_spec, "%s*;%s*") for j, modspec in ipairs(split_modspecs) do local id if modspec:find("<") then local rest rest, id = modspec:match("^(.*)<id:(.-)>$") if rest then modspec = rest end end local subterm, dest, otherlang local begin_spec, rest, end_spec = modspec:match("^%[(.-)%]([^:]*)%[(.-)%]$") if begin_spec then local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec) local end_from, end_to = canonicalize_begin_end_spec(end_spec) subterm = begin_from .. rest .. end_from dest = begin_to .. rest .. end_to end if not subterm then rest, end_spec = modspec:match("^([^:]*)%[(.-)%]$") if rest then local end_from, end_to = canonicalize_begin_end_spec(end_spec) subterm = rest .. end_from dest = rest .. end_to end end if not subterm then begin_spec, rest = modspec:match("^%[(.-)%]([^:]*)$") if begin_spec then local begin_from, begin_to = canonicalize_begin_end_spec(begin_spec) subterm = begin_from .. rest dest = begin_to .. rest end end if not subterm then subterm, dest = modspec:match("^(.-)%s*:%s*(.*)$") if subterm and subterm ~= "^" and subterm ~= "$" then local langdest -- Parse off an initial language code (e.g. 'en:Higgs', 'la:minūtia' or 'grc:σκατός'). Also handle -- Wikipedia prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa'). otherlang, langdest = dest:match("^([A-Za-z0-9._-]+):([^ ].*)$") if otherlang == "w" then local foreign_wikipedia, foreign_term = langdest:match("^([A-Za-z0-9._-]+):([^ ].*)$") if foreign_wikipedia then otherlang = otherlang .. ":" .. foreign_wikipedia langdest = foreign_term end dest = ("%s:%s"):format(otherlang, langdest) otherlang = nil elseif otherlang then otherlang = get_lang_by_code(otherlang, true, "allow etym") dest = langdest end end end if not subterm then if modspec == "?" or modspec == "!" then subterm = "$" dest = modspec elseif modspec == "..." or modspec == "...?" then subterm = "$" dest = " " .. modspec elseif modspec:find("^[A-Z]$") then -- X, Y, etc. by themselves are unlinked, to help with snowclones subterm = modspec dest = "_" else subterm = modspec dest = "~" end end if subterm == "^" then linked_term = dest:gsub("_", " ") .. linked_term elseif subterm == "$" then linked_term = linked_term .. dest:gsub("_", " ") else if subterm:find("[", nil, true) then error(("Subterm '%s' in modifier spec '%s' cannot have brackets in it"):format( escape_wikicode(subterm), escape_wikicode(modspec))) end local escaped_subterm = pattern_escape(subterm) local subterm_re = "%[%[" .. escaped_subterm:gsub("(%%?[ ',%-])", "%%]*%1%%[*") .. "%]%]" local expanded_dest if dest:find("~", nil, true) then expanded_dest = dest:gsub("~", replacement_escape(subterm)) else expanded_dest = dest end if otherlang then expanded_dest = expanded_dest .. "#" .. otherlang:getCanonicalName() end local subterm_replacement if expanded_dest == "_" then subterm_replacement = subterm if id then error("Can't supply <id:...> with an unlinked subterm") end if otherlang then error("Can't supply prefixed language with an unlinked subterm") end elseif id or otherlang then if id and expanded_dest:find("[", nil, true) then error("Can't supply <id:...> with destination with embedded brackets") end subterm_replacement = require(links_module).language_link { lang = otherlang or lang, term = expanded_dest, alt = subterm, id = id, } elseif expanded_dest:find("[", nil, true) then -- Use the destination directly if it has brackets in it (e.g. to put brackets around parts of a word). subterm_replacement = expanded_dest elseif expanded_dest == subterm then subterm_replacement = "[[" .. subterm .. "]]" else subterm_replacement = "[[" .. expanded_dest .. "|" .. subterm .. "]]" end local escaped_subterm_replacement = replacement_escape(subterm_replacement) local replaced_linked_term = ugsub(linked_term, subterm_re, escaped_subterm_replacement) if replaced_linked_term == linked_term then mw.log(("Attempted to replace %s with %s in %s"):format(subterm_re, escaped_subterm_replacement, linked_term)) error(("Subterm '%s' could not be located in %slinked expression %s, or replacement same as subterm"):format( subterm, j > 1 and "intermediate " or "", escape_wikicode(linked_term))) else linked_term = replaced_linked_term end end end return linked_term end local inflection_to_cats = { plural = { filter_plpos = function(plpos) -- plurals also occur with determiners, adjectives etc. and we don't want to generate categories like -- 'countable determiners', 'countable adjectives', etc. Note that the passed-in `plpos` has `proper nouns` -- converted to `nouns`. return plpos == "Danh từ" end, cats = {"{plpos} đếm được"}, no_cats = {"{plpos} không đếm được"}, }, comparative = { cats = {"{plpos} so sánh được"}, no_cats = {"{plpos} không so sánh được"}, }, ["female equivalent"] = { cats = {"{plpos} with other-gender equivalents"}, }, ["male equivalent"] = { cats = {"{plpos} with other-gender equivalents"}, }, } --[=[ Validate the items in `items` against the list or set of valid items in `valid_items`. If `field` is given, fetch the item to check from that-named field of each object in `items`; otherwise use the items in `items` directly. If an error occurs, `item_type` specifies the type of item to mention in the error message, which will also list the allowed items (either taken directly from `valid_items` if a list, or from the sorted keys if a set). ]=] local function validate_items(data) local items, field, valid_items, item_type = data.items, data.field, data.valid_items, data.item_type local valid_set if valid_items[1] then valid_set = list_to_set(valid_items) else valid_set = valid_items end for _, item in ipairs(items) do if field then item = item[field] end if not valid_set[item] then local valid_list if valid_items[1] then valid_list = valid_items else valid_list = {} for valid_item, _ in pairs(valid_items) do insert(valid_list, valid_item) end table.sort(valid_list) end error(("Invalid %s: %s; expected one of %s"):format(item_type, item, mw.text.listToText(valid_list))) end end end local Headdata = {} function Headdata:get_canonicalized_plpos() return (self.pos_category:gsub("proper noun", "noun")) end --[==[ Canonicalize a category. The category string will have the full language name (i.e. the name of the L2 language under which an entry is inserted, which may a parent language if the language in question is an etymology-only language) prepended to it, and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech (with some canonicalization; specifically, `proper nouns` is converted to `nouns` when replacing `{plpos}`). To specify a full category and not have the language name prepended to it, precede it with {"Category:"}, which will be removed. ]==] function Headdata:canonicalize_category(category) if category:find("{plpos}") then local plpos = self:get_canonicalized_plpos() category = category:gsub("{plpos}", plpos) end if category:find("^Category:") then return (category:gsub("^Category:", "")) else return self.langfullname .. " " .. category end end --[==[ Canonicalize a list of categories according to the process described in `Headdata:canonicalize_category`. This simply loops over each category in `categories` and calls `Headdata:canonicalize_category` on each one. ]==] function Headdata:canonicalize_categories(categories) if not categories then return categories end local canon_cats = {} for _, cat in ipairs(categories) do insert(canon_cats, self:canonicalize_category(cat)) end return canon_cats end --[==[ Insert a category into the `categories` list in the headword `data` structure. `category` is normally a string naming the category, which will have the full language name prepended to it and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech (with some canonicalization; specifically, `proper nouns` is converted to `nouns` when replacing `{plpos}`). To specify a full category and not have the language name prepended to it, precede it with {"Category:"}. ]==] function Headdata:insert_category(category) insert(self.categories, self:canonicalize_category(category)) end --[==[ Validate the genders in `genders` (a list of gender spec objects, as produced by {type = "genders"} in [[Module:parameters]] and accepted by [[Module:gender and number]]), checking that all specified genders are in the list given in `valid_genders`. Optional `props` controls how the validation happens. In particular, unless `props.no_augment` is given, then for any gender beginning with `m`, if a corresponding gender beginning with `f` occurs, analogous genders beginning with `mf`, `mfbysense` and `mfequiv` are also allowed. For example, if `m-d` (masculine dual) and `f-d` (feminine dual) both occur, genders `mf-d`, `mfbysense-d` and `mfequiv-d` are also allowed. If a disallowed gender is given, an error occurs, giving the disallowed gender along with the list of all allowed genders. ]==] function Headdata:validate_genders(genders, valid_genders, props) if not genders then return end props = props or {} local gender_type, no_augment = props.gender_type, props.no_augment gender_type = gender_type or "headword" local valid_gender_set = list_to_set(valid_genders) local augmented_gender_set if no_augment then augmented_gender_set = valid_gender_set else augmented_gender_set = {} for g, _ in pairs(valid_gender_set) do augmented_gender_set[g] = true if g:find("^m") and not g:find("^mf") and valid_gender_set[g:gsub("^m", "f")] then augmented_gender_set[g:gsub("^m", "mf")] = true augmented_gender_set[g:gsub("^m", "mfbysense")] = true augmented_gender_set[g:gsub("^m", "mfequiv")] = true end end end validate_items { items = genders, field = "spec", valid_items = augmented_gender_set, item_type = ("%s gender"):format(gender_type), } end --[==[ Parse an inflection specified in `field`, the name of a parameter holding an inflection. If the parameter is numeric, the field should be given as a number (as with the `params` structure passed to [[Module:parameters]]), not a string containing the representation of a number. The field can specify multiple comma-separated terms, and each term can have associated inline modifiers that will be parsed (unless there is top-level HTML in the parameter, i.e. HTML not contained inside an inline modifier, e.g. as may be generated by using {{tl|l}} or similar template inside a parameter). This is a wrapper around the top-level `parse_term_with_modifiers()` function. `props` is an optional structure containing additional properties, including all additional properties documented for the top-level `parse_term_with_modifiers()` function. If the parameter in `field` is unspecified, the return value of this function will be an empty list, not {nil}, so it is always safe to iterate over the return value. By default, the allowed modifiers are the same as for `parse_term_with_modifiers()`, except that (normally) the `<tr:...>` modifier will be allowed if `include_tr` was specified in the original call to `process_headword()`; likewise for the `<ts:...>` modifier if `include_ts` was specified and the `<sc:...>` modifier if `include_sc` was specified. If If you pass in your own `include_mods` list of additional allowed modifiers, it will (normally) automatically be augmented with {"tr"}, {"ts"} and/or {"sc"} if `include_tr`, `include_ts` and/or `include_sc` was specified when calling `process_headword()`. To disable automatic augmentation of these modifiers (whether or not you specify an `include_mods` property), specify {no_augment_include_mods = true} in `props`. ]==] function Headdata:parse_inflection(field, props) local val = self.process_props.args[field] if not val then return {} end props = props and shallow_copy(props) or {} local include_mods = props.include_mods local data = self.process_props.data if not props.no_augment_include_mods and (data.include_tr or data.include_ts or data.include_sc) then include_mods = include_mods and shallow_copy(include_mods) or {} if data.include_tr then insert_if_not(include_mods, "tr") end if data.include_ts then insert_if_not(include_mods, "ts") end if data.include_sc then insert_if_not(include_mods, "sc") end end props.val = val props.paramname = field props.splitchar = props.splitchar or "," props.include_mods = include_mods return export.parse_term_with_modifiers(props) or {} end --[==[ Insert previously-parsed terms into the `inflections` of the headword `data` structure. This is a wrapper around the top-level `insert_inflection()` function. `terms` is the list of parsed terms. (If {nil}, nothing happens unless `request` is set in `props`.) `label` is the the label that the inflections are given; any parts of the label surrounded in `<<...>>` are linked to the glossary. (If the contents of `<<...>>` contain a `|` in them, they are a two-part link.) `props` is an optional structure containing additional properties, including all additional properties documented for the top-level `insert_inflection()` function. Unless `no_auto_cats` is given in `props`, certain labels automatically trigger the insertion of additional categories in specific circumstances. This is controlled by the `inflection_to_cats` structure in [[Module:headword utilities]]. For example, if the part of speech is {"nouns"} or {"proper nouns"} and the label (after removing any links and `<<...>>` glossary specs) is {"plural"}, an additional category <code><var>lang</var> countable nouns</code> will be added if a plural value is given (i.e. the value is not {"-"}). If the value is {"-"} (which indicates that there is no plural and triggers the insertion of the fixed inflection label {"no plural"}), <code><var>lang</var> uncountable nouns</code> will be inserted instead, and if both {"-"} and a value are given (which triggers the insertion of the {"usually no plural"} fixed inflection label), both categories are added. Similar categories are inserted when a comparative is given (with a label {"comparative"}), and if the label is {"female equivalent"} or {"male equivalent"} and the value is not {"-"}, a category such as <code><var>lang</var> nouns with other-gender equivalents</code> is inserted. ]==] function Headdata:insert_inflection(terms, label, props) props = props and shallow_copy(props) or {} if not props.no_auto_cats then local bare_label = label if bare_label:find("[[", nil, true) then bare_label = require(links_module).remove_links(bare_label) end if bare_label:find("<<", nil, true) then bare_label = bare_label:gsub("<<.-|(.-)>>", "%1"):gsub("<<(.-)>>", "%1") end local cats = inflection_to_cats[bare_label] if cats then if not cats.filter_plpos or cats.filter_plpos(self:get_canonicalized_plpos()) then if props.cats == nil then props.cats = self:canonicalize_categories(cats.cats) end if props.usually_no_cats == nil then props.usually_no_cats = self:canonicalize_categories(cats.usually_no_cats) end if props.no_cats == nil then props.no_cats = self:canonicalize_categories(cats.no_cats) end end end end props.headdata = self props.terms = terms props.label = label return export.insert_inflection(props) end --[==[ Insert a "fixed" inflection (a label without associated values) into the `inflections` table of the headword `data` structure, labeled according to `label` (which can have glossary links in it specified using `<<...>>`, exactly as for `:insert_inflection()`). An example label (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"}, specifying that the noun belongs to the hidden-''g'' declension. This is a direct wrapper around the top-level function `insert_fixed_inflection()`; see that function for more details on optional `props`. ]==] function Headdata:insert_fixed_inflection(label, props) props = props and shallow_copy(props) or {} props.headdata = self props.label = label export.insert_fixed_inflection(props) end --[==[ Parse the inflection(s) specified in `field` and insert them into the `inflections` table of the headword `data` structure, labeled according to `label`. This is equivalent to calling {terms = data:parse_inflection(field, props)} followed by {return data:insert_inflection(terms, label, props)} and behaves the same as the combination of those two functions. See their documentation for more details. ]==] function Headdata:parse_and_insert_inflection(field, label, props) local terms = self:parse_inflection(field, props) return self:insert_inflection(terms, label, props) end --[==[ Generate an inflection that may be specified explicitly or defaulted (which involves looping over the specified or defaulted heads and determining the script of each one, since the formation of the default depends on the script). `data` is the data object passed into the POS handler. `terms` is the list of terms to process. Those where the term itself is not `+` will be returned unchanged, while those where the term is `+` will be handled by generating the appropriate inflections from the headwords using `make_inflection` (which is passed three arguments, `head`, `tr` and `sccode`, i.e. the script code of `head`) and should return two values, term and translit, either of which can be nil. A nil head will be ignored, and otherwise the decorations specified on the `+` term will be combined with the decorations specified on the head. The return value is a list of inflections where no requests for the default inflection remain. ]==] function Headdata:resolve_special(terms, handle_special, props) props = props or {} local infls = {} local is_special = props.is_special or function(_data, infl) return infl.term == "+" end for _, termobj in ipairs(terms) do if not is_special(self, termobj) then insert(infls, termobj) else for _, headobj in ipairs(self.heads) do local head = headobj.term or self.pagename local head_no_links if props.with_links then head = head:find("%[") and head or require(headword_module).add_multiword_links(head, not headobj.term) head_no_links = require(links_module).remove_links(head) else head = require(links_module).remove_links(head) head_no_links = head end local newterms = handle_special { head = head, tr = headobj.tr, infl = termobj, sc = self.lang:findBestScript(head_no_links), } if newterms then newterms = export.canonicalize_termobj_list(newterms, "term", "resolve_special") for _, newterm in ipairs(newterms) do if not props.no_combine_handle_special_retval_with_origin then export.combine_termobj_decorations(newterm, termobj) end if not props.no_combine_handle_special_retval_with_head then export.combine_termobj_decorations(newterm, headobj) end insert(infls, newterm) end end end end end return infls end --[==[ Add the current page to a tracking page named `Wiktionary:Tracking/``lang``-headword/``page```, where ``lang`` is the language code of the current language. For example, if the current language is `mak` and `page` is {"redundant-lon"}, the current page will get added to the tracking page `Wiktionary:Tracking/mak-headword/redundant-lon`. All pages added to that tracking page can be seen by going to [[Special:WhatLinksHere/Wiktionary:Tracking/mak-headword/redundant-lon]]. This is typically used to track issues occurring in user-specified parameters that do not rise to the level of errors (e.g. redundant parameters, deprecated usages or other dispreferred values). ]==] function Headdata:track(page) return require(debug_track_module)(self.langcode .. "-headword/" .. page) end local boolean_param = {type = "boolean"} --[==[ Process an arbitrary headword in an arbitrary language, handling generic and language-specific arguments and calling `full_headword()` in [[Module:headword]]. This is intended for use in implementing headword modules (e.g. [[Module:uz-headword]] for Uzbek, [[Module:mn-headword]] for Uzbek, [[Module:gsw-headword]] for Alemannic German, etc.) and provides a general implementation of such modules. On input, `data` is an object with the following fields: * `lang`: The language object of the language being handled. '''Required.''' Use the special value {false} to indicate that the language is specified by the user in {{para|1}}. * `frame`: The frame object passed into the `show()` function of your module, which implements headword-handling for all parts of speech in the module, including a generic POS-handling template (e.g. {{tl|uz-head}} or {{tl|mn-head}}), which allows arbitrary parts of speech to be handled. '''Required.''' * `pos_functions`: A table listing, for each part of speech requiring special handling, the extra parameters (if any) that the part of speech accepts, along with how to handle them. See the examples below. '''Required.''' * `validate_lang`: If {lang = true} is specified, this is a function of one argument (a language object, based on the language specified in {{para|1}}) that should throw an error if the language object is disallowed. If omitted, all languages are allowed. * `numbered_head`: If true, explicit headwords are specified in a numbered param instead of in {{para|head}}. The param used is usually {{para|1}}, but is {{para|2}} for generic POS templates such as {{tl|mn-head}} or for POS-specific templates when {lang = true} is specified (e.g. {{tl|arb-noun}}), and is {{para|3}} for generic POS templates when {lang = true} is spcified (e.g. {{tl|arb-head}}). * `include_tr`: If true, allow explicit transliterations to be specified. The transliteration(s) for the headword(s) themselves is/are specified in {{para|tr}} or through the {{cd|<tr:...>}} inline modifier on headwords, and transliterations of inflections are specified through the {{cd|<tr:...>}} inline modifier. This should generally be given when a headword for the language may be in a script other than Latin. * `include_ts`: If true, allow explicit transcriptions to be specified. The transcription(s) for the headword(s) themselves is/are specified in {{para|ts}} or through the {{cd|<ts:...>}} inline modifier on headwords, and transcriptions of inflections are specified through the {{cd|<ts:...>}} inline modifier. This should generally only be given for certain languages where the spelling is radically different from the pronunciation (e.g. in cuneiform languages such as Hittite and Akkadian, and potentially in Tibetan), and represents a pronunciation-based rendering (usually not direct IPA). * `include_sc`: If true, allow an explicit script code to be specified. The overall script code for the headword(s) themselves can be specified using {{para|sc}}, and per-headword or per-inflection script codes are specified using the {{cd|<sc:...>}} inline modifier. This should generally be given when a language supports multiple scripts. * `infls`: An inflections structure specifying extra generic parameters that apply to all parts of speech and how to handle them. The format is the same as for the `infls` structure in `pos_functions`. * `augment_params`: A callback function to add extra generic parameters, or modify existing generic parameters in the `params` structure; but in general, extra generic parameters should be added through the `infls` structure instead. This callback should not be used to add part-of-speech-specific parameters; those are handled through the appropriate setting in `pos_functions`. It is passed two single arguments, the `headdata` object and the `params` table to be augmented. See below for extra fields stored in the `process_props` structure of the `headdata` object. This function is called after initializing the `params` table and processing the overall `infls` structure, but just before adding part-of-speech-specific parameters (from `pos_functions`) to `params`. Thus, it can override any generic parameters but may itself be overridden by a part-of-speech-specific parameter. * `augment_headdata`: A callback function to modify the `headdata` object passed to `full_headword()` in [[Module:headword]]. This should not be used to for part-of-speech-specific parameter handling; this is handled through the appropriate setting in `pos_functions`. It is passed a single argument, the `headdata` object, as for `augment_params`; but the `process_props` structure and other fields will be more filled out, as this callback is called later. This can be used, for example, to override the value of a generic setting in `headdata` (e.g. [[Module:uz-headword]] uses this to mark non-Latin terms as variant forms by setting `headdata.var`, being careful not to override a value already set by the user). This function is called after initializing the `headdata` table with all information taken from generic parameters and processing generic parameters specified in the overall `infls` structure, and just before processing the appropriate part-of-speech-specific `infls` structure in `pos_functions` (which in turn is followed by any handler function in `pos_functions`). Thus, it can override any value set during generic parameter processing but may itself be overridden by a part-of-speech-specific parameter or handler. * `force_cat`: If true, add the headword to the appropriate categories even on non-mainspace pages. This can be used for testing category handling in sample template calls on userspace test pages or template documentation pages. It should not be set in production code. * `enable_auto_translit`: If true, turn on automatic transliteration of inflections at a global level (i.e. applying to all inflections). This has no effect on headwords, which are automatically transliterated by default if in a non-Latin script and automatic transliteration is available for the language. You can also set this value for particular inflections in the `insert_inflection()` function. The `headdata` headword data structure has an extra field in it called `process_props` that is specific to the `process_headword()` function, containing various extra properies. As the operation of `process_headword()` proceeds, this object gets filled out with more fields. For example, once parameter parsing happens, the resulting values are available in the `args` field of `process_props`. The following fields are found in `process_props` (note that `poscat`, the canonicalized plural part of speech of the headword being processed, is *not* present here; it's directly on `headdata`): * `namespace`: The name of the current namespace; an empty string for the mainspace. This references the namespace of the actual page and isn't affected by the {{para|pagename}} parameter. * `indexing_poscat`: The canonicalized part of speech of the headword used to index into `pos_functions`. This is the same as `poscat` for specific part-of-speech templates such as {{tl|uz-noun}}, but has the value {"head"} for generic part-of-speech templates such as {{tl|uz-head}}. (Note that `poscat` is directly available on `headdata`.) * `generic_pos_template`: True if a generic POS templates like {{tl|uz-head}} or {{tl|mn-head}} was used. (This is signaled by omitting the invocation parameter {{para|1}} to `process_headword`.) * `lang_in_1`: True if the language code is to be fetched from {{para|1}}. * `pos_param`: The parameter holding the part of speech, if a generic POS tempalte like {{tl|mn-head}} is being processed (i.e. `generic_pos_template` is set). In such a case, it will have the value of {1} or {2}, depending on whether the language code is being fetched from {{para|1}} (see `lang_in_1`). Otherwise it will be {nil}. * `head_param`: The parameter holding the explicit headword. If `numbered_head` was specified (as for Mongolian headword templates), this has the value {1}, {2} or {3} depending on whether the language code is being fetched from {{para|1}} (see `lang_in_1`) and whether a generic POS template like {{tl|mn-head}} is being processed (see `generic_pos_template`). Otherwise, it has the value {"head"}. Also see the `lang` and `numbered_head` properties in the `data` structure sent to `process_headword()`. * `is_suffix`: True if the current term is a suffix. This is set when processing the `suffix`, `nosuffix` and `clitic` parameters; it is always {false} beforehand (i.e. during `augment_params` and processing of the general `infls` structure). * `insert_specs`: This is a table mapping parameter names to the return value of `Headdata:insert_inflection()`, filled out as parameter values are processed. This lets a given parameter processing function in `infls` gain access to the result of calling `insert_inflection()` on previous parameters (which indicates the number of items inserted as well as whether `-` was specified). The `pos_functions` table contains an entry for each part of speech needing special handling, where the key is the canonical plural part of speech (e.g. {"adverbs"} or {"proper nouns"}). The value associated with each key is a table normally containing a field `infls`, listing the extra part-of-speech-specific inflection and other parameters along with how to handle them. The specs in `infls` are used in three ways: # to augment the `params` object passed to the `process()` function in [[Module:parameters]], specifying how to parse the appropriate inflectional parameters; # to specify how to process any inflectional parameters given and insert them into the `headdata` object passed to `full_headword()` in [[Module:headword]]; # to generate appropriate documentation for the parameters and other changes made by the headword template (e.g. inserting categories). Alternatively, you can separately control the augmentation of the `params` object and the procesing of the resulting arguments. This is done by specifying two fields in place of `infls`, named `params` and `func`. `params` is a table containing extra parameters to add to the overall `params` object passed to the `process()` function in [[Module:parameters]]. `func` is a function of two arguments, normally called `data` (the headword data structure `headdata`) and `args` (the processed arguments table). However, this alternative method is not normally recommended because it leads to duplication between the `params and `func` fields and the documentation, which must be manually specified. A simple example, as used to handle pronouns for Turoyo, is { local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"} pos_functions["pronouns"] = { infls = { {2, type = "genders", validate = valid_genders}, {"f", label = "feminine"}, {"pl", label = "plural"}, }, } } The equivalent using `params` and `func` is { local valid_genders = {"m", "f", "m-p", "f-p", "p", "?"} pos_functions["pronouns"] = { params = { [2] = {type = "genders"}, f = true, pl = true, }, func = function(data, args) data:validate_genders(args[2], valid_genders) data.genders = args[2] data:parse_and_insert_inflection("f", "feminine") data:parse_and_insert_inflection("pl", "plural") end } } Note how the version with separate `params and `func` is longer and splits information on the parameters between the two fields. The `params` structure sets extra user-specifiable parameters {{para|2}} for genders (since the headword is in {{para|1}}) as well a {{para|f}} and {{para|pl}}, and the `func` handler processes those parameters. Note how this is done by calling methods on the headword `data` structure. Each such parameter can have multiple comma-separated values, and each value can have inline modifiers attached to it to specify further properties of the value. The `infls` version ends up making the same method calls, but does it for you instead of you having to do it yourself. These methods are implemented through a metatable set on the headword `data` structure, which is removed before calling `full_headword()` in [[Module:headword]]. The methods access extra information related to headword processing (such as the `args` table) that is stored in the `process_props` field of the headword `data` strucuture. This field is also removed prior to calling `full_headword()`. The methods available on the headword `data` structure are as follows. Each one also has its own documentation. * {parse_inflection(field, props)}: Parse value(s) specified in `field` (a user-specified parameter in the `args` table) and return a list of term objects. Optional `props` specifies additional properties controlling the parsing. * {insert_inflection(terms, label, props)}: Insert the terms in `terms` (a list of term objects as returned by `parse_inflection()`) into the `inflections` list in the headword `data` structure, giving the inflection the label as specified in `label`. Optional `props` specifies additional properties controlling the parsing. * {parse_and_insert_inflection(field, label, props)}: A combination of `parse_inflection()` and `insert_inflection()`, if no further processing of the parsed values needs to be done before insertion. * {insert_fixed_inflection(label, props)}: Insert a "fixed" inflection (a label without associated values) into the `inflections` table. An example (from {{tl|mn-noun}} in [[Module:mn-headword]]) is {"hidden-g declension"}, specifying that the noun belongs to the hidden-''g'' declension. * {resolve_special(terms, handle_special, props)}: Resolve "special" indicators as specified by the user in an inflection parameter. A typical example is {"+"}, requesting a default value. `terms` is the list of parsed term objects and `handle_special` is a handler function to process special indicators and convert them to their actual values. * {validate_genders(genders, valid_genders, props)}: Validate that the user-specified genders in `genders` all belong to the list given in `valid_genders`, throwing an error if not. * {insert_category(category)}: Insert a category into the `categories` list in the headword `data` structure. `category` is normally a string naming the category, which will have the language prepended to it and any occurrences of `{plpos}` in the string replaced with the actual plural part of speech. ]==] function export.process_headword(data) local lang, frame, pos_functions, validate_lang, numbered_head, include_tr, include_ts, include_sc, force_cat, enable_auto_translit, infls, augment_params, augment_headdata = data.lang, data.frame, data.pos_functions, data.validate_lang, data.numbered_head, data.include_tr, data.include_ts, data.include_sc, data.force_cat, data.enable_auto_translit, data.infls, data.augment_params, data.augment_headdata local iparams = { [1] = true, def = true, } local iargs = require(parameters_module).process(frame.args, iparams) local parargs = frame:getParent().args local langcode if not lang then error("Internal error: `data.lang` must be specified; either a language object or `true` for a user-specified language") end local lang_in_1 if lang == true then lang_in_1 = true langcode = ine(parargs[1]) if langcode then langcode = mw.text.trim(langcode) lang = require(languages_module).getByCode(langcode, 1, true) if validate_lang then validate_lang(lang) end else error("Language code (see [[WT:Language codes]]) must be specified in 1=") end else langcode = lang:getCode() if validate_lang then error("Internal error: `data.validate_lang` must not be specified if a language code is given in `data.lang`") end end local poscat = iargs[1] local generic_pos_template = not poscat local pos_param if generic_pos_template then pos_param = lang_in_1 and 2 or 1 poscat = ine(parargs[pos_param]) or mw.title.getCurrentTitle().fullText == ("Bản_mẫu:%s-head"):format(langcode) and "interjection" or error(("Part of speech must be specified in %s="):format(pos_param)) poscat = require(headword_module).canonicalize_pos(poscat) end local head_param = numbered_head and (generic_pos_template and lang_in_1 and 3 or (generic_pos_template or lang_in_1) and 2 or 1) or "head" local indexing_poscat = generic_pos_template and "head" or poscat local namespace = mw.loadData(headword_data_module).page.namespace -- Partly initialize headdata now for use in generic infls callbacks. Will be further initialized later after -- processing parameters. local headdata = { lang = lang, langcode = langcode, langfullcode = lang:getFullCode(), langname = lang:getCanonicalName(), langfullname = lang:getFullName(), process_props = { namespace = namespace, data = data, indexing_poscat = indexing_poscat, generic_pos_template = generic_pos_template, lang_in_1 = lang_in_1, pos_param = pos_param, head_param = head_param, is_suffix = false, insert_specs = {}, }, pos_category = poscat, orig_poscat = poscat, -- preserve user-specified poscat in case pos_category is changed to 'suffixes' categories = {}, inflections = {enable_auto_translit = enable_auto_translit}, force_cat_output = force_cat, no_redundant_head_cat = true, } setmetatable(headdata, {__index = Headdata}) local params = { [head_param] = {template_default = iargs.def}, head2 = {replaced_by = false, instead = ("use comma-separated |%s="):format(head_param)}, id = true, sort = true, cat = true, nolink = boolean_param, nolinkhead = {type = "boolean", alias_of = "nolink"}, suffix = boolean_param, nosuffix = boolean_param, clitic = true, addlpos = true, var = {type = "boolean", allow = {"both"}}, json = boolean_param, pagename = true, -- for testing } if include_sc then params.sc = {type = "script"} end if include_tr then params.tr = true params.tr2 = {replaced_by = false, instead = "use comma-separated |tr= or <tr:...> inline modifier on head"} end if include_ts then params.ts = true params.ts2 = {replaced_by = false, instead = "use comma-separated |ts= or <ts:...> inline modifier on head"} end if lang_in_1 then params[1] = {required = true} -- required but ignored as already processed above end if generic_pos_template then params[pos_param] = {required = true} -- required but ignored as already processed above end local function resolve_prop(prop, ...) if type(prop) == "function" then prop = prop(headdata, ...) end return prop end local function augment_params_from_infls(infls) infls = resolve_prop(infls) for _, infl in ipairs(infls) do local function interr(txt) error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl))) end local param = infl[1] if param then param = resolve_prop(param) if type(param) ~= "string" and type(param) ~= "number" then interr(("Parameter name %s must be a string or number"):format(dump(param))) end -- We handle defaults as well as validation ourselves. local typ = resolve_prop(infl.type) or "string" if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then -- FIXME: Handle more types. interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format( dump(typ))) end params[param] = {type = typ, required = resolve_prop(infl.required), template_default = resolve_prop(infl.template_default)} if typ ~= "boolean" and type(param) == "string" then params[param .. "2"] = {replaced_by = false, instead = ("use comma-separated |%s="):format(param)} end end end end if infls then augment_params_from_infls(infls) end if augment_params then augment_params(headdata, params) end if pos_functions[indexing_poscat] then local pos_infls = pos_functions[indexing_poscat].infls if pos_infls then augment_params_from_infls(pos_infls) end local pos_params = pos_functions[indexing_poscat].params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData(headword_data_module).pagename local sc = args.sc or lang:findBestScript(pagename) headdata.pagename = pagename headdata.process_props.args = args headdata.sc = sc headdata.id = args.id headdata.sort = args.sort -- No redundant script cat unless the user explicitly gave sc= headdata.no_script_code_cat = not args.sc headdata.var = args.var local extra_term_mods = {} if include_tr then insert(extra_term_mods, "tr") end if include_ts then insert(extra_term_mods, "ts") end if include_sc then insert(extra_term_mods, "sc") end if not extra_term_mods[1] then extra_term_mods = nil end local trs = args.tr and split_on_comma(args.tr) or {} local num_trs = #trs local tss = args.ts and split_on_comma(args.ts) or {} local num_tss = #tss local heads = args[head_param] and export.parse_term_with_modifiers { val = args[head_param], paramname = head_param, splitchar = ",", is_head = true, include_mods = extra_term_mods, } or {} local num_heads = #heads if num_heads > 0 and num_trs > 0 and num_heads ~= num_trs then error(("%s head%s specified explicitly but %s translit%s; they must match; use '+' to stand for the default head (the pagename) or default automatic translit and '-' to stand for no translit"):format( num_heads, num_heads > 1 and "s" or "", num_trs, num_trs > 1 and "s" or "")) end if num_heads > 0 and num_tss > 0 and num_heads ~= num_tss then error(("%s head%s specified explicitly but %s transcription%s; they must match; use '+' to stand for the default head (the pagename) and '-' to stand for no transcription"):format( num_heads, num_heads > 1 and "s" or "", num_tss, num_tss > 1 and "s" or "")) end if num_trs > 0 and num_tss > 0 and num_trs ~= num_tss then error(("%s translit%s specified explicitly but %s transcription%s; they must match; use '+' to stand for default automatic translit and '-' to stand for no translit or transcription"):format( num_trs, num_trs > 1 and "s" or "", num_tss, num_tss > 1 and "s" or "")) end -- Be careful here not to overwrite user_specified_heads if it's empty so we can later check user_specified_heads -- to see if the user provided any heads. local max_tr_ts = math.max(num_trs, num_tss) if num_heads == 0 and max_tr_ts > 0 then heads = {} for i = 1, max_tr_ts do heads[i] = {term = "+"} end end if not heads[1] then heads = {{term = "+"}} end for i, headobj in ipairs(heads) do if headobj.tr and trs[i] then if headobj.tr ~= trs[i] then error(("Saw two different translits '%s' and '%s' for head #%s"):format( headobj.tr, trs[i], i)) end else headobj.tr = headobj.tr or trs[i] end if headobj.tr == "+" then headobj.tr = nil end if headobj.ts and tss[i] then if headobj.ts ~= tss[i] then error(("Saw two different transcriptions '%s' and '%s' for head #%s"):format( headobj.ts, tss[i], i)) end else headobj.ts = headobj.ts or tss[i] end if headobj.ts == "-" then headobj.ts = nil end if headobj.term == "+" then headobj.term = args.nolink and pagename or nil if headobj.term and namespace == "Reconstruction" then headobj.term = "*" .. headobj.term end end end headdata.heads = heads local function pagename_is_suffix() if sc:getCode() == "Latn" then -- shortcut Latin terms to avoid unnecessarily loading [[Module:affix]] return pagename:find("^%-") and not pagename:find("%-$") else local affix_type, _, _, _ = require(affix_module).parse_term_for_affixes(pagename, lang, sc) return affix_type == "Hậu tố" end end local clitic_label if args.clitic then clitic_label = require(yesno_module)(args.clitic, args.clitic) end if clitic_label == true then clitic_label = "clitic" end if clitic_label then headdata:insert_category("clitics") headdata:insert_fixed_inflection(clitic_label) elseif args.suffix or ( not args.nosuffix and pagename_is_suffix() and poscat ~= "Hậu tố" and poscat ~= "Biến thể hình thái hậu tố" ) then headdata.process_props.is_suffix = true local function handle_suffix_pos(pos, is_first) local form_type = pos:match("^Biến thể hình thái (.*)$") local actual_poscat if form_type then headdata:insert_category(("%s suffix forms"):format(form_type)) headdata:insert_fixed_inflection(form_type .. " suffix form") else local singular_pos = require(en_utilities_module).singularize(pos) headdata:insert_category(("%s-forming suffixes"):format(singular_pos)) headdata:insert_fixed_inflection(singular_pos .. "-forming suffix") end local postype = require(headword_module).pos_lemma_or_nonlemma(pos) if not postype then error(("Unrecognized canonicalized part of speech '%s' in addlpos=, cannot determine whether lemma or non-lemma form"):format( pos )) end actual_poscat = postype == "Mục từ" and "Hậu tố" or "Biến thể hình thái hậu tố" if is_first then headdata.pos_category = actual_poscat elseif headdata.pos_category ~= actual_poscat then error(("Cannot mix suffixes and suffix forms using addlpos=; '%s' is a %s while overall POS '%s' is a %s; use separate POS headers for the two"): format(pos, actual_poscat, poscat, headdata.pos_category)) end end handle_suffix_pos(poscat, true) if args.addlpos then for _, addlpos in ipairs(split(args.addlpos, "%s*,%s*")) do addlpos = require(headword_module).canonicalize_pos(addlpos) handle_suffix_pos(addlpos, false) end end end if args.cat then for _, cat in ipairs(split_on_comma(args.cat)) do headdata:insert_category(cat) end end local function augment_headdata_from_infls(infls) infls = resolve_prop(infls) for _, infl in ipairs(infls) do local function interr(txt) error(("Internal error: %s (coming from infls spec %s)"):format(txt, dump(infl))) end local function process_labelobjs(labelobjs, originating_term, handle_labelobj) if labelobjs == nil then return end if type(labelobjs) ~= "string" and type(labelobjs) ~= "table" then interr(("Wrong type '%s' for label object(s) %s, expected string or table"):format( type(labelobjs), dump(labelobjs) )) end if type(labelobjs) == "string" or type(labelobjs) == "table" and not labelobjs[1] then labelobjs = {labelobjs} end for _, labelobj in ipairs(labelobjs) do local label, termobj if type(labelobj) == "string" then label = labelobj termobj = originating_term elseif type(labelobj) ~= "table" then interr(("Wrong type '%s' for label object %s, expected string or table"):format( type(labelobj), dump(labelobj) )) label = labelobj.term if type(label) ~= "string" then interr(("Wrong type '%s' for label %s from label object %s, expected string"):format( type(label), dump(label), dump(labelobj) )) end termobj = labelobj end handle_labelobj(label, termobj) end end local param = infl[1] if param then local vals -- Fetch the param and make sure it's a string or number. param = resolve_prop(param) if type(param) ~= "string" and type(param) ~= "number" then interr(("Parameter name %s must be a string or number"):format(dump(param))) end -- Fetch the type and validate. local typ = resolve_prop(infl.type) if typ == nil then typ = "string" end if typ ~= "genders" and typ ~= "boolean" and typ ~= "string" then -- FIXME: Handle more types. interr(('Unrecognized type %s; can only currently handle "genders", "boolean" and "string" (the default)'):format( dump(typ))) end -- Fetch the value(s). if typ == "genders" or typ == "boolean" then vals = args[param] elseif typ == "string" then local parse_inflection_props = resolve_prop(infl.parse_inflection_props) local include_mods = resolve_prop(infl.include_mods) local no_augment_include_mods = resolve_prop(infl.no_augment_include_mods) if include_mods ~= nil or no_augment_include_mods ~= nil then if parse_inflection_props == nil then parse_inflection_props = {} else parse_inflection_props = shallow_copy(parse_inflection_props) end if include_mods ~= nil then parse_inflection_props.include_mods = include_mods end if no_augment_include_mods ~= nil then parse_inflection_props.no_augment_include_mods = no_augment_include_mods end end vals = headdata:parse_inflection(param, parse_inflection_props) -- Convert an empty list to nil for consistent checking below. if not vals[1] then vals = nil end else interr(("Unrecognized type '%s"):format(typ)) end -- If value(s) nil, fetch the default. if vals == nil and infl.default ~= nil then local default = resolve_prop(infl.default) if typ == "genders" then vals = export.canonicalize_termobj_list(default, "spec", "default") elseif typ == "boolean" then vals = default elseif typ == "string" then vals = export.canonicalize_termobj_list(default, "term", "default") else interr(("Unrecognized type '%s"):format(typ)) end end -- Resolve "special" values (special signals a string values, such as requesting the default with "+"). if vals ~= nil and infl.resolve_special then if typ ~= "string" then interr(("Cannot specify resolve_special= for type %s"):format(dump(typ))) end local resolve_special_props = resolve_prop(infl.resolve_special_props, vals) if infl.is_special ~= nil then if resolve_special_props == nil then resolve_special_props = {} else resolve_special_props = shallow_copy(resolve_special_props) end resolve_special_props.is_special = infl.is_special end vals = headdata:resolve_special(vals, infl.resolve_special, resolve_special_props) end -- Validate the value(s). if vals ~= nil and infl.validate ~= nil then if typ == "boolean" then interr('Cannot specify validate= when type is "boolean"') elseif type(infl.validate) == "function" then infl.validate(headdata, vals) elseif typ == "genders" then headdata:validate_genders(vals, infl.validate) elseif typ == "string" then validate_items { items = vals, field = "term", valid_items = infl.validate, item_type = ("values in |%s="):format(param), } else interr(("Unrecognized type '%s"):format(typ)) end end -- Run the process_after_parse handler, if it exists. if vals ~= nil and infl.process_after_parse ~= nil then local intentionally_nil vals, intentionally_nil = infl.process_after_parse(headdata, vals) if vals == nil and not intentionally_nil then interr("If you return nil from process_after_parse, you must return a second non-nil return " .. "value to indicate that the nil return value was intentional") end end -- "Implement" the values, if non-falsy (i.e. we don't want to fire on boolean false or empty list). -- If a fixed label is specified, insert it. Then, depending on the type, attach the values to a label -- as an inflection, set the `genders` field, or do nothing if boolean (throwing an error if there was -- no fixed label). if vals == true or type(vals) == "table" and vals[1] then if infl.fixed_label and infl.all_fixed_label then interr("Cannot specify both fixed_label= and all_fixed_label=; specify one or the other") end local function check_fixed_label_references_val(label) if type(label) == "table" and label[1] then for _, lab in ipairs(label) do if check_fixed_label_references_val(lab) then return true end end return false end if type(label) == "table" then if not label.term then interr(("Fixed label structure %s does not have a value for `.term`"):format(dump(label))) end label = label.term end if type(label) ~= "string" then interr(("Wrong type for fixed label %s, should be string"):format(type(label))) end return not not label:find("{val}") end local fixed_label = infl.fixed_label local all_fixed_label = infl.all_fixed_label -- If the value being processed is boolean, there's only one value so treat a fixed_label as an -- all_fixed_label and output only once; likewise if the caller specified a fixed_label without -- {val} in it. if fixed_label and (typ == "boolean" or type(fixed_label) ~= "function" and not check_fixed_label_references_val(fixed_label)) then all_fixed_label = fixed_label fixed_label = nil end local inserted_fixed_label if fixed_label then if typ == "boolean" then interr("Boolean fixed_label values should have been converted to all_fixed_label") end for _, valobj in ipairs(vals) do local labelobjs = resolve_prop(fixed_label, valobj) process_labelobjs(labelobjs, valobj, function(label, termobj) if label:find("{val}") then if typ ~= "string" then interr(('Cannot specify {val} in fixed_label %s when type is "%s"'):format(dump(label), typ)) end label = label:gsub("{val}", replacement_escape(valobj.term)) end headdata:insert_fixed_inflection(label, { originating_term = termobj }) inserted_fixed_label = true end) end elseif all_fixed_label then local labelobjs = resolve_prop(all_fixed_label, vals) process_labelobjs(labelobjs, nil, function(label, termobj) if label:find("{vals}") then if typ ~= "string" then interr(('Cannot specify {vals} in all_fixed_label %s when type is "%s"'):format(dump(label), typ)) end local formatted_labels = {} for _, valobj in ipairs(vals) do insert(formatted_labels, add_decorations(valobj.term, valobj, lang)) end label = label:gsub("{vals}", replacement_escape(serial_comma_join(formatted_labels))) end headdata:insert_fixed_inflection(label, termobj) inserted_fixed_label = true end) end local inserted_vals if infl.label ~= nil then if typ ~= "string" then interr(("label=%s can only be specified for type 'string', not '%s'"):format( dump(infl.label), typ )) end local label = resolve_prop(infl.label, vals) if label ~= nil then local insert_inflection_props = resolve_prop(infl.insert_inflection_props, vals) local no_auto_cats = resolve_prop(infl.no_auto_cats, vals) if no_auto_cats ~= nil then if insert_inflection_props == nil then insert_inflection_props = {} else insert_inflection_props = shallow_copy(insert_inflection_props) end insert_inflection_props.no_auto_cats = infl.no_auto_cats end local insert_spec = headdata:insert_inflection(vals, label, insert_inflection_props) headdata.process_props.insert_specs[param] = insert_spec inserted_vals = true end end if typ == "genders" then headdata.genders = vals end local inserted_cat if infl.cat then local allcats = {} for _, valobj in ipairs(vals) do local cats = resolve_prop(infl.cat, valobj) if type(cats) == "string" then cats = {cats} end if cats ~= nil then for _, cat in ipairs(cats) do if cat:find("{val}") then cat = cat:gsub("{val}", replacement_escape(valobj.term)) end insert_if_not(allcats, cat) end end end for _, cat in ipairs(allcats) do headdata:insert_category(cat) inserted_cat = true end end if typ == "boolean" then if not inserted_fixed_label and not inserted_cat then interr(("User set boolean setting for %s= but no fixed label added and no category " .. "inserted; if you took action in process_after_parse(), make sure to return " .. "`nil, true`"):format(param)) end elseif typ == "string" then if not inserted_vals and not inserted_fixed_label then interr(("User set value(s) %s for %s= but no inflection inserted and no fixed label " .. "added; if you took action in process_after_parse(), make sure to return " .. "`nil, true`"):format(dump(vals), param)) end end end else -- no param specified if infl.label or infl.all_fixed_label then interr("Cannot have label= or all_fixed_label= without specifying a param") end if infl.fixed_label then local labelobjs = resolve_prop(infl.fixed_label) process_labelobjs(labelobjs, nil, function(label, termobj) if label:find("{val}") then interr("Cannot specify {val} in a fixed_label= value without specifying a param") end headdata:insert_fixed_inflection(label, { originating_term = termobj }) end) end if infl.cat then local cats = resolve_prop(infl.cat) if type(cats) == "string" then cats = {cats} end if cats ~= nil then for _, cat in ipairs(cats) do if cat:find("{val}") then interr("Cannot specify {val} in a cat= value without specifying a param") end headdata:insert_category(cat) end end end end end end if infls then augment_headdata_from_infls(infls) end if augment_headdata then augment_headdata(headdata, args) end if pos_functions[indexing_poscat] then local pos_infls = pos_functions[indexing_poscat].infls if pos_infls then augment_headdata_from_infls(pos_infls) end local func = pos_functions[indexing_poscat].func if func then func(headdata, args) end end setmetatable(headdata, nil) if args.json then return require("Module:JSON").toJSON(headdata) end headdata.process_props = nil return require(headword_module).full_headword(headdata) end return export 45nj5ms31ax8wgv0m52o231qsztl4ot Mô đun:labels 828 271307 2566494 2565791 2026-09-25T15:49:10Z TheHighFighter2 42988 Tách ra thành regional_categories và regional_categories2; regional_categories dùng cho cấu trúc [tên ngôn ngữ + tên label (VD: Tiếng Ba Tư Iran)], còn regional_categories2 dùng cho [tên label + tên ngôn ngữ (VD: Vùng ngôn ngữ tiếng ...)] 2566494 Scribunto text/plain local export = {} export.lang_specific_data_list_module = "Module:labels/data/lang" export.lang_specific_data_modules_prefix = "Module:labels/data/lang/" local load_module = "Module:load" local parse_utilities_module = "Module:parse utilities" local string_utilities_module = "Module:string utilities" local utilities_module = "Module:utilities" local insert = table.insert local require_when_needed = require("Module:require when needed") local unpack = unpack or table.unpack -- Lua 5.2 compatibility local dump = mw.dumpObject local m_lang_specific_data = mw.loadData(export.lang_specific_data_list_module) local m_table = require_when_needed("Module:table") --[==[ intro: Labels go through several stages of processing to get from the original (raw) label specified in the Wikicode to the final (formatted) label displayed to the user. The following terminology will help keep things straight: * The "raw label" is the label specified in the Wikicode. * The "non-canonical label" is the label extracted from the raw label, used for looking up in the label modules in order to fetch the associated label data structure and determine the canonical form of the label. Normally this is the same as the raw label, but it will be different if the raw label is of the form `!<var>label</var>` (e.g. `!Australian`) `<var>label</var>!<var>display</var>` (e.g. `Southern US!Southern`). The former syntax indicates that the label should display as-is instead of in its canonical form (which in the example given is `Australia`), and the latter syntax indicates that the label should display in the form specified after the exclamation point. * The "canonical label" is the result of applying alias resolution to the non-canonical label. Normally, the canonical label rather than the non-canonical label is what is shown to the user. * The "display form of the label" is what is shown to the user, not considering links and HTML that may wrap the display form to get the formatted form of the label. The display form comes from the `.display` field of the module label data for the label; if no such field exists in the label data, it is normally the canonical label. However, if the display override exists (see below), it takes precedence over the `.display` field or canonical label when determining the display form of the label. * The "display override", if specified, overrides all other means of determining the display form of the label. It is specified in two circumstances, i.e. in the `!<var>label</var>` and `<var>label</var>!<var>display</var>` raw label formats (i.e. in the same cirumstances where the raw label and non-canonical label are different). * The "formatted form of the label" is the final form of the label shown directly to the user. It generally appears to the user as the display form of the label, but in the Wikicode, the formatted form may wrap the display form with a link to Wikipedia, the Wiktionary glossary or another Wiktionary entry, and that link in turn may be wrapped in an HTML span with a "deprecated" CSS class attached, causing the label to display differently (to indicate that it is deprecated). ]==] -- for testing local force_cat = false local m_headword_data = mw.loadData("Module:headword/data") local SUBPAGENAME = m_headword_data.pagename -- Disable tracking on heavy pages to save time. local pages_where_tracking_is_disabled = m_headword_data.large_pages -- Add tracking category for PAGE. The tracking category linked to is [[Wiktionary:Tracking/labels/PAGE]]. -- We also add to [[Wiktionary:Tracking/labels/PAGE/LANGCODE]] and [[Wiktionary:Tracking/labels/PAGE/MODE]] if -- LANGCODE and/or MODE given. local function track(page, langcode, mode) if pages_where_tracking_is_disabled[SUBPAGENAME] then return true end -- avoid including links in pages (may cause error) page = page:gsub("%[", "("):gsub("%]", ")"):gsub("|", "!") require("Module:debug/track")("labels/" .. page) if langcode then require("Module:debug/track")("labels/" .. page .. "/" .. langcode) end if mode then require("Module:debug/track")("labels/" .. page .. "/" .. mode) end -- We don't currently add a tracking label for both langcode and mode to reduce the total number of labels, to -- save some memory. return true end local function ucfirst(txt) return mw.getContentLanguage():ucfirst(txt) end local mode_to_outer_class = { ["label"] = "usage-label-sense", ["term-label"] = "usage-label-term", ["accent"] = "usage-label-accent", ["form-of"] = "usage-label-form-of", } local mode_to_property_prefix = { ["label"] = false, ["term-label"] = false, -- handled specially ["accent"] = "accent_", ["form-of"] = "form_of_", } local function validate_mode(mode) mode = mode or "label" if not mode_to_outer_class[mode] then local allowed_values = {} for key, _ in pairs(mode_to_outer_class) do insert(allowed_values, "'" .. key .. "'") end table.sort(allowed_values) error(("Invalid value '%s' for `mode`; should be one of %s"):format(mode, table.concat(allowed_values, ", "))) end return mode end local function getprop(labdata, mode, prop) local mode_prefix = mode_to_property_prefix[mode] return mode_prefix and labdata[mode_prefix .. prop] or labdata[prop] end local function check_type(label, lang, prop, value, expected_types) if value == nil or expected_types == nil then return value end if type(expected_types) ~= "table" then expected_types = {expected_types} end local valtype = type(value) local matches = false for _, expected_type in ipairs(expected_types) do if type(expected_type) == "string" then if valtype == expected_type then matches = true break end elseif value == expected_type then matches = true break end end if not matches then local function join_untagged_or(elements) return m_table.serialCommaJoin(elements, {conj = "or", dontTag = true}) end local quoted_types = {} local quoted_values = {} for _, expected_type in ipairs(expected_types) do if type(expected_type) == "string" then insert(quoted_types, "'" .. expected_type .. "'") else insert(quoted_values, "'" .. dump(expected_type) .. "'") end end local possible_matches = {} if quoted_types[1] then insert(possible_matches, ("be of type%s %s"):format( quoted_types[2] and "s" or "", join_untagged_or(quoted_types))) end if quoted_values[1] then insert(possible_matches, ("have the value%s %s"):format( quoted_values[2] and "s" or "", join_untagged_or(quoted_values))) end error(("Internal error: For label '%s', langcode '%s', property '%s' should %s but is of type '%s' with value %s"):format( label, lang and lang:getCode() or "UNKNOWN", prop, join_untagged_or(possible_matches), valtype, dump(value))) end end -- HACK! For languages in any of the given families, check the specified-language Wikipedia for appropriate -- Wikipedia articles for the language in question (esp. useful for obscure etymology-only languages that may not -- have English articles for them, like many Chinese lects). local families_to_wikipedia_languages = { {"zhx", "zh"}, {"sem-arb", "ar"}, } --[==[ Given language `lang` (a full language, etymology-language or family), fetch a list of Wikimedia languages to check when converting a Wikidata item to a Wikipedia article. English is always first, followed by the Wikimedia language code(s) of `lang` if `lang` is a language (which may or may not be the same as `lang`'s Wiktionary code), followed by the macrolanguage of `lang` for certain languages and families (currently, only languages and families in the Chinese and Arabic families). If `lang` is nil, only return English. Note that the same code may occur more than once in the list. This is exported because it's also used by [[Module:category tree/poscatboiler/data/language varieties]]. ]==] function export.get_langs_to_extract_wikipedia_articles_from_wikidata(lang) local wikipedia_langs = {} insert(wikipedia_langs, "vi") if lang then local article_lang = lang while article_lang do if article_lang:hasType("language") then local wmcodes = article_lang:getWikimediaLanguageCodes() for _, wmcode in ipairs(wmcodes) do insert(wikipedia_langs, wmcode) end end article_lang = article_lang:getParent() end for _, family_to_wp_lang in ipairs(families_to_wikipedia_languages) do local family, wp_lang = unpack(family_to_wp_lang) if lang:inFamily(family) then insert(wikipedia_langs, wp_lang) end end end return wikipedia_langs end --[==[ Fetch the categories to add to a page, given that the label whose canonical form is `canon_label` with language `lang` has been seen. `labdata` is the label data structure for `label`, fetched from the appropriate submodule. `mode` specifies how the label was invoked (see {get_label_info()} for more information). The return value is a list of the actual categories, unless `for_doc` is specified, in which case the categories returned are marked up for display on a documentation page. If `for_doc` is given, `lang` may be nil to format the categories in a language-independent fashion; otherwise, it must be specified. If `category_types` is specified, it should be a set object (i.e. with category types as keys and {true} as values), and only categories of the specified types will be returned. ]==] function export.fetch_categories(canon_label, labdata, lang, mode, for_doc, category_types) local categories = {} mode = validate_mode(mode) local langcode, canonical_name if lang then langcode = lang:getFullCode() canonical_name = lang:getFullName() elseif for_doc then langcode = "<var>[langcode]</var>" canonical_name = "<var>[language name]</var>" else error("Internal error: Must specify `lang` unless `for_doc` is given") end local function labprop(prop, expected_types) local retval = getprop(labdata, mode, prop) check_type(canon_label, lang, prop, retval, expected_types) return retval end local empty_list = {} local function get_cats(cat_type) if category_types and not category_types[cat_type] then return empty_list end local cats = labprop(cat_type) if not cats then return empty_list end if type(cats) ~= "table" then return {cats} end return cats end local topical_categories = get_cats("topical_categories") local sense_categories = get_cats("sense_categories") local pos_categories = get_cats("pos_categories") local regional_categories = get_cats("regional_categories") local regional_categories2 = get_cats("regional_categories2") local plain_categories = get_cats("plain_categories") local function insert_cat(cat, sense_cat) if for_doc then cat = "<code>" .. cat .. "</code>" if sense_cat then if mode == "term-label" then cat = cat .. " (using {{tl|tlb}})" else cat = cat .. " (using {{tl|lb}} or form-of template)" end cat = mw.getCurrentFrame():preprocess(cat) end end insert(categories, cat) end for _, cat in ipairs(topical_categories) do insert_cat(langcode .. ":" .. (cat == true and ucfirst(canon_label) or cat)) end for _, cat in ipairs(sense_categories) do if cat == true then cat = canon_label end cat = mode == "term-label" and cat .. " terms" or "mang nghĩa " .. cat insert_cat("Từ " .. cat .. " " .. canonical_name) end for _, cat in ipairs(pos_categories) do insert_cat((cat == true and canon_label or cat) .. " " .. canonical_name) end for _, cat in ipairs(regional_categories) do insert_cat(ucfirst(canonical_name) .. " " .. (cat == true and ucfirst(canon_label) or cat)) end for _, cat in ipairs(regional_categories2) do insert_cat(ucfirst(cat == true and ucfirst(canon_label) or cat) .. " " .. canonical_name) end for _, cat in ipairs(plain_categories) do insert_cat(cat == true and ucfirst(canon_label) or cat) end return categories end --[==[ Return the list of all labels data modules for a label whose language is `lang`. The return value is a list of module names, with overriding modules earlier in the list (that is, if a label occurs in two modules in the list, the earlier-listed module takes precedence). If `lang` is nil, only return non-language-specific submodules. ]==] function export.get_submodules(lang) local submodules = { "Module:labels/data", "Module:labels/data/qualifiers", "Module:labels/data/regional", "Module:labels/data/topical", } if not lang then return submodules end -- get language-specific labels from data module local langcode = lang:getFullCode() if m_lang_specific_data.langs_with_lang_specific_modules[langcode] then -- prefer per-language label in order to pick subvariety labels over regional ones insert(submodules, 1, export.lang_specific_data_modules_prefix .. langcode) end return submodules end --[==[ Return the formatted form of a label `label` (which should be the canonical form of the label; see comment at top), given (a) the label data structure `labdata` from one of the data modules; (b) the language object `lang` of the language being processed, or nil for no language; (c) `deprecated` (true if the label is deprecated, otherwise the deprecation information is taken from `labdata`); (d) `override_display` (if specified, override the display form of the label with the specified string, instead of any value in `labdata.display` or `labdata.special_display` or the canonical label in `label` itself); (e) `mode` (same as `data.mode` passed to {get_label_info()}). Returns two values: the formatted label form and a boolean indicating whether the label is deprecated. '''NOTE: Under normal circumstances, do not use this.''' Instead, use {get_label_info()}, which searches all the data modules for a given label and handles other complications. ]==] function export.format_label(label, labdata, lang, deprecated, override_display, mode) local formatted_label mode = validate_mode(mode) local function labprop(prop, expected_types) local retval = getprop(labdata, mode, prop) check_type(label, lang, prop, retval, expected_types) return retval end deprecated = deprecated or labprop("deprecated") if not override_display and labprop("special_display") then local function add_language_name(str) if str == "canonical_name" then if lang then return lang:getFullName() else return "<code><var>[language name]</var></code>" end else return "" end end formatted_label = labprop("special_display", "string"):gsub("<(.-)>", add_language_name) else --[=[ We proceed as follows: 1. The display form comes from either (a) the `override_display` variable if set (this happens when the user uses a label like '!British'); (b) the `display` property, if set; or (c) the label iself. 2. If the display form contains a link, use it directly and ignore the other display-related settings. (NOTE: Settings `Wikipedia` and `Wikidata` may still be used on the category page itself, by the category tree code.) 3. Otherwise, use one of the other display-related settings, in the following order: `glossary` > `Wiktionary` > `Wikipedia` > `Wikidata`. Specifically: a. If any of the values is equal to `true`, that is equivalent to specifying a string consisting of the canonical label. b. If `glossary` is set, it specifies the anchor in [[Appendix:Glossary]]. c. If `Wiktionary` is set, it specifies an arbitrary Wiktionary page or page + anchor (e.g. a separate Appendix entry). d. If `Wikipedia` is set, it specifies an arbitrary Wikipedia article, or a list of such items (in this case, we select the first one, but the category tree uses all of them). e. If `Wikidata` is set, it specifies an arbitrary Wikidata item to retrieve a Wikipedia article from, or a list of such items (in this case, we select the first one, but the category tree uses all of them). If the item is of the form `wmcode:id`, the Wikipedia article corresponding to `id` in the `wmcode`-language Wikipedia is fetched if available. Otherwise, the English-language Wikipedia article corresponding to `id` is retrieved if available, falling back to the Wikimedia language(s) corresponding to `lang` and then (in certain cases) to the macrolanguage that `lang` is part of. Note that if `mode` is specified, prefixed properties (e.g. `accent_display` for `mode` == "accent", `form_display` for `mode` == "form") are checked before the bare equivalent (e.g. `display`). ]=] local display = override_display or labprop("display", "string") or label -- There are several 'Foo spelling' labels specially designed for use in the |from= param in -- {{alternative form of}}, {{standard spelling of}} and the like. Often the display includes the word -- "spelling" at the end (e.g. if it's defaulted), which is useful when the label is used with {{tl|lb}} or -- {{tl|tlb}}; but it causes redundancy when used with the form-of templates, which add the word "form", -- "spelling", "standard spelling", etc. after the label. if mode == "form-of" then display = display:gsub(" spelling$", "") end if display:find("%[%[") then formatted_label = display else local glossary = labprop("glossary", {"string", true}) local Wiktionary = labprop("Wiktionary", {"string", true}) local Wikipedia = labprop("Wikipedia", {"string", true, "table"}) local Wikidata = labprop("Wikidata", {"string", true, "table"}) if glossary then local glossary_entry = glossary == true and label or glossary formatted_label = "[[Phụ lục:Từ điển thuật ngữ#" .. glossary_entry .. "|" .. display .. "]]" elseif Wiktionary then local Wiktionary_entry = Wiktionary == true and label or Wiktionary if Wiktionary == display then formatted_label = "[[" .. display .. "]]" else formatted_label = "[[" .. Wiktionary_entry .. "|" .. display .. "]]" end elseif Wikipedia then if type(Wikipedia) == "table" then Wikipedia = Wikipedia[1] end local Wikipedia_entry = Wikipedia == true and label or Wikipedia formatted_label = "[[w:" .. Wikipedia_entry .. "|" .. display .. "]]" elseif Wikidata then if not mw.wikibase then error(("Unable to retrieve data from Wikidata ID for label '%s'; `mw.wikibase` not defined" ):format(label)) end local function make_formatted_label(wmcode, id) local article = mw.wikibase.sitelink(id, wmcode .. "wiki") if article then local link = wmcode == "vi" and "w:" .. article or "w:" .. wmcode .. ":" .. article return ("[[%s|%s]]"):format(link, display) else return nil end end if type(Wikidata) == "table" then Wikidata = Wikidata[1] end local wmcode, id = Wikidata:match("^(.*):(.*)$") if wmcode then formatted_label = make_formatted_label(wmcode, id) else local langs_to_check = export.get_langs_to_extract_wikipedia_articles_from_wikidata(lang) for _, wmcode in ipairs(langs_to_check) do formatted_label = make_formatted_label(wmcode, Wikidata) if formatted_label then break end end end formatted_label = formatted_label or display else formatted_label = display end end end if deprecated then formatted_label = '<span class="deprecated-label">' .. formatted_label .. '</span>' end return formatted_label, deprecated end --[==[ Return information on a label. On input `data` is an object with the following fields: * `label`: The raw label to return information on. * `lang`: The language of the label. Must be specified unless `for_doc` is given. * `mode`: How the label was invoked. One of the following: ** {nil} or {"label"}: invoked through {{tl|lb}} or another template whose labels in the same fashion, e.g. {{tl|alt}}, {{tl|quote}} or {{tl|syn}}; ** {"term-label"}: invoked through {{tl|tlb}}; ** {"accent"}: invoked through {{tl|a}} or the {{para|a}} or {{para|aa}} parameters of other pronunciation templates, such as {{tl|IPA}}, {{tl|rhymes}} or {{tl|homophones}}; ** {"form-of"}: invoked through {{tl|alt form}}, {{tl|standard spelling of}} or other form-of template. This changes the display and/or categorization of a minority of labels. (The majority work the same for all modes.) * `for_doc`: Data is being fetched for documentation purposes. This causes the raw categories returned in `categories` to be formatted for documentation display. * `nocat`: If true, don't add the label to any categories. * `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion pages). * `notrack`: Disable all tracking for this label. * `sort`: Sort key for categorization. * `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according to the display form of the label, so if two labels have the same display form, the second one won't be displayed (but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen. The return value is an object with the following fields: * `raw_text`: If specified, the object does not describe a label but simply raw text surrounding labels. This occurs when double angle bracket (<<...>>) notation is used. {get_label_info()} does not currently return objects with this field set, but {process_raw_labels()} does. The value is {"begin"} (this is the first raw text portion derived from a double angle bracket spec, provided there are at least two raw text portions); {"end"} (this is the last raw text portion derived from a double angle bracket spec, provided there are at least two portions); {"middle"} (this is neither the first nor the last raw text portion); or {"only"} (this is a raw text portion standing by itself). The particular value determines the handling of commas and spaces on one or both sides of the raw text. If this field is specified, only the `label` field (containing the actual raw text) and the `category` field (containing an empty list) are set; all other fields are {nil}. * `raw_label`: The raw label that was passed in. * `non_canonical`: The label prior to canonicalization (i.e. alias resolution). Usually this is the same as `raw_label`, but if the raw label was preceded by an exclamation point (meaning "display the raw label as-is"), this field will contain the label stripped of the exclamation point, and if the raw label is of the form `<var>label</var>!<var>display</var>` (meaning "display the label in the specified form"), this field will contain the label before the exclamation point. * `canonical`: If the label in `non_canonical` is an alias, this contains the canonical name of the label; otherwise it will be {nil}. * `override_display`: If specified, this contains a string that overrides the normal display form of the label. The display form of a label is the `.display` field of the label data if present, and otherwise is normally the canonical form of the label (i.e. after alias resolution). (This is not the same as the formatted form of the label, found in `label`, which is the final form shown to the user and includes links to Wikipedia, the glossary, etc. as well as an HTML wrapper if the label is deprecated.) If `override_display` is specified, however, this is used in place of the normal display form of the label. This currently happens in two circumstances: (1) the label was preceded by ! to indicate that the raw label should be displayed rather than the canonical form; (2) the label was given in the form `<var>label</var>!<var>display</var>` (meaning "display the label in the specified `<var>display</var>` form"). * `label`: The formatted form of the label. This is what is actually shown to the user. If the label is recognized (found in some module), this will typically be in the form of a link. * `categories`: A list of the categories to add the label to; an empty list if `nocat` was specified. * `formatted_categories`: A string containing the formatted categories; {nil} if `nocat` or `for_doc` was specified, or if `categories` is empty. Currently will be an empty string if there are categories to format but the namespace is one that normally excludes categories (e.g. userspace and discussion pages), and `force_cat` isn't specified. * `deprecated`: True if the label is deprecated. * `recognized`: If true, the label was found in some module. * `data`: The data structure for the label, as fetched from the label modules. For unrecognized labels, this will be an empty object. ]==] function export.get_label_info(data) if not data.label then error("`data` must now be an object containing the params") end local mode = validate_mode(data.mode) local ret = {categories = {}} local label = data.label local raw_label = label ret.raw_label = raw_label local override_display if label:find("^!") then label = label:gsub("^!", "") override_display = label elseif label:find("![^%s]") then label, override_display = label:match("^(.-)!([^%s].*)$") if not label then error(("Internal error: This Lua pattern should never fail to match for label '%s'"):format(raw_label)) end end local non_canonical = label ret.non_canonical = non_canonical local deprecated = false local labdata local submodule local data_langcode = data.lang and data.lang:getCode() or nil local submodules_to_check = export.get_submodules(data.lang) for _, submodule_to_check in ipairs(submodules_to_check) do submodule = mw.loadData(submodule_to_check) local this_labdata = submodule[label] local resolved_label if type(this_labdata) == "string" then resolved_label = this_labdata this_labdata = submodule[this_labdata] if not this_labdata then error(("Internal error: Label alias '%s' points to '%s', which is undefined in module [[%s]]"):format( label, resolved_label, submodule_to_check)) end if type(this_labdata) == "string" then error(("Internal error: Label alias '%s' points to '%s', which is also an alias (of '%s') in module [[%s]]"):format( label, resolved_label, this_labdata, submodule_to_check)) end end if this_labdata then -- Make sure either there's no lang restriction, or we're processing lang-independent, or our language -- is among the listed languages. Otherwise, continue processing (which could conceivably pick up a -- lang-appropriate version of the label in another label data module). local lablangs = getprop(this_labdata, mode, "langs") if not lablangs or not data_langcode then labdata = this_labdata label = resolved_label or label break end local lang_in_list = false for _, langcode in ipairs(lablangs) do if langcode == data_langcode then lang_in_list = true break end end if lang_in_list then labdata = this_labdata label = resolved_label or label break elseif not data.notrack then -- Track use of a label that fails the lang restriction. -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LANGCODE]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LABEL]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/wrong-lang-label/LABEL/LANGCODE]] track("wrong-lang-label", data_langcode) track("wrong-lang-label/" .. label, data_langcode) if resolved_label then track("wrong-lang-label/" .. resolved_label, data_langcode) end end end end if labdata then ret.recognized = true else labdata = {} ret.recognized = false end local function labprop(prop) return getprop(labdata, mode, prop) end if labprop("deprecated") then deprecated = true end if label ~= non_canonical then -- Note that this is an alias and store the canonical version. ret.canonical = label end if not data.notrack then -- labprop("track") then -- track all labels now -- Track label (after converting aliases to canonical form; but also track raw label (alias) if different -- from canonical label). -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL/LANGCODE]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/labels/label/LABEL/MODE]] track("label/" .. label, data_langcode, mode) if label ~= non_canonical then track("label/" .. non_canonical, data_langcode, mode) end end local formatted_label formatted_label, deprecated = export.format_label(label, labdata, data.lang, deprecated, override_display, mode) ret.deprecated = deprecated if deprecated then if not data.nocat then local depcat = "Entries with deprecated labels" if data.for_doc then depcat = "<code>" .. depcat .. "</code>" end insert(ret.categories, depcat) end end local label_for_already_seen = (labprop("topical_categories") or labprop("regional_categories") or labprop("regional_categories2") or labprop("plain_categories") or labprop("pos_categories") or labprop("sense_categories")) and formatted_label or nil -- Track label text. If label text was previously used, don't show it, but include the categories. -- For an example, see [[hypocretin]]. if data.already_seen and data.already_seen[label_for_already_seen] then ret.label = "" else if formatted_label:find("{") then formatted_label = mw.getCurrentFrame():preprocess(formatted_label) end ret.label = formatted_label end if data.nocat then -- do nothing else local cats = export.fetch_categories(label, labdata, data.lang, mode, data.for_doc) for _, cat in ipairs(cats) do insert(ret.categories, cat) end if not ret.categories[1] or data.for_doc then -- Don't try to format categories if we're doing this for documentation ({{label/doc}}), because there -- will be HTML in the categories. -- do nothing else ret.formatted_categories = require(utilities_module).format_categories(ret.categories, data.lang, data.sort, nil, force_cat or data.force_cat) end end ret.data = labdata if label_for_already_seen and data.already_seen then data.already_seen[label_for_already_seen] = true end return ret end --[==[ Split a string containing comma-separated raw labels into the individual labels. This will not split on a comma followed by whitespace, and it will not split inside of matched <...> or [...]. The code is written to be efficient, so that it does not load modules (e.g. [[Module:parse utilities]]) unnecessarily. ]==] function export.split_labels_on_comma(term) if term:find("[%[<]") then -- Do it the "hard way". We don't want to split anything inside of <...> or <<...>> even if there are commas -- inside of the angle brackets. For good measure we do the same for [...] and [[...]]. We first parse balanced -- segment runs involving either [...] or <...>. Then we split alternating runs on comma (but not on -- comma+whitespace). Then we rejoin the split runs. For example, given the following: -- "regional,older <<non-rhotic,and,non-hoarse-horse>> speakers", the first call to -- parse_multi_delimiter_balanced_segment_run() produces -- -- {"regional,older ", "<<non-rhotic,and,non-hoarse-horse>>", " speakers"} -- -- After calling split_alternating_runs_on_comma(), we get the following: -- -- {{"regional"}, {"older ", "<<non-rhotic,and,non-hoarse-horse>>", " speakers"}} -- -- After rejoining each group, we get: -- -- {"regional", "older <<non-rhotic,and,non-hoarse-horse>> speakers"} -- -- which is the desired output. When processing the second "label" string, the code in process_raw_labels() -- will do a similar process to this to pull out the labels inside of the <<...>> notation. local put = require(parse_utilities_module) local segments = put.parse_multi_delimiter_balanced_segment_run(term, {{"<", ">"}, {"[", "]"}}) -- This won't split on comma+whitespace. local comma_separated_groups = put.split_alternating_runs_on_comma(segments) for i, group in ipairs(comma_separated_groups) do comma_separated_groups[i] = table.concat(group) end return comma_separated_groups elseif term:find(",%s") then -- This won't split on comma+whitespace. return require(parse_utilities_module).split_on_comma(term) elseif term:find(",") then return require(string_utilities_module).split(term, ",") else return {term} end end --[==[ Return a list of objects corresponding to a set of raw labels. Each object returned is of the format returned by {get_label_info()}. This is similar to looping over the labels and calling {get_label_info()} on each one, but it also correctly handles embedded double angle bracket specs <<...>> found in the labels. (In such a case, there will be more objects returned than raw labels passed in.) On input, `data` is an object with the following fields: * `labels`: The list of labels to process. * `lang`: The language of the labels. Must be specified. * `mode`: How the label was invoked; see {get_label_info()} for more information. * `nocat`: If true, don't add the label to any categories. * `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion pages). * `notrack`: Disable all tracking for this label. * `sort`: Sort key for categorization. * `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according to the display form of the label, so if two labels have the same display form, the second one won't be displayed (but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen. * `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this function running. ]==] function export.process_raw_labels(data) local label_infos = {} if not data.ok_to_destructively_modify then data = m_table.shallowCopy(data) data.ok_to_destructively_modify = true end local function get_info_and_insert(label) -- Reuse this structure to save memory. data.label = label insert(label_infos, export.get_label_info(data)) end for _, label in ipairs(data.labels) do if label:find("<<") then local segments = require(string_utilities_module).split(label, "<<(.-)>>") for i, segment in ipairs(segments) do if i % 2 == 1 then local raw_text_type = i == 1 and "begin" or i == #segments and "end" or "middle" insert(label_infos, {raw_text = raw_text_type, label = segment, categories = {}}) else local segment_labels = export.split_labels_on_comma(segment) for _, segment_label in ipairs(segment_labels) do get_info_and_insert(segment_label) end end end else get_info_and_insert(label) end end return label_infos end --[==[ Split a comma-separated string of raw labels and process each label to get a list of objects suitable for passing to {format_processed_labels()}. Each object returned is of the format returned by {get_label_info()}. This is equivalent to calling {split_labels_on_comma()} followed by {process_raw_labels()}. On input, `data` is an object with the following fields: * `labels`: The string containing the raw comma-separated labels. * `lang`: The language of the labels. Must be specified. * `mode`: How the label was invoked; see {get_label_info()} for more information. * `nocat`: If true, don't add the label to any categories. * `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion pages). * `notrack`: Disable all tracking for this label. * `sort`: Sort key for categorization. * `already_seen`: An object used to track labels already seen, so they aren't displayed twice. Tracking is according to the display form of the label, so if two labels have the same display form, the second one won't be displayed (but its categories will still be added). If `already_seen` is {nil}, this tracking doesn't happen. * `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this function running. ]==] function export.split_and_process_raw_labels(data) if not data.ok_to_destructively_modify then data = m_table.shallowCopy(data) data.ok_to_destructively_modify = true end data.labels = export.split_labels_on_comma(data.labels) return export.process_raw_labels(data) end --[==[ Format one or more already-processed labels for display and categorization. "Already-processed" means that {get_label_info()} or {process_raw_labels()} has been called on the raw labels to convert them into objects containing information on how to display and categorize the labels. This is a lower-level alternative to {show_labels()} and is meant for modules such as [[Module:alternative forms]], [[Module:quote]] and [[Module:etymology/templates/descendant]] that support displaying labels along with some other information. On input `data` is an object with the following fields: * `labels`: List of the label objects to format, in the format returned by {get_label_info()}. * `lang`: The language of the labels. * `open`: Open bracket or parenthesis to display before the concatenated labels. If specified, it is wrapped in the {"ib-brac"} and {"label-brac"} CSS classes. If {nil} or {false}, no open bracket is displayed. * `close`: Close bracket or parenthesis to display after the concatenated labels. If specified, it is wrapped in the {"ib-brac"} and {"label-brac"} CSS classes. If {nil} or {false}, no close bracket is displayed. * `no_ib_content`: By default, the concatenated formatted labels inside of the open/close brackets are wrapped in the {"ib-content"} and {"label-content"} CSS classes. Specify this to suppress this wrapping. * `raw`: Suppress all CSS wrapping of content, including open/close parentheses, content and comma delimiters (which are normally wrapped in {"ib-comma"} and {"label-comma"} CSS classes). * `ok_to_destructively_modify`: If set, the `data` structure, and the `data.labels` table inside of it, will be destructively modified in the process of this function running. * `split_output`: If not given, the return value is a concatenation of the formatted concatenated labels and formatted categories. Otherwise, two values are returned: the formatted pronunciation and the categories. If `split_output` is the value {"raw"}, the categories are returned in list form, where the list elements are strings f the form suitable for passing to {format_categories()} in [[Module:utilities]]. If `split_output` is any other value besides {nil}, the categories are returned as a pre-formatted concatenated string. The return value (or the first return value, if `split_output` is given) is a string containing the contenated labels, optionally surrounded by open/close brackets or parentheses. Normally, labels are separated by comma-space sequences, but this may be suppressed for certain labels. If `nocat` wasn't given to {get_label_info()} or {process_raw_labels()}, and `split_output` wasn't given, the label objects will contain formatted categories in them, which will be inserted into the returned text. (Use `split_output` if you need the categories returned separately.) The concatenated text inside of the open/close brackets is normally wrapped in the {"ib-content"} CSS class, but this can be suppressed, as mentioned above. ]==] function export.format_processed_labels(data) if not data.labels then error("`data` must now be an object containing the params") end if not data.ok_to_destructively_modify then data = m_table.shallowCopy(data) data.labels = m_table.deepCopy(data.labels) data.ok_to_destructively_modify = true end local labels = data.labels if not labels[1] then error("You must specify at least one label.") end -- Show the labels local omit_preComma = false local omit_postComma = true local omit_preSpace = false local omit_postSpace = true for _, label in ipairs(labels) do omit_preComma = omit_postComma omit_preSpace = omit_postSpace local raw_text_omit_before = label.raw_text == "middle" or label.raw_text == "end" local raw_text_omit_after = label.raw_text == "middle" or label.raw_text == "begin" label.omit_comma = omit_preComma or (label.data and label.data.omit_preComma) or raw_text_omit_before omit_postComma = (label.data and label.data.omit_postComma) or raw_text_omit_after label.omit_space = omit_preSpace or (label.data and label.data.omit_preSpace) or raw_text_omit_before omit_postSpace = (label.data and label.data.omit_postSpace) or raw_text_omit_after end if data.lang then local lang_functions_module = export.lang_specific_data_modules_prefix .. data.lang:getCode() .. "/functions" local m_lang_functions = require(load_module).safe_require(lang_functions_module) if m_lang_functions and m_lang_functions.postprocess_handlers then for _, handler in ipairs(m_lang_functions.postprocess_handlers) do handler(data) end end end local function wrap_css(txt, suffix) if data.raw then return txt end return ("<span class=\"ib-%s label-%s\">%s</span>"):format(suffix, suffix, txt) end local categories = nil local formatted_categories = split_output and split_output ~= "raw" and {} or nil for i, labelinfo in ipairs(labels) do local label -- Need to check for 'not raw_text' here because blank labels may legitimately occur as raw text if a double -- angle bracket spec occurs at the beginning of a label. In this case we've already taken into account the -- context and don't want to leave out a preceding comma and space e.g. in a case like -- {{lb|en|rare|<<dialect>> or <<eye dialect>>}}. FIXME: We should reconsider whether we need this special case -- at all. if labelinfo.label == "" and not labelinfo.raw_text then label = "" else label = (labelinfo.omit_comma and "" or wrap_css(",", "comma")) .. (labelinfo.omit_space and "" or "&#32;") .. labelinfo.label end if split_output then labels[i] = label if split_output == "raw" then if labelinfo.categories and labelinfo.categories[1] then if categories then m_table.extend(categories, labelinfo.categories) else categories = labelinfo.categories end end elseif labelinfo.formatted_categories then insert(formatted_categories, labelinfo.formatted_categories) end else labels[i] = label .. (labelinfo.formatted_categories or "") end end local function wrap_open_close(val) if val then return wrap_css(val, "brac") else return "" end end local concatenated_labels = table.concat(labels, "") if not data.no_ib_content then concatenated_labels = wrap_css(concatenated_labels, "content") end local ret_labels = wrap_open_close(data.open) .. concatenated_labels .. wrap_open_close(data.close) if split_output == "raw" then return ret_labels, categories elseif split_output then return ret_labels, concat(formatted_categories) else return ret_labels end end --[==[ Format one or more labels for display and categorization. This provides the implementation of the {{tl|label}}/{{tl|lb}}, {{tl|term label}}/{{tl|tlb}} and {{tl|accent}}/{{tl|a}} templates, and can also be called from a module. The return value is a string to be inserted into the generated page, including the display and categories. On input `data` is an object with the following fields: * `labels`: List of the labels to format. * `lang`: The language of the labels. * `mode`: How the label was invoked; see {get_label_info()} for more information. * `nocat`: If true, don't add the labels to any categories. * `force_cat`: Force adding categories even in namespaces that normally exclude them (e.g. userspace and discussion pages). * `notrack`: Disable all tracking for these labels. * `sort`: Sort key for categorization. * `no_track_already_seen`: Don't track already-seen labels. If not specified, already-seen labels are not displayed again, but still categorize. See the documentation of {get_label_info()}. * `open`: Open bracket or parenthesis to display before the concatenated labels. If {nil}, defaults to an open parenthesis. Set to {false} to disable. * `close`: Close bracket or parenthesis to display after the concatenated labels. If {nil}, defaults to a close parenthesis. Set to {false} to disable. * `no_ib_content`: As in `format_processed_labels()`. * `raw`: As in `format_processed_labels()`. Also suppress wrapping the entire formatted result in a usage label CSS class (see below). * `ok_to_destructively_modify`: If set, the `data` structure will be destructively modified in the process of this function running. Compared with {format_processed_labels()}, this function has the following differences: # The labels specified in `labels` are raw labels (i.e. strings) rather than formatted objects. # The open and close brackets default to parentheses ("round brackets") rather than not being displayed by default. # Tracking of already-seen labels is enabled unless explicitly turned off using `no_track_already_seen`. # The entire formatted result is wrapped in a {"usage-label-<var>type</var>"} CSS class (depending on the value of `mode`), unless `raw` is given. ]==] function export.show_labels(data) if not data.labels then error("`data` must now be an object containing the params") end if not data.ok_to_destructively_modify then data = m_table.shallowCopy(data) data.ok_to_destructively_modify = true end local labels = data.labels if not labels[1] then error("You must specify at least one label.") end local mode = validate_mode(data.mode) if not data.no_track_already_seen then data.already_seen = {} end data.labels = export.process_raw_labels(data) if data.open == nil then data.open = "(" end if data.close == nil then data.close = ")" end local formatted = export.format_processed_labels(data) if data.raw then return formatted else return "<span class=\"" .. mode_to_outer_class[mode] .. "\">" .. formatted .. "</span>" end end --[==[Helper function for the data modules.]==] function export.alias(labels, key, aliases) m_table.alias(labels, key, aliases) end --[==[ Split the display form of a label. Returns two values: `link` and `display`. If the display form consists of a two-part link, `link` is the first part and `display` is the second part. If the display form consists of a single-part link, `link` and `display` are the same. Otherwise (the display form is not a link or contains an embedded link), `link` is the same as the passed-in `label` and `display` is nil. ]==] function export.split_display_form(label) if not label:find("%[%[") then return label, nil end local link, display = label:match("^%[%[([^%[%]|]+)|([^%[%]|]+)%]%]$") if link then return link, display end link = label:match("^%[%[([^%[%]|])+%]%]$") if link then return link, link end return label, nil end --[==[ Combine the `link` and `display` parts of the display form of a label as returned by {split_display_form()}. If `display` is nil, `link` is returned directly. Otherwise, a one-part or two-part link is constructed depending on whether `link` and `display` are the same. (As a special case, if both consist of a blank string, the return value is a blank string rather than a malformed link.) ]==] function export.combine_display_form_parts(link, display) if not display then return link end if link == display then if link == "" then return "" else return ("[[%s]]"):format(link) end end return ("[[%s|%s]]"):format(link, display) end --[==[Used to finalize the data into the form that is actually returned.]==] function export.finalize_data(labels) local shallow_copy = m_table.shallowCopy local aliases = {} for label, data in pairs(labels) do if type(data) == "table" then if data.aliases then for _, alias in ipairs(data.aliases) do aliases[alias] = label end data.aliases = nil end if data.deprecated_aliases then local data2 = shallow_copy(data) data2.deprecated = true data2.canonical = label for _, alias in ipairs(data2.deprecated_aliases) do aliases[alias] = data2 end data.deprecated_aliases = nil data2.deprecated_aliases = nil end end end for label, data in pairs(aliases) do labels[label] = data end return labels end return export c8i8j8ctlzqsrgd06bbrmzdlsq3hyju Mô đun:labels/data/regional 828 271310 2566496 2565790 2026-09-25T15:52:34Z TheHighFighter2 42988 2566496 Scribunto text/plain local labels = {} local function alias(a, b) for _, v in ipairs(b) do labels[v] = a end end -- allows aliases to be entered as a list -- Generic --not sure where to put this labels["cổ điển"] = { aliases = {"classical"}, -- "ar", ca", "fa", "id", la", "zh" handled in lang-specific module langs = {"az", "ja", "jv", "kum", "ms", "quc", "sa", "tl"}, special_display = "[[<canonical_name> cổ điển]]", regional_categories = true, } labels["classical"] = "cổ điển" labels["Epigraphic"] = { special_display = "[[w:Epigraphy|Epigraphic <canonical_name>]]", regional_categories = {"Epigraphic"}, } labels["regional"] = { aliases = {"regionally"}, display = "[[phương ngữ]]", regional_categories2 = "Vùng phương ngữ", } -- Africa -- Africa A labels["Africa"] = { regional_categories = {"African"}, } labels["African"] = "Africa" labels["Algeria"] = { display = "Algérie", regional_categories = {"Algérie"}, } labels["Algerian"] = "Algeria" labels["Angola"] = { display = "[[w:Angola|Angola]]", regional_categories = {"Angola"}, } labels["Angolan"] = "Angola" -- Africa B labels["Benin"] = { aliases = {"Beninese"}, regional_categories = {"Bénin"}, } labels["Botswana"] = { aliases = {"Botswanan"}, regional_categories = {"Botswana"}, } labels["Burundi"] = { regional_categories = {"Burundian"}, } labels["Burundian"] = "Burundi" -- Africa C labels["Cape Verde"] = { display = "[[w:Cape Verde|Cape Verde]]", regional_categories = {"Cape Verdean"}, } labels["Cape Verdean"] = "Cape Verde" labels["Chad"] = { display = "Chad", regional_categories = {"Chadian"}, } labels["Chadian"] = "Chad" labels["Congo"] = { display = "Congo", regional_categories = {"Congolese"}, } -- these could be split if need be labels["Democratic Republic of the Congo"] = "Congo" labels["Democratic Republic of Congo"] = "Congo" labels["DR Congo"] = "Congo" labels["Congo-Kinshasa"] = "Congo" labels["Republic of the Congo"] = "Congo" labels["Republic of Congo"] = "Congo" labels["Congo-Brazzaville"] = "Congo" labels["Congolese"] = "Congo" -- Africa D labels["Durban"] = { display = "[[Durban]]", regional_categories = {"Durban"}, } -- Africa E labels["East Africa"] = { display = "[[East Africa]]", regional_categories = {"East African"}, } labels["East African"] = "East Africa" labels["Egypt"] = { regional_categories = {"Egyptian"}, } labels["Egyptian"] = "Egypt" labels["Equatorial Guinea"] = { display = "[[w:Equatorial Guinea|Equatorial Guinea]]", regional_categories = {"Equatorial Guinean"}, } labels["Equatorial Guinean"] = "Equatorial Guinea" labels["Equatoguinean"] = "Equatorial Guinea" -- Africa F -- Africa G labels["Ghana"] = { regional_categories = {"Ghanaian"}, } -- Africa H -- Africa I -- Africa J -- Africa K labels["Kenya"] = { display = "[[Kenya]]", regional_categories = {"Kenyan"}, } labels["Kenyan"] = "Kenya" -- Africa L labels["Liberia"] = { regional_categories = {"Liberian"}, } labels["Liberian"] = "Liberia" -- Africa M labels["Mali"] = { display = "Mali", regional_categories = {"Malian"}, } labels["Malian"] = "Mali" labels["Mauritania"] = { display = "Mauritania", regional_categories = {"Mauritanian"}, } labels["Mauritanian"] = "Mauritania" labels["Morocco"] = { regional_categories = {"Moroccan"}, } labels["Moroccan"] = "Morocco" labels["Mozambique"] = { display = "[[w:Mozambique|Mozambique]]", regional_categories = {"Mozambican"}, } labels["Mozambican"] = "Mozambique" -- Africa N labels["Namibia"] = { regional_categories = {"Namibian"}, } labels["Namibian"] = "Namibia" labels["Natal"] = { display = "[[Natal]]", regional_categories = {"Natal"}, } labels["Niger"] = { regional_categories = {"Nigerien"}, } labels["Nigerien"] = "Niger" labels["Nigeria"] = { regional_categories = {"Nigerian"}, } labels["Nigerian"] = "Nigeria" -- Africa O -- Africa P -- Africa Q -- Africa R labels["Rhodesia"] = { display = "[[w:Rhodesia|Rhodesia]]", regional_categories = {"Rhodesian"}, } labels["Rhodesian"] = "Rhodesia" labels["Rwanda"] = { display = "Rwanda", regional_categories = {"Rwandan"}, } labels["Rwandan"] = "Rwanda" labels["Réunion"] = { regional_categories = {"Réunion"}, } -- Africa S labels["São Tomé and Príncipe"] = { display = "[[w:São Tomé and Príncipe|São Tomé and Príncipe]]", regional_categories = {"Santomean"}, } labels["Santomean"] = "São Tomé and Príncipe" labels["São Tomé"] = "São Tomé and Príncipe" labels["São Toméan"] = "São Tomé and Príncipe" labels["Sao Tomean"] = "São Tomé and Príncipe" labels["South Africa"] = { aliases = {"South African", "Nam Phi"}, Wikipedia = "Nam Phi", display = "Nam Phi", regional_categories = "Nam Phi", } labels["Sudan"] = { display = "[[w:Sudan|Sudan]]", regional_categories = {"Sudanese"}, } labels["Sudanese"] = "Sudan" -- Africa T labels["Tanzania"] = { regional_categories = {"Tanzanian"}, } labels["Tanzanian"] = "Tanzania" labels["Tunisia"] = { display = "[[Tunisia]]", regional_categories = {"Tunisian"}, } labels["Tunisian"] = "Tunisia" -- Africa U labels["Uganda"] = { display = "[[Uganda]]", regional_categories = {"Ugandan"}, } labels["Ugandan"] = "Uganda" -- Africa V -- Africa W labels["West Africa"] = { regional_categories = {"West African"}, } labels["West African"] = "West Africa" -- Africa X -- Africa Y -- Africa Z labels["Zimbabwe"] = { display = "[[Zimbabwe]]", regional_categories = {"Zimbabwe"}, } labels["Zululand"] = { display = "[[Zululand]]", regional_categories = {"Zululand"}, } -- North America -- NA A labels["Acadia"] = { display = "Acadian", regional_categories = {"Acadian"}, } labels["Acadian"] = "Acadia" labels["Alabama"] = { regional_categories = {"Alabama"}, } labels["Alabaman"] = "Alabama" labels["Alabamian"] = "Alabama" labels["Alaska"] = { display = "[[Alaska]]", regional_categories = {"Alaska"}, } labels["Alaskan"] = "Alaska" labels["Alberta"] = { regional_categories = {"Canadian"}, } labels["Appalachia"] = { display = "[[Appalachia]]", regional_categories = {"Appalachian"}, } labels["Appalachian"] = "Appalachia" labels["Arizona"] = { regional_categories = {"Arizona"}, } labels["Arizonan"] = "Arizona" labels["Arkansas"] = { regional_categories = {"Arkansan"}, } labels["Arkansan"] = "Arkansas" labels["Atlantic Canada"] = { regional_categories = {"Atlantic Canadian"}, } labels["Atlantic Canadian"] = "Atlantic Canada" -- NA B labels["Baltimore"] = { regional_categories = {"Baltimore"}, } labels["Bermuda"] = { display = "[[Bermuda]]", regional_categories = {"Bermudian"}, } labels["Bermudan"] = "Bermuda" labels["Bermudian"] = "Bermuda" labels["British Columbia"] = { display = "[[British Columbia]]", regional_categories = {"Canadian"}, } labels["British Columbian"] = "British Columbia" -- NA C labels["Cajun"] = { display = "[[w:Cajun|Louisiana]]", regional_categories = {"Louisiana"}, } labels["California"] = { regional_categories = {"California"}, } labels["Californian"] = "California" labels["Canada"] = { aliases = {"Canadian"}, deprecated_aliases = {"CA"}, -- mơ hồ Wikipedia = true, regional_categories = true, } labels["Canadian Prairies"] = { regional_categories = {"Canadian"}, } labels["Chicago"] = { regional_categories = {"Chicago"}, } labels["Chipilo"] = { display = "[[w:Chipilo|Chipilo]]", regional_categories = {"Chipilo"}, } labels["Cincinnati"] = { display = "[[Cincinnati]]", regional_categories = {"Cincinnati"}, } labels["Colorado"] = { regional_categories = {"Colorado"}, } labels["Coloradan"] = "Colorado" labels["Coloradoan"] = "Colorado" labels["Connecticut"] = { regional_categories = {"Connecticut"}, } labels["Connecticuter"] = "Connecticut" labels["Connecticutian"] = "Connecticut" -- NA D labels["DC"] = { display = "[[w:District of Columbia|District of Columbia]]", regional_categories = {"DC"}, } labels["District of Columbia"] = "DC" labels["Washington, D.C."] = "DC" labels["D.C."] = "DC" labels["Washington, DC"] = "DC" -- NA E -- NA F labels["Florida"] = { display = "[[Florida]]", regional_categories = {"Florida"}, } alias("Florida", {"Floridian", "FL"}) -- NA G labels["Georgia (US)"] = { display = "[[w:Georgia (U.S. state)|Georgia]]", regional_categories = {"Georgia (US)"}, } -- NA H -- NA I labels["Indiana"] = { display = "[[w:Indiana|Indiana]]", regional_categories = {"Indiana"}, } labels["Indianan"] = "Indiana" labels["Indianian"] = "Indiana" -- NA J -- NA K -- NA L labels["Labrador"] = { display = "[[Labrador]]", regional_categories = {"Labrador"}, } labels["Louisiana"] = { display = "[[w:Louisiana|Louisiana]]", regional_categories = {"Louisiana"}, } labels["New Orleans"] = "Louisiana" -- NA M labels["Manitoba"] = { display = "[[w:Manitoba|Manitoba]]", regional_categories = {"Canadian"}, } labels["Maryland"] = { display = "[[w:Maryland|Maryland]]", regional_categories = {"Maryland"}, } labels["Mexico"] = { display = "[[w:Mexico|Mexico]]", regional_categories = {"Mexican"}, } labels["Mexican"] = "Mexico" labels["Michigan"] = { regional_categories = {"Michigan"}, } labels["Midwest US"] = { display = "[[w:Midwestern United States|Midwestern US]]", regional_categories = {"Midwest US"}, } labels["Midwestern US"] = "Midwest US" labels["Mississippi"] = { display = "[[w:Mississippi|Mississippi]]", regional_categories = {"Mississippi"}, } labels["Mississippian"] = "Mississippi" labels["Missouri"] = { display = "[[w:Missouri|Missouri]]", regional_categories = {"Missouri"}, } labels["Missourian"] = "Missouri" labels["St Louis, Missouri"] = "Missouri" labels["St. Louis, Missouri"] = "Missouri" labels["Morelos"] = { display = "[[w:Morelos|Morelos]]", regional_categories = {"Morelos"}, } -- NA N labels["New Brunswick"] = { regional_categories = {"Atlantic Canadian"}, } labels["New England"] = { display = "[[w:New England|New England]]", regional_categories = {"New England"}, } labels["New Jersey"] = { display = "[[w:New Jersey|New Jersey]]", regional_categories = {"New Jersey"}, } labels["New Mexico"] = { display = "[[w:New Mexico|New Mexico]]", regional_categories = {"New Mexico"}, } labels["New Mexican"] = "New Mexico" labels["New York"] = { display = "[[w:New York|New York]]", regional_categories = {"New York"}, } labels["NY"] = "New York" labels["New York City"] = { display = "[[w:New York City|New York City]]", regional_categories = {"New York City"}, } labels["NYC"] = "New York City" labels["New York city"] = "New York City" labels["Newfoundland"] = { display = "[[Newfoundland English|Newfoundland]]", regional_categories = {"Newfoundland"}, } labels["North Carolina"] = { display = "[[w:North Carolina|North Carolina]]", regional_categories = {"North Carolina"}, } labels["North Carolinian"] = "North Carolina" labels["NC"] = "North Carolina" labels["Northwest Territories"] = { regional_categories = {"Canadian"}, } labels["Northwestern Ontario"] = { regional_categories = {"Canadian"}, } labels["northwestern Ontario"] = "Northwestern Ontario" labels["Northwestern US"] = { display = "[[w:Northwestern United States|Northwestern US]]", regional_categories = {"Northwestern US"}, } labels["northwestern US"] = "Northwestern US" labels["Nova Scotia"] = { regional_categories = {"Atlantic Canadian"}, } labels["Nova Scotian"] = "Nova Scotia" labels["Nunavut"] = { regional_categories = {"Canadian"}, } -- NA O labels["Oaxaca"] = { display = "[[w:Oaxaca|Oaxaca]]", regional_categories = {"Oaxacan"}, } labels["Oaxacan"] = "Oaxaca" labels["Ohio"] = { display = "[[Ohio]]", regional_categories = {"Ohio"}, } labels["Ohioan"] = "Ohio" labels["OH"] = "Ohio" labels["Ontario"] = { regional_categories = {"Canadian"}, } -- NA P labels["Pennsylvania"] = { display = "[[w:Pennsylvania|Pennsylvania]]", regional_categories = {"Pennsylvania"}, } labels["Pennsylvanian"] = "Pennsylvania" labels["Philadelphia"] = { display = "[[w:Philadelphia|Philadelphia]]", regional_categories = {"Pennsylvania"}, } -- can be split off if enough entries in it arise; group with PA for now labels["Pittsburgh"] = { display = "[[w:Pittsburgh|Pittsburgh]]", regional_categories = {"Pennsylvania"}, } -- can be split off if enough entries in it arise; group with PA for now labels["Prince Edward Island"] = { regional_categories = {"Atlantic Canadian"}, } -- NA Q labels["Quebec"] = { Wikipedia = "Quebec", regional_categories = {"Quebec"}, } labels["Québec"] = "Quebec" -- NA R labels["Rhode Island"] = { regional_categories = {"Rhode Island"}, } -- NA S labels["Saskatchewan"] = { display = "[[w:Saskatchewan|Saskatchewan]]", regional_categories = {"Saskatchewan"}, } labels["SK"] = "Saskatchewan" labels["Sinaloa"] = { regional_categories = {"Sinaloa"}, } labels["South Carolina"] = { display = "[[w:South Carolina|South Carolina]]", regional_categories = {"South Carolina"}, } labels["South Carolinian"] = "South Carolina" labels["SC"] = "South Carolina" -- NA T labels["Texas"] = { display = "[[w:Texas|Texas]]", regional_categories = {"Texas"}, } labels["TX"] = "Texas" labels["Texan"] = "Texas" -- NA U labels["Upper Midwest US"] = { display = "[[w:Upper Midwest|Upper Midwestern US]]", regional_categories = {"Upper Midwest US"}, } labels["Upper Midwestern US"] = "Upper Midwest US" labels["US"] = { aliases = {"U.S.", "United States", "United States of America", "USA", "America", "American", "Mĩ", "Mỹ", "Hoa Kì", "Hoa Kỳ"}, -- America/American: should these be aliases of 'North America'? display = "[[w:Hoa Kỳ|Mỹ]]", regional_categories = {"Mỹ"}, } -- NA V labels["Virginia"] = { display = "[[w:Virginia|Virginia]]", regional_categories = {"Virginia"}, } labels["Virginian"] = "Virginia" -- NA W labels["Western US"] = { display = "[[w:Western United States|Western US]]", regional_categories = {"Western US"}, } labels["western US"] = "Western US" labels["Wisconsin"] = { regional_categories = {"Wisconsin"} } -- NA X -- NA Y labels["Yukon"] = { regional_categories = {"Canadian"}, } -- NA Z -- Central America and Caribbean labels["Caribbean"] = { display = "[[w:Caribbean|Caribbean]]", regional_categories = {"Caribbean"}, } labels["West Indies"] = "Caribbean" labels["Central America"] = { display = "[[w:Central America|Central America]]", regional_categories = {"Central American"}, } labels["Central American"] = "Central America" -- CAaC A labels["Antilles"] = { display = "[[w:Antilles|Antilles]]", regional_categories = {"Antilles"}, } -- CAaC B labels["Bahamas"] = { display = "[[w:Bahamas|Bahamas]]", regional_categories = {"Bahaman"}, } labels["Bahaman"] = "Bahamas" labels["Barbados"] = { display = "[[w:Barbados|Barbados]]", regional_categories = {"Barbadian"}, } labels["Barbadian"] = "Barbados" labels["Belize"] = { display = "[[w:Belize|Belize]]", regional_categories = {"Belizean"}, } labels["Belizean"] = "Belize" -- CAaC C labels["Costa Rica"] = { display = "[[w:Costa Rica|Costa Rica]]", regional_categories = {"Costa Rican"}, } labels["Costa Rican"] = "Costa Rica" labels["Cuba"] = { display = "[[w:Cuba|Cuba]]", regional_categories = {"Cuban"}, } labels["Cuban"] = "Cuba" -- CAaC D labels["Dominican Republic"] = { display = "[[w:Dominican Republic|Dominican Republic]]", regional_categories = {"Dominican"}, } -- CAaC E labels["El Salvador"] = { display = "[[w:El Salvador|El Salvador]]", regional_categories = {"Salvadorian"}, } labels["Salvadorian"] = "El Salvador" -- CAaC F -- CAaC G labels["Guatemala"] = { display = "[[w:Guatemala|Guatemala]]", regional_categories = {"Guatemalan"}, } labels["Guatemalan"] = "Guatemala" -- CAaC H labels["Haiti"] = { display = "[[w:Haiti|Haiti]]", regional_categories = {"Haitian"}, } labels["Honduras"] = { display = "[[w:Honduras|Honduras]]", regional_categories = {"Honduran"}, } labels["Honduran"] = "Honduras" labels["Huitzapan"] = { display = "[[w:Santo Domingo, Sonsonate|Huitzapan]]", regional_categories = {"Huitzapanec"}, } labels["Witzapan"] = "Huitzapan" labels["Huitzapanec"] = "Huitzapan" -- CAaC I -- CAaC J labels["Jamaica"] = { display = "[[w:Jamaica|Jamaica]]", regional_categories = {"Jamaican"}, } labels["Jamaican"] = "Jamaica" -- CAaC K -- CAaC L -- CAaC M -- CAaC N labels["Nicaragua"] = { display = "[[w:Nicaragua|Nicaragua]]", regional_categories = {"Nicaraguan"}, } labels["Nicaraguan"] = "Nicaragua" -- CAaC O -- CAaC P labels["Panama"] = { display = "[[w:Panama|Panama]]", regional_categories = {"Panamanian"}, } labels["Panamanian"] = "Panama" labels["Puerto Rico"] = { display = "[[w:Puerto Rico|Puerto Rico]]", regional_categories = {"Puerto Rican"}, } labels["Puerto Rican"] = "Puerto Rico" -- CAaC Q -- CAaC R -- CAaC S -- CAaC T labels["Trinidad and Tobago"] = { display = "[[Trinidad and Tobago]]", regional_categories = {"Trinidad and Tobago"}, } labels["Trinidad"] = "Trinidad and Tobago" labels["Tobago"] = "Trinidad and Tobago" labels["Trinidadian"] = "Trinidad and Tobago" labels["Tobagonian"] = "Trinidad and Tobago" labels["Trinidadian and Tobagonian"] = "Trinidad and Tobago" -- CAaC U -- CAaC V -- CAaC W -- CAaC X -- CAaC Y -- CAaC Z -- South America labels["South America"] = { regional_categories = {"South American"}, } labels["South American"] = "South America" -- SA A labels["Andes"] = { regional_categories = {"Andean"} } labels["Andean"] = "Andes" labels["Argentina"] = { display = "[[w:Argentina|Argentina]]", regional_categories = {"Argentinian"}, } labels["Argentinian"] = "Argentina" -- SA B labels["Bahia"] = { display = "Bahia", regional_categories = {"Bahian"}, } labels["Baiano"] = "Bahia" labels["Bahian"] = "Bahia" labels["Bolivia"] = { display = "[[w:Bolivia|Bolivia]]", regional_categories = {"Bolivian"}, } labels["Bolivian"] = "Bolivia" labels["Brazil"] = { aliases = {"Brasil", "Brazilian"}, -- "pt" handled in lang-specific module langs = {"ja", "mch", "vec", "yi"}, display = "[[w:Brasil|Brasil]]", regional_categories = "Brasil", } -- SA C labels["Chile"] = { display = "[[w:Chile|Chile]]", regional_categories = {"Chilean"}, } labels["Chilean"] = "Chile" labels["Colombia"] = { display = "[[w:Colombia|Colombia]]", regional_categories = {"Colombian"}, } labels["Colombian"] = "Colombia" -- SA D -- SA E labels["Ecuador"] = { display = "[[w:Ecuador|Ecuador]]", regional_categories = {"Ecuadorian"}, } labels["Ecuadorian"] = "Ecuador" -- SA F -- SA G labels["Guyana"] = { aliases = {"Guyanese"}, Wikipedia = true, regional_categories = {"Guyana"}, } -- SA H -- SA I -- SA J -- SA K -- SA L -- SA M -- SA N labels["Northeast Brazil"] = { regional_categories = {"Northeastern Brazilian"} } labels["Nordestino"] = "Northeast Brazil" labels["Nordeste"] = "Northeast Brazil" labels["Northeastern Brazilian"] = "Northeast Brazil" labels["Northeast Brazilian"] = "Northeast Brazil" -- SA O -- SA P labels["Paraguay"] = { display = "[[w:Paraguay|Paraguay]]", regional_categories = {"Paraguayan"}, } labels["Paraná"] = { display = "[[w:Paraná (state)|Paraná]]", regional_categories = {"Paranaense"}, } labels["Paranaense"] = "Paraná" labels["Peru"] = { display = "[[w:Peru|Peru]]", regional_categories = {"Peruvian"}, } labels["Peruvian"] = "Peru" -- SA Q -- SA R labels["Rio de Janeiro"] = { display = "[[w:Rio de Janeiro|Rio de Janeiro]]", regional_categories = {"Carioca"}, } labels["Fluminense"] = "Rio de Janeiro" labels["Carioca"] = "Rio de Janeiro" labels["Rio Grande do Sul"] = { regional_categories = {"Gaúcho"} } labels["Gaúcho"] = "Rio Grande do Sul" labels["Gaucho"] = "Rio Grande do Sul" -- SA S labels["São Paulo"] = { display = "[[w:São Paulo (state)|São Paulo]]", regional_categories = {"Paulista"}, } labels["Sao Paulo"] = "São Paulo" labels["Paulista"] = "São Paulo" labels["South Brazil"] = { regional_categories = {"Southern Brazilian"} } labels["Southern Brazilian"] = "South Brazil" labels["South Brazilian"] = "South Brazil" labels["Suriname"] = { aliases = {"Surinamese"}, Wikipedia = true, regional_categories = {"Suriname"}, } -- SA T -- SA U labels["Uruguay"] = { display = "[[w:Uruguay|Uruguay]]", regional_categories = {"Uruguayan"}, } labels["Uruguayan"] = "Uruguay" -- SA V labels["Venezuela"] = { aliases = {"Venezuelan"}, Wikipedia = true, regional_categories = "Venezuela", } -- SA W -- SA X -- SA Y -- SA Z -- Asia -- Asia A labels["Abzhywa"] = { display = "[[w:Abzhywa|Abzhywa]]", regional_categories = {"Abzhywa"}, } labels["Abzhywan"] = "Abzhywa" labels["Abzhuaa"] = "Abzhywa" labels["Abzhua"] = "Abzhywa" labels["Abzhui"] = "Abzhywa" labels["Abzhuy"] = "Abzhywa" labels["Adana"] = { display = "[[w:Adana|Adana]]", regional_categories = {"Adana"}, } labels["Atana"] = "Adana" labels["Adjara"] = { display = "[[w:Adjaran dialect|Adjara]]", regional_categories = {"Adjara"}, } labels["Ajara"] = "Adjara" labels["Adjaria"] = "Adjara" labels["Adjaran"] = "Adjara" labels["Adjarian"] = "Adjara" labels["Acharuli"] = "Adjara" labels["Afyonkarahisar"] = { display = "[[w:Afyonkarahisar|Afyonkarahisar]]", regional_categories = {"Afyonkarahisar"}, } labels["Afyon"] = "Afyonkarahisar" labels["Agdam"] = { display = "[[w:Agdam District|Agdam]]", regional_categories = {"Agdam"}, } labels["Ağdam"] = "Agdam" labels["Agsu"] = { display = "[[w:Agsu District|Agsu]]", regional_categories = {"Agsu"}, } labels["Ağsu"] = "Agsu" labels["Agdash"] = { display = "[[w:Agdash District|Agdash]]", regional_categories = {"Agdash"}, } labels["Ağdaş"] = "Agdash" labels["Dashkasan"] = { display = "[[w:Dashkasan District|Dashkasan]]", regional_categories = {"Dashkasan"}, } labels["Daşkəsən"] = "Dashkasan" labels["Ağın"] = { display = "[[w:Ağın|Ağın]]", regional_categories = {"Ağın"}, } labels["Aghin"] = "Ağın" labels["Vaghaver"] = "Ağın" labels["Aghdara"] = { display = "[[w:Martakert|Aghdara]]", regional_categories = {"Aghdara"}, } labels["Ağdərə"] = "Aghdara" labels["Agjabedi"] = { display = "[[w:Aghjabadi District|Agjabedi]]", regional_categories = {"Agjabedi"}, } labels["Ağcabədi"] = "Agjabedi" labels["Aghjabedi"] = "Agjabedi" labels["Aghjabadi"] = "Agjabedi" labels["Ağrı"] = { display = "[[w:Ağrı|Ağrı]]", regional_categories = {"Ağrı"}, } labels["Aghri"] = "Ağrı" labels["Karaköse"] = "Ağrı" labels["Ahlat"] = { display = "[[w:Ahlat|Ahlat]]", regional_categories = {"Ahlat"}, } labels["Khlat"] = "Ahlat" labels["Xlat"] = "Ahlat" labels["Akhalkalaki"] = { display = "[[w:Akhalkalaki|Akhalkalaki]]", regional_categories = {"Akhalkalaki"}, } labels["Akhalkalak"] = "Akhalkalaki" labels["Akhlkalak"] = "Akhalkalaki" labels["Akhaltsikhe"] = { display = "[[w:Akhaltsikhe|Akhaltsikhe]]", regional_categories = {"Akhaltsikhe"}, } labels["Akhaltskha"] = "Akhaltsikhe" labels["Ahıska"] = "Akhaltsikhe" labels["Akn"] = { display = "[[w:Kemaliye|Akn]]", regional_categories = {"Akn"}, } labels["Egin"] = "Akn" labels["Eğin"] = "Akn" labels["Alashkert"] = { display = "[[w:Eleşkirt|Alashkert]]", regional_categories = {"Alashkert"}, } labels["Eleşkirt"] = "Alashkert" labels["Alaškert"] = "Alashkert" labels["Şirvan"] = { display = "[[w:Şirvan, Azerbaijan|Shirvan]]", regional_categories = {"Shirvan"}, } labels["Şirvan"] = "Şirvan" labels["Əli Bayramlı"] = "Şirvan" labels["Ali Bayramli"] = "Şirvan" labels["Amasya"] = { display = "[[w:Amasya|Amasya]]", regional_categories = {"Amasya"}, } labels["Amur"] = { display = "[[w:Amur|Amur]]", regional_categories = {"Amur"}, } labels["Ankara"] = { display = "[[w:Ankara|Ankara]]", regional_categories = {"Ankara"}, } labels["Antalya"] = { display = "[[w:Antalya|Antalya]]", regional_categories = {"Antalya"}, } labels["Arapgir"] = { display = "[[w:Arapgir|Arapgir]]", regional_categories = {"Arapgir"}, } labels["Arapkir"] = "Arapgir" labels["Arabkir"] = "Arapgir" labels["Ardabil"] = { display = "[[w:Ardabil|Ardebil]]", regional_categories = {"Ardabil"}, } labels["Ardebil"] = "Ardabil" labels["Ərdəbil"] = "Ardabil" labels["Ardabīl "] = "Ardabil" labels["Ardebīl"] = "Ardabil" labels["Ardahan"] = { display = "[[w:Ardahan|Ardahan]]", regional_categories = {"Ardahan"}, } labels["Ardanuç"] = { display = "[[w:Ardanuç|Ardanuç]]", regional_categories = {"Ardanuç"}, } labels["Artanuj"] = "Ardanuç" labels["Ardanuji"] = "Ardanuç" labels["Artvin"] = { display = "[[w:Artvin|Artvin]]", regional_categories = {"Artvin"}, } labels["Ardvin"] = "Artvin" labels["Ardvini"] = "Artvin" labels["Aslanbeg"] = { display = "[[w:Arslanbey, Kartepe|Aslanbeg]]", regional_categories = {"Aslanbeg"}, } labels["Aslanbek"] = "Aslanbeg" labels["Azad Kashmir"] = { display = "[[w:Azad Kashmir|Azad Kashmir]]", regional_categories = {"Azad Kashmiri"}, } labels["Pakistani Kashmir"] = "Azad Kashmir" labels["Azad Jammu and Kashmir"] = "Azad Kashmir" labels["Azad Jammu & Kashmir"] = "Azad Kashmir" labels["AJK"] = "Azad Kashmir" labels["AJ&K"] = "Azad Kashmir" labels["ajk"] = "Azad Kashmir" labels["Azerbaijan"] = { display = "[[w:Azerbaijan]]", regional_categories = {"Azerbaijan"}, } -- Asia B labels["Baku"] = { display = "[[w:Baku|Baku]]", regional_categories = {"Baku"}, } labels["Bakı"] = "Baku" labels["Baki"] = "Baku" labels["Balakan"] = { display = "[[w:Balakan District|Balakan]]", regional_categories = {"Balakan"}, } labels["Balakən"] = "Balakan" labels["Balochistan"] = { display = "[[w:Balochistan, Pakistan|Balochistan]]", regional_categories = {"Balochi"}, } labels["Banten"] = { display = "[[w:Bantenese|Banten]]", regional_categories = {"Banten"}, } labels["Bantenese"] = "Banten" labels["Balıkesir"] = { display = "[[w:Balıkesir|Balıkesir]]", regional_categories = {"Balıkesir"}, } labels["Bilasuvar"] = { display = "[[w:Bilasuvar District|Bilasuvar]]", regional_categories = {"Bilasuvar"}, } labels["Biləsuvar"] = "Bilasuvar" labels["Bitlis"] = { display = "[[w:Bitlis|Bitlis]]", regional_categories = {"Bitlis"}, } labels["Baghesh"] = "Bitlis" labels["Bogor"] = { regional_categories = {"Bogor"}, } labels["Borchaly"] = { display = "[[w:Borchaly Uyezd|Borchaly]]", regional_categories = {"Borchaly"}, } labels["Borçalı"] = "Borchaly" labels["Borchali"] = "Borchaly" labels["Borchalu"] = "Borchaly" labels["Bolnisi"] = { display = "[[w:Bolnisi Municipality|Bolnisi]]", regional_categories = {"Bolnisi"}, } labels["Bulanık"] = { display = "[[w:Bulanık|Bulanık]]", regional_categories = {"Bulanık"}, } labels["Bulanik"] = "Bulanık" labels["Bulanikh"] = "Bulanık" labels["Dmanisi"] = { display = "[[w:Dmanisi|Dmanisi]]", regional_categories = {"Dmanisi"}, } labels["Başkeçid"] = "Dmanisi" labels["Brebes"] = { regional_categories = {"Brebes"}, } labels["Brebian"] = "Brebes" labels["Brunei"] = { display = "[[w:Brunei|Brunei]]", regional_categories = {"Bruneian"}, } labels["Burdur"] = { display = "[[w:Burdur|Burdur]]", regional_categories = {"Burdur"}, } labels["Bursa"] = { display = "[[w:Bursa|Bursa]]", regional_categories = {"Bursa"}, } labels["Bzyb"] = { display = "[[w:Bzyb_dialect|Bzyb]]", regional_categories = {"Bzyb"}, } labels["Bzyp"] = "Bzyb" -- Asia C labels["Çanakkale"] = { display = "[[w:Çanakkale|Çanakkale]]", regional_categories = {"Çanakkale"}, } labels["Canik"] = { display = "[[w:Canik|Canik]]", regional_categories = {"Canik"}, } labels["Janik"] = "Canik" labels["Ճանիկ"] = "Canik" labels["Cebu"] = { regional_categories = {"Cebu"} } labels["Çemişgezek"] = { display = "[[w:Çemişgezek|Çemişgezek]]", regional_categories = {"Çemişgezek"}, } labels["Chmshkatsag"] = "Çemişgezek" labels["Çemişkezek"] = "Çemişgezek" labels["Čmškacag"] = "Çemişgezek" labels["Ceylon"] = { display = "[[Ceylon]]", regional_categories = {"Sri Lankan"}, } labels["China"] = { display = "[[w:China|China]]", regional_categories = {"Chinese"}, } labels["Cirebon"] = { regional_categories = {"Cirebon"}, } labels["Cirebonese"] = "Cirebon" labels["Cyprus"] = { display = "[[w:Cyprus|Cyprus]]", regional_categories = {"Cypriot"}, } labels["cypriot"] = "Cyprus" labels["Cypriot"] = "Cyprus" -- Asia D labels["Dashtestan"] = { display = "[[w:Dashtestan County|Dashtestan]]", regional_categories = {"Dashtestani"}, } labels["Dandong"] = { display = "[[w:Dandong|Dandong]]", regional_categories = {"Dandong"}, } labels["Delhi"] = { display = "[[w:Delhi|Delhi]]", regional_categories = {"Delhi"}, } labels["Derbent"] = { display = "[[w:Derbent|Derbent]]", regional_categories = {"Derbent"}, } labels["Dərbənd"] = "Derbent" labels["Divriği"] = { display = "[[w:Divriği|Divriği]]", regional_categories = {"Divriği"}, } labels["Tevrik"] = "Divriği" labels["Tewrik"] = "Divriği" labels["Dewrik"] = "Divriği" labels["Devrik"] = "Divriği" labels["Devrike"] = "Divriği" labels["Dewrike"] = "Divriği" labels["Denizli"] = { display = "[[w:Denizli|Denizli]]", regional_categories = {"Denizli"}, } labels["Diyarbakır"] = { display = "[[w:Diyarbakır|Diyarbakır]]", regional_categories = {"Diyarbakır"}, } labels["Diyarbakir"] = "Diyarbakır" labels["Diyarbekir"] = "Diyarbakır" labels["Tigranakert"] = "Diyarbakır" -- Asia E labels["East Sakhalin"] = { display = "East [[w:Sakhalin|Sakhalin]]", regional_categories = {"East Sakhalin"}, } labels["Elazığ"] = { display = "[[w:Elazığ|Elazığ]]", regional_categories = {"Elazığ"}, } labels["Elazig"] = "Elazığ" labels["Elazigh"] = "Elazığ" labels["Erciş"] = { display = "[[w:Erciş|Erciş]]", regional_categories = {"Erciş"}, } labels["Ercis"] = "Erciş" labels["Archesh"] = "Erciş" labels["Artchesh"] = "Erciş" labels["Erdîş"] = "Erciş" labels["Erzincan"] = { display = "[[w:Erzincan|Erzincan]]", regional_categories = {"Erzincan"}, } labels["Yerznka"] = "Erzincan" labels["Erznka"] = "Erzincan" labels["Erzinjan"] = "Erzincan" labels["Erzurum"] = { display = "[[w:Erzurum|Erzurum]]", regional_categories = {"Erzurum"}, } labels["Karin"] = "Erzurum" labels["Erzrum"] = "Erzurum" labels["Eskişehir"] = { display = "[[w:Eskişehir|Eskişehir]]", regional_categories = {"Eskişehir"}, } -- Asia F labels["Faisalabad"] = { display = "[[w:Faisalabad|Lyallpuri]]", regional_categories = {"Lyallpuri"}, } labels["Faisalabadi"] = "Faisalabad" labels["Lyallpur"] = "Faisalabad" labels["Lyallpuri"] = "Faisalabad" labels["Fengkai"] = { display = "[[w:Fengkai County|Fengkai]]", regional_categories = {"Fengkai"}, } labels["Fereydan"] = { display = "[[w:Fereydan|Fereydan]]", regional_categories = {"Fereydan"}, } labels["Fereydani"] = "Fereydan" labels["Fereydanian"] = "Fereydan" labels["Phereidnuli"] = "Fereydan" labels["ფერეიდანი"] = "Fereydan" labels["ფერეიდნული"] = "Fereydan" labels["Fuzuli"] = { display = "[[w:Fuzuli District|Fuzuli]]", regional_categories = {"Fuzuli"}, } labels["Füzuli"] = "Fuzuli" labels["Fizuli"] = "Fuzuli" -- Asia G labels["Gadabay"] = { display = "[[w:Gadabay District|Gadabay]]", regional_categories = {"Gadabay"}, } labels["Gədəbəy"] = "Gadabay" labels["Getabek"] = "Gadabay" labels["Galilee"] = { display = "Galilee", regional_categories = {"Galilean"}, } labels["Galilean"] = "Galilee" labels["Ganja"] = { display = "[[w:Ganja, Azerbaijan|Ganja]]", regional_categories = {"Ganja"}, } labels["Gandzak"] = "Ganja" labels["Gəncə"] = "Ganja" labels["Gansu"] = { aliases = {"Cam Túc"}, display = "[[w:Cam Túc|Cam Túc]]", regional_categories = {"Cam Túc"}, } labels["Gilgit-Baltistan"] = { display = "[[w:Gilgit-Baltistan|Gilgit-Baltistan]]", regional_categories = {"Gilgit-Baltistani"}, } labels["Gilgit Baltistan"] = "Gilgit-Baltistan" labels["Giresun"] = { display = "[[w:Giresun|Giresun]]", regional_categories = {"Giresun"}, } labels["Goa"] = { display = "[[w:Goa|Goa]]", regional_categories = {"Goan"}, } labels["Goan"] = "Goa" labels["Goranboy"] = { display = "[[w:Goranboy District|Goranboy]]", regional_categories = {"Goranboy"}, } labels["Goris"] = { display = "[[w:Goris|Goris]]", regional_categories = {"Goris"}, } labels["Goychay"] = { display = "[[w:Goychay District|Goychay]]", regional_categories = {"Goychay"}, } labels["Göyçay"] = "Goychay" labels["Goygol"] = { display = "[[w:Goygol District|Goygol]]", regional_categories = {"Goygol"}, } labels["Göygöl"] = "Goygol" labels["Helenendorf"] = "Goygol" labels["Yelenino"] = "Goygol" labels["Khanlar"] = "Goygol" labels["Xanlar"] = "Goygol" labels["Guria"] = { display = "[[w:Guria|Guria]]", regional_categories = {"Guria"}, } labels["Gurian"] = "Guria" labels["Guruli"] = "Guria" labels["Gürün"] = { display = "[[w:Gürün|Gürün]]", regional_categories = {"Gürün"}, } labels["Kyurin"] = "Gürün" labels["Gyurin"] = "Gürün" labels["Gyumri"] = { display = "[[w:Gyumri|Gyumri]]", regional_categories = {"Gyumri"}, } labels["Kumayri"] = "Gyumri" labels["Leninakan"] = "Gyumri" labels["Alexandropol"] = "Gyumri" -- Asia H labels["Haçin"] = { display = "[[w:Saimbeyli|Haçin]]", regional_categories = {"Haçin"}, } labels["Hadjin"] = "Haçin" labels["Hajin"] = "Haçin" labels["Hachn"] = "Haçin" labels["Hajn"] = "Haçin" labels["Hakkari"] = { display = "[[w:Hakkari|Hakkari]]", regional_categories = {"Hakkari"}, } labels["Hakkiari"] = "Hakkari" labels["Hakari"] = "Hakkari" labels["Hakiari"] = "Hakkari" labels["Hakkâri"] = "Hakkari" labels["Harbin"] = { display = "[[w:Harbin|Harbin]]", regional_categories = {"Harbin"}, } labels["Hokkaido"] = { regional_categories = {"Hokkaido"}, } labels["Hong Kong"] = { display = "[[w:Hong Kong|Hong Kong]]", regional_categories = {"Hong Kong"}, } labels["Hyderabad"] = { display = "[[w:Hyderabad|Hyderabad]]", regional_categories = {"Hyderabadi"}, } -- Asia I labels["İçel"] = { display = "[[w:Mersin Province|İçel]]", regional_categories = {"İçel"}, } labels["Içel"] = "İçel" labels["Imereti"] = { display = "[[w:Imereti|Imereti]]", regional_categories = {"Imereti"}, } labels["Imeretian"] = "Imereti" labels["Imeruli"] = "Imereti" labels["Imerkhevi"] = { display = "[[w:Georgians in Turkey#Imerkhevians|Imerkhevi]]", regional_categories = {"Imerkhevi"}, } labels["Imerkhevian"] = "Imerkhevi" labels["Imerkheuli"] = "Imerkhevi" labels["İmerhev"] = "Imerkhevi" labels["Imerhev"] = "Imerkhevi" labels["Imishli"] = { display = "[[w:Imishli District|Imishli]]", regional_categories = {"Imishli"}, } labels["İmişli"] = "Imishli" labels["India"] = { aliases = {"Indianan", "Indianian", "Ấn Độ"}, display = "[[w:Ấn Độ|Ấn Độ]]", regional_categories = {"Ấn Độ"}, } labels["Indore"] = { display = "[[Indore|Indore]]", regional_categories = {"Indore"}, } labels["Indonesia"] = { display = "[[w:Indonesia|Indonesia]]", regional_categories = {"Indonesian"}, } labels["Indonesian"] = "Indonesia" labels["Iran"] = { display = "[[w:Iran|Iran]]", regional_categories = {"Iranian"}, } labels["Iranian"] = "Iran" labels["Iraq"] = { display = "Iraq", regional_categories = {"Iraqi"} } labels["Iraqi"] = "Iraq" labels["Islamabad"] = { display = "[[w:Islamabad|Islamabad]]", regional_categories = {"Islamabadi"}, } labels["Ismayilli"] = { display = "[[w:Ismayilli District|Ismayilli]]", regional_categories = {"Ismayilli"}, } labels["İsmayıllı"] = "Ismayilli" labels["Isparta"] = { display = "[[w:Isparta|Isparta]]", regional_categories = {"Isparta"}, } labels["Israel"] = { aliases = {"Israeli"}, -- "ar", en" handled in lang-specific module langs = {"ajp", "he", "ru", "yi"}, Wikipedia = true, regional_categories = true, } labels["Ivory Coast"] = { display = "[[w:Ivory Coast|Ivory Coast]]", regional_categories = {"Ivorian"}, } labels["Côte d’Ivoire"] = "Ivory Coast" labels["Côte d'Ivoire"] = "Ivory Coast" labels["Ivorian"] = "Ivory Coast" labels["İzmir"] = { display = "[[w:İzmir|İzmir]]", regional_categories = {"İzmir"}, } labels["Izmir"] = "İzmir" labels["İzmit"] = { display = "[[w:İzmit|İzmit]]", regional_categories = {"İzmit"}, } labels["Izmit"] = "İzmit" labels["Nicomedia"] = "İzmit" labels["Nikomedia"] = "İzmit" -- Asia J labels["Jabrayil"] = { display = "[[w:Jabrayil District|Jabrayil]]", regional_categories = {"Jabrayil"}, } labels["Cəbrayıl"] = "Jabrayil" labels["Jakarta"] = { display = "[[w:Jakarta|Jakarta]]", regional_categories = {"Jakarta"}, } labels["Jalilabad"] = { display = "[[w:Jalilabad District|Jalilabad]]", regional_categories = {"Jalilabad"}, } labels["Cəlilabad"] = "Jalilabad" labels["Jammu Kashmir"] = { display = "[[w:Jammu and Kashmir (union territory)|Jammu Kashmir]]", regional_categories = {"Jammu Kashmiri"}, } labels["Jammu and Kashmir"] = "Jammu Kashmir" labels["Indian Kashmir"] = "Jammu Kashmir" labels["Jammu & Kashmir"] = "Jammu Kashmir" labels["J&K"] = "Jammu Kashmir" labels["J&K"] = "Jammu Kashmir" labels["Japan"] = { display = "[[Nhật Bản]]", regional_categories = {"Nhật Bản"}, } labels["Java"] = { display = "[[w:Java|Java]]", regional_categories = {"Java"}, } labels["Javanese"] = "Java" labels["Javakheti"] = { display = "[[w:Javakheti|Javakheti]]", regional_categories = {"Javakheti"}, } labels["Javakhk"] = "Javakheti" labels["Jeju"] = { display = "[[w:Jeju Province|Jeju]]", regional_categories = {"Jeju"}, } labels["Jeju City"] = { display = "[[w:Jeju City|Jeju City]]", regional_categories = {"Jeju City"}, } labels["Jeolla"] = { display = "[[w:Jeolla dialect|Jeolla dialect]]", regional_categories = {"Jeolla"}, } labels["Jordan"] = { display = "Jordan", regional_categories = {"Jordanian"} } labels["Jordanian"] = "Jordan" labels["Julfa"] = { display = "[[w:Julfa, Azerbaijan (city)|Julfa]]", regional_categories = {"Julfa"}, } labels["Old Julfa"] = "Julfa" labels["Culfa"] = "Julfa" labels["Jugha"] = "Julfa" labels["Hin Jugha"] = "Julfa" -- Asia K labels["Kakavaberd"] = { display = "[[w:Kakavaberd dialect|Kakavaberd]]", regional_categories = {"Kakavaberd"}, } labels["Kaqavaberd"] = "Kakavaberd" labels["Kakheti"] = { display = "[[w:Kakheti|Kakheti]]", regional_categories = {"Kakheti"}, } labels["Kakhetian"] = "Kakheti" labels["Kakhuri"] = "Kakheti" labels["Kalbajar"] = { display = "[[w:Kalbajar District|Kalbajar]]", regional_categories = {"Kalbajar"}, } labels["Kelbajar"] = "Kalbajar" labels["Kəlbəcər"] = "Kalbajar" labels["Karachi"] = { display = "[[w:Karachi|Karachi]]", regional_categories = {"Karachi"}, } labels["Kartli"] = { display = "[[w:Kartli|Kartli]]", regional_categories = {"Kartli"}, } labels["Kartlian"] = "Kartli" labels["Kartluri"] = "Kartli" labels["Karvansara"] = { display = "[[w:Karvansara, Gegharkunik]]", regional_categories = {"Karvansaray"}, } labels["Karvansaray"] = "Karvansara" labels["Kalimantan"] = { display = "[[w:Kalimantan|Kalimantan]]", regional_categories = {"Kalimantanese"}, } labels["Kaptanpaşa"] = { display = "[[w:tr:Kaptanpaşa, Çayeli|Kaptanpaşa]]", regional_categories = {"Rize"}, } labels["Kars"] = { display = "[[w:Kars|Kars]]", regional_categories = {"Kars"}, } labels["Ghars"] = "Kars" labels["Kathiyawadi"] = { display = "[[w:Kathiawar|Kathiyawadi]]", regional_categories = {"Kathiyawadi"}, } labels["Kathiawadi"] = "Kathiyawadi" labels["Sorathi"] = "Kathiyawadi" labels["Bhawnagari"] = "Kathiyawadi" labels["Gohilwadi"] = "Kathiyawadi" labels["Holadi"] = "Kathiyawadi" labels["Jhalawadi"] = "Kathiyawadi" labels["Kayseri"] = { display = "[[w:Kayseri|Kayseri]]", regional_categories = {"Kayseri"}, } labels["Kesaria"] = "Kayseri" labels["Kazakhstan"] = { display = "[[w:Kazakhstan|Kazakhstan]]", regional_categories = {"Kazakhstani"}, } labels["Kazakhstani"] = "Kazakhstan" labels["Kazakh"] = "Kazakhstani" labels["Kazym"] = { regional_categories = {"Kazym"}, } labels["Kemaliye"] = { display = "[[w:Kemaliye|Kemaliye]]", regional_categories = {"Kemaliye"}, } labels["Ketapang"] = { display = "[[w: Ketapang Regency|Ketapang]]", regional_categories = {"Ketapang"}, } labels["Kharberd"] = { display = "[[w:Elazığ|Kharberd]]", regional_categories = {"Kharberd"}, } labels["Kharpert"] = "Kharberd" labels["Kharput"] = "Kharberd" labels["Harput"] = "Kharberd" labels["Khevi"] = { display = "[[w:Khevi|Khevi]]", regional_categories = {"Khevi"}, } labels["Mokhevian"] = "Khevi" labels["Mokhevi"] = "Khevi" labels["Mokheuri"] = "Khevi" labels["Khevian"] = "Khevi" labels["Khevsureti"] = { display = "[[w:Khevsureti|Khevsureti]]", regional_categories = {"Khevsureti"}, } labels["Khevsuria"] = "Khevsureti" labels["Khojavend"] = { display = "[[w:Khojavend District|Khojavend]]", regional_categories = {"Khojavend"}, } labels["Xocavənd"] = "Khojavend" labels["Khotorjur"] = { display = "[[w:Khotorjur|Khotorjur]]", regional_categories = {"Khotorjur"}, } labels["Khodorchur"] = "Khotorjur" labels["Hodiçor"] = "Khotorjur" labels["Xodiçur"] = "Khotorjur" labels["Xodrçur"] = "Khotorjur" labels["Xodorçur"] = "Khotorjur" labels["Sırakonak"] = "Khotorjur" labels["Khoy"] = { display = "[[w:Khoy|Khoy]]", regional_categories = {"Khoy"}, } labels["Khoi"] = "Khoy" labels["Khyber Pakhtunkhwa"] = { display = "[[w:Khyber Pakhtunkhwa|Khyber Pakhtunkhwa]]", regional_categories = {"Khyber Pakhtunkhwa"}, } labels["Pakhtunkhwa"] = "Khyber Pakhtunkhwa" labels["KPK"] = "Khyber Pakhtunkhwa" labels["Kiziqi"] = { display = "[[w:ka:ქიზიყი|Kiziqi]]", regional_categories = {"Kiziqi"}, } labels["Kisiqi"] = "Kiziqi" labels["Konya"] = { display = "[[w:Konya|Konya]]", regional_categories = {"Konya"}, } -- Asia L labels["Landak"] = { display = "[[w: Landak Regency|Landak]]", regional_categories = {"Landak"}, } labels["Lankaran"] = { display = "[[w:Lankaran|Lankaran]]", regional_categories = {"Lankaran"}, } labels["Lənkaran"] = "Lankaran" labels["Lənkəran"] = "Lankaran" labels["Lankon"] = "Lankaran" labels["Lachin"] = { display = "[[w:Lachin District|Lachin]]", regional_categories = {"Lachin"}, } labels["Laçın"] = "Lachin" labels["Laçîn"] = "Lachin" labels["Lahore"] = { display = "[[w:Lahore|Lahore]]", regional_categories = {"Lahori"}, } labels["Lahori"] = "Lahore" labels["Lebanon"] = { display = "Lebanon", regional_categories = {"Lebanese"}, } labels["Lebanese"] = "Lebanon" labels["Lechkhumi"] = { display = "[[w:Lechkhumi|Lechkhumi]]", regional_categories = {"Lechkhumi"}, } labels["Lechkhumian"] = "Lechkhumi" labels["Lechkhumuri"] = "Lechkhumi" labels["Levant"] = { display = "[[w:Levant|Levantine]]", regional_categories = {"Levantine"}, } labels["Levantine"] = "Levant" labels["Libya"] = { display = "Libya", regional_categories = {"Libyan"}, } labels["Libyan"] = "Libya" labels["Lori"] = { display = "[[w:Lori Province|Lori]]", regional_categories = {"Lori"}, } labels["Loṙi"] = "Lori" labels["Lucknow"] = { regional_categories = {"Lucknow"}, } -- Asia M labels["Macau"] = { display = "[[w:Macau|Macau]]", regional_categories = {"Macanese"}, } labels["Macao"] = "Macau" labels["Macanese"] = "Macau" labels["Mainland China"] = { display = "[[w:Trung Quốc đại lục|Trung Quốc đại lục]]", regional_categories = {"Trung Quốc đại lục"}, } labels["Mainland"] = "Mainland China" labels["mainland"] = "Mainland China" labels["mainland China"] = "Mainland China" labels["Malatya"] = { display = "[[w:Malatya|Malatya]]", regional_categories = {"Malatya"}, } labels["Malatia"] = "Malatya" labels["Malayeri"] = { display = "[[w:Malayer|Malayeri]]", regional_categories = {"Malayeri"}, } labels["Malaysia"] = { display = "[[w:Malaysia|Malaysia]]", regional_categories = {"Malaysian"}, } labels["Malaysian"] = "Malaysia" labels["Manisa"] = { display = "[[w:Manisa|Manisa]]", regional_categories = {"Manisa"}, } labels["Masally"] = { display = "[[w:Masally District|Masally]]", regional_categories = {"Masally"}, } labels["Masallı"] = "Masally" labels["Medan"] = { display = "[[w:Medan|Medan]]", regional_categories = {"Medan"}, } labels["Meghri"] = { display = "[[w:Meghri|Meghri]]", regional_categories = {"Meghri"}, } labels["Meğri"] = "Meghri" labels["Mehsani"] = { display = "[[w:Mehsana|Mehsani]]", regional_categories = {"Mehsani"}, } labels["Mahesani"] = "Mehsani" labels["Melawi"] = { display = "[[w: Melawi Regency|Melawi]]", regional_categories = {"Melawi"}, } labels["Meskheti"] = { display = "[[w:Meskheti|Meskheti]]", regional_categories = {"Meskheti"}, } labels["Meskhetian"] = "Meskheti" labels["Meskhian"] = "Meskheti" labels["Meskhuri"] = "Meskheti" labels["Mesudiye"] = { display = "[[w:Mesudiye, Ordu|Mesudiye]]", regional_categories = {"Mesudiye"}, } labels["Mingachevir"] = { display = "[[w:Mingachevir|Mingachevir]]", regional_categories = {"Mingachevir"}, } labels["Mingəçevir"] = "Mingachevir" labels["Moks"] = { display = "[[w:Bahçesaray (District), Van|Moks]]", regional_categories = {"Moks"}, } labels["Müküs"] = "Moks" labels["Miks"] = "Moks" labels["Mongolia"] = { display = "[[w:Mongolia|Mongolia]]", regional_categories = {"Mongolian"}, } labels["Mtiuleti"] = { display = "[[w:Mtiuleti|Mtiuleti]]", regional_categories = {"Mtiuleti"}, } labels["Mtiuletian"] = "Mtiuleti" labels["Mtiuluri"] = "Mtiuleti" labels["Muğla"] = { display = "[[w:Muğla|Muğla]]", regional_categories = {"Muğla"}, } labels["Mumbai"] = { regional_categories = {"Mumbai"}, } labels["Muş"] = { display = "[[w:Muş|Muş]]", regional_categories = {"Muş"}, } labels["Mush"] = "Muş" labels["Myanmar"] = { display = "[[w:Myanmar|Myanmar]]", regional_categories = {"Myanmar"}, } labels["Myanmarese"] = "Myanmar" labels["Burma"] = "Myanmar" labels["Burmese"] = "Myanmar" labels["Myeik"] = { display = "[[w:Myeik dialect|Myeik]]", regional_categories = {"Myeik"}, } -- Asia N labels["Nakhchivan"] = { display = "[[w:Nakhchivan|Nakhchivan]]", regional_categories = {"Nakhchivan"}, } labels["Naxçıvan"] = "Nakhchivan" labels["Nakhichevan"] = "Nakhchivan" labels["Nakhijevan"] = "Nakhchivan" labels["Nahçıvan"] = "Nakhchivan" labels["Negeri Sembilan"] = { display = "[[w:Negeri Sembilan|Negeri Sembilan]]", regional_categories = {"Negeri Sembilan"}, } labels["Nepal"] = { display = "[[w:Nepal|Nepal]]", regional_categories = {"Nepali"}, } labels["Nepali"] = "Nepal" labels["Nepalese"] = "Nepal" labels["New Julfa"] = { display = "[[w:New Julfa|New Julfa]]", regional_categories = { "New Julfa" }, } labels["Nor Jugha"] = "New Julfa" labels["Niğde"] = { display = "[[w:Niğde|Niğde]]", regional_categories = {"Niğde"}, } labels["Nigde"] = "Niğde" labels["Nij"] = { display = "[[w:Nij, Azerbaijan|Nij]]", regional_categories = {"Nij"}, } labels["Nidzh"] = "Nij" labels["Nizh"] = "Nij" labels["Nor Bayazet"] = { display = "[[w:Nor Bayazet|Nor Bayazet]]", regional_categories = {"Nor Bayazet"}, } labels["Novo-Bayazet"] = "Nor Bayazet" labels["Gavar"] = "Nor Bayazet" labels["Nor Nakhichevan"] = { display = "[[w:Nakhichevan-on-Don|Nor Nakhichevan]]", regional_categories = {"Nor Nakhichevan"}, } labels["New Nakhichevan"] = "Nor Nakhichevan" labels["Nor Nakhijevan"] = "Nor Nakhichevan" labels["Nakhichevan-on-Don"] = "Nor Nakhichevan" labels["North India"] = { display = "[[w:North India|North India]]", regional_categories = {"North Indian"}, } labels["North Indian"] = "North India" labels["North Sakhalin"] = { display = "North [[w:Sakhalin|Sakhalin]]", regional_categories = {"North Sakhalin"}, } labels["North Sumatra"] = { display = "[[w: North Sumatra|North Sumatra]]", regional_categories = {"North Sumatranese"}, } labels["Sumut"] = "North Sumatra" -- Asia O labels["Oghuz"] = { display = "[[w:Oghuz District|Oghuz]]", regional_categories = {"Oghuz"}, } labels["Oğuz"] = "Oghuz" labels["Oman"] = { display = "Oman", regional_categories = {"Omani"}, } labels["Omani"] = "Oman" labels["Ordubad"] = { display = "[[w:Ordubad District (Azerbaijan)|Ordubad]]", regional_categories = {"Ordubad"}, } -- Asia P labels["Pahang"] = { display = "[[w:Pahang|Pahang]]", regional_categories = {"Pahang"}, } labels["Pakistan"] = { aliases = {"Pakistani"}, Wikipedia = true, regional_categories = {"Pakistan"}, } labels["Palestine"] = { display = "Palestine", regional_categories = {"Palestinian"}, } labels["Palestinian"] = "Palestine" labels["Pasinler"] = { display = "[[w:Pasinler, Erzurum|Pasinler]]", regional_categories = {"Pasinler"}, } labels["Basen"] = "Pasinler" labels["Basean"] = "Pasinler" labels["Pasen"] = "Pasinler" labels["Palu"] = { display = "[[w:Palu, Elazığ|Palu]]", regional_categories = {"Palu"}, } labels["Balu"] = "Palu" labels["Partizak"] = { display = "[[w:hy:Պարտիզակ (Քոջաելի)|Partizak]]", regional_categories = {"Partizak"}, } labels["Bardizag"] = "Partizak" labels["Perak"] = { display = "[[w:Perak|Perak]]", regional_categories = {"Perak"}, } labels["Peshawar"] = { display = "[[w:Peshawar|Peshawar]]", regional_categories = {"Peshawari"}, } labels["Peshawari"] = "Peshawar" labels["Pharasa"] = { display = "[[w:Pharasiot Greek|Pharasa]]", regional_categories = {"Pharasiot"}, } labels["Pharasiot"] = "Pharasa" labels["Varasos"] = "Pharasa" labels["Farasa"] = "Pharasa" labels["Faraşa"] = "Pharasa" labels["Philippines"] = { display = "[[w:Philippines|Philippines]]", regional_categories = {"Philippine"}, } labels["Philippine"] = "Philippines" labels["Priangan"] = { regional_categories = {"Priangan"}, } labels["Pontianak"] = { display = "[[w: Pontianak|Pontianak]]", regional_categories = {"Pontianak"}, } labels["Pshavi"] = { display = "[[w:Pshavi|Pshavi]]", regional_categories = {"Pshavi"}, } labels["Pshavian "] = "Pshavi" labels["Pshauri"] = "Pshavi" labels["Pulur"] = { display = "[[w:Ovacık, Dersim|Pulur]]", regional_categories = {"Pulur"}, } labels["Punjab"] = { display = "[[w:Punjab|Punjab]]", regional_categories = {"Punjabi"}, } labels["Punjabi"] = "Punjab" -- Asia Q labels["Qabala"] = { display = "[[w:Qabala District|Qabala]]", regional_categories = {"Qabala"}, } labels["Qəbələ"] = "Qabala" labels["Kutkashen"] = "Qabala" labels["Qakh"] = { display = "[[w:Qakh District|Qakh]]", regional_categories = {"Qakh"}, } labels["Kakhi"] = "Qakh" labels["Gakh"] = "Qakh" labels["Qax"] = "Qakh" labels["Qazakh"] = { display = "[[w:Qazakh District|Qazakh]]", regional_categories = {"Qazakh"}, } labels["Qazax"] = "Qazakh" labels["Gazakh"] = "Qazakh" labels["Kazakh"] = "Qazakh" labels["Quba"] = { display = "[[w:Quba District (Azerbaijan)|Quba]]", regional_categories = {"Quba"}, } labels["Quetta"] = { display = "[[w: Quetta|Quetta]]", regional_categories = {"Quettan"}, } labels["Quettan"] = "Quetta" labels["Quettawal"] = "Quetta" labels["Quettawali"] = "Quetta" -- Asia R labels["Racha"] = { display = "[[w:Racha|Racha]]", regional_categories = {"Racha"}, } labels["Rachan"] = "Racha" labels["Rachuli"] = "Racha" labels["Rize"] = { display = "[[w:Rize|Rize]]", regional_categories = {"Rize"}, } -- Asia S labels["Saatly"] = { display = "[[w:Saatly District|Saatly]]", regional_categories = {"Saatly"}, } labels["Saatlı"] = "Saatly" labels["Sadz"] = { display = "[[w:Sadz_dialect|Sadz]]", regional_categories = {"Sadz"}, } labels["Asadzwa"] = "Sadz" labels["Sakhalin"] = { display = "[[w:Sakhalin|Sakhalin]]", regional_categories = {"Sakhalin"}, } labels["Salyan"] = { display = "[[w:Salyan District, Azerbaijan|Salyan]]", regional_categories = {"Salyan"}, } labels["Sambas"] = { display = "[[w: Sambas Regency|Sambas]]", regional_categories = {"Sambas"}, } labels["Sanggau"] = { display = "[[w: Sanggau Regency|Sanggau]]", regional_categories = {"Sanggau"}, } labels["Sarıkamış"] = { display = "[[w:Sarıkamış|Sarıkamış]]", regional_categories = {"Sarıkamış"}, } labels["Sarikamish"] = "Sarıkamış" labels["Sarighamish"] = "Sarıkamış" labels["Sasun"] = { display = "[[w:Sason|Sasun]]", regional_categories = {"Sasun"}, } labels["Sason"] = "Sasun" labels["Sassoun"] = "Sasun" labels["Seogwipo"] = { display = "[[w:Seogwipo|Seogwipo]]", regional_categories = {"Seogwipo"}, } labels["Shahbuz"] = { display = "[[w:Shahbuz District|Shahbuz]]", regional_categories = {"Shahbuz"}, } labels["Shamakhi"] = { display = "[[w:Shamakhi|Shamakhi]]", regional_categories = {"Shamakhi"}, } labels["Şamaxı"] = "Shamakhi" labels["Sharur"] = { display = "[[w:Sharur District|Sharur]]", regional_categories = {"Sharur"}, } labels["Şərur"] = "Sharur" labels["Shiraz"] = { display = "[[w:Shiraz|Shiraz]]", regional_categories = {"Shiraz"}, } labels["Sindh"] = { display = "[[w:Sindh|Sindh]]", regional_categories = {"Sindhi"}, } labels["Sind"] = "Sindh" labels["Sindhi"] = "Sindh" labels["Sintang"] = { display = "[[w: Sintang Regency|Sintang]]", regional_categories = {"Sintang"}, } labels["Tusheti"] = { display = "[[w:Tusheti|Tusheti]]", regional_categories = {"Tusheti"}, } labels["Tushetian"] = "Tusheti" labels["Tushuri"] = "Tusheti" labels["Ujar"] = { display = "[[w:Ujar District|Ujar]]", regional_categories = {"Ujar"}, } labels["Ucar"] = "Ujar" labels["Kurdamir"] = { display = "[[w:Kurdamir District|Kurdamir]]", regional_categories = {"Kurdamir"}, } labels["Kürdəmir"] = "Kurdamir" labels["Barda"] = { display = "[[w:Barda District|Barda]]", regional_categories = {"Barda"}, } labels["Bərdə"] = "Barda" labels["Salmas"] = { display = "[[w:Salmas|Salmas]]", regional_categories = {"Salmas"}, } labels["Salmast"] = "Salmas" labels["Senaki"] = { display = "[[w:Senaki|Senaki]]", regional_categories = {"Senaki"}, } labels["Shamkir"] = { display = "[[w:Shamkir District|Shamkir]]", regional_categories = {"Shamkir"}, } labels["Şəmkir"] = "Shamkir" labels["Shamkur"] = "Shamkir" labels["Shamkhor"] = "Shamkir" labels["Shanghai"] = { display = "[[w:Shanghai|Shanghai]]", regional_categories = {"Shanghainese"}, } labels["Shanghainese"] = "Shanghai" labels["Sheki"] = { display = "[[w:Sheki, Azerbaijan|Sheki]]", regional_categories = {"Sheki"}, } labels["Şəki"] = "Sheki" labels["Shaki"] = "Sheki" labels["Shidong"] = { display = "[[w:Shidong|Shidong]]", regional_categories = {"Shidong"}, } labels["Shirvan"] = { display = "[[w:Shirvan District|Shirvan]]", regional_categories = {"Shirvan"}, } labels["Shuryshkar"] = { regional_categories = {"Shuryshkar"}, } labels["Shurishkar"] = "Shuryshkar" labels["Shusha"] = { display = "[[w:Shusha|Shusha]]", regional_categories = {"Shusha"}, } labels["Şuşa"] = "Shusha" labels["Singapore"] = { display = "[[w:Singapore|Singapore]]", regional_categories = {"Singapore"}, } labels["Singaporean"] = "Singapore" labels["Sivas"] = { display = "[[w:Sivas|Sivas]]", regional_categories = {"Sivas"}, } labels["Sebastia"] = "Sivas" labels["Sebastea"] = "Sivas" labels["South Asia"] = { display = "[[w:Nam Á|Nam Á]]", regional_categories = {"Nam Á"}, } labels["Nam Á"] = "South Asia" labels["South Asian"] = "South Asia" labels["Southeast Asia"] = { display = "[[w:Southeast Asia|Southeast Asia]]", regional_categories = {"Southeast Asian"}, } labels["Southeast Asian"] = "Southeast Asia" labels["SEA"] = "Southeast Asia" labels["South India"] = { display = "[[w:South India|South India]]", regional_categories = {"South Indian"}, } labels["South Indian"] = "South India" labels["South Korea"] = { display = "[[w:South Korea|South Korea]]", regional_categories = {"South Korean"}, } labels["South Korean"] = "South Korea" labels["South Sakhalin"] = { display = "South [[w:Sakhalin|Sakhalin]]", regional_categories = {"South Sakhalin"}, } labels["Sri Lanka"] = { display = "[[Sri Lanka]]", regional_categories = {"Sri Lankan"}, } labels["Sri Lankan"] = "Sri Lanka" labels["Sumatra"] = { display = "[[w: Sumatra|Sumatra]]", regional_categories = {"Sumatranese"}, } labels["Surati"] = { display = "[[w:Surat district|Surati]]", regional_categories = {"Surati"}, } labels["Surgut"] = { display = "[[w:Surgut|Surgut]]", regional_categories = {"Surgut"}, } labels["Suzhou"] = { display = "[[w:Suzhou|Suzhou]]", regional_categories = {"Suzhounese"}, } labels["Suzhounese"] = "Suzhou" labels["Syria"] = { display = "Syria", regional_categories = {"Syrian"}, } labels["Syrian"] = "Syria" -- Asia T labels["Tabriz"] = { display = "[[w:Tabriz|Tabriz]]", regional_categories = {"Tabrizi"}, } labels["Təbriz"] = "Tabriz" labels["Tebriz"] = "Tabriz" labels["Tabrizi"] = "Tabriz" labels["Đài Loan"] = { aliases = {"Taiwan","Taiwanese"}, display = "[[w:Đài Loan|Đài Loan]]", regional_categories = {"Đài Loan"}, } labels["Tbilisi"] = { display = "[[w:Tbilisi|Tbilisi]]", regional_categories = {"Tbilisi"}, } labels["Tiflis"] = "Tbilisi" labels["Tartar"] = { display = "[[w:Tartar District|Tartar]]", regional_categories = {"Tartar"}, } labels["Tərtər"] = "Tartar" labels["Thailand"] = { aliases = {"Thai", "Thái", "Thái Lan"}, -- "en", "zh" handled in lang-specific module langs = {"khb", "mnw", "th"}, display = "[[w:Thái Lan|Thái Lan]]", regional_categories = "Thai", } labels["Tokat"] = { display = "[[w:Tokat|Tokat]]", regional_categories = {"Tokat"}, } labels["Evdokia"] = "Tokat" labels["Tovuz"] = { display = "[[w:Tovuz District|Tovuz]]", regional_categories = {"Tovuz"}, } labels["Trabzon"] = { display = "[[w:Trabzon|Trabzon]]", regional_categories = {"Trabzon"}, } labels["Trapizon"] = "Trabzon" -- Asia U labels["Urfa"] = { display = "[[w:Şanlıurfa|Urfa]]", regional_categories = {"Urfa"}, } labels["Urha"] = "Urfa" labels["Şanlıurfa"] = "Urfa" labels['Urmia'] = { display = "[[w:Urmia|Urmia]]", regional_categories = {"Urmia"}, } labels['Urmu'] = 'Urmia' labels['Urmiya'] = 'Urmia' labels["Uşak"] = { display = "[[w:Uşak|Uşak]]", regional_categories = {"Uşak"}, } labels["Uttar Pradesh"] = { display = "[[w:Uttar Pradesh|Uttar Pradesh]]", regional_categories = {"Uttar Pradeshi"}, } -- Asia V labels["Van"] = { display = "[[w:Van, Turkey|Van]]", regional_categories = {"Van"}, } labels["Vartashen"] = { display = "[[w:Oğuz (city)|Vartashen]]", regional_categories = {"Vartashen"}, } labels["Vardashen"] = "Vartashen" labels["Vayots Dzor"] = { display = "[[w:hy:Վայոց_ձորի_միջբարբառ|Vayots Dzor]]", regional_categories = {"Vayots Dzor"}, } labels["Vayots dzor"] = "Vayots Dzor" labels["Vietnam"] = { display = "[[w:Vietnam|Vietnam]]", regional_categories = {"Vietnamese"}, } labels["Vietnamese"] = "Vietnam" labels["Vozm"] = { display = "[[w:Gümüşören, Pervari|Vozm]]", regional_categories = {"Vozm"}, } labels["Vozim"] = "Vozm" labels["Özim"] = "Vozm" labels["Üzim"] = "Vozm" -- Asia W labels["West Kalimantan"] = { display = "[[w:West Kalimantan|West Kalimantan]]", regional_categories = {"West Kalimantanese"}, } labels["Kalbar"] = "West Kalimantan" -- Asia X -- Asia Y labels["Yardymli"] = { display = "[[w:Yardymli District|Yardymli]]", regional_categories = {"Yardymli"}, } labels["Yemen"] = { display = "Yemen", regional_categories = {"Yemeni"}, } labels["Yemeni"] = "Yemen" labels["Yemenite"] = "Yemen" labels["Yerevan"] = { display = "[[w:Yerevan|Yerevan]]", regional_categories = {"Yerevan"}, } labels["İrəvan"] = "Yerevan" labels["Yevlakh"] = { display = "[[w:Yevlakh District|Yevlakh]]", regional_categories = {"Yevlakh"}, } labels["Yevlax"] = "Yevlakh" labels["Special Region of Yogyakarta"] = { display = "[[w:Special Region of Yogyakarta]]", regional_categories = {"Special Region of Yogyakarta"}, } labels["SR Yogyakarta"] = "Special Region of Yogyakarta" labels["Yogyakarta"] = { display = "[[w:Yogyakarta|Yogyakarta]]", regional_categories = {"Yogyakarta"}, } labels["Yonggu"] = { display = "[[w:Yonggu, Guangdong|Yonggu]]", regional_categories = {"Yonggu"}, } -- Asia Z labels["Zangilan"] = { display = "[[w:Zəngilan|Zangilan]]", regional_categories = {"Zangilan"}, } labels["Zəngilan"] = "Zangilan" labels["Zangelan"] = "Zangilan" labels["Zanjan"] = { display = "[[w:Zanjan, Iran|Zanjan]]", regional_categories = {"Zanjan"}, } labels["Zәncan"] = "Zanjan" labels["Zәngan"] = "Zanjan" labels["Zaqatala"] = { display = "[[w:Zaqatala District|Zaqatala]]", regional_categories = {"Zaqatala"}, } labels["Zakatala"] = "Zaqatala" labels["Zagatala"] = "Zaqatala" labels["Zardab"] = { display = "[[w:Zardab District|Zardab]]", regional_categories = {"Zardab"}, } labels["Zərdab"] = "Zardab" -- Europe labels["Europe"] = { display = "[[w:Europe|Europe]]", regional_categories = {"European"}, } -- Europe A labels["Alemannia"] = { display = "[[w:Alemannia|Alemannia]]", regional_categories = {"Alemannic"}, } labels["Alemannic"] = "Alemannia" labels["Alghero"] = { display = "[[w:Alghero|Alghero]]", regional_categories = {"Algherese"}, } labels["Algherese"] = "Alghero" labels["Al-Andalus"] = { display = "[[w:al-Andalus|al-Andalus]]", regional_categories = {"Andalusian"}, } labels["al-Andalus"] = "Al-Andalus" labels["Amsterdam"] = { display = "[[w:Amsterdam|Amsterdam]]", regional_categories = {"Amsterdam"}, } labels["Andalusia"] = { display = "[[w:Andalusia|Andalusia]]", regional_categories = {"Andalusian"}, } labels["Andalucía"] = "Andalusia" labels["Andalucia"] = "Andalusia" labels["Antrim"] = { display = "[[w:County Antrim|Antrim]]", regional_categories = {"Northern Irish"}, } labels["Aragón"] = { regional_categories = {"Aragonese"}, } labels["Aragonese"] = "Aragón" labels["Aragon"] = "Aragón" labels["Aran"] = { display = "[[w:Aran Islands|Aran]]", regional_categories = {"Connacht"}, } labels["Argyll"] = { display = "[[w:Argyll|Argyll]]", regional_categories = {"Argyll"}, } labels["Arran"] = { display = "[[w:Isle of Arran|Arran]]", regional_categories = {"Arran"}, } labels["Arvanitika"] = { display = "[[w:Arvanitika|Arvanitika]]", regional_categories = {"Arvanitika"}, } labels["Asturias"] = { regional_categories = {"Asturian"}, } labels["Asturian"] = "Asturias" labels["Austria"] = { display = "[[w:Austria|Austria]]", regional_categories = {"Austrian"}, } labels["Austrian"] = "Austria" labels["Azores"] = { display = "[[w:Azores|Azores]]", regional_categories = {"Azorean"}, } labels["Azorean"] = "Azores" labels["Azorian"] = "Azores" -- Europe B labels["Badenoch"] = { display = "[[w:Badenoch|Badenoch]]", regional_categories = {"Badenoch"}, } labels["Balearics"] = { display = "[[w:Balearic Islands|Balearics]]", regional_categories = {"Balearic"}, } labels["Balearic"] = "Balearics" labels["Balearic Islands"] = "Balearics" labels["Baleares"] = "Balearics" labels["Balears"] = "Balearics" labels["Banat"] = { display = "[[w:Banat|Banat]]", regional_categories = {"Banat"}, } labels["Basque Country"] = { display = "[[w:Basque Country (autonomous community)|Basque Country]]", regional_categories = {"Basque Country"}, } labels["Bavaria"] = { display = "[[w:Bavaria|Bavaria]]", regional_categories = {"Bavarian"}, } labels["Bavarian"] = "Bavaria" labels["Bedfordshire"] = { display = "[[w:Bedfordshire|Bedfordshire]]", regional_categories = {"Bedfordshire"}, } labels["Bedfordshire dialect"] = "Bedfordshire" labels["Berkshire"] = { display = "[[w:Berkshire|Berkshire]]", regional_categories = {"Berkshire"}, } labels["Berkshire dialect"] = "Berkshire" labels["Old Belarusian"] = { display = "Old Belarusian", Wikipedia = true, plain_categories = { "Old Belarusian" }, } labels["Bỉ"] = { display = "[[w:Bỉ|Bỉ]]", regional_categories = {"Bỉ"}, } labels["Belgian"] = "Bỉ" labels["Belgium"] = "Bỉ" labels["Bern"] = { display = "[[w:Bern|Bern]]", regional_categories = {"Bernese"}, } labels["Bernese"] = "Bern" labels["Black Isle"] = { display = "[[w:Black Isle|Black Isle]]", regional_categories = {"Black Isle"}, } labels["Bohuslän"] = { display = "[[w:Bohuslän|Bohuslän]]", regional_categories = {"Bohuslän"}, } labels["Bohuslan"] = "Bohuslän" labels["Bologna"] = { display = "[[Bologna]]", regional_categories = {"Bolognese"}, } labels["Bolognese"] = "Bologna" labels["Bosnia"] = { display = "[[w:Bosnia|Bosnia]]", regional_categories = {"Bosnian"}, } labels["Bosnian"] = "Bosnia" labels["Brabant"] = { display = "[[w:Brabant|Brabant]]", regional_categories = {"Brabantian"}, } labels["Brabantian"] = "Brabant" labels["Bristol"] = { display = "[[w:Bristol|Bristol]]", regional_categories = {"Bristolian"}, } labels["Bristolian"] = "Bristol" labels["Britain"] = { aliases = {"Brit", "British", "Great Britain", "Anh", "Đại Anh", "Đảo Anh"}, display = "[[w:Đảo Anh|Anh]]", regional_categories = {"Anh"}, } labels["Bukovina"] = { display = "[[w:Bukovina|Bukovina]]", regional_categories = {"Bukovinian"}, } labels["Bucovina"] = "Bukovina" labels["Bukovinian"] = "Bukovina" labels["Bukowina"] = "Bukovina" labels["Burgos"] = { regional_categories = {"Burgos"}, } -- Europe C labels["Cádiz"] = { Wikipedia = "Province of Cádiz", regional_categories = {"Cádiz"}, } labels["Cadiz"] = "Cádiz" labels["Caithness"] = { display = "[[w:Caithness|Caithness]]", regional_categories = {"Caithness"}, } labels["Cambridge University"] = { display = "[[w:University of Cambridge|Cambridge University]]", regional_categories = {"Cambridge University"}, } labels["University of Cambridge"] = "Cambridge University" labels["Cantab"] = "Cambridge University" labels["Canaries"] = { display = "[[w:Canary Islands|Canary Islands]]", regional_categories = {"Canarian"}, } labels["Canary Islands"] = "Canaries" labels["Canarias"] = "Canaries" labels["Carinthia"] = { display = "[[w:Carinthia|Carinthia]]", regional_categories = {"Carinthian"}, } labels["Carinthian"] = "Carinthia" labels["Kärnten"] = "Carinthia" labels["Carpi"] = { display = "[[w:Carpi, Emilia-Romagna|Carpi]]", regional_categories = {"Carpigiano"}, } labels["Carpigiano"] = "Carpi" labels["Channel Islands"] = { display = "[[w:Channel Islands|Channel Islands]]", regional_categories = {"Channel Islands"}, } labels["Connacht"] = { display = "[[w:Connacht|Connacht]]", regional_categories = {"Connacht"}, } labels["Connemara"] = { display = "[[w:Connemara|Connemara]]", regional_categories = {"Connacht"}, } labels["Cork"] = { display = "[[w:Cork (city)|Cork]]", regional_categories = {"Munster"}, } labels["Cornwall"] = { display = "[[w:Cornwall|Cornwall]]", regional_categories = {"Cornish"}, } labels["Cornish"] = "Cornwall" labels["Cornish dialect"] = "Cornwall" labels["Crimea"] = { display = "[[w:Crimea|Crimea]]", regional_categories = {"Crimean"}, } labels["Crimean"] = "Crimea" labels["Croatia"] = { display = "[[w:Croatia|Croatia]]", regional_categories = {"Croatian"}, } labels["Croatian"] = "Croatia" labels["Cumbria"] = { display = "[[w:Cumbria|Cumbria]]", regional_categories = {"Cumbrian"}, } labels["Cumbrian"] = "Cumbria" labels["West Cumbria"] = { display = "[[w:Cumbria|West Cumbria]]", regional_categories = {"Cumbrian"}, } -- can be split off if enough entries in it arise; group with Cumbria for now labels["West Cumbrian"] = "West Cumbria" -- Europe D labels["DDR"] = { display = "[[w:GDR|East Germany]]", regional_categories = {"DDR"}, } labels["GDR"] = "DDR" labels["East German"] = "DDR" labels["East Germany"] = "DDR" labels["Dalmatia"] = { display = "[[w:Dalmatia|Dalmatia]]", regional_categories = {"Dalmatian"}, } labels["Dalmatian"] = "Dalmatia" labels["Derbyshire"] = { display = "[[w:Derbyshire|Derbyshire]]", regional_categories = {"Derbyshire"}, } labels["Derbyshire dialect"] = "Derbyshire" labels["Devon"] = { display = "[[w:Devon|Devon]]", regional_categories = {"Devon"}, } labels["Devonian"] = "Devon" labels["Devonian dialect"] = "Devon" labels["Devonshire"] = "Devon" labels["Devonshire dialect"] = "Devon" labels["Dobruja"] = { display = "[[w:Dobruja|Dobruja]]", regional_categories = {"Dobrujan"}, } labels["Dobrogea"] = "Dobruja" labels["Dobrujan"] = "Dobruja" labels["Dorset"] = { display = "[[w:Dorset|Dorset]]", regional_categories = {"Dorset"}, } labels["Dorset dialect"] = "Dorset" labels["Dublin"] = { display = "[[w:Dublin|Dublin]]", regional_categories = {"Dublin"}, } labels["Dundee"] = { display = "[[w:Dundee|Dundee]]", regional_categories = {"Dundee"}, } labels["Durham"] = { display = "[[w:County Durham|Durham]]", regional_categories = {"Durham"}, } labels["Durham University"] = { display = "[[w:Durham University|Durham University]]", regional_categories = {"Durham University"}, } labels["University of Durham"] = "Durham University" -- Europe E labels["East Anglia"] = { display = "[[w:East Anglia|East Anglia]]", regional_categories = {"East Anglian"}, } labels["East Anglian"] = "East Anglia" labels["East Anglian dialect"] = "East Anglia" labels["East Midlands"] = { display = "[[w:East Midlands|East Midlands]]", regional_categories = {"East Midlands"}, } labels["East Midlands dialect"] = "East Midlands" labels["Edirne"] = { display = "[[w:Edirne|Edirne]]", regional_categories = {"Edirne"}, } labels["Adrianople"] = "Edirne" labels["Odrin"] = "Edirne" labels["Egerland"] = { display = "[[w:Egerland|Egerland]]", regional_categories = {"Egerland"}, } labels["Egerländisch"] = "Egerland" labels["Chebsko"] = "Egerland" labels["England"] = { display = "[[w:England|England]]", regional_categories = {"English"}, } labels["English"] = "England" labels["England and Wales"] = { display = "[[w:England and Wales|England & Wales]]", regional_categories = {"English", "Welsh"}, } labels["England & Wales"] = "England and Wales" labels["E&W"] = "England and Wales" labels["E+W"] = "England and Wales" labels["Essex"] = { display = "[[w:Essex|Essex]]", regional_categories = {"Essex"}, } labels["Essex dialect"] = "Essex" labels["Estonia"] = { display = "[[w:Estonia|Estonia]]", regional_categories = {"Estonian"}, } labels["Estonian"] = "Estonia" labels["Exmoor"] = { display = "[[w:Exmoor|Exmoor]]", regional_categories = {"Devonian", "Somerset"}, } labels["Extremadura"] = { display = "[[w:Extremadura|Extremadura]]", regional_categories = {"Extremaduran"}, } labels["Extremaduran"] = "Extremadura" -- Europe F labels["Finland"] = { display = "[[w:Finland|Finland]]", regional_categories = {"Finland"}, } labels["Finnish"] = "Finland" labels["Fjolde"] = { display = "[[w:Fjolde|Fjolde]]", regional_categories = {"Fjolde"}, } labels["Viöl"] = "Fjolde" labels["France"] = { display = "[[w:France|France]]", regional_categories = {"French"}, } labels["French"] = "France" labels["Föhr-Amrum"] = { display = "[[w:Föhr-Amrum|Föhr-Amrum]]", regional_categories = {"Föhr-Amrum"}, } labels["Föhr-Amrum dialect"] = "Föhr-Amrum" labels["Feer"] = "Föhr-Amrum" labels["Fering"] = "Föhr-Amrum" labels["Oomram"] = "Föhr-Amrum" labels["Öömrang"] = "Föhr-Amrum" -- Europe G labels["Galicia"] = { regional_categories = {"Galician"}, } labels["Galician"] = "Galicia" labels["Galway"] = { display = "[[w:County Galway|Galway]]", regional_categories = {"Galway"}, } labels["Germany"] = { display = "[[w:Đức|Đức]]", regional_categories = {"Đức"}, } labels["German"] = "Germany" -- comment this alias out if it causes problems labels["Gloucestershire"] = { display = "[[w:Gloucestershire|Gloucestershire]]", regional_categories = {"Gloucestershire"}, } labels["Gloucestershire dialect"] = "Gloucestershire" labels["Glos"] = "Gloucestershire" labels["Gotland"] = { display = "[[w:Gotland|Gotland]]", regional_categories = {"Gotlandic"}, } labels["Gotlandic"] = "Gotland" labels["Granada"] = { regional_categories = {"Granada"}, } labels["Guernsey"] = { display = "[[w:Guernsey|Guernsey]]", regional_categories = {"Guernsey"}, } -- Europe H labels["The Hague"] = { display = "[[w:The Hague|The Hague]]", regional_categories = {"Hague"}, } labels["Hague"] = "The Hague" labels["Den Haag"] = "The Hague" labels["Hartlepool"] = { display = "[[w:Hartlepool|Hartlepool]]", regional_categories = {"Teesside"}, } labels["Heligoland"] = { display = "[[w:Heligoland|Heligoland]]", regional_categories = {"Heligolandic"}, } labels["Heligoland dialect"] = "Heligoland" labels["Halunder"] = "Heligoland" labels["Heligolandic"] = "Heligoland" labels["Helgoland"] = "Heligoland" labels["Helgoland dialect"] = "Heligoland" labels["Herefordshire"] = { display = "[[w:Herefordshire|Herefordshire]]", regional_categories = {"Herefordshire"}, } labels["Herefordshire dialect"] = "Herefordshire" labels["Holland"] = { display = "[[w:Holland|Holland]]", regional_categories = {"Hollandic"}, } labels["Hollandic"] = "Holland" labels["Huelva"] = { display = "[[w:Province of Huelva|Huelva]]", regional_categories = {"Huelvan"}, } labels["Huelvan"] = "Huelva" labels["Hungary"] = { display = "[[w:Hungary|Hungary]]", regional_categories = {"Hungarian"}, } labels["Hungarian"] = "Hungary" -- Europe I labels["Ireland"] = { display = "[[w:Ireland|Ireland]]", regional_categories = {"Irish"}, } labels["Irish"] = "Ireland" labels["Islay"] = { display = "[[w:Islay|Islay]]", regional_categories = {"Islay"}, } labels["Isle of Man"] = { display = "[[w:Isle of Man|Isle of Man]]", regional_categories = {"Manx"}, } labels["Manx"] = "Isle of Man" labels["Isle of Mann"] = "Isle of Man" labels["Isle of Wight"] = { display = "[[w:Isle of Wight|Isle of Wight]]", regional_categories = {"Isle of Wight"}, } labels["Istanbul"] = { display = "[[w:Istanbul|Istanbul]]", regional_categories = {"Istanbul"}, } labels["İstanbul"] = "Istanbul" labels["Polis"] = "Istanbul" -- Europe J labels["Jersey"] = { display = "[[w:Jersey|Jersey]]", regional_categories = {"Jersey"}, } labels["Jutland"] = { display = "[[w:Jutland|Jutland]]", regional_categories = {"Jutlandic"}, } labels["Jutlandic"] = "Jutland" -- Europe K labels["Kalix"] = { display = "[[w:Kalix|Kalix]]", regional_categories = {"Kalix"}, } labels["Kazan"] = { display = "[[w:Kazan|Kazan]]", regional_categories = {"Kazan"}, } labels["Kent"] = { display = "[[w:Kent|Kent]]", regional_categories = {"Kentish"}, } labels["Kentish"] = "Kent" labels["Kentish dialect"] = "Kent" labels["Kent dialect"] = "Kent" labels["Kırklareli"] = { display = "[[w:Kırklareli|Kırklareli]]", regional_categories = {"Kırklareli"}, } labels["Kirklareli"] = "Kırklareli" labels["Kukkuzi"] = { display = "[[w:Kukkuzi|Kukkuzi]]", regional_categories = {"Kukkuzi"}, } -- Europe L labels["Lancashire"] = { display = "[[w:Lancashire|Lancashire]]", regional_categories = {"Lancashire"}, } labels["Latvia"] = { display = "[[w:Latvia|Latvia]]", regional_categories = {"Latvian"}, } labels["Latvian"] = "Latvia" labels["Lewis"] = { display = "[[w:Isle of Lewis|Lewis]]", regional_categories = {"Lewis"}, } labels["Isle of Lewis"] = "Lewis" labels["Liechtenstein"] = { display = "[[w:Liechenstein|Liechtenstein]]", regional_categories = {"Liechtenstein"}, } labels["Lincolnshire"] = { display = "[[w:Lincolnshire|Lincolnshire]]", regional_categories = {"Lincolnshire"}, } labels["Lithuania"] = { display = "[[w:Lithuania|Lithuania]]", regional_categories = {"Lithuanian"}, } labels["Lithuanian"] = "Lithuania" labels["Liverpool"] = { display = "[[w:Liverpool|Liverpudlian]]", regional_categories = {"Liverpudlian"}, } labels["Scouse"] = "Liverpool" labels["London"] = { display = "[[w:London|London]]", regional_categories = {"London"}, } labels["Lorraine"] = { display = "[[w:Lorraine|Lorraine]]", regional_categories = {"Lorraine"}, } labels["Lower Austria"] = { display = "[[w:Lower Austria|Lower Austria]]", regional_categories = {"Lower Austrian"}, } labels["Niederösterreich"] = "Lower Austria" labels["Niederösterreichisch"] = "Lower Austria" labels["Lower Austrian"] = "Lower Austria" labels["Lucerne"] = { display = "[[w:Lucerne|Lucerne]]", regional_categories = {"Lucerne"}, } labels["Luzern"] = "Lucerne" labels["Luleå"] = { display = "[[w:Luleå|Luleå]]", regional_categories = {"Luleå"}, } labels["Lulea"] = "Luleå" labels["Luserna"] = { display = "[[w:Luserna|Luserna]]", regional_categories = {"Luserna"}, } labels["Luxembourg"] = { display = "[[w:Luxembourg|Luxembourg]]", regional_categories = {"Luxembourgish"}, } labels["Luxembourgish"] = "Luxembourg" labels["Luxemburg"] = "Luxembourg" labels["Luxemburgish"] = "Luxembourg" labels["Lviv"] = { display = "[[w:Lviv|Lviv]]", regional_categories = {"Lviv"}, } labels["Lvov"] = "Lviv" labels["Lwow"] = "Lviv" labels["Lwów"] = "Lviv" -- Europe M labels["Madeira"] = { display = "[[w:Madeira|Madeira]]", regional_categories = {"Madeiran"}, } labels["Madeiran"] = "Madeira" labels["Mallorca"] = { display = "[[w:Mallorca|Mallorca]]", regional_categories = {"Mallorcan"}, } labels["Mallorcan"] = "Mallorca" labels["Majorca"] = "Mallorca" labels["Malta"] = { display = "[[w:Malta|Malta]]", regional_categories = {"Maltese"}, } labels["Maltese"] = "Malta" labels["Manchester"] = { display = "[[w:Manchester|Manchester]]", regional_categories = {"Mancunian"}, } labels["Mancunian"] = "Manchester" labels["Manc"] = "Manchester" labels["Mantua"] = { display = "[[w:Mantua|Mantua]]", regional_categories = {"Mantovano"}, } labels["Mantovano"] = "Mantua" labels["Maramureș"] = { display = "[[w:Maramureș|Maramureș]]", regional_categories = {"Maramureș"}, } labels["Maramures"] = "Maramureș" labels["Marseille"] = { display = "[[w:Marseille|Marseille]]", regional_categories = {"Marseille"}, } labels["Midlands"] = { display = "[[w:The Midlands|Midlands]]", regional_categories = {"Midlands"}, } labels["Midlands dialect"] = "Midlands" labels["South Midlands"] = "Midlands" -- OK as alias? or a subvariety worth distinguishing? labels["Mirandola"] = { display = "[[w:Mirandola|Mirandola]]", regional_categories = {"Mirandolese"}, } labels["Mirandolese"] = "Mirandola" labels["Modena"] = { display = "[[w:Modena|Modena]]", regional_categories = {"Modenese"}, } labels["Modenese"] = "Modena" labels["Moldova"] = { display = "[[w:Moldavia|Moldavia]]", regional_categories = {"Moldovan"}, } labels["Moldavian"] = "Moldova" labels["Moldovan"] = "Moldova" labels["Moldavia"] = "Moldova" labels["Republic of Moldova"] = { display = "[[w:Moldova|Moldova]]", regional_categories = {"Republic of Moldova"}, } labels["Mölmsch"] = { display = "[[w:Mülheim|Mölmsch]]", regional_categories = {"Mölmsch"}, } labels["Mülheim"] = "Mölmsch" labels["Montenegro"] = { display = "[[w:Montenegro|Montenegro]]", regional_categories = {"Montenegrin"}, } labels["Montenegrin"] = "Montenegro" labels["Moravia"] = { display = "[[w:Moravia|Moravia]]", regional_categories = {"Moravian"}, } labels["Moravian"] = "Moravia" labels["Moscow"] = { aliases = {"Moskva"}, display = "[[w:Moskva|Moskva]]", regional_categories = {"Moskva"}, } labels["Munster"] = { display = "[[w:Munster|Munster]]", regional_categories = {"Munster"}, } labels["Muntenia"] = { display = "[[w:Muntenia|Muntenia]]", regional_categories = {"Muntenian"}, } labels["Muntenian"] = "Muntenia" labels["Murcia"] = { regional_categories = {"Murcian"}, } labels["Murcian"] = "Murcia" -- Europe N labels["Naples"] = { display = "[[w:Naples|Naples]]", regional_categories = {"Neapolitan"}, } labels["Neapolitan"] = "Naples" labels["Napoli"] = "Naples" labels["Navarre"] = { regional_categories = {"Navarrese"}, } labels["Navarrese"] = "Navarre" labels["Netherlands"] = { display = "[[w:Hà Lan|Hà Lan]]", regional_categories = {"Hà Lan"}, } labels["Hà Lan"] = "Netherlands" labels["Norfolk"] = { display = "[[w:Norfolk|Norfolk]]", regional_categories = {"Norfolk"}, } labels["North Wales"] = { display = "[[w:North Wales|North Wales]]", regional_categories = {"North Wales"}, } labels["Northern Crimea"] = { display = "Northern [[w:Crimea|Crimea]]", regional_categories = {"Northern"}, } labels["Northern England"] = { display = "[[w:Northern England|Northern England]]", regional_categories = {"Northern England"}, } labels["northern England"] = "Northern England" labels["North England"] = "Northern England" labels["north England"] = "Northern England" labels["Northern Ireland"] = { display = "[[w:Northern Ireland|Northern Ireland]]", regional_categories = {"Northern Irish"}, } labels["Northern Irish"] = "Northern Ireland" labels["NI"] = "Northern Ireland" labels["Northern Isles"] = { display = "[[w:Orkney|Orkney]], [[w:Shetland|Shetland]]", regional_categories = {"Orkney", "Shetland"}, } labels["Insular Scots"] = "Northern Isles" labels["Northumbria"] = { display = "[[w:Northumbria|Northumbria]]", regional_categories = {"Northumbrian"}, } labels["Northumbrian"] = "Northumbria" labels["Northumberland"] = "Northumbria" labels["Northeast England"] = "Northumbria" labels["North-East England"] = "Northumbria" labels["North East England"] = "Northumbria" labels["Nottinghamshire"] = { display = "[[w:Nottinghamshire|Nottinghamshire]]", regional_categories = {"Nottinghamshire"}, } labels["Nottinghamshire dialect"] = "Nottinghamshire" -- Europe O labels["Oltenia"] = { display = "[[w:Oltenia|Oltenia]]", regional_categories = {"Oltenian"}, } labels["Oltenian"] = "Oltenia" labels["Orenburg"] = { display = "[[w:Orenburg|Orenburg]]", regional_categories = {"Orenburg"}, } labels["Orkney"] = { display = "[[w:Orkney|Orkney]]", regional_categories = {"Orkney"}, } labels["Orcadian"] = "Orkney" labels["Ostrobothnia"] = { display = "[[w:Ostrobothnia|Ostrobothnia]]", regional_categories = {"Ostrobothnian"}, } labels["Ostrobothnian"] = "Ostrobothnia" labels["Österbotten"] = "Ostrobothnia" labels["Oxbridge"] = { display = "[[w:Oxbridge|Oxbridge]]", regional_categories = {"Cambridge University", "Oxford University"}, } labels["Oxford City"] = { display = "[[w:Oxford|Oxford]]", regional_categories = {"Oxford"}, } labels["Oxford dialect"] = "Oxford City" labels["City of Oxford"] = "Oxford City" labels["Oxfordshire"] = { display = "[[w:Oxfordshire|Oxfordshire]]", regional_categories = {"Oxfordshire"}, } labels["Oxfordshire dialect"] = "Oxfordshire" labels["Oxford University"] = { display = "[[w:University of Oxford|Oxford University]]", regional_categories = {"Oxford University"}, } alias("Oxford University", {"University of Oxford", "Oxon"}) -- Europe P labels["Parma"] = { display = "[[w:Parma|Parma]]", regional_categories = {"Parmigiano"}, } labels["Parmigiano"] = "Parma" labels["Perthshire"] = { display = "[[w:Perthshire|Perthshire]]", regional_categories = {"Perthshire"}, } labels["Piacenza"] = { display = "[[w:Piacenza|Piacenza]]", regional_categories = {"Piacentino"}, } labels["Piacentino"] = "Piacenza" labels["Picardy"] = { display = "[[w:Picardy|Picardy]]", regional_categories = {"Picard"}, } labels["Picard"] = "Picardy" labels["Portugal"] = { aliases = {"Portuguese", "Bồ Đào Nha"}, display = "[[w:Bồ Đào Nha|Bồ Đào Nha]]", regional_categories = {"Bồ Đào Nha"}, } labels["Prešov"] = { display = "[[w:Prešov|Prešov]]", regional_categories = {"Prešov"}, } labels["Presov"] = "Prešov" labels["Provence"] = { display = "[[w:Provence|Provence]]", regional_categories = {"Provence"}, } --don't add Provençal as an alias labels["Prussia"] = { display = "[[w:Prussia (region)|Prussia]]", regional_categories = {"Prussian"}, } labels["Prussian"] = "Prussia" labels["East Prussia"] = "Prussia" --aliased for now; if many entries use it, it can be separated labels["East Prussian"] = "Prussia" labels["West Prussia"] = "Prussia" labels["West Prussian"] = "Prussia" labels["Pskov"] = { display = "[[w:Pskov|Pskov]]", regional_categories = {"Pskov"}, } -- Europe Q -- Europe R labels["Reggio Emilia"] = { display = "[[w:Reggio Emilia|Reggio Emilia]]", regional_categories = {"Reggiano"}, } labels["Reggiano"] = "Reggio Emilia" labels["Roman Empire"] = { display = "[[w:Roman Empire|Roman Empire]]", regional_categories = {"Roman"}, } labels["Ross-shire"] = { display = "[[w:Ross-shire|Ross-shire]]", regional_categories = {"Ross-shire"}, } labels["Ross"] = "Ross-shire" labels["Rotterdam"] = { display = "[[w:Rotterdam|Rotterdam]]", regional_categories = {"Rotterdam"}, } labels["Rotterdams"] = "Rotterdam" labels["Middle Russian"] = { display = "Middle Russian", Wikipedia= "Early Modern Russian", plain_categories = {"Middle Russian" }, } labels["Old Russian"] = "Middle Russian" -- Europe S labels["Saarland"] = { display = "[[w:Saarland|Saarland]]", regional_categories = {"Saarland"}, } labels["Saarländisch"] = "Saarland" labels["Saarlandic"] = "Saarland" labels["Saarlandish"] = "Saarland" labels["Saint Ouen"] = { display = "[[w:Saint Ouen, Jersey|Saint Ouën]]", regional_categories = {"Saint Ouënnais"}, } labels["Saint Ouënnais"] = "Saint Ouen" labels["Saint Petersburg"] = { display = "[[w:Saint Petersburg|Saint Petersburg]]", regional_categories = {"Saint Petersburg"}, } labels["St Petersburg"] = "Saint Petersburg" labels["St. Petersburg"] = "Saint Petersburg" labels["Sandoy"] = { display = "[[w:Sandoy|Sandoy]]", regional_categories = {"Sandoy"}, } labels["Sandø"] = "Sandoy" labels["Sappada"] = { display = "[[w:Sappada|Sappada]]", regional_categories = {"Sappada"}, } labels["Sauris"] = { display = "[[w:Sauris|Sauris]]", regional_categories = {"Sauris"}, } labels["Scania"] = { display = "[[w:Scania|Scania]]", regional_categories = {"Scanian"}, } labels["Scanian"] = "Scania" labels["Skanian"] = "Scania" labels["Skåne"] = "Scania" labels["Scotland"] = { display = "[[w:Scotland|Scotland]]", regional_categories = {"Scottish"}, } labels["Scottish"] = "Scotland" labels["Sense"] = { display = "[[w:Sense District|Sense]]", regional_categories = {"Sensler"}, } labels["Sensler"] = "Sense" labels["Sense District"] = "Sense" labels["Senslerdeutsch"] = "Sense" labels["Serbia"] = { aliases = {"Serbian", "Xéc-bi", "Xéc-bi-a"}, Wikipedia = true, regional_categories = "Serbia", } labels["Seville"] = { Wikipedia = "Province of Seville", regional_categories = {"Seville"}, } labels["Sevilla"] = "Seville" labels["Shetland"] = { display = "[[w:Shetland|Shetland]]", regional_categories = {"Shetland"}, } labels["Shetland islands"] = "Shetland" labels["Shetland Islands"] = "Shetland" labels["Shetlandic"] = "Shetland" labels["Shetlands"] = "Shetland" labels["Silesia"] = { display = "[[w:Silesia|Silesia]]", regional_categories = {"Silesia"}, } --Silesia German, Silesia Polish; for differentiation between sli "Silesian German" -- don't add Silesian as alias labels["Skye"] = { display = "[[w:Isle of Skye|Skye]]", regional_categories = {"Skye"}, } labels["Isle of Skye"] = "Skye" labels["Somerset"] = { display = "[[w:Somerset|Somerset]]", regional_categories = {"Somerset"}, } labels["Somerset dialect"] = "Somerset" labels["South Wales"] = { display = "[[w:South Wales|South Wales]]", regional_categories = {"South Wales"}, } labels["Southern England"] = { display = "[[w:Southern England|Southern England]]", regional_categories = {"Southern England"}, } labels["southern England"] = "Southern England" labels["South England"] = "Southern England" labels["south England"] = "Southern England" labels["South Tyrol"] = { display = "[[w:South Tyrol|South Tyrol]]", regional_categories = {"South Tyrolean"}, } labels["Alto Adige"] = "South Tyrol" labels["South Tirol"] = "South Tyrol" labels["South Tirolean"] = "South Tyrol" labels["South Tirolese"] = "South Tyrol" labels["South Tyrolean"] = "South Tyrol" labels["South Tyrolese"] = "South Tyrol" labels["Spain"] = { display = "[[w:Tây Ban Nha|Tây Ban Nha]]", regional_categories = {"Tây Ban Nha"}, } labels["Spanish"] = "Spain" labels["ES"] = "Spain" labels["Tây Ban Nha"] = "Spain" labels["Spilamberto"] = { display = "[[w:Spilamberto|Spilamberto]]", regional_categories = {"Spilambertese"}, } labels["Spilambertese"] = "Spilamberto" labels["St. Gallen"] = { display = "[[w:St. Gallen|St. Gallen]]", regional_categories = {"St. Gallen"}, } labels["St Gallen"] = "St. Gallen" labels["Saint Gallen"] = "St. Gallen" labels["Styria"] = { display = "[[w:Styria|Styria]]", regional_categories = {"Styrian"}, } labels["Styrian"] = "Styria" labels["Steiermark"] = "Styria" labels["Steiermärkisch"] = "Styria" labels["Steirisch"] = "Styria" labels["Suffolk"] = { display = "[[w:Suffolk|Suffolk]]", regional_categories = {"Suffolk"}, } labels["Suffolk dialect"] = "Suffolk" labels["Sutherland"] = { display = "[[w:Sutherland|Sutherland]]", regional_categories = {"Sutherland"}, } labels["Suðuroy"] = { display = "[[w:Suðuroy|Suðuroy]]", regional_categories = {"Suðuroy"}, } labels["Suduroy"] = "Suðuroy" labels["Sweden"] = { display = "[[w:Sweden|Sweden]]", regional_categories = {"Sweden"}, } labels["Swedish"] = "Sweden" labels["Switzerland"] = { display = "[[w:Switzerland|Switzerland]]", regional_categories = {"Switzerland"}, } labels["Swiss"] = "Switzerland" labels["Swiss German"] = "Switzerland" -- some German entries use this alias; let -sche know if it causes problems labels["Sylt"] = { display = "[[w:Sylt|Sylt]]", regional_categories = {"Sylt"}, } labels["Söl"] = "Sylt" labels["Sölring"] = "Sylt" labels["Söl'"] = "Sylt" labels["Söl'ring"] = "Sylt" -- Europe T labels["Teesside"] = { display = "[[w:Teesside|Teesside]]", regional_categories = {"Teesside"}, } labels["Timau"] = { display = "[[w:Paluzza|Timau]]", regional_categories = {"Timau"}, } labels["Transylvania"] = { display = "[[w:Transylvania|Transylvania]]", regional_categories = {"Transylvanian"}, } labels["Transilvania"] = "Transylvania" labels["Transylvanian"] = "Transylvania" -- Europe U labels["Uist"] = { display = "[[w:Uist|Uist]]", regional_categories = {"Uist"}, } labels["UK"] = { aliases = {"United Kingdom"}, Wikipedia = "United Kingdom", display = "Anh", regional_categories = {"Anh"}, } labels["Old Ukrainian"] = { display = "Old Ukrainian", Wikipedia = true, plain_categories = { "Old Ukrainian " }, } labels["Ulster"] = { display = "[[w:Ulster|Ulster]]", regional_categories = {"Ulster"}, } labels["Uri"] = { display = "[[w:Canton of Uri|Uri]]", regional_categories = {"Urner"}, } labels["Urseren"] = "Uri" labels["Urner"] = "Uri" labels["Urnerdeutsch"] = "Uri" -- Europe V labels["Venice"] = { display = "[[w:Venice|Venice]]", regional_categories = {"Venetian"}, } labels["Venetian"] = "Venice" labels["Vienna"] = { display = "[[w:Vienna|Vienna]]", regional_categories = {"Viennese"}, } labels["Viennese"] = "Vienna" labels["Vilhelmina"] = { display = "[[w:Vilhelmina|Vilhelmina]]", regional_categories = {"Vilhelmina"}, } labels["Vilnius"] = { display = "[[w:Vilnius|Vilnius]]", regional_categories = {"Vilnius"}, } labels["Vilna"] = "Vilnius" labels["Wilno"] = "Vilnius" labels["Vojvodina"] = { display = "[[w:Vojvodina|Vojvodina]]", regional_categories = {"Vojvodina"}, } -- Europe W labels["Wales"] = { display = "[[w:Wales|Wales]]", regional_categories = {"Welsh"}, } labels["Welsh"] = "Wales" labels["Wallonia"] = { display = "[[w:Wallonia|Wallonia]]", regional_categories = {"Wallonian"}, } labels["Wallonian"] = "Wallonia" labels["Wearside"] = { display = "[[w:Wearside|Wearside]]", regional_categories = {"Wearside"}, } labels["West Country"] = { display = "[[w:West Country|West Country]]", regional_categories = {"West Country"}, } labels["West England"] = "West Country" labels["west England"] = "West Country" labels["Western England"] = "West Country" labels["western England"] = "West Country" labels["West of England"] = "West Country" labels["West Midlands"] = { Wikipedia = true, regional_categories = true, } labels["Western Ukraine"] = { display = "[[w:Western Ukraine|Western Ukraine]]", regional_categories = {"Western"}, } labels["Wiltshire"] = { display = "[[w:Wiltshire|Wiltshire]]", regional_categories = {"Wiltshire"}, } labels["Wiltshire dialect"] = "Wiltshire" labels["Wilts"] = "Wiltshire" labels["Wilts dialect"] = "Wiltshire" -- Europe X -- Europe Y labels["Yorkshire"] = { display = "[[w:Yorkshire|Yorkshire]]", regional_categories = {"Yorkshire"}, } -- Europe Z labels["Zakarpattia"] = { display = "[[w:Zakarpattia Oblast|Zakarpattia]]", regional_categories = {"Zakarpattia"}, } labels["Zürich"] = { display = "[[w:Zürich|Zürich]]", regional_categories = {"Zürich"}, } labels["Zurich"] = "Zürich" -- Australia and Oceania -- AO A labels["Australia"] = { aliases = {"AU", "Australian", "Úc"}, display = "[[w:Úc|Úc]]", regional_categories = "Úc", } -- AO B -- AO C labels["CNMI"] = { display = "[[w:Northern Mariana Islands|Northern Mariana Islands]]", regional_categories = {"Northern Mariana Islands"}, } labels["Northern Mariana Islands"] = "CNMI" labels["Notte Mariånas"] = "CNMI" -- AO D -- AO E -- AO F -- AO G labels["Guam"] = { display = "[[w:Guam|Guam]]", regional_categories = {"Guam"}, } labels["Guåhan"] = "Guam" labels["Guamanian"] = "Guam" -- AO H labels["Hawaii"] = { display = "[[w:Hawaii|Hawaii]]", regional_categories = {"Hawaiian"}, } labels["Hawaiian"] = "Hawaii" -- AO I -- AO J -- AO K labels["Kauaʻi"] = { display = "[[w:Kauai|Kauaʻi]]", regional_categories = {"Kauaʻi"}, } labels["Kauai"] = "Kauaʻi" labels["Kaua'i"] = "Kauaʻi" -- AO L labels["Lānaʻi"] = { display = "[[w:Lanai|Lānaʻi]]", regional_categories = {"Lānaʻi"}, } labels["Lanaʻi"] = "Lānaʻi" labels["Lanai"] = "Lānaʻi" labels["Lāna'i"] = "Lānaʻi" labels["Lana'i"] = "Lānaʻi" -- AO M labels["Maui"] = { display = "[[w:Maui|Maui]]", regional_categories = {"Maui"}, } labels["Molokaʻi"] = { display = "[[w:Molokai|Molokaʻi]]", regional_categories = {"Molokaʻi"}, } labels["Molokai"] = "Molokaʻi" labels["Moloka'i"] = "Molokaʻi" -- AO N labels["New Zealand"] = { display = "[[w:New Zealand|New Zealand]]", regional_categories = {"New Zealand"}, } labels["NZ"] = "New Zealand" labels["Niʻihau"] = { display = "[[w:Niihau dialect|Niʻihau]]", regional_categories = {"Niʻihau"}, } labels["Ni'ihau"] = "Niʻihau" labels["Niihau"] = "Niʻihau" -- AO O -- AO P -- AO Q -- AO R -- AO S -- AO T -- AO U -- AO V -- AO W -- AO X -- AO Y -- AO Z -- Other/unclear labels["Antarctica"] = { display = "[[w:Antarctica|Antarctica]]", regional_categories = {"Antarctic"}, } labels["Antarctic"] = "Antarctica" labels["South Pole"] = "Antarctica" labels["Commonwealth"] = { display = "[[Commonwealth of Nations|Commonwealth]]", regional_categories = {"Commonwealth"}, } labels["Kitti"] = { regional_categories = {"Kitti"}, } return require("Module:labels").finalize_data(labels) 7e6k8adz7sej28ymv2hc24p556sibf8 Mô đun:languages/data/3/e 828 272285 2566500 2563645 2026-09-25T15:58:06Z Lcsnes 40261 2566500 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["ebg"] = { "tiếng Ebughu", 35294, "nic-lcr", "Latn", "Tiếng Ebughu", "Ebughu", } m["ebk"] = { "tiếng Đông Bontoc", nil, "phi", "Latn", "Tiếng Đông Bontoc", "Đông Bontoc", } m["ebr"] = { "tiếng Ebrié", 36644, "alv-ptn", "Latn", "Tiếng Ebrié", "Ebrié", } m["ebu"] = { "tiếng Embu", 35318, "bnt-kka", "Latn", "Tiếng Embu", "Embu", } m["ecr"] = { "tiếng Eteocrete", 35461, nil, "Grek", "Tiếng Eteocrete", "Eteocrete", sort_key = s["Grek-sortkey"], } m["ecs"] = { "Ecuadorian Sign Language", 3436769, "sgn", "Latn", -- when documented } m["ecy"] = { "Eteocypriot", 35309, nil, "Cprt", } m["eee"] = { "tiếng Ai", 35386, "qfa-mix", "Hani, Latn", sort_key = {Hani = "Hani-sortkey"}, "Tiếng Ai", "Ai", } m["efa"] = { "tiếng Efai", 3813297, "nic-ief", "Latn", "Tiếng Efai", "Efai", } m["efe"] = { "tiếng Efe", 56354, "csu-mle", "Latn", "Tiếng Efe", "Efe", } m["efi"] = { "tiếng Efik", 35377, "nic-ief", "Latn", "Tiếng Efik", "Efik", } m["ega"] = { "tiếng Ega", 3914927, "alv", "Latn", "Tiếng Ega", "Ega", } m["egl"] = { "tiếng Emilia", 1057898, "roa-git", "Latn", "Tiếng Emilia", "Emilia", wikimedia_codes = "eml", } m["ego"] = { "tiếng Eggon", 35300, "nic-pls", "Latn", "Tiếng Eggon", "Eggon", } m["egy"] = { "tiếng Ai Cập", 50868, "egx", "Latn, Egyp, Egyh", "Tiếng Ai Cập", "Ai Cập", sort_key = { remove_diacritics = "'%-%s", from = {"ꜣ", "j", "y", "ꜥ", "w", "b", "p", "f", "m", "n", "r", "ḥ", "ḫ", "ẖ", "h", "z", "š", "s", "q", "k", "g", "ṯ", "t", "ḏ", "d", "%."}, to = {p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10], p[11], p[13], p[14], p[15], p[12], p[16], p[18], p[17], p[19], p[20], p[21], p[23], p[22], p[25], p[24], p[26]} }, } m["ehu"] = { "tiếng Ehueun", 3441392, "alv-nwd", "Latn", "Tiếng Ehueun", "Ehueun", } m["eip"] = { "tiếng Eipomek", 5349839, "ngf", "Latn", "Tiếng Eipomek", "Eipomek", } m["eit"] = { "tiếng Eitiep", 5350030, "qfa-tor", "Latn", "Tiếng Eitiep", "Eitiep", } m["eiv"] = { "tiếng Askopan", 56324, "paa-nbo", "Latn", "Tiếng Askopan", "Askopan", } m["eja"] = { "Ejamat", 6269820, "alv-jfe", "Latn", "Tiếng Ejamat", "Ejamat", } m["eka"] = { "Ekajuk", 35250, "nic-eko", "Latn", } m["eke"] = { "Ekit", 3509628, "nic-ief", "Latn", } m["ekg"] = { "Ekari", 5350305, "ngf", "Latn", } m["eki"] = { "Eki", 5350418, "nic-ief", "Latn", } m["ekl"] = { "tiếng Kolhe", 6426945, "mun", "Beng, Latn", "Tiếng Kolhe", "Kolhe", } m["ekm"] = { "Elip", 12952414, "nic-ymb", "Latn", } m["eko"] = { "Koti", 29930, "bnt-mak", "Latn", } m["ekp"] = { "Ekpeye", 35254, "alv-igb", "Latn", } m["ekr"] = { "Yace", 36901, "alv-ido", "Latn", } m["eky"] = { "tiếng Đông Kayah", 25559417, "kar", "Kali, Thai", "Tiếng Đông Kayah", "Đông Kayah", } m["ele"] = { "Elepi", 5359444, "qfa-tor", "Latn", } m["elh"] = { "El Hugeirat", 5351410, "nub-hil", "Latn", } m["eli"] = { "Nding", 36176, "alv-tal", "Latn", } m["elk"] = { "Elkei", 5364210, "qfa-tor", "Latn", } m["elm"] = { "Eleme", 3914427, "nic-ogo", "Latn", } m["elo"] = { "tiếng El Molo", 56719, "cus-eas", "Latn", "Tiếng El Molo", "El Molo", } m["elu"] = { "Elu", 3364594, "poz-aay", "Latn", } m["elx"] = { "tiếng Elam", 35470, "qfa-iso", "Xsux", "Tiếng Elam", "Elam", } m["ema"] = { "Emai", 35428, "alv-eeo", "Latn", } m["emb"] = { "Embaloh", 5369424, "poz", "Latn", } m["eme"] = { "Emerillon", 3588942, "tup-gua", "Latn", } m["emg"] = { "Eastern Meohang", 12952840, "sit-kie", "Deva", } m["emi"] = { "Mussau-Emira", 6943093, "poz-ocw", "Latn", } m["emk"] = { "tiếng Maninkakan Đông", 11002130, "dmn-mnk", "Latn, Arab, Nkoo", } m["emm"] = { "Mamulique", 3285082, "nai-pak", "Latn", } m["emn"] = { "Eman", 5368975, "nic-tvc", "Latn", } m["emp"] = { "tiếng Bắc Emberá", 2391297, "sai-chc", "Latn", "Tiếng Bắc Emberá", "Bắc Emberá", } m["ems"] = { "tiếng Alutiiq", 27992, "ypk", "Latn", "Tiếng Alutiiq", "Alutiiq", } m["emu"] = { "Eastern Muria", 12952883, "dra-mur", } m["emw"] = { "Emplawas", 5374265, "poz-tim", "Latn", } m["emx"] = { "Erromintxela", 1122188, "qfa-mix", "Latn", ancestors = "eu, rom", } m["emy"] = { "Epigraphic Mayan", 301355, "myn", "Latn, Maya", } m["ena"] = { "Apali", 3504201, "ngf-mad", "Latn", } m["enb"] = { "Markweeta", 56874, "sdv-nma", "Latn", } m["enc"] = { "tiếng Nùng Vẻn", 3504110, "qfa-buy", "Latn", "Tiếng Nùng Vẻn", "Nùng Vẻn" } m["end"] = { "Ende", 2067656, "poz-cet", "Latn", } m["enf"] = { "tiếng Enets rừng", 30249597, "syd", "Cyrl", "Tiếng Enets rừng", "Enets rừng", } m["enh"] = { "tiếng Enets lãnh nguyên", 25559411, "syd", "Cyrl", "Tiếng Enets lãnh nguyên", "Enets lãnh nguyên", } m["enl"] = { "Enlhet", 15462671, "sai-mas", "Latn", } m["enm"] = { "tiếng Anh trung đại", 36395, "gmw-ang", "Latn", "Tiếng Anh trung đại", "Anh trung đại", entry_name = {remove_diacritics = c.acute .. c.macron .. c.dotabove}, } m["enn"] = { "tiếng Engenni", 3915365, "alv-dlt", "Latn", "Tiếng Engenni", "Engenni", } m["eno"] = { "Enggano", 2669164, "poz", "Latn", } m["enq"] = { "Enga", 1143040, "paa-eng", "Latn", } m["enr"] = { "Emem", 5370369, "paa-pau", } m["enu"] = { "Enu", 5380858, "tbq-bka", } m["env"] = { "Enwan", 3438334, "alv-yek", "Latn", } m["enw"] = { "Enwang", 11134434, "nic-lcr", "Latn", } m["enx"] = { "Enxet", 15462609, "sai-mas", "Latn", } m["eot"] = { "tiếng Eotile", 3915347, "alv-ptn", "Latn", "Tiếng Eotile", "Eotile", } m["epi"] = { "tiếng Epie", 35291, "alv-dlt", "Latn", "Tiếng Epie", "Epie", } m["era"] = { "tiếng Eravalla", 5385061, "dra-tam", "Taml", "Tiếng Eravalla", "Eravalla", translit = "ta-translit", } m["erg"] = { "Sie", 426254, "poz-occ", "Latn", } m["erh"] = { "Eruwa", 3441244, "alv-swd", "Latn", } m["eri"] = { "Ogea", 7079984, "ngf-mad", "Latn", } m["erk"] = { "tiếng Efate Nam", 3449070, "poz-vnc", "Latn", "Tiếng Efate Nam", "Efate Nam", } m["ero"] = { "tiếng Horpa", 56854, "sit-rgy", nil, "Tiếng Horpa", "Horpa", } m["err"] = { "Erre", 10488401, "qfa-iso", "Latn", } m["ers"] = { "tiếng Nhĩ Tô", 12952417, "sit-qia", "Latn", -- also Ersu Shaba "Tiếng Nhĩ Tô", "Nhĩ Tô", } m["ert"] = { "Eritai", 56376, "paa-lkp", "Latn", } m["erw"] = { "Erokwanas", 5395296, "poz-hce", "Latn", } m["ese"] = { "Ese Ejja", 2980381, "sai-tac", "Latn", } m["esh"] = { "Eshtehardi", 12952418, "xme-ttc", "fa-Arab, Latn", ancestors = "xme-ttc-sou", } -- "esi" and "esk" moved to etymology-only per [[WT:LT]] and [[Wiktionary:Beer_parlour/2023/August#Issues_regarding_the_Inuit_languages]] m["esl"] = { "Egyptian Sign Language", 5348443, "sgn", } m["esm"] = { "Esuma", 16927555, "alv-kwa", "Latn", } m["esn"] = { "Salvadoran Sign Language", 7406492, "sgn", "Latn", -- when documented } m["eso"] = { "Estonian Sign Language", 3196221, "sgn", "Latn", -- when documented } m["esq"] = { "Esselen", 1294243, "qfa-iso", "Latn", } m["ess"] = { "tiếng Yupik Trung Siberia", 27993, "ypk", "Cyrl", "Tiếng Yupik Trung Siberia", "Yupik Trung Siberia", } m["esu"] = { "tiếng Yup'ik", 21117, "ypk", "Latn", "Tiếng Yup'ik", "Yup'ik", } m["esy"] = { "Eskayan", 867086, "art", "Latn", -- also its own native script } m["etb"] = { "Etebi", 11002851, "nic-ief", "Latn", } m["etc"] = { "Etchemin", 5402493, "alg-eas", "Latn", } m["eth"] = { "Ethiopian Sign Language", 3501903, "sgn", } m["etn"] = { "Eton (Vanuatu)", 3059362, "poz-oce", "Latn", } m["eto"] = { "Eton (Cameroon)", 35317, "bnt-btb", "Latn", } m["etr"] = { "Edolo", 5340184, "ngf", "Latn", } m["ets"] = { "Yekhee", 3915848, "alv-yek", "Latn", } m["ett"] = { "tiếng Etrusca", 35726, "qfa-tyn", "Ital", "Tiếng Etrusca", "Etrusca", translit = "Ital-translit", } m["etu"] = { "tiếng Ejagham", 35296, "nic-eko", "Latn", "Tiếng Ejagham", "Ejagham", } m["etx"] = { "Eten", 3915392, "nic-beo", "Latn", } m["etz"] = { "Semimi", 10950308, "paa-mai", "Latn", } m["eve"] = { "tiếng Even", 29960, "tuw-ewe", "Cyrl, Latn", "Tiếng Even", "Even", translit = {Cyrl = "eve-translit"}, entry_name = {remove_diacritics = c.macron .. c.dotabove .. c.dotbelow}, sort_key = { Cyrl = { from = { "ӫ", -- 2 chars "ё", "ӈ", "ө" -- 1 char }, to = { "о" .. p[2], "е" .. p[1], "н" .. p[1], "о" .. p[1] }, }, }, } m["evh"] = { "tiếng Uvbie", 3441344, "alv-swd", "Latn", "Tiếng Uvbie", "Uvbie", } m["evn"] = { "tiếng Evenk", 30004, "tuw-ewe", "Cyrl", "Tiếng Evenk", "Evenk", translit = "evn-translit", entry_name = {remove_diacritics = c.macron .. c.dotabove .. c.dotbelow}, sort_key = { from = {"ё", "ӈ"}, to = {"е" .. p[1], "н" .. p[1]} }, } m["ewo"] = { "tiếng Ewondo", 35459, "bnt-btb", "Latn", "Tiếng Ewondo", "Ewondo", } m["ext"] = { "Extremaduran", 30007, "roa-ibe", "Latn", } m["eya"] = { "Eyak", 27480, "xnd", "Latn", } m["eyo"] = { "Keiyo", 56856, "sdv-nma", "Latn", } m["eza"] = { "Ezaa", 11921436, "alv-igb", "Latn", ancestors = "izi", } m["eze"] = { "Uzekwe", 3502244, "nic-ucn", "Latn", } return require("Module:languages").finalizeData(m, "language") 6znmd6kwbeq9avi96r882omrxsa8no7 cối tẩu 0 272515 2566495 2565711 2026-09-25T15:50:49Z Hiyuune 50834 2566495 wikitext text/x-wiki =={{langname|vi}}== ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun}} # {{lb|vi|ít dùng}} {{see-entry|tẩu thuốc}}. c9tbkj6j69fzi3izao6xq2shih6bo7d zhekjha 0 272761 2566586 2565627 2026-09-26T02:54:29Z Hiyuune 50834 2566586 wikitext text/x-wiki =={{langname|wuh}}== ==={{section|n}}=== {{head|wuh|Danh từ}} # [[móng tay|Móng tay]]. {{c|wuh|Bộ phận cơ thể}} pyjme1h5zcaxtzo2gjhqt31e4oz6qms agu 0 272868 2566587 2565626 2026-09-26T03:00:16Z Hiyuune 50834 2566587 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|mul}}== ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|3}} ==={{section|see}}=== * {{langcat}} =={{langname|sq}}== ==={{section|n}}=== {{head|sq|Biến thể hình thái danh từ}} # {{infl of|sq|ag||nom|def|s|;|dat//abl|indef|s}} =={{langname|kea}}== ==={{section|alt}}=== * {{alter|kea|aga||Barlavento}} ==={{section|etym}}=== Từ {{der|kea|pt|água}}. ==={{section|n}}=== {{head|kea|Danh từ}} # {{lb|kea|Sotavento}} [[nước|Nước]]. ==={{section|ref}}=== * {{R:kea:Gonçalves}} * {{R:kea:Veiga}} =={{langname|wuh}}== ==={{section|n}}=== {{head|wuh|Danh từ}} # [[con gái|Con gái]]. {{c|wuh|Thành viên nữ trong gia đình}} =={{langname|ja}}== ==={{section|rom}}=== {{ja-romaji}} # {{ja-romanization of|あぐ}} =={{langname|eo}}== ==={{section|pron}}=== {{eo-pr|a=LL-Q143 (epo)-Robin van der Vliet-agu.wav;LL-Q143 (epo)-Lepticed7-agu.wav;Eo-agu.ogg}} ==={{section|v}}=== {{eo-head}} # {{eo-form of|ag|u}} m24yk0g7hyp23r86gd5ad8olgqd2yqf reben 0 272966 2566634 2565834 2026-09-26T10:16:36Z Hiyuune 50834 2566634 wikitext text/x-wiki {{also|Reben|řeben}} =={{langname|ca}}== ==={{section|pron}}=== * {{ca-IPA|ê}} ==={{section|v}}=== {{head|ca|Biến thể hình thái động từ}} # {{ca-verb form of|rebre}} =={{langname|wuh}}== ==={{section|etym}}=== Vay mượn từ {{bor|wuh|cmn|-}} {{zh-l|日本}}. ==={{section|pron}}=== * {{IPA|wuh|[ɻəpə̃]}} ==={{section|pr-noun}}=== {{head|wuh|Danh từ riêng}} # {{tcl|wuh|Nhật Bản|id=Q17}} ==={{section|ref}}=== * {{R:wuh:Sandman}} =={{langname|gmh}}== ==={{section|etym}}=== Cuối cùng từ {{inh|gmh|gem-pro|*rebaną}}. ==={{section|pron}}=== * {{gmh-IPA|rë.ben}} ==={{section|v}}=== {{gmh-verb|rëben<ribet:rīt#rab,gerëben>}}<ref>Lexer, Matthias. ''Mittelhochdeutsches Handwörterbuch''. Mục từ có sẵn trong [https://woerterbuchnetz.de/?sigle=Lexer&lemid=R00332 Wörterbuchnetz].</ref> # [[khuấy|Khuấy]], [[quấy]]. ===={{section|forms}}==== {{gmh-conj|rëben<rab,gerëben>}} ==={{section|ref}}=== {{reflist}} qb6iy6wt0byjhwp84cj1i9c58zbt61z Mô đun:mn-common 828 280591 2566638 2210603 2026-09-26T10:22:17Z Hiyuune 50834 2566638 Scribunto text/plain local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local export = {} local concat = table.concat local find = m_str_utils.find local insert = table.insert 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 gsub = m_str_utils.gsub local lower = m_str_utils.lower local reverse = m_str_utils.reverse local reverse_array = m_table.reverse local remove_duplicates = m_table.removeDuplicates local sort = table.sort local u = m_str_utils.char export.FVS1 = u( 0x180B ) export.FVS2 = u( 0x180C ) export.FVS3 = u( 0x180D ) export.FVS4 = u( 0x180F ) export.MVS = u( 0x180E ) export.NNBSP = u( 0x202F ) export.stem_barrier = u( 0xF000 ) local function format_Mongolian_text(text) return "<span class=\"Mong\" lang=\"mn\">" .. text .. "</span>" end function export.see(frame) local params = { [1] = {}, } local args = require("Module:parameters").process(frame:getParent().args, params) local title = args[1] local curr_title = mw.loadData("Module:headword/data").pagename local content = mw.title.new(title):getContent() local senses = {} local sense_id = 0 local j, pos, s, section if title == curr_title then return error("The soft-directed item is the same as the page title.") end if content then if not match(content, "==Mongolian==") then categories = categories .. "[[Thể loại:Liên kết đỏ tiếng Mông Cổ/mn-see]]" elseif not match(content, "mn%-IPA") and not match(content, "mn%-see") then require("Module:debug").track("mn-see/unidirectional reference to variant") elseif not match(content, curr_title) then require("Module:debug").track("mn-see/unidirectional reference variant→orthodox") end end while true do _, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]", pos) if j == nil then i, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.+)", pos) end if j == nil then break else pos = j - 1 end if language_name == "Mongolian" then section = s end end if not section then return "" end section = section:gsub("\n===+Etymology.-(\n==)", "%1") local text = {} for sense in section:gmatch("\n# ([^\n]+)") do if not sense:match("rfdef") and not sense:match("defn") then sense_id = sense_id + 1 insert(senses, sense) end end insert(text, concat(senses, "\n# ")) return frame:preprocess( concat(text) ) end function export.ipasee(frame) local params = { [1] = {}, } local args = require("Module:parameters").process(frame:getParent().args, params) local title = args[1] local curr_title = mw.loadData("Module:headword/data").pagename local content = mw.title.new(title):getContent() local senses = {} local sense_id = 0 local j, pos, s, section if title == curr_title then return error("The soft-directed item is the same as the page title.") end if content then if not match(content, "==Mongolian==") then categories = categories .. "[[Thể loại:Liên kết đỏ tiếng Mông Cổ/mn-IPA-see]]" elseif not match(content, "mn%-IPA") and not match(content, "mn%-see") and not match(content, "mn%-IPA-see") then require("Module:debug").track("mn-IPA-see/unidirectional reference to variant") elseif not match(content, curr_title) then require("Module:debug").track("mn-IPA-see/unidirectional reference variant→orthodox") end end while true do _, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]", pos) if j == nil then i, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.+)", pos) end if j == nil then break else pos = j - 1 end if language_name == "Mongolian" then section = s end end if not section then return "" end section = section:gsub("\n===+Etymology.-(\n==)", "%1") local text = {} if section:match("{{mn-IPA%|([^\n]+)}}") then return frame:expandTemplate{ title = "mn-IPA", args = { section:match("{{mn-IPA%|([^\n]+)}}") } } else return frame:expandTemplate{ title = "mn-IPA", args = { title } } end end --Breaks down a string into vowel harmonic segments function export.vowelharmony( text, params ) if not params then params = {} end local vh = {} local breaks = { 1 } local switchers = { "ау", "оу", "уу", "иу", "яу", "ёу", "еу", "юу", "уй", "эү", "өү", "үү", "иү", "еү", "юү", "үй", " ", "-" } local switchers2 = { "аа", "оо", "өө", "ээ", "яа", "ёо", "еө", "еэ", "Аа", "Оо", "Өө", "Ээ", "Яа", "Ёо", "Еө", "Еэ" } for _, v in pairs( switchers ) do v = gsub( v, "(.)(.)", "%1" .. u( 0x301 ) .. "?" .. u( 0x300 ) .. "?%2" ) local c = 0 while c ~= nil do c = find( lower( text ), v, c + 1 ) if c ~= nil and c ~= 1 then insert( breaks, c ) end end end if params.bor then for _,v in pairs( switchers2 ) do if match( text, v .. "$" ) then insert( breaks, len( text ) - 1 ) end end end sort( breaks ) for i, b in ipairs( breaks ) do insert( vh, { Cyrl = {}, Mong = {} } ) if i == #breaks then vh[i].substring = sub( text, b, len( text ) ) else vh[i].substring = sub( text, b, breaks[i + 1] - 1 ) end end if params.bor then for i,s in ipairs( vh ) do vh[i] = { Cyrl = {}, Mong = {} } local orig_text = s.substring s.substring = lower( s.substring ) if params.bor == "Russian" then s.substring = gsub( s.substring, "у", "ү" ) end local substring_nostress = gsub( s.substring, "[" .. u( 0x301 ) .. u( 0x300 ) .. "]", "" ) if match( s.substring, "кило" .. u( 0x301 ) .. "?$" ) then -- irregular vh[i].Cyrl.a = "э" vh[i].location = find( s.substring, "[эүею]" ) vh[i].position = "front" vh[i].quality = "unrounded" elseif match( substring_nostress, "[аеёиоөуүэюя]у" ) or match( substring_nostress, "уй" ) then vh[i].Cyrl.a = "а" vh[i].location = 1 vh[i].position = "back" vh[i].quality = "unrounded" elseif match( substring_nostress, "[аеёиоөуүэюя]ү" ) or match( substring_nostress, "үй" ) then vh[i].Cyrl.a = "э" vh[i].location = 1 vh[i].position = "front" vh[i].quality = "unrounded" elseif match( s.substring, "[ауяᠠᠣᠤ]" .. u( 0x301 ) ) then vh[i].Cyrl.a = "а" vh[i].location = find( s.substring, u( 0x301 ) ) - 1 vh[i].position = "back" vh[i].quality = "unrounded" elseif match( s.substring, "[оё]" .. u( 0x301 ) ) then vh[i].Cyrl.a = "о" vh[i].location = find( s.substring, u( 0x301 ) ) - 1 vh[i].position = "back" vh[i].quality = "rounded" elseif ( match( substring_nostress, "[ауяоё]" ) and ( find( substring_nostress, "[ауяоё]" ) == find( substring_nostress, "[ауя]" ) ) ) or match( substring_nostress, "[ᠠᠣᠤ]" ) then vh[i].Cyrl.a = "а" vh[i].location = find( substring_nostress, "[ауя]" ) vh[i].position = "back" vh[i].quality = "unrounded" elseif match( substring_nostress, "[ауяоё]" ) and find( substring_nostress, "[ауяоё]" ) == find( substring_nostress, "[оё]" ) then vh[i].Cyrl.a = "о" vh[i].location = find( substring_nostress, "[оё]" ) vh[i].position = "back" vh[i].quality = "rounded" elseif ( match( substring_nostress, "[эүеюө]" ) and find( substring_nostress, "[эүеюө]" ) == find( substring_nostress, "[эүею]" ) ) or match( substring_nostress, "[ᠡᠥᠦᠧ]" ) then vh[i].Cyrl.a = "э" vh[i].location = find( substring_nostress, "[эүею]" ) vh[i].position = "front" vh[i].quality = "unrounded" elseif match( substring_nostress, "[эүеюө]" ) and find( substring_nostress, "[эүеюө]" ) == find( substring_nostress, "ө" ) then vh[i].Cyrl.a = "ө" vh[i].location = find( substring_nostress, "ө" ) vh[i].position = "front" vh[i].quality = "rounded" else vh[i].Cyrl.a = "э" vh[i].location = find( substring_nostress, "и" ) or 1 vh[i].position = "front" vh[i].quality = "unrounded" end if match( vh[i].Cyrl.a, "[ао]" ) then vh[i].Cyrl.ii = "ы" vh[i].Cyrl.u = "у" vh[i].Mong.a = "ᠠ" vh[i].Mong.u = "ᠤ" else vh[i].Cyrl.ii = "ий" vh[i].Cyrl.u = "ү" vh[i].Mong.a = "ᠡ" vh[i].Mong.u = "ᠦ" end if match( vh[i].Cyrl.a, "ө" ) then -- ө takes the diphthong эй not өй vh[i].Cyrl.ai = "эй" else vh[i].Cyrl.ai = vh[i].Cyrl.a .. "й" end vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u vh[i].substring = orig_text end else local location local pattern for i,s in ipairs( vh ) do local orig = s.substring s.substring = reverse( lower( s.substring ) ) local vowel = match( s.substring, "[аеёоөуүэюя]" ) location = (find( s.substring, "[аеёоөуүэюя]" )) if vh[i].Cyrl.a == nil then vh[i].Cyrl.a = "э" vh[i].position = "front" vh[i].quality = "unrounded" pattern = "и" end vh[i].Cyrl.a = lower( vh[i].Cyrl.a ) if vowel == "а" or vowel == "у" or vowel == "я" then vh[i].Cyrl.a = "а" vh[i].position = "back" vh[i].quality = "unrounded" pattern = "[ауюя]" if match( s.substring, "[еёоөүэ]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "о" or vowel == "ё" then vh[i].Cyrl.a = "о" vh[i].position = "back" vh[i].quality = "rounded" pattern = "[ёо]" if match( s.substring, "[аеөуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "э" then vh[i].position = "front" if location and sub( s.substring, location-1, location-1 ) == "й" and match( s.substring, "[аеёоөуүэюя]", location+1 ) == "ө" then vh[i].Cyrl.a = "ө" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end elseif vowel == "ү" then vh[i].Cyrl.a = "э" vh[i].position = "front" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "ө" then vh[i].Cyrl.a = "ө" vh[i].position = "front" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "е" then vh[i].position = "front" if match( s.substring, "ө", location+1 ) then vh[i].Cyrl.a = "ө" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end elseif vowel == "ю" then vh[i].quality = "unrounded" if match( s.substring, "[ауя]", location+1 ) then vh[i].Cyrl.a = "а" vh[i].position = "back" pattern = "[ауюя]" if match( s.substring, "[еёоөүэ]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].position = "front" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end end location = 0 local function prev_vowel( n ) return match( s.substring, "[аеёиоөуүэюя]", n+1 ) end local function prev_hvowel( n ) return match( s.substring, pattern, n+1 ) end while prev_vowel( location ) and ( prev_vowel( location ) == prev_hvowel( location ) or prev_vowel( location ) == "и" ) do if prev_vowel( location ) == prev_hvowel( location ) then location = find( s.substring, pattern, location+1 ) else -- if и local icheck = location+1 while prev_vowel( icheck ) == "и" do icheck = find( s.substring, "и", icheck+1 ) end if prev_vowel( icheck ) and prev_vowel( icheck ) == prev_hvowel( icheck ) then location = icheck elseif not prev_vowel( icheck ) and vowel == "э" then location = icheck elseif vowel == "э" and sub( s.substring, icheck-1, icheck-1 ) == "й" then location = icheck else break end end end if match( vh[i].Cyrl.a, "[ао]" ) then vh[i].Cyrl.ii = "ы" vh[i].Cyrl.u = "у" vh[i].Mong.a = "ᠠ" vh[i].Mong.u = "ᠤ" else vh[i].Cyrl.ii = "ий" vh[i].Cyrl.u = "ү" vh[i].Mong.a = "ᠡ" vh[i].Mong.u = "ᠦ" end if match( vh[i].Cyrl.a, "ө" ) then -- ө takes the diphthong эй not өй vh[i].Cyrl.ai = "эй" else vh[i].Cyrl.ai = vh[i].Cyrl.a .. "й" end vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u s.substring = orig vh[i].location = len( s.substring ) + breaks[i] - location end end return vh end --Breaks down a string into syllables and returns a table function export.syllables( text, params ) local consonant = "[БВГДЖЗКЛМНПРСТФХЦЧШЩбвгджзклмнпрстфхцчшщ]" local vowel = "[АОУЭӨҮИЙЫЯЕЁЮаоуэөүийыяеёю]" local sign = "[ЪЬъь]" local iotated = "[ЯЕЁЮяеёю]" local punctuation = "[%s%p]" local final_clusters = require( "Module:mn/data" ).syll_final_cons local stress = u( 0x301 ) .. u( 0x300 ) -- Strip diacritics. local chars = {} for v in gmatch( text, "[%w%s%p" .. stress .. export.stem_barrier .. "]" ) do insert( chars, v ) end local breaks = {} for i, v in pairs( chars ) do -- First letter. if i == 1 or match( chars[i-1], punctuation ) then insert( breaks, i ) -- Stem barrier is used by the inflection templates. elseif match( chars[i-1], export.stem_barrier ) then insert( breaks, i ) -- If a vowel preceded by a hard sign or the temporary break character, then must be the break. elseif match( v, vowel ) and match( chars[i-1], "[Ъъ]" ) then insert( breaks, i ) -- If Е/е preceded by a soft sign, count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then preceding sign must be medial, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. Вьет|нам ("Vietnam")). elseif match( v, "[Ее]" ) and match( chars[i-1], "[Ьь]" ) then local j = i - 1 while j > 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], "[" .. stress .. "]" ) ) do j = j - 1 if match( chars[j], vowel ) then -- If break, replaces the consonant preceding the soft sign as the break. if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end insert( breaks, i ) end end -- If Ю/ю preceded by a soft sign, calculate vowel harmony and iterate through vowel harmonic segments until reaching the one the letter is in; once found, if front harmonic then letter is the break. elseif match( v, "[Юю]" ) and match( chars[i-1], "[Ьь]" ) then vh = export.vowelharmony( text, params ) local k = 0 for j, substring in ipairs(vh) do local k_increase = mw.ustring.len(gsub(vh[j].substring, "[^%w%s%p" .. stress .. export.stem_barrier .. "]", "")) if k + k_increase > i then if vh[j].position == "front" then -- If break, replaces the consonant preceding the soft sign as the break. if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end insert( breaks, i ) end break end k = k + k_increase end -- If a consonant followed by vowel (i.e. if lone/cluster-final), count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then letter must be medial and lone/cluster-final, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. трол|лей|бус ("trolleybus")). elseif match( v, consonant ) and chars[i+1] and ( match( chars[i+1], vowel ) or ( match( chars[i+1], "[Ьь]" ) and chars[i+2] and match( chars[i+2], vowel ) ) ) then local j = i while j > 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], "[" .. stress .. "]" ) ) do j = j - 1 if match( chars[j], vowel ) then insert( breaks, i ) end end -- If word-final consonant, count backwards until vowel, checking if each cluster is allowed as a word-final cluster; if it is, increase "stable" (the number of stable consonants (and signs) at the end) by one; if a vowel is found before an unstable cluster, the loop ends with no change; if an unstable cluster is found, "stable" will not iterate which will trigger an additional unvoweled syllable break at that consonant (occurs in loanwords, e.g. буд|ди|зм ("Buddhism"), ал|ге|бр ("algebra")). elseif ( match( v, consonant ) or match( v, sign ) ) and ( i == #chars or match( chars[i+1], punctuation ) ) then local j = i local check = { chars[j] } local stable = 1 while j > 1 and j > i - #final_clusters and stable > i - j and ( match( chars[j-1], consonant ) or match( chars[j-1], sign ) ) do j = j - 1 insert( check, chars[j] ) for k,cluster in ipairs( final_clusters[#check] ) do if match( concat( reverse_array( check ) ), cluster ) then stable = stable + 1 break end end if stable == i - j then insert( breaks, j ) end end -- Iotated ("ya"-type) vowel after a vowel. elseif match( v, iotated ) and ( match( chars[i-1], vowel ) or ( match( chars[i-1], "[".. stress .. "]" ) and match( chars[i-2], vowel ) ) ) then insert( breaks, i ) end end -- Reform text without diacritics. text = concat( chars ) breaks = remove_duplicates( breaks ) local syll = {} for i,v in ipairs( breaks ) do if i == #breaks then insert( syll, sub( text, v ) ) else insert( syll, sub( text, v, breaks[i+1] - 1 ) ) end end return syll end function export.remove_final_short_vowel( text, params ) if not params then params = {} end local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )] local syllables = #export.syllables( text ) local reduced = text local no_fv = false if ( syllables > 1 and match( text, "[бвгджзклмнпрстфхцчшщ][аоөэиь]$" ) ) or match( text, "[ьъ]$" ) then local matches = { not params.bor, match( text, "[ьъ]$" ), match( text, "[ауя][влмн]ба$" ), match( text, "[оё][влмн]бо$" ), match( text, "ө[влмн]бө$" ), match( text, "[эүе][влмн]бэ$" ), match( text, "[бвглмнр]" .. vh.Cyrl.a .. u( 0x301 ) .. "?" .. u( 0x300 ) .. "?н" .. vh.Cyrl.a .. "$" ), match( text, "[ауя]нга$" ), match( text, "[оё]нго$" ), match( text, "өнгө$" ), match( text, "[эүе]нгэ$" ) } for _,v in pairs( matches ) do if v then reduced = sub( text, 1, len( text ) - 1 ) no_fv = true end end end return reduced, no_fv end function export.remove_penultimate_short_vowel( text, params ) if not params then params = {} end local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )] local syllables = reverse_array( export.syllables( text ) ) if not params.proper and ( vh.location ~= len( text ) - 1 or vh.violation == false ) and not params.bor then -- exclude proper nouns, loanwords and terms where the deleted vowel determines the vowel harmony local check local syllable_orig for i,syllable in ipairs( syllables ) do if i ~=1 and i ~= #syllables then syllable_orig = syllable if match( syllable, export.stem_barrier ) then break end local prev_syllable = gsub( syllables[i+1], export.stem_barrier, "" ) check = ( match( prev_syllable, "[бвгджзклмнпрстфхцчшщь]*$" ) or "" ) .. syllable .. ( match( syllables[i-1], "^[бвгджзклмнпрстфхцчшщь]*" ) or "" ) local matches = { -- CVC match( check, "^[влмр]ь?[аиоөэ][вгклмнпр]$" ), -- not [бн]VC match( check, "^гь?[аиоөэ][влмнр]$" ) and vh.position == "front", -- гV[влмнр] if front vowel only -- CCVC match( check, "^[вглмнр]?ь?[джзкпстхцчшщ]ь?[аиоөэ][вгджзклмнпрстцчшщ]$" ), match( check, "^[вглмнр]?ь?[сх]ь?[тч]ь?[аиоөэ][вглмнр]$" ), } local exclusions = { match( check, "[лм]ь?[аиоөэ]в$" ), -- not [лм]Vв match( check, "[вдзклмпрстхц]ь?и[вгджзлмнпрстцчшщ]$" ), -- only [кжчш]иC } for _,v in pairs( matches ) do if v then syllables[i] = sub( syllable, 1, len( syllable ) - 1 ) for _,e in pairs( exclusions ) do if e then syllables[i] = syllable_orig end end end end if syllables[i] ~= syllable_orig then break end end end end return concat( reverse_array( syllables ) ) end function export.concat_forms_in_slot( forms ) if forms then local new_vals = {} for _, v in ipairs( forms ) do local val = gsub( v.form, "|", "<!>" ) insert( new_vals, val ) end return concat( new_vals, "," ) else return nil end end function export.combine_stem_ending( stem, ending ) if stem == "?" then return "?" else return stem .. ending end end function export.generate_form( form, footnotes ) if type( footnotes ) == "string" then footnotes = { footnotes } end if footnotes then return { form = form, footnotes = footnotes } else return form end end return export 81quhzl1u9ls9plgiuv7zbffhsxms2x 2566655 2566638 2026-09-26T11:10:14Z Hiyuune 50834 2566655 Scribunto text/plain local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local export = {} local concat = table.concat local find = m_str_utils.find local insert = table.insert 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 gsub = m_str_utils.gsub local lower = m_str_utils.lower local reverse = m_str_utils.reverse local reverse_array = m_table.reverse local remove_duplicates = m_table.removeDuplicates local sort = table.sort local u = m_str_utils.char export.FVS1 = u( 0x180B ) export.FVS2 = u( 0x180C ) export.FVS3 = u( 0x180D ) export.FVS4 = u( 0x180F ) export.MVS = u( 0x180E ) export.NNBSP = u( 0x202F ) export.stem_barrier = u( 0xF000 ) local function format_Mongolian_text(text) return "<span class=\"Mong\" lang=\"mn\">" .. text .. "</span>" end function export.see(frame) local params = { [1] = {}, } local args = require("Module:parameters").process(frame:getParent().args, params) local title = args[1] local curr_title = mw.loadData("Module:headword/data").pagename local content = mw.title.new(title):getContent() local senses = {} local sense_id = 0 local j, pos, s, section if title == curr_title then return error("The soft-directed item is the same as the page title.") end if content then if not match(content, "=={{langname|mn}}==") then categories = categories .. "[[Thể loại:Liên kết đỏ tiếng Mông Cổ/mn-see]]" elseif not match(content, "mn%-IPA") and not match(content, "mn%-see") then require("Module:debug").track("mn-see/unidirectional reference to variant") elseif not match(content, curr_title) then require("Module:debug").track("mn-see/unidirectional reference variant→orthodox") end end while true do _, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]", pos) if j == nil then i, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.+)", pos) end if j == nil then break else pos = j - 1 end if language_name == "Tiếng Mông Cổ" then section = s end end if not section then return "" end section = section:gsub("\n===+Etymology.-(\n==)", "%1") local text = {} for sense in section:gmatch("\n# ([^\n]+)") do if not sense:match("rfdef") and not sense:match("defn") then sense_id = sense_id + 1 insert(senses, sense) end end insert(text, concat(senses, "\n# ")) return frame:preprocess( concat(text) ) end function export.ipasee(frame) local params = { [1] = {}, } local args = require("Module:parameters").process(frame:getParent().args, params) local title = args[1] local curr_title = mw.loadData("Module:headword/data").pagename local content = mw.title.new(title):getContent() local senses = {} local sense_id = 0 local j, pos, s, section if title == curr_title then return error("The soft-directed item is the same as the page title.") end if content then if not match(content, "=={{langname|mn}}==") then categories = categories .. "[[Thể loại:Liên kết đỏ tiếng Mông Cổ/mn-IPA-see]]" elseif not match(content, "mn%-IPA") and not match(content, "mn%-see") and not match(content, "mn%-IPA-see") then require("Module:debug").track("mn-IPA-see/unidirectional reference to variant") elseif not match(content, curr_title) then require("Module:debug").track("mn-IPA-see/unidirectional reference variant→orthodox") end end while true do _, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.-)\n==%f[^=]", pos) if j == nil then i, j, language_name, s = content:find("%f[=]==%s*([^=]+)%s*==(\n.+)", pos) end if j == nil then break else pos = j - 1 end if language_name == "Tiếng Mông Cổ" then section = s end end if not section then return "" end section = section:gsub("\n===+Etymology.-(\n==)", "%1") local text = {} if section:match("{{mn-IPA%|([^\n]+)}}") then return frame:expandTemplate{ title = "mn-IPA", args = { section:match("{{mn-IPA%|([^\n]+)}}") } } else return frame:expandTemplate{ title = "mn-IPA", args = { title } } end end --Breaks down a string into vowel harmonic segments function export.vowelharmony( text, params ) if not params then params = {} end local vh = {} local breaks = { 1 } local switchers = { "ау", "оу", "уу", "иу", "яу", "ёу", "еу", "юу", "уй", "эү", "өү", "үү", "иү", "еү", "юү", "үй", " ", "-" } local switchers2 = { "аа", "оо", "өө", "ээ", "яа", "ёо", "еө", "еэ", "Аа", "Оо", "Өө", "Ээ", "Яа", "Ёо", "Еө", "Еэ" } for _, v in pairs( switchers ) do v = gsub( v, "(.)(.)", "%1" .. u( 0x301 ) .. "?" .. u( 0x300 ) .. "?%2" ) local c = 0 while c ~= nil do c = find( lower( text ), v, c + 1 ) if c ~= nil and c ~= 1 then insert( breaks, c ) end end end if params.bor then for _,v in pairs( switchers2 ) do if match( text, v .. "$" ) then insert( breaks, len( text ) - 1 ) end end end sort( breaks ) for i, b in ipairs( breaks ) do insert( vh, { Cyrl = {}, Mong = {} } ) if i == #breaks then vh[i].substring = sub( text, b, len( text ) ) else vh[i].substring = sub( text, b, breaks[i + 1] - 1 ) end end if params.bor then for i,s in ipairs( vh ) do vh[i] = { Cyrl = {}, Mong = {} } local orig_text = s.substring s.substring = lower( s.substring ) if params.bor == "Russian" then s.substring = gsub( s.substring, "у", "ү" ) end local substring_nostress = gsub( s.substring, "[" .. u( 0x301 ) .. u( 0x300 ) .. "]", "" ) if match( s.substring, "кило" .. u( 0x301 ) .. "?$" ) then -- irregular vh[i].Cyrl.a = "э" vh[i].location = find( s.substring, "[эүею]" ) vh[i].position = "front" vh[i].quality = "unrounded" elseif match( substring_nostress, "[аеёиоөуүэюя]у" ) or match( substring_nostress, "уй" ) then vh[i].Cyrl.a = "а" vh[i].location = 1 vh[i].position = "back" vh[i].quality = "unrounded" elseif match( substring_nostress, "[аеёиоөуүэюя]ү" ) or match( substring_nostress, "үй" ) then vh[i].Cyrl.a = "э" vh[i].location = 1 vh[i].position = "front" vh[i].quality = "unrounded" elseif match( s.substring, "[ауяᠠᠣᠤ]" .. u( 0x301 ) ) then vh[i].Cyrl.a = "а" vh[i].location = find( s.substring, u( 0x301 ) ) - 1 vh[i].position = "back" vh[i].quality = "unrounded" elseif match( s.substring, "[оё]" .. u( 0x301 ) ) then vh[i].Cyrl.a = "о" vh[i].location = find( s.substring, u( 0x301 ) ) - 1 vh[i].position = "back" vh[i].quality = "rounded" elseif ( match( substring_nostress, "[ауяоё]" ) and ( find( substring_nostress, "[ауяоё]" ) == find( substring_nostress, "[ауя]" ) ) ) or match( substring_nostress, "[ᠠᠣᠤ]" ) then vh[i].Cyrl.a = "а" vh[i].location = find( substring_nostress, "[ауя]" ) vh[i].position = "back" vh[i].quality = "unrounded" elseif match( substring_nostress, "[ауяоё]" ) and find( substring_nostress, "[ауяоё]" ) == find( substring_nostress, "[оё]" ) then vh[i].Cyrl.a = "о" vh[i].location = find( substring_nostress, "[оё]" ) vh[i].position = "back" vh[i].quality = "rounded" elseif ( match( substring_nostress, "[эүеюө]" ) and find( substring_nostress, "[эүеюө]" ) == find( substring_nostress, "[эүею]" ) ) or match( substring_nostress, "[ᠡᠥᠦᠧ]" ) then vh[i].Cyrl.a = "э" vh[i].location = find( substring_nostress, "[эүею]" ) vh[i].position = "front" vh[i].quality = "unrounded" elseif match( substring_nostress, "[эүеюө]" ) and find( substring_nostress, "[эүеюө]" ) == find( substring_nostress, "ө" ) then vh[i].Cyrl.a = "ө" vh[i].location = find( substring_nostress, "ө" ) vh[i].position = "front" vh[i].quality = "rounded" else vh[i].Cyrl.a = "э" vh[i].location = find( substring_nostress, "и" ) or 1 vh[i].position = "front" vh[i].quality = "unrounded" end if match( vh[i].Cyrl.a, "[ао]" ) then vh[i].Cyrl.ii = "ы" vh[i].Cyrl.u = "у" vh[i].Mong.a = "ᠠ" vh[i].Mong.u = "ᠤ" else vh[i].Cyrl.ii = "ий" vh[i].Cyrl.u = "ү" vh[i].Mong.a = "ᠡ" vh[i].Mong.u = "ᠦ" end if match( vh[i].Cyrl.a, "ө" ) then -- ө takes the diphthong эй not өй vh[i].Cyrl.ai = "эй" else vh[i].Cyrl.ai = vh[i].Cyrl.a .. "й" end vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u vh[i].substring = orig_text end else local location local pattern for i,s in ipairs( vh ) do local orig = s.substring s.substring = reverse( lower( s.substring ) ) local vowel = match( s.substring, "[аеёоөуүэюя]" ) location = (find( s.substring, "[аеёоөуүэюя]" )) if vh[i].Cyrl.a == nil then vh[i].Cyrl.a = "э" vh[i].position = "front" vh[i].quality = "unrounded" pattern = "и" end vh[i].Cyrl.a = lower( vh[i].Cyrl.a ) if vowel == "а" or vowel == "у" or vowel == "я" then vh[i].Cyrl.a = "а" vh[i].position = "back" vh[i].quality = "unrounded" pattern = "[ауюя]" if match( s.substring, "[еёоөүэ]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "о" or vowel == "ё" then vh[i].Cyrl.a = "о" vh[i].position = "back" vh[i].quality = "rounded" pattern = "[ёо]" if match( s.substring, "[аеөуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "э" then vh[i].position = "front" if location and sub( s.substring, location-1, location-1 ) == "й" and match( s.substring, "[аеёоөуүэюя]", location+1 ) == "ө" then vh[i].Cyrl.a = "ө" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end elseif vowel == "ү" then vh[i].Cyrl.a = "э" vh[i].position = "front" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "ө" then vh[i].Cyrl.a = "ө" vh[i].position = "front" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end elseif vowel == "е" then vh[i].position = "front" if match( s.substring, "ө", location+1 ) then vh[i].Cyrl.a = "ө" vh[i].quality = "rounded" pattern = "[еө]" if match( s.substring, "[аёоуүэюя]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].quality = "unrounded" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end elseif vowel == "ю" then vh[i].quality = "unrounded" if match( s.substring, "[ауя]", location+1 ) then vh[i].Cyrl.a = "а" vh[i].position = "back" pattern = "[ауюя]" if match( s.substring, "[еёоөүэ]" ) then vh[i].violation = true else vh[i].violation = false end else vh[i].Cyrl.a = "э" vh[i].position = "front" pattern = "[еүэю]" if match( s.substring, "[аёоөуя]" ) then vh[i].violation = true else vh[i].violation = false end end end location = 0 local function prev_vowel( n ) return match( s.substring, "[аеёиоөуүэюя]", n+1 ) end local function prev_hvowel( n ) return match( s.substring, pattern, n+1 ) end while prev_vowel( location ) and ( prev_vowel( location ) == prev_hvowel( location ) or prev_vowel( location ) == "и" ) do if prev_vowel( location ) == prev_hvowel( location ) then location = find( s.substring, pattern, location+1 ) else -- if и local icheck = location+1 while prev_vowel( icheck ) == "и" do icheck = find( s.substring, "и", icheck+1 ) end if prev_vowel( icheck ) and prev_vowel( icheck ) == prev_hvowel( icheck ) then location = icheck elseif not prev_vowel( icheck ) and vowel == "э" then location = icheck elseif vowel == "э" and sub( s.substring, icheck-1, icheck-1 ) == "й" then location = icheck else break end end end if match( vh[i].Cyrl.a, "[ао]" ) then vh[i].Cyrl.ii = "ы" vh[i].Cyrl.u = "у" vh[i].Mong.a = "ᠠ" vh[i].Mong.u = "ᠤ" else vh[i].Cyrl.ii = "ий" vh[i].Cyrl.u = "ү" vh[i].Mong.a = "ᠡ" vh[i].Mong.u = "ᠦ" end if match( vh[i].Cyrl.a, "ө" ) then -- ө takes the diphthong эй not өй vh[i].Cyrl.ai = "эй" else vh[i].Cyrl.ai = vh[i].Cyrl.a .. "й" end vh[i].Cyrl.aa = vh[i].Cyrl.a .. vh[i].Cyrl.a vh[i].Cyrl.uu = vh[i].Cyrl.u .. vh[i].Cyrl.u s.substring = orig vh[i].location = len( s.substring ) + breaks[i] - location end end return vh end --Breaks down a string into syllables and returns a table function export.syllables( text, params ) local consonant = "[БВГДЖЗКЛМНПРСТФХЦЧШЩбвгджзклмнпрстфхцчшщ]" local vowel = "[АОУЭӨҮИЙЫЯЕЁЮаоуэөүийыяеёю]" local sign = "[ЪЬъь]" local iotated = "[ЯЕЁЮяеёю]" local punctuation = "[%s%p]" local final_clusters = require( "Module:mn/data" ).syll_final_cons local stress = u( 0x301 ) .. u( 0x300 ) -- Strip diacritics. local chars = {} for v in gmatch( text, "[%w%s%p" .. stress .. export.stem_barrier .. "]" ) do insert( chars, v ) end local breaks = {} for i, v in pairs( chars ) do -- First letter. if i == 1 or match( chars[i-1], punctuation ) then insert( breaks, i ) -- Stem barrier is used by the inflection templates. elseif match( chars[i-1], export.stem_barrier ) then insert( breaks, i ) -- If a vowel preceded by a hard sign or the temporary break character, then must be the break. elseif match( v, vowel ) and match( chars[i-1], "[Ъъ]" ) then insert( breaks, i ) -- If Е/е preceded by a soft sign, count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then preceding sign must be medial, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. Вьет|нам ("Vietnam")). elseif match( v, "[Ее]" ) and match( chars[i-1], "[Ьь]" ) then local j = i - 1 while j > 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], "[" .. stress .. "]" ) ) do j = j - 1 if match( chars[j], vowel ) then -- If break, replaces the consonant preceding the soft sign as the break. if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end insert( breaks, i ) end end -- If Ю/ю preceded by a soft sign, calculate vowel harmony and iterate through vowel harmonic segments until reaching the one the letter is in; once found, if front harmonic then letter is the break. elseif match( v, "[Юю]" ) and match( chars[i-1], "[Ьь]" ) then vh = export.vowelharmony( text, params ) local k = 0 for j, substring in ipairs(vh) do local k_increase = mw.ustring.len(gsub(vh[j].substring, "[^%w%s%p" .. stress .. export.stem_barrier .. "]", "")) if k + k_increase > i then if vh[j].position == "front" then -- If break, replaces the consonant preceding the soft sign as the break. if breaks[#breaks] == i - 2 then breaks[#breaks] = nil end insert( breaks, i ) end break end k = k + k_increase end -- If a consonant followed by vowel (i.e. if lone/cluster-final), count backwards until vowel, punctuation/space or start of string is found; if a vowel is found first, then letter must be medial and lone/cluster-final, so is the break; if punctuation/start of string found first, letter is part of word-initial cluster, so is not the break (occurs in loanwords, e.g. трол|лей|бус ("trolleybus")). elseif match( v, consonant ) and chars[i+1] and ( match( chars[i+1], vowel ) or ( match( chars[i+1], "[Ьь]" ) and chars[i+2] and match( chars[i+2], vowel ) ) ) then local j = i while j > 1 and ( match( chars[j], consonant ) or match( chars[j], sign ) or match( chars[j], "[" .. stress .. "]" ) ) do j = j - 1 if match( chars[j], vowel ) then insert( breaks, i ) end end -- If word-final consonant, count backwards until vowel, checking if each cluster is allowed as a word-final cluster; if it is, increase "stable" (the number of stable consonants (and signs) at the end) by one; if a vowel is found before an unstable cluster, the loop ends with no change; if an unstable cluster is found, "stable" will not iterate which will trigger an additional unvoweled syllable break at that consonant (occurs in loanwords, e.g. буд|ди|зм ("Buddhism"), ал|ге|бр ("algebra")). elseif ( match( v, consonant ) or match( v, sign ) ) and ( i == #chars or match( chars[i+1], punctuation ) ) then local j = i local check = { chars[j] } local stable = 1 while j > 1 and j > i - #final_clusters and stable > i - j and ( match( chars[j-1], consonant ) or match( chars[j-1], sign ) ) do j = j - 1 insert( check, chars[j] ) for k,cluster in ipairs( final_clusters[#check] ) do if match( concat( reverse_array( check ) ), cluster ) then stable = stable + 1 break end end if stable == i - j then insert( breaks, j ) end end -- Iotated ("ya"-type) vowel after a vowel. elseif match( v, iotated ) and ( match( chars[i-1], vowel ) or ( match( chars[i-1], "[".. stress .. "]" ) and match( chars[i-2], vowel ) ) ) then insert( breaks, i ) end end -- Reform text without diacritics. text = concat( chars ) breaks = remove_duplicates( breaks ) local syll = {} for i,v in ipairs( breaks ) do if i == #breaks then insert( syll, sub( text, v ) ) else insert( syll, sub( text, v, breaks[i+1] - 1 ) ) end end return syll end function export.remove_final_short_vowel( text, params ) if not params then params = {} end local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )] local syllables = #export.syllables( text ) local reduced = text local no_fv = false if ( syllables > 1 and match( text, "[бвгджзклмнпрстфхцчшщ][аоөэиь]$" ) ) or match( text, "[ьъ]$" ) then local matches = { not params.bor, match( text, "[ьъ]$" ), match( text, "[ауя][влмн]ба$" ), match( text, "[оё][влмн]бо$" ), match( text, "ө[влмн]бө$" ), match( text, "[эүе][влмн]бэ$" ), match( text, "[бвглмнр]" .. vh.Cyrl.a .. u( 0x301 ) .. "?" .. u( 0x300 ) .. "?н" .. vh.Cyrl.a .. "$" ), match( text, "[ауя]нга$" ), match( text, "[оё]нго$" ), match( text, "өнгө$" ), match( text, "[эүе]нгэ$" ) } for _,v in pairs( matches ) do if v then reduced = sub( text, 1, len( text ) - 1 ) no_fv = true end end end return reduced, no_fv end function export.remove_penultimate_short_vowel( text, params ) if not params then params = {} end local vh = export.vowelharmony( text, params )[#export.vowelharmony( text, params )] local syllables = reverse_array( export.syllables( text ) ) if not params.proper and ( vh.location ~= len( text ) - 1 or vh.violation == false ) and not params.bor then -- exclude proper nouns, loanwords and terms where the deleted vowel determines the vowel harmony local check local syllable_orig for i,syllable in ipairs( syllables ) do if i ~=1 and i ~= #syllables then syllable_orig = syllable if match( syllable, export.stem_barrier ) then break end local prev_syllable = gsub( syllables[i+1], export.stem_barrier, "" ) check = ( match( prev_syllable, "[бвгджзклмнпрстфхцчшщь]*$" ) or "" ) .. syllable .. ( match( syllables[i-1], "^[бвгджзклмнпрстфхцчшщь]*" ) or "" ) local matches = { -- CVC match( check, "^[влмр]ь?[аиоөэ][вгклмнпр]$" ), -- not [бн]VC match( check, "^гь?[аиоөэ][влмнр]$" ) and vh.position == "front", -- гV[влмнр] if front vowel only -- CCVC match( check, "^[вглмнр]?ь?[джзкпстхцчшщ]ь?[аиоөэ][вгджзклмнпрстцчшщ]$" ), match( check, "^[вглмнр]?ь?[сх]ь?[тч]ь?[аиоөэ][вглмнр]$" ), } local exclusions = { match( check, "[лм]ь?[аиоөэ]в$" ), -- not [лм]Vв match( check, "[вдзклмпрстхц]ь?и[вгджзлмнпрстцчшщ]$" ), -- only [кжчш]иC } for _,v in pairs( matches ) do if v then syllables[i] = sub( syllable, 1, len( syllable ) - 1 ) for _,e in pairs( exclusions ) do if e then syllables[i] = syllable_orig end end end end if syllables[i] ~= syllable_orig then break end end end end return concat( reverse_array( syllables ) ) end function export.concat_forms_in_slot( forms ) if forms then local new_vals = {} for _, v in ipairs( forms ) do local val = gsub( v.form, "|", "<!>" ) insert( new_vals, val ) end return concat( new_vals, "," ) else return nil end end function export.combine_stem_ending( stem, ending ) if stem == "?" then return "?" else return stem .. ending end end function export.generate_form( form, footnotes ) if type( footnotes ) == "string" then footnotes = { footnotes } end if footnotes then return { form = form, footnotes = footnotes } else return form end end return export 01zazfkgnqlns9genccimbr7rh9j2xg Mô đun:ca-headword 828 281212 2566661 2344959 2026-09-26T11:24:25Z Hiyuune 50834 2566661 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:ca-common") local ca_IPA_module = "Module:ca-IPA" local ca_verb_module = "Module:ca-verb" local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("ca") local langname = lang:getCanonicalName() local list_to_text = mw.text.listToText local insert = table.insert local concat = table.concat local rfind = m_string_utilities.find local rmatch = m_string_utilities.match local rsplit = m_string_utilities.split local usub = m_string_utilities.sub local rsub = com.rsub local function track(page) require("Module:debug/track")("ca-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Từ loại không được chỉ định. Vui lòng thêm tham số đầu tiên để gọi mô đun.") local params = { ["head"] = list_param, ["id"] = true, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local args = require("Module:parameters").process(frame:getParent().args, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "Biến thể hình thái hậu tố" then data.is_suffix = true data.pos_category = "Hậu tố" data.checkredlinks = true local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, "Dạng hậu tố " .. singular_poscat .. " " .. langname) insert(data.inflections, {label = "dạng hậu tố " .. singular_poscat}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end local post_note = data.post_note and "; " .. data.post_note or "" return require("Module:headword").full_headword(data) .. post_note end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable paticiples' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. list_to_text(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.f[1] == "ind" or args.f[1] == "inv" then -- invariable adjective insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, category_plpos .. " không biến cách " .. langname) if args.sp or args.f[2] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end insert(data.inflections, {label = "chỉ có giống cái"}) insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "mf" then f.term = lemma elseif f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then insert(data.categories, category_plpos .. " giống đôi " .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls -- First, some special hacks based on the feminine singular. if not fem_like_lemma and not args.sp and not lemma:find(" ") then for _, f in ipairs(feminines) do if f.term:find("ssa$") then -- If the feminine ends in -ssa, assume that the -ss- is also in the -- masculine plural form defpls = {rsub(f.term, "a$", "os")} break elseif f.term == lemma .. "na" then defpls = {lemma .. "ns"} break elseif lemma:find("ig$") and f.term:find("ja$") then -- Adjectives in -ig have two masculine plural forms, one derived from -- the m.sg. and the other derived from the f.sg. defpls = {lemma .. "s", rsub(f.term, "ja$", "jos")} break end end end defpls = defpls or com.make_plural(lemma, "m", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- First, some special hacks based on the feminine singular. if fem_like_lemma and not args.sp and not lemma:find(" ") and lemma:find("[çx]$") then -- Adjectives ending in -ç or -x behave as mf-type in the singular, but -- regular type in the plural. local defpls = com.make_plural(lemma .. "a", "f") if not defpls then error("Unable to generate default plural of '" .. lemma .. "a'") end insert_defpls(defpls, fpl, feminine_plurals) else for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_decorations(fplobj, f) insert(feminine_plurals, fplobj) end end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, category_plpos .. " không biến cách " .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "giống cái", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "số nhiều", "p") else insert_inflection(masculine_plurals, "giống đực và giống cái số nhiều", "p") end else insert_inflection(masculine_plurals, "giống đực số nhiều", "m|p") insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "so sánh hơn") parse_and_insert_inflection(data, args, "sup", "so sánh nhất") parse_and_insert_inflection(data, args, "dim", "giảm nhẹ nghĩa") parse_and_insert_inflection(data, args, "aug", "tăng kich") if args.irreg and is_superlative then insert(data.categories, category_plpos .. " so sánh nhất bất quy tắc " .. langname) end end local function get_adjective_params(adjtype) local params = { ["sp"] = true, -- special indicator: "first", "first-last", etc. ["f"] = list_param, --feminine form(s) [1] = {alias_of = "f", list = false}, ["pl"] = list_param, --plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["fpl"] = list_param, --feminine plural override(s) } if adjtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["dim"] = list_param --diminutive(s) params["aug"] = list_param --augmentative(s) params["fonly"] = boolean_param -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end -- Display additional inflection information for an adjective pos_functions["Tính từ"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["Phân từ quá khứ"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "Phân từ", } pos_functions["Từ hạn định"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["Đại từ"] = { params = get_adjective_params("pron"), func = do_adjective, } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Không rõ giống: " .. g) end end end local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending, gender_for_default_plural -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_default_plural = saw_gneut and "gneut" or gender_for_irreg_ending == "mf" and "m" or gender_for_irreg_ending local lemma = data.pagename -- Plural local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end insert(data.inflections, {label = glossary_link("chỉ có số nhiều")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "đôi khi " .. glossary_link("chỉ có số nhiều") .. ", trong biến thể"}) end if mode == "?" then -- Plural is unknown insert(data.categories, category_plpos .. " số nhiều chưa được chứng thực hoặc không rõ " .. langname) elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "số nhiều chưa được chứng thực"}) insert(data.categories, category_plpos .. " số nhiều chưa được chứng thực " .. langname) if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, category_plpos .. " không đếm được " .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")}) insert(data.categories, category_plpos .. " đếm được " .. langname) else insert(data.inflections, {label = glossary_link("không đếm được")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")}) insert(data.categories, category_plpos .. " không đếm được " .. langname) insert(data.categories, category_plpos .. " đếm được " .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, category_plpos .. " đếm được " .. langname) else -- Uncountable nouns insert(data.categories, category_plpos .. " không đếm được " .. langname) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma, gender_for_default_plural) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, gender_for_default_plural, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) insert(newpls, pl) end end plurals = newpls end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("không biến cách"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, category_plpos .. " không biến cách " .. langname) else insert_noun_inflection(plurals, "số nhiều", "p") end if plurals[2] then insert(data.categories, category_plpos .. " với nhiều dạng số nhiều" .. langname) end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); `inflect` is a function of one or two arguments -- to generate the default masculine or feminine from the lemma (the arguments are the lemma and optionally a -- "special" flag to indicate how to handle multiword lemmas, and the function is normally make_feminine or -- make_masculine from [[Module:ca-common]]); and `default_plurals` is a list into which the corresponding default -- plurals of the gathered or generated masculine or feminine forms are stored. local function handle_mf(field, inflect, default_plurals) local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = call_inflect() else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = call_inflect(special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, gender, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|ca|MFSING}} plobj.accel = {form = "p", lemma = mf.term} table.insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, assume each plural goes with -- the corresponding singular and use each corresponding singular as the lemma in the accelerator. The -- generated entry will have -- # {{plural of|ca|SINGULAR}} -- as the definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true if not default_plurals[1] then -- FIXME: Can this happen? Not in corresponding Spanish code and the old Portuguese code tried to -- handle this condition by generating the default plural from the lemma. error("Internal error: Something wrong, no generated default m/f plurals at this stage") end for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_decorations(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, gender, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_decorations(mfplobj, mf) insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end insert_noun_inflection(feminines, "giống cái", "f") insert_noun_inflection(feminine_plurals, "giống cái số nhiều") insert_noun_inflection(masculines, "giống đực") insert_noun_inflection(masculine_plurals, "giống đực số nhiều") parse_and_insert_noun_inflection("dim", "giảm nhẹ nghĩa") parse_and_insert_noun_inflection("aug", "tăng kích") parse_and_insert_noun_inflection("pej", "nghĩa xấu") parse_and_insert_noun_inflection("dem", "demonym") parse_and_insert_noun_inflection("fdem", "female demonym") -- Is this a noun with an unexpected ending (for its gender)? -- Only check if the term is one word (there are no spaces in the term). local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf") and irreg_gender_lemma:find("a$") then insert(data.categories, category_plpos .. " giống đực kết thúc bằng -a " .. langname) elseif (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf") and not ( irreg_gender_lemma:find("a$") or irreg_gender_lemma:find("ió$") or irreg_gender_lemma:find("tat$") or irreg_gender_lemma:find("tud$") or irreg_gender_lemma:find("[dt]riu$")) then insert(data.categories, category_plpos .. " giống cái nhưng không kết thúc bằng giống cái " .. langname) end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) [2] = {list = "pl", disallow_holes = true}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end pos_functions["Danh từ"] = { params = get_noun_params(), func = do_noun, } pos_functions["Danh từ riêng"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["Động từ"] = { params = { [1] = true, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = list_param, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = list_param, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, ["pres_1_sg"] = true, -- accept any ignore old-style param ["past_part"] = true, -- accept any ignore old-style param ["root"] = true, -- FIXME: Implement root-stressed vowel quality }, func = function(args, data, tracking_categories, frame) local preses, preses_3s, prets, parts, short_parts if args.attn then insert(tracking_categories, "Yêu cầu chú ý liên quan đến " .. langname) return end local ca_verb = require(ca_verb_module) local alternant_multiword_spec = ca_verb.do_generate_forms(args, "ca-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("ngôi thứ nhất số ít %s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("ngôi thứ ba số ít %s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("ngôi thứ ba số nhiều %s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "hiện tại") preses_3s = { slot = "pres_3s", label = "hiện tại ở ngôi thứ ba số ít", } prets = do_finite("pret", "quá khứ đơn") parts = { slot = "pp_ms", label = "phân từ quá khứ", } short_parts = { slot = "short_pp_ms", label = "phân từ quá khứ ngắn", } if args.pres[1] or args.pres3s[1] or args.pret[1] or args.part[1] or args.short_part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Lỗi nội bộ: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:ca-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{ca-verb form of}}. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "không có hiện tại ở ngôi thứ nhất số ít"}) insert(data.inflections, {label = "không có giả định hiện tại"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "không có trần thuật nhấn mạnh hay giả định"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("không ngôi")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "chỉ có ở ngôi thứ ba"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "chỉ có ở ngôi thứ ba số ít"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But we -- don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "bỏ qua nếu để trống") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:ca-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Catalan equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end if args.root then local m_ca_IPA = require(ca_IPA_module) local parsed_respellings = {} local function set_parsed_respelling(dialect, parsed) -- Validate the individual root vowel specs. for _, termobj in ipairs(parsed.terms) do if not rfind(termobj.words[1].term, "^" .. m_ca_IPA.mid_vowel_hint_c .. "$") then error(("Root vowel spec '%s' should be one of the vowels %s"):format( termobj.words[1].term, m_ca_IPA.mid_vowel_hints)) end end if not dialect then for _, dial in ipairs(m_ca_IPA.dialects) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end elseif m_ca_IPA.dialect_groups[dialect] then for _, dial in ipairs(m_ca_IPA.dialect_groups[dialect]) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end else parsed_respellings[dialect] = parsed end end local function check_dialect_or_dialect_group(dialect) if not m_table.contains(m_ca_IPA.dialects, dialect) and not m_ca_IPA.dialect_groups[dialect] then local dialect_list = {} for _, dial in ipairs(m_ca_IPA.dialects) do insert(dialect_list, "'" .. dial .. "'") end dialect_list = list_to_text(dialect_list, nil, " hoặc ") local dialect_group_list = {} for dialect_group, _ in pairs(m_ca_IPA.dialect_groups) do insert(dialect_group_list, "'" .. dialect_group .. "'") end dialect_group_list = list_to_text(dialect_group_list, nil, " hoặc ") error(("Không rõ phương ngữ '%s': Phương ngữ phải là %s hoặc nhóm phương ngữ %s"):format( dialect, dialect_list, dialect_group_list)) end end -- Parse the root vowel specs. if args.root:find("[<%[]") then local put = require(parse_utilities_module) -- Parse balanced segment runs involving either [...] (substitution notation) or <...> (inline -- modifiers). We do this because we don't want commas or semicolons inside of square or angle brackets -- to count as respelling delimiters. However, we need to rejoin square-bracketed segments with nearby -- ones after splitting alternating runs on comma and semicolon. local segments = put.parse_multi_delimiter_balanced_segment_run(args.root, {{"<", ">"}, {"[", "]"}}) local semicolon_separated_groups = put.split_alternating_runs(segments, "%s*;%s*") for _, group in ipairs(semicolon_separated_groups) do local first_element = group[1] local dialect if first_element:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = first_element:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) group[1] = rest end local comma_separated_groups = put.split_alternating_runs_on_comma(group) -- Process each value. local outer_container = m_ca_IPA.parse_comma_separated_groups(comma_separated_groups, true, args.root, "root") set_parsed_respelling(dialect, outer_container) end else for _, dialect_spec in ipairs(rsplit(args.root, "%s*;%s*")) do local dialect if dialect_spec:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = dialect_spec:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) dialect_spec = rest end local termobjs = {} for _, word in ipairs(rsplit(dialect_spec, ",")) do insert(termobjs, {words = {{term = word}}}) end set_parsed_respelling(dialect, { terms = termobjs, }) end end -- Convert each canonicalized respelling to phonemic/phonetic IPA. m_ca_IPA.generate_phonemic_phonetic(parsed_respellings) -- Group the results. local grouped_pronuns = m_ca_IPA.group_pronuns_by_dialect(parsed_respellings) -- Format for display. for _, grouped_pronun_spec in pairs(grouped_pronuns) do local pronunciations = {} local function ins(text) insert(pronunciations, text) end -- Loop through each pronunciation. For each one, format the phonetic version "raw". for j, pronun in ipairs(grouped_pronun_spec.pronuns) do -- Add dialect tags to left accent qualifiers if first one local as = pronun.a if j == 1 then if as then as = m_table.deepCopy(as) else as = {} end for _, dialect in ipairs(grouped_pronun_spec.dialects) do insert(as, m_ca_IPA.dialects_to_names[dialect]) end else ins(", ") end local slash_pron = "/" .. pronun.phonetic:gsub("ˈ", "") .. "/" if as or pronun.q or pronun.qq or pronun.aa then ins(require("Module:pron qualifier").format_qualifiers { lang = lang, text = slash_pron, q = pronun.q, a = as, qq = pronun.qq, aa = pronun.aa }) else ins(slash_pron) end if pronun.refs then -- FIXME: Copied from [[Module:IPA]]. Should be in a module. local refs = {} if #pronun.refs > 0 then for _, refspec in ipairs(pronun.refs) do if type(refspec) ~= "table" then refspec = {text = refspec} end local refargs if refspec.name or refspec.group then refargs = {name = refspec.name, group = refspec.group} end insert(refs, mw.getCurrentFrame():extensionTag("ref", refspec.text, refargs)) end ins(concat(refs)) end end end grouped_pronun_spec.formatted = concat(pronunciations) end -- Concatenate formatted results. local formatted = {} for _, grouped_pronun_spec in ipairs(grouped_pronuns) do insert(formatted, grouped_pronun_spec.formatted) end data.post_note = "''trọng âm gốc từ'': " .. concat(formatted, "; ") end end } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- -- Display additional inflection information for a numeral pos_functions["Số từ"] = { params = { [1] = true, [2] = true, }, func = function(args, data) if args[1] then insert(data.genders, "m") parse_and_insert_inflection(data, args, 1, "giống cái") parse_and_insert_inflection(data, args, 2, "Biến thể hình thái danh từ") else insert(data.genders, "m") insert(data.genders, "f") end end } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["Cụm từ"] = { params = { ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) validate_genders(args.g) data.genders = args.g parse_and_insert_inflection(data, args, "m", "giống đực") parse_and_insert_inflection(data, args, "f", "giống cái") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["Biến thể hình thái hậu tố"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "Biến thể hình thái hậu tố của " .. typ) end insert(data.inflections, {label = "mục từ biến thể hình thái của " .. m_table.serialCommaJoin(suffix_type, {conj = "hoặc"})}) end, } return export 5mx2ne5wca2cdmapgv5qmd2sxbh6idp 2566664 2566661 2026-09-26T11:27:09Z Hiyuune 50834 2566664 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:ca-common") local ca_IPA_module = "Module:ca-IPA" local ca_verb_module = "Module:ca-verb" local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("ca") local langname = lang:getCanonicalName() local list_to_text = mw.text.listToText local insert = table.insert local concat = table.concat local rfind = m_string_utilities.find local rmatch = m_string_utilities.match local rsplit = m_string_utilities.split local usub = m_string_utilities.sub local rsub = com.rsub local function track(page) require("Module:debug/track")("ca-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Từ loại không được chỉ định. Vui lòng thêm tham số đầu tiên để gọi mô đun.") local params = { ["head"] = list_param, ["id"] = true, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local args = require("Module:parameters").process(frame:getParent().args, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "Biến thể hình thái hậu tố" then data.is_suffix = true data.pos_category = "Hậu tố" data.checkredlinks = true local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, "Dạng hậu tố " .. singular_poscat .. " " .. langname) insert(data.inflections, {label = "dạng hậu tố " .. singular_poscat}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end local post_note = data.post_note and "; " .. data.post_note or "" return require("Module:headword").full_headword(data) .. post_note end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable paticiples' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. list_to_text(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.f[1] == "ind" or args.f[1] == "inv" then -- invariable adjective insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, category_plpos .. " không biến cách " .. langname) if args.sp or args.f[2] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end insert(data.inflections, {label = "chỉ có giống cái"}) insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "mf" then f.term = lemma elseif f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_decorations(feminines[1]) if fem_like_lemma then insert(data.categories, category_plpos .. " giống đôi " .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls -- First, some special hacks based on the feminine singular. if not fem_like_lemma and not args.sp and not lemma:find(" ") then for _, f in ipairs(feminines) do if f.term:find("ssa$") then -- If the feminine ends in -ssa, assume that the -ss- is also in the -- masculine plural form defpls = {rsub(f.term, "a$", "os")} break elseif f.term == lemma .. "na" then defpls = {lemma .. "ns"} break elseif lemma:find("ig$") and f.term:find("ja$") then -- Adjectives in -ig have two masculine plural forms, one derived from -- the m.sg. and the other derived from the f.sg. defpls = {lemma .. "s", rsub(f.term, "ja$", "jos")} break end end end defpls = defpls or com.make_plural(lemma, "m", args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- First, some special hacks based on the feminine singular. if fem_like_lemma and not args.sp and not lemma:find(" ") and lemma:find("[çx]$") then -- Adjectives ending in -ç or -x behave as mf-type in the singular, but -- regular type in the plural. local defpls = com.make_plural(lemma .. "a", "f") if not defpls then error("Unable to generate default plural of '" .. lemma .. "a'") end insert_defpls(defpls, fpl, feminine_plurals) else for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, "f", args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_decorations(fplobj, f) insert(feminine_plurals, fplobj) end end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) insert(feminine_plurals, fpl) end end local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_decorations(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, category_plpos .. " không biến cách " .. langname) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "giống cái", "f|s") elseif args.gneut then data.genders = {"gneut"} else data.genders = {"mf"} end if fem_pl_like_masc_pl then if args.gneut then insert_inflection(masculine_plurals, "số nhiều", "p") else insert_inflection(masculine_plurals, "giống đực và giống cái số nhiều", "p") end else insert_inflection(masculine_plurals, "giống đực số nhiều", "m|p") insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "so sánh hơn") parse_and_insert_inflection(data, args, "sup", "so sánh nhất") parse_and_insert_inflection(data, args, "dim", "giảm nhẹ nghĩa") parse_and_insert_inflection(data, args, "aug", "tăng kich") if args.irreg and is_superlative then insert(data.categories, category_plpos .. " so sánh nhất bất quy tắc " .. langname) end end local function get_adjective_params(adjtype) local params = { ["sp"] = true, -- special indicator: "first", "first-last", etc. ["f"] = list_param, --feminine form(s) [1] = {alias_of = "f", list = false}, ["pl"] = list_param, --plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["fpl"] = list_param, --feminine plural override(s) } if adjtype == "base" then params["comp"] = list_param --comparative(s) params["sup"] = list_param --superlative(s) params["dim"] = list_param --diminutive(s) params["aug"] = list_param --augmentative(s) params["fonly"] = boolean_param -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end -- Display additional inflection information for an adjective pos_functions["Tính từ"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["Phân từ quá khứ"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "Phân từ", } pos_functions["Từ hạn định"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["Đại từ"] = { params = get_adjective_params("pron"), func = do_adjective, } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "gneut", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "n-p", "?", "?-p"} ) local function validate_genders(genders) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] then error("Không rõ giống: " .. g) end end end local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) validate_genders(args[1]) data.genders = args[1] local saw_m = false local saw_f = false local saw_gneut = false local gender_for_irreg_ending, gender_for_default_plural -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end if g == "gneut" then saw_gneut = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_default_plural = saw_gneut and "gneut" or gender_for_irreg_ending == "mf" and "m" or gender_for_irreg_ending local lemma = data.pagename -- Plural local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end insert(data.inflections, {label = glossary_link("chỉ có số nhiều")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "đôi khi " .. glossary_link("chỉ có số nhiều") .. ", trong biến thể"}) end if mode == "?" then -- Plural is unknown insert(data.categories, category_plpos .. " số nhiều chưa được chứng thực hoặc không rõ " .. langname) elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "số nhiều chưa được chứng thực"}) insert(data.categories, category_plpos .. " số nhiều chưa được chứng thực " .. langname) if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, category_plpos .. " không đếm được " .. langname) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "thường " .. glossary_link("không đếm được")}) insert(data.categories, category_plpos .. " đếm được " .. langname) else insert(data.inflections, {label = glossary_link("không đếm được")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("đếm được") .. " và " .. glossary_link("không đếm được")}) insert(data.categories, category_plpos .. " không đếm được " .. langname) insert(data.categories, category_plpos .. " đếm được " .. langname) elseif plurals[1] then -- Countable nouns insert(data.categories, category_plpos .. " đếm được " .. langname) else -- Uncountable nouns insert(data.categories, category_plpos .. " không đếm được " .. langname) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma, gender_for_default_plural) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, gender_for_default_plural, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) insert(newpls, pl) end end plurals = newpls end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("không biến cách"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, category_plpos .. " không biến cách " .. langname) else insert_noun_inflection(plurals, "số nhiều", "p") end if plurals[2] then insert(data.categories, category_plpos .. " với nhiều dạng số nhiều" .. langname) end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); `inflect` is a function of one or two arguments -- to generate the default masculine or feminine from the lemma (the arguments are the lemma and optionally a -- "special" flag to indicate how to handle multiword lemmas, and the function is normally make_feminine or -- make_masculine from [[Module:ca-common]]); and `default_plurals` is a list into which the corresponding default -- plurals of the gathered or generated masculine or feminine forms are stored. local function handle_mf(field, inflect, default_plurals) local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = call_inflect() else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = call_inflect(special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, gender, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|ca|MFSING}} plobj.accel = {form = "p", lemma = mf.term} table.insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], splitchar = ",", } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, assume each plural goes with -- the corresponding singular and use each corresponding singular as the lemma in the accelerator. The -- generated entry will have -- # {{plural of|ca|SINGULAR}} -- as the definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true if not default_plurals[1] then -- FIXME: Can this happen? Not in corresponding Spanish code and the old Portuguese code tried to -- handle this condition by generating the default plural from the lemma. error("Internal error: Something wrong, no generated default m/f plurals at this stage") end for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_decorations(defpl, mfpl) insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, gender, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_decorations(mfplobj, mf) insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end insert_noun_inflection(feminines, "giống cái", "f") insert_noun_inflection(feminine_plurals, "giống cái số nhiều") insert_noun_inflection(masculines, "giống đực") insert_noun_inflection(masculine_plurals, "giống đực số nhiều") parse_and_insert_noun_inflection("dim", "giảm nhẹ nghĩa") parse_and_insert_noun_inflection("aug", "tăng kích") parse_and_insert_noun_inflection("pej", "nghĩa xấu") parse_and_insert_noun_inflection("dem", "demonym") parse_and_insert_noun_inflection("fdem", "female demonym") -- Is this a noun with an unexpected ending (for its gender)? -- Only check if the term is one word (there are no spaces in the term). local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf") and irreg_gender_lemma:find("a$") then insert(data.categories, category_plpos .. " giống đực kết thúc bằng -a " .. langname) elseif (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf") and not ( irreg_gender_lemma:find("a$") or irreg_gender_lemma:find("ió$") or irreg_gender_lemma:find("tat$") or irreg_gender_lemma:find("tud$") or irreg_gender_lemma:find("[dt]riu$")) then insert(data.categories, category_plpos .. " giống cái nhưng không kết thúc bằng giống cái " .. langname) end end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) [2] = {list = "pl", disallow_holes = true}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end pos_functions["Danh từ"] = { params = get_noun_params(), func = do_noun, } pos_functions["Danh từ riêng"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Verbs -- ----------------------------------------------------------------------------------------- pos_functions["Động từ"] = { params = { [1] = true, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pres3s"] = list_param, --third-singular present ["pres3s_qual"] = {list = "pres3s\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["short_part"] = list_param, --short participle ["short_part_qual"] = {list = "short_part\1_qual", allow_holes = true}, ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, ["pres_1_sg"] = true, -- accept any ignore old-style param ["past_part"] = true, -- accept any ignore old-style param ["root"] = true, -- FIXME: Implement root-stressed vowel quality }, func = function(args, data, tracking_categories, frame) local preses, preses_3s, prets, parts, short_parts if args.attn then insert(tracking_categories, "Yêu cầu chú ý liên quan đến " .. langname) return end local ca_verb = require(ca_verb_module) local alternant_multiword_spec = ca_verb.do_generate_forms(args, "ca-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and #specforms[slot] > 0 end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("ngôi thứ nhất số ít %s"):format(label_tense), }, true elseif has_3s then return { slot = slot_tense .. "_3s", label = ("ngôi thứ ba số ít %s"):format(label_tense), }, false else return { slot = slot_tense .. "_3p", label = ("ngôi thứ ba số nhiều %s"):format(label_tense), }, false end end local did_pres_1s preses, did_pres_1s = do_finite("pres", "hiện tại") preses_3s = { slot = "pres_3s", label = "hiện tại ở ngôi thứ ba số ít", } prets = do_finite("pret", "quá khứ đơn") parts = { slot = "pp_ms", label = "phân từ quá khứ", } short_parts = { slot = "short_pp_ms", label = "phân từ quá khứ ngắn", } if args.pres[1] or args.pres3s[1] or args.pret[1] or args.part[1] or args.short_part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Lỗi nội bộ: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:ca-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use the new {{ca-verb form of}}. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "không có hiện tại ở ngôi thứ nhất số ít"}) insert(data.inflections, {label = "không có giả định hiện tại"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "không có trần thuật nhấn mạnh hay giả định"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("không ngôi")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "chỉ có ở ngôi thứ ba"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "chỉ có ở ngôi thứ ba số ít"}) end local has_vowel_alt if alternant_multiword_spec.vowel_alt then for _, vowel_alt in ipairs(alternant_multiword_spec.vowel_alt) do if vowel_alt ~= "+" and vowel_alt ~= "í" and vowel_alt ~= "ú" then has_vowel_alt = true break end end end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) -- We want to include both the pres_1s and pres_3s if there is a vowel alternation in the present singular. But we -- don't want to redundantly include the pres_3s if we already included it. if did_pres_1s and has_vowel_alt then do_verb_form(args.pres3s, args.pres3s_qual, preses_3s, skip_pres_if_empty) end do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) do_verb_form(args.short_part, args.short_part_qual, short_parts, "bỏ qua nếu để trống") -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:ca-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Catalan equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end if args.root then local m_ca_IPA = require(ca_IPA_module) local parsed_respellings = {} local function set_parsed_respelling(dialect, parsed) -- Validate the individual root vowel specs. for _, termobj in ipairs(parsed.terms) do if not rfind(termobj.words[1].term, "^" .. m_ca_IPA.mid_vowel_hint_c .. "$") then error(("Root vowel spec '%s' should be one of the vowels %s"):format( termobj.words[1].term, m_ca_IPA.mid_vowel_hints)) end end if not dialect then for _, dial in ipairs(m_ca_IPA.dialects) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end elseif m_ca_IPA.dialect_groups[dialect] then for _, dial in ipairs(m_ca_IPA.dialect_groups[dialect]) do -- Need to clone as we destructively modify each one later with the pronun. parsed_respellings[dial] = m_table.deepCopy(parsed) end else parsed_respellings[dialect] = parsed end end local function check_dialect_or_dialect_group(dialect) if not m_table.contains(m_ca_IPA.dialects, dialect) and not m_ca_IPA.dialect_groups[dialect] then local dialect_list = {} for _, dial in ipairs(m_ca_IPA.dialects) do insert(dialect_list, "'" .. dial .. "'") end dialect_list = list_to_text(dialect_list, nil, " hoặc ") local dialect_group_list = {} for dialect_group, _ in pairs(m_ca_IPA.dialect_groups) do insert(dialect_group_list, "'" .. dialect_group .. "'") end dialect_group_list = list_to_text(dialect_group_list, nil, " hoặc ") error(("Không rõ phương ngữ '%s': Phương ngữ phải là %s hoặc nhóm phương ngữ %s"):format( dialect, dialect_list, dialect_group_list)) end end -- Parse the root vowel specs. if args.root:find("[<%[]") then local put = require(parse_utilities_module) -- Parse balanced segment runs involving either [...] (substitution notation) or <...> (inline -- modifiers). We do this because we don't want commas or semicolons inside of square or angle brackets -- to count as respelling delimiters. However, we need to rejoin square-bracketed segments with nearby -- ones after splitting alternating runs on comma and semicolon. local segments = put.parse_multi_delimiter_balanced_segment_run(args.root, {{"<", ">"}, {"[", "]"}}) local semicolon_separated_groups = put.split_alternating_runs(segments, "%s*;%s*") for _, group in ipairs(semicolon_separated_groups) do local first_element = group[1] local dialect if first_element:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = first_element:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) group[1] = rest end local comma_separated_groups = put.split_alternating_runs_on_comma(group) -- Process each value. local outer_container = m_ca_IPA.parse_comma_separated_groups(comma_separated_groups, true, args.root, "root") set_parsed_respelling(dialect, outer_container) end else for _, dialect_spec in ipairs(rsplit(args.root, "%s*;%s*")) do local dialect if dialect_spec:find("^[a-z]+:") then -- a dialect-specific spec local rest dialect, rest = dialect_spec:match("^([a-z]+):(.*)$") check_dialect_or_dialect_group(dialect) dialect_spec = rest end local termobjs = {} for _, word in ipairs(rsplit(dialect_spec, ",")) do insert(termobjs, {words = {{term = word}}}) end set_parsed_respelling(dialect, { terms = termobjs, }) end end -- Convert each canonicalized respelling to phonemic/phonetic IPA. m_ca_IPA.generate_phonemic_phonetic(parsed_respellings) -- Group the results. local grouped_pronuns = m_ca_IPA.group_pronuns_by_dialect(parsed_respellings) -- Format for display. for _, grouped_pronun_spec in pairs(grouped_pronuns) do local pronunciations = {} local function ins(text) insert(pronunciations, text) end -- Loop through each pronunciation. For each one, format the phonetic version "raw". for j, pronun in ipairs(grouped_pronun_spec.pronuns) do -- Add dialect tags to left accent qualifiers if first one local as = pronun.a if j == 1 then if as then as = m_table.deepCopy(as) else as = {} end for _, dialect in ipairs(grouped_pronun_spec.dialects) do insert(as, m_ca_IPA.dialects_to_names[dialect]) end else ins(", ") end local slash_pron = "/" .. pronun.phonetic:gsub("ˈ", "") .. "/" if as or pronun.q or pronun.qq or pronun.aa then ins(require("Module:pron qualifier").format_qualifiers { lang = lang, text = slash_pron, q = pronun.q, a = as, qq = pronun.qq, aa = pronun.aa }) else ins(slash_pron) end if pronun.refs then -- FIXME: Copied from [[Module:IPA]]. Should be in a module. local refs = {} if #pronun.refs > 0 then for _, refspec in ipairs(pronun.refs) do if type(refspec) ~= "table" then refspec = {text = refspec} end local refargs if refspec.name or refspec.group then refargs = {name = refspec.name, group = refspec.group} end insert(refs, mw.getCurrentFrame():extensionTag("ref", refspec.text, refargs)) end ins(concat(refs)) end end end grouped_pronun_spec.formatted = concat(pronunciations) end -- Concatenate formatted results. local formatted = {} for _, grouped_pronun_spec in ipairs(grouped_pronuns) do insert(formatted, grouped_pronun_spec.formatted) end data.post_note = "''trọng âm gốc từ'': " .. concat(formatted, "; ") end end } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- -- Display additional inflection information for a numeral pos_functions["Số từ"] = { params = { [1] = true, [2] = true, }, func = function(args, data) if args[1] then insert(data.genders, "m") parse_and_insert_inflection(data, args, 1, "giống cái") parse_and_insert_inflection(data, args, 2, "Biến thể hình thái danh từ") else insert(data.genders, "m") insert(data.genders, "f") end end } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["Cụm từ"] = { params = { ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) validate_genders(args.g) data.genders = args.g parse_and_insert_inflection(data, args, "m", "giống đực") parse_and_insert_inflection(data, args, "f", "giống cái") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["Biến thể hình thái hậu tố"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, "Biến thể hình thái hậu tố của " .. typ) end insert(data.inflections, {label = "mục từ biến thể hình thái của " .. m_table.serialCommaJoin(suffix_type, {conj = "hoặc"})}) end, } return export awlnd25exwjfqvec03j7i8o81okzrf6 Mô đun:ru-headword 828 281430 2566660 2521715 2026-09-26T11:23:42Z Hiyuune 50834 2566660 Scribunto text/plain --[=[ This module implements the headword templates {{ru-noun}}, {{ru-adj}}, {{ru-adv}}, {{ru-noun+}}, etc. The main entry point is show(), which is meant to be called from one of the above templates. However, {{ru-noun+}} uses the entry point noun_plus(). When calling show(), the first parameter of the #invoke call is the part of speech. Other parameters are taken from the parent template call. The implementations for different types of headwords (different parts of speech) are set in pos_functions[POS] for a given POS (part of speech). ]=]-- local export = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local lang = require("Module:languages").getByCode("ru") local langname = lang:getCanonicalName() local com = require("Module:ru-common") local m_links = require("Module:links") local m_table_tools = require("Module:table tools") local require_when_needed = require("Module:require when needed") local en_utilities_module = "Module:en-utilities" local json_module = "Module:JSON" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed(string_utilities_module) local m_table = require_when_needed(table_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local shallowCopy = require_when_needed(table_module, "shallowCopy") local insertIfNot = require_when_needed(table_module, "insertIfNot") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local list_comp = {list = "comp", disallow_holes = true} local list_sup = {list = "sup", disallow_holes = true} local u = m_string_utilities.char local rfind = m_string_utilities.find local rsubn = m_string_utilities.gsub local rmatch = m_string_utilities.match local rsplit = m_string_utilities.split local concat = table.concat local insert = table.insert local unpack = unpack or table.unpack -- Lua 5.2 compatibility local IRREGMARKER = "△" local HYPMARKER = "⟐" -- Forward references local do_noun local AC = u(0x0301) -- acute = ́ local pos_functions = {} -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsubn() that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function track(page) require("Module:debug/track")("ru-headword/" .. page) return true end -- Clone args while also assigning nil to empty strings. local function clone_args(in_args) local args = {} for pname, param in pairs(in_args) do if param == "" then args[pname] = nil else args[pname] = param end end return args end local function make_qualifier_text(text) return require("Module:qualifier").format_qualifier(text) end -- Split a list of "RUSSIAN" or "RUSSIAN//TRANSLIT" strings into a list of {RUSSIAN, TRANSLIT} objects. local function split_list_into_russian_tr(list) local splitlist = {} for _, item in ipairs(list) do insert(splitlist, com.split_russian_tr(item, "dopair")) end return splitlist end local function check_if_accent_needed(termobj, data, is_head) local val = termobj.term local val_no_links = m_links.remove_links(val) if com.needs_accents(val_no_links) then if not termobj.unknown_stress and not termobj.nostress then error("Stress must be supplied using an acute accent or ё: '" .. val_no_links .. "' (use inline modifier <unknown_stress:1> if stress is unknown and <nostress:1> if a multisyllable word really has no stress, as in ''до́ смерти'')") end if not termobj.nostress then local pos = require(en_utilities_module).singularize(data.pos_category) insert(data.categories, "Yêu cầu trọng âm " .. pos .. " " .. langname) end end if com.is_multi_stressed(val_no_links) then error("Multi-stressed form '" .. val_no_links .. "' not allowed") end end -- Parse the forms of an inflection. The raw arguments are specified in `forms`, a list of forms which are parsed for -- inline modifiers. Multiple comma-separated values are allowed. local function parse_inflection_forms(data, forms, field, is_head) local retobjs = m_headword_utilities.parse_term_list_with_modifiers { forms = forms, paramname = field, splitchar = ",", is_head = is_head, include_mods = { "tr", {"nostress", {type = "boolean"}}, {"unknown_stress", {type = "boolean"}}, }, } for _, retobj in ipairs(retobjs) do if is_head and retobj.term == "+" then retobj.term = data.pagename end check_if_accent_needed(retobj, data, is_head) if is_head then -- Catch errors in arguments where headword doesn't match page title; for the moment, do only with -- tracking. local head_no_links = m_links.remove_links(retobj.term) local head_noaccent = com.remove_accents(head_no_links) if head_noaccent ~= data.pagename then track("bad-headword") --error("Headword " .. term .. " doesn't match pagename " .. data.pagename) end end end return retobjs end -- Parse an inflection. The raw arguments come from `args[field]`, which is parsed for inline modifiers. Multiple -- comma-separated values are allowed. local function parse_inflection(data, args, field, is_head) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end return parse_inflection_forms(data, args[argfield], field, is_head) end -- Add a full inflection (e.g. genitive singular of nouns, abstract noun of adjectives) to `data.inflections`. `label` -- is the label of the inflection (e.g. "abstract noun"), which can have <<...>> glossary references. `terms` is a list -- of term objects. `accel_form` is the accelerator form (e.g. "gen|s" for genitive singular) of the inflection, or nil -- to add no accelerator. `accel_pos` is the part of speech of the inflection, if different from the lemma. -- -- This is a wrapper around insert_inflection() in [[Module:headword utilities]], but handles hypothetical markers in -- the term (which are converted into the `hypothetical` face) as well as the fact that the accelerator spec may differ -- from term to term if we need to specify a target (i.e. the value of |head= used in {{head}} or similar) that's -- different from the term itself. This happens in particular in comparative forms, where the term reads e.g. -- "([[покраснее|по]])[[краснее|красне́е]]" but we want the target to be just красне́е. local function insert_inflection(data, terms, label, accel_form, accel_pos) if not terms[1] then return end for _, termobj in ipairs(terms) do local term = termobj.term local tr = termobj.tr local sawhyp_term, sawhyp_tr term, sawhyp_term = rsubb(term, HYPMARKER, "") if tr then tr, sawhyp_tr = rsubb(tr, HYPMARKER, "") end local accel local target_term = termobj.target_term or term -- If the target was given without a translit, don't fall back to the term translit because the target itself -- may be different from the term. local target_tr = termobj.target_tr or not termobj.target_term and tr or nil if accel_form then local lemmas = {} local lemma_translits = {} for i, headobj in ipairs(data.heads) do lemmas[i] = headobj.term lemma_translits[i] = headobj.tr end accel = { form = accel_form, lemma = lemmas, lemma_translit = lemma_translits, pos = accel_pos, target = target_term, translit = target_tr } end termobj.term = term -- Currently we don't display translits for inflections, so null out any manual translit. If we want to change -- this, we need to set enable_auto_translit in the call to insert_inflection(). termobj.tr = nil termobj.face = (sawhyp_term or sawhyp_tr) and "hypothetical" or nil termobj.accel = accel if com.needs_accents(m_links.remove_links(target_term)) then local pos = require(en_utilities_module).singularize(data.pos_category) insert(data.categories, "Yêu cầu trọng âm " .. pos .. " " .. langname) end end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, } end -- Insert a fixed label `label` into the inflections for `data`. If `originating_term` is supplied, copy the qualifiers, -- labels and references from it into the fixed label. local function insert_fixed_inflection(data, label, originating_term) m_headword_utilities.insert_fixed_inflection { headdata = data, originating_term = originating_term, label = label, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. Multiple comma-separated values are allowed. `label` is the -- label that the inflections are given; sections enclosed in <<...>> are linked to the glossary. `accel_form` is the -- accelerator form (or nil), and `accel_pos` if specified overrides the accelerator part of speech. Note that -- [[Module:headword utilities]] provides a parse_and_insert_inflection() that is usually sufficient, but in our case -- we do a bunch of additional processing when inserting inflections, so we do the parsing and inserting separately -- using functions defined above. local function parse_and_insert_inflection(data, args, field, label, accel_form, accel_pos) local terms = parse_inflection(data, args, field) insert_inflection(data, terms, label, accel_form, accel_pos) end local function get_split_decomposed_heads(data) if not data.split_decomposed_heads then data.split_decomposed_heads = com.split_translit_of_duplicate_termobjs_and_decompose(data.heads) end return data.split_decomposed_heads end local function add_common_all_pos_params(params) params["notrcat"] = boolean_param -- don't add 'irregular pronunciations' tracking category params["pagename"] = true params["id"] = true return params end -- The main entry point. function export.show(frame) local iparams = { [1] = {required = true, desc = "từ loại"}, } local iargs = require("Module:parameters").process(frame.args, iparams) local poscat = iargs[1] local params = add_common_all_pos_params { [1] = {list = "head", disallow_holes = true}, ["tr"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <tr:...> inline modifier on the headword"}, } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, no_redundant_head_cat = true, pos_category = poscat, categories = {}, genders = {}, inflections = {}, id = args.id, pagename = pagename, } data.heads = parse_inflection(data, args, {1, "head"}, "is_head") if not data.heads[1] then data.heads = {{term = pagename}} end local unknown_stress = false for i, headobj in ipairs(data.heads) do unknown_stress = unknown_stress or headobj.unknown_stress local tr = headobj.tr if tr then tr = com.decompose(tr) local tr_gen = com.translit_no_links(headobj.term) if tr == tr_gen then track("redundant-translit") elseif not args.notrcat then insert(data.categories, "Mục từ có cách phát âm bất quy tắc " .. langname) end end end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if unknown_stress then track("unknown-stress") if not pos_functions[poscat] or not pos_functions[poscat].no_insert_unknown_stress_label or not pos_functions[poscat].no_insert_unknown_stress_label(args) then insert(data.inflections, {label = "trọng âm không rõ"}) end end return require(headword_module).full_headword(data) end -- Common params shared by {{ru-noun}} and {{ru-noun+}}. local function add_common_noun_params(params) params["unknown_decl"] = boolean_param -- declension unknown params["unknown_pattern"] = boolean_param -- stress pattern (a, b, b', ...) unknown params["unknown_gender"] = boolean_param -- gender unknown params["unknown_animacy"] = boolean_param -- animacy unknown params["unknown_stress"] = boolean_param -- stress unknown params["f"] = list_param -- feminine equivalent(s) params["m"] = list_param -- masculine equivalent(s) params["adj"] = list_param -- relational adjective(s) params["poss"] = list_param -- possessive adjective(s) params["coll"] = list_param -- collective(s) params["dim"] = list_param -- diminutive(s) params["aug"] = list_param -- augmentative(s) params["hypocor"] = list_param -- hypocorism(s) params["pej"] = list_param -- pejorative(s) params["pejcoll"] = list_param -- pejorative collective(s) params["clip"] = list_param -- clipping(s) params["expr"] = list_param -- expressive term(s) params["dem"] = list_param -- demonym(s) params["fdem"] = list_param -- female demonym(s) return params end -- Implementation of {{ru-noun+}}. We should redo this implementation along the lines of {{uk-ndecl}}. For example, -- instead of existing {{ru-noun-table|[[дви́гатель]]|m|_|[[внутренний|вну́треннего]]|+$|_|[[сгорание|сгора́ния]]|$}}, it -- should look more like {{ru-ndecl|дви́гатель<M> [[внутренний|вну́треннего]] [[сгорание|сгора́ния]]}}. function export.noun_plus(frame) local iparams = { [1] = {required = true, desc = "từ loại"}, ["old"] = boolean_param, ["ndef"] = {}, } local iargs = require("Module:parameters").process(frame.args, iparams) local poscat = iargs[1] local params = add_common_noun_params(add_common_all_pos_params { ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, -- genders ["notes"] = list_param, -- "footnotes" displayed after headword }) local parargs = frame:getParent().args local headword_args, args = require("Module:parameters").process(parargs, params, "return unknown") args = clone_args(args) -- default value of n=, used in ru-proper noun+ where ndef=sg is set args.ndef = args.ndef or iargs.ndef local m_noun = require("Module:ru-noun") args = m_noun.do_generate_forms(args, iargs.old) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local data = { lang = lang, no_redundant_head_cat = true, pos_category = poscat, categories = {}, genders = {}, inflections = {}, id = args.id, pagename = pagename, } -- Do explicit genders using g=, g2=, etc. data.genders = headword_args.g -- If none, do inferred or explicit genders taken from declension. if not data.genders[1] then local gender_specs = {} for _, g in ipairs(args.genders) do insert(gender_specs, {spec = g}) end data.genders = gender_specs end local saw_note = false -- Given a list of {RU, TR} pairs, where TR may be nil, separate off the footnote symbols from RU and TR; link the -- remainder if it's not already linked; remove monosyllabic accents (but not from multiword expressions); and -- return the result in termobj format, i.e. {term = RU, tr = TR}. local function convert_paired_terms_to_termobjs(paired_list, ishead) if not paired_list or not paired_list[1] then return {{term = "-"}} end local termobjs = {} for _, x in ipairs(paired_list) do local ru, tr = x[1], x[2] -- separate_notes() just returns the note, but get_notes() adds -- <sup>...</sup>. We want the former for checking whether the -- note is nonempty after removing IRREGMARKER (if we use the -- latter we'll get <sup></sup> in the case of just IRREGMARKER), -- but the latter when generating the inflectional form. if not ishead and (rfind(ru, "[%[|%]]") or tr and rfind(tr, "[%[|%]]")) then track("form-with-link") end local ruentry, runotes = m_table_tools.separate_notes(ru) local sawhyp runotes = rsub(runotes, IRREGMARKER, "") -- remove note of irregularity runotes, sawhyp = rsubb(runotes, HYPMARKER, "") if runotes ~= "" then saw_note = true end runotes = m_table_tools.superscript_notes(runotes) local trentry, trnotes if tr then trentry, trnotes = m_table_tools.separate_notes(tr) trnotes = rsub(trnotes, IRREGMARKER, "") -- remove note of irregularity trnotes = m_table_tools.superscript_notes(trnotes) end ruentry, trentry = com.remove_monosyllabic_accents(ruentry, trentry) if sawhyp then insert(termobjs, {term = ruentry .. runotes .. HYPMARKER, tr = trentry and trentry .. trnotes .. HYPMARKER or nil} ) elseif ishead then insert(termobjs, {term = ruentry .. runotes, tr = trentry and trentry .. trnotes or nil}) else local ruspan, trspan if ruentry == "-" then ruspan = "-" elseif rfind(ruentry, "[%[|%]]") then -- don't add links around a form that's already linked ruspan = ruentry .. runotes else ruspan = "[[" .. ruentry .. "]]" .. runotes end if trentry then trspan = trentry .. trnotes end insert(termobjs, {term = ruspan, tr = trspan}) end end return com.combine_translit_of_duplicate_termobjs_and_recompose(termobjs) end local argsn = args.n or args.ndef local heads, genitives, plurals, genpls if argsn == "p" then heads = convert_paired_terms_to_termobjs(args.nom_pl_linked, "ishead") genitives = convert_paired_terms_to_termobjs(args.gen_pl) plurals = {{term = "-"}} genpls = {{term = "-"}} else heads = convert_paired_terms_to_termobjs(args.nom_sg_linked, "ishead") genitives = convert_paired_terms_to_termobjs(args.gen_sg) plurals = argsn == "s" and {{term = "-"}} or convert_paired_terms_to_termobjs(args.nom_pl) genpls = argsn == "s" and {{term = "-"}} or convert_paired_terms_to_termobjs(args.gen_pl) end data.heads = heads if com.any_termobjs_have_translit(data.heads) and not args.notrcat then insert(data.categories, "Mục từ có cách phát âm bất quy tắc " .. langname) end do_noun(data, headword_args, argsn == "s", genitives, plurals, genpls, poscat) local notes = headword_args.notes local notes_segments = {} if saw_note then for _, note in ipairs(notes) do insert(notes_segments, " " .. make_qualifier_text(note)) end end local notes_text = concat(notes_segments, "") return require(headword_module).full_headword(data) .. notes_text end -- Implementation of {{ru-noun}} and {{ru-proper noun}}. local function get_noun_pos(pos) return { params = add_common_noun_params({ [2] = {list = "g", disallow_holes = true, required = true, default = "?", type = "genders", flatten = true}, -- genders [3] = {list = "gen", disallow_holes = true}, -- genitive singulars, or - for indeclinable [4] = {list = "pl", disallow_holes = true}, -- nominative plurals [5] = {list = "genpl", disallow_holes = true}, -- genitive plurals ["altyo"] = boolean_param, -- called from {{ru-noun-alt-ё}} or variants ["manual"] = boolean_param, -- allow manual specification of principal parts }), func = function(args, data) data.genders = args[2] local genitives = parse_inflection(data, args, {3, "gen"}) local plurals = parse_inflection(data, args, {4, "pl"}) local genpls = parse_inflection(data, args, {5, "genpl"}) local unknown_stress = false for _, headobj in ipairs(data.heads) do unknown_stress = unknown_stress or headobj.unknown_stress end if not args.altyo and not args.manual and (not genitives[1] or genitives[1].term ~= "-") and mw.title.getCurrentTitle().nsText == "" and not args.unknown_decl and not unknown_stress and not args.unknown_stress and not args.unknown_pattern and not args.unknown_gender and not args.unknown_animacy then error("[[Template:ru-noun]] can now only be used with indeclinable and manually-declined nouns; use [[Template:ru-noun+]] instead") end do_noun(data, args, pos == "Danh từ riêng", genitives, plurals, genpls, pos) end, no_insert_unknown_stress_label = function(args) return true -- we do it ourselves end, } end pos_functions["Danh từ riêng"] = get_noun_pos("Danh từ riêng") pos_functions["Đại từ"] = get_noun_pos("Đại từ") -- Display additional inflection information for a noun. pos_functions["Danh từ"] = get_noun_pos("Danh từ") -- Guts of {{ru-noun}} and {{ru-noun+}}. do_noun = function(data, args, no_plural, genitives, plurals, genitive_plurals, pos) local recognized_genders = { "", -- not allowed when singular; this is needed because some invariant plural-only words have no gender to speak of "m", "f", "n", "mf", "mfbysense", } local recognized_animacies = { "", "?", "an", "in", } local recognized_numbers = { "", "p", } local function insert_if_not_blank(seq, part) if part ~= "" then insert(seq, part) end end local singular_genders = {} -- a set local plural_genders = {} -- a set -- Generate the allowed gender/number/animacy specs. for _, number in ipairs(recognized_numbers) do for _, gender in ipairs(recognized_genders) do for _, animacy in ipairs(recognized_animacies) do local set = number == "" and singular_genders or plural_genders if gender ~= "" or number == "p" then -- disallow blank gender unless plural local gender_number = {} insert_if_not_blank(gender_number, gender) insert_if_not_blank(gender_number, animacy) insert_if_not_blank(gender_number, number) local spec = concat(gender_number, "-") set[spec] = true end end end end for _, gspec in ipairs(data.genders) do local g = gspec.spec if g == "m" then g = "m-?" elseif g == "m-p" then g = "m-?-p" elseif g == "f" and plurals[1] ~= "-" and not no_plural then g = "f-?" elseif g == "f-p" then g = "f-?-p" elseif g == "p" then g = "?-p" end if not singular_genders[g] and not plural_genders[g] and g ~= "?" and g ~= "?-in" and g ~= "?-an" then error("Không rõ giống: " .. g) end gspec.spec = g -- Categorize by number if plural_genders[g] then if g == "?-p" or g == "an-p" or g == "in-p" then insert(data.categories, "Danh từ chỉ có số nhiều với giống chưa rõ " .. langname) end end end -- Add the genitive forms if genitives[1] and genitives[1].term == "-" then insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, "Danh từ không biến cách " .. langname) else insert_inflection(data, genitives, "sinh cách") end local plural_only = not not plural_genders[data.genders[1].spec] -- Add the plural forms. if genitives[1] and genitives[1].term == "-" then if plurals[1] or genitive_plurals[1] then error("Can't specify nominative or genitive plurals of a plural-only term") end elseif plural_genders[data.genders[1].spec] then insert(data.inflections, {label = glossary_link("chỉ có số nhiều")}) elseif plurals[1] and plurals[1].term == "-" then if pos ~= "proper nouns" then insert(data.inflections, {label = glossary_link("không đếm được")}) insert(data.categories, "Danh từ không đếm được " .. langname) end else insert_inflection(data, plurals, "danh cách số nhiều") insert_inflection(data, genitive_plurals, "sinh cách số nhiều") end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments -- come from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are -- given; <<..>> in the label is linked to the glossary). `accel_form` is the accelerator form, or nil. local function handle_infl(field, label, accel_form) parse_and_insert_inflection(data, args, field, label, accel_form) end -- Add the masculine forms; intentionally no accelerator as the masculine forms are lemmas and need manual handling handle_infl("m", "giống đực tương đương") -- Add the feminine forms handle_infl("f", "giống cái tương đương", "f") -- Add the relational adjective forms; intentionally no accelerator, need manual handling handle_infl("adj", "tính từ quan hệ") -- Add the possessive adjective forms; intentionally no accelerator, need manual handling handle_infl("poss", "tính từ sở hữu") -- Add the collective forms; intentionally no accelerator, need manual handling handle_infl("coll", "tập hợp") -- Add the diminutive forms handle_infl("dim", "<<diminutive>>", "giảm nhẹ nghĩa") -- Add the augmentative forms handle_infl("aug", "<<augmentative>>", "tăng nhẹ nghĩa") -- Add the hypocorisms handle_infl("hypocor", "<<hypocorism>>", "hypocorism") -- Add the pejorative forms handle_infl("pej", "<<pejorative>>", "nghĩa xấu") -- Add the pejorative collective forms; intentionally no accelerator, need manual handling handle_infl("pejcoll", "nghĩa xấu (tập hợp)") -- Add the clippings handle_infl("clip", "<<clipping>>", "cắt từ") -- Add the expressive terms handle_infl("expr", "nghĩa <<expressive>>", "nghĩa mở rộng") -- Add the demonyms handle_infl("dem", "<<demonym>>", "tên gọi dân cư") -- Add the female demonyms handle_infl("fdem", "<<demonym>> dành cho nữ", "tên gọi dân cư dành cho nữ") if args.unknown_decl then track("unknown-decl") insert(data.inflections, {label = "không rõ biến cách"}) end local unknown_stress = false for _, headobj in ipairs(data.heads) do unknown_stress = unknown_stress or headobj.unknown_stress end if unknown_stress or args.unknown_stress then track("unknown-stress") insert(data.inflections, {label = "trọng âm không rõ"}) end if args.unknown_pattern then track("unknown-pattern") insert(data.inflections, {label = "không rõ loại trọng âm"}) end if args.unknown_gender then track("unknown-gender") insert(data.inflections, {label = "không rõ giống"}) end if args.unknown_animacy then track("unknown-animacy") insert(data.inflections, {label = "unknown animacy"}) end end local function generate_informal_comp(compobj) local ru, tr = compobj.term, compobj.tr if rfind(ru, "е́?е$") then ru, tr = com.strip_ending(ru, tr, "е") -- Cyrillic е compobj = shallowCopy(compobj) compobj.term, compobj.tr = com.concat_russian_tr(ru, tr, "й", nil) return compobj else return nil end end local function convert_to_po_variant(compobj) local ru, tr = compobj.term, compobj.tr if rfind(ru, "е$") or rfind(ru, "е́?й$") then ru = "[[по" .. ru .. "|(по)]][[" .. ru .. "]]" tr = tr and "(po)" .. tr or nil compobj.term, compobj.tr = ru, tr end end local function convert_to_nai_variant(compobj) local ru, tr = compobj.term, compobj.tr if ru:find("^наи") then -- e.g. наибо́льший, наиме́ньший return end ru = "[[наи" .. ru .. "|(наи)]][[" .. ru .. "]]" tr = tr and "(nai)" .. tr or nil compobj.term, compobj.tr = ru, tr end local allowed_endings = { "ый", "ий", "о́й", --old "ій", -- last two for adverbs "о", "о́", } local velar_to_translit = { ["к"] = "k", ["г"] = "g", ["х"] = "x" } local velar_to_palatal = { ["к"] = "ч", ["г"] = "ж", ["х"] = "ш", ["k"] = "č", ["g"] = "ž", ["x"] = "š" } -- Generate the comparative(s) given the positive(s). `positives` is a list of term objects, with the translit already -- split and decomposed. `compspecobj` is the term object containing the comparative spec (either + or a spec giving an -- adjectival accent pattern, such as +c'). If + is given, the default is +a unless the positive is ending-stressed, in -- which case the default is +b. Return value is a list of term objects. local function generate_comparative(positives, compspecobj) local comps = {} local compspec = compspecobj.term if compspecobj.tr then error("Can't specify manual translit with a '+...' comparative spec") end if not rfind(compspec, "^%+") then error("Compspec '" .. compspec .. "' must begin with + in this function") end if compspec ~= "+" and not rfind(compspec, "^%+[abc]'*$") then error("Compspec '" .. compspec .. "' has an illegal format, should be e.g. + or +c''") end compspec = rsub(compspec, "^%+", "") for _, positive in ipairs(positives) do local ru, tr = positive.term, positive.tr ru = m_links.remove_links(ru) local removed_ending = false for _, allowed_ending in ipairs(allowed_endings) do if rfind(ru, allowed_ending .. "$") then if allowed_ending == "о́й" or allowed_ending == "о́" then if compspec == "a" then error("Short stress pattern a not allowed with ending-stressed adjectives/adverbs") elseif compspec == "" then compspec = "b" end end ru, tr = com.strip_ending(ru, tr, allowed_ending) removed_ending = true break end end if not removed_ending then error("Russian '" .. ru .. "' doesn't end with expected ending") end local comp, comptr if rfind(ru, "[кгх]$") then local stemru, lastruchar = rmatch(ru, "^(.*)(.)$") local stemtr, lasttrchar if tr then stemtr, lasttrchar = rmatch(tr, "^(.*)(.)$") if velar_to_translit[lastruchar] ~= lasttrchar then error("Translit '" .. tr .. "' doesn't end with transliterated equivalent of last char '" .. lastruchar .. "' of Russian '" .. ru .. "'") end end comp, comptr = com.make_ending_stressed(stemru, stemtr) comp = comp .. velar_to_palatal[lastruchar] .. "е" -- Cyrillic е if comptr then comptr = comptr .. velar_to_palatal[lasttrchar] .. "e" -- Latin e end elseif compspec == "" or compspec == "a" then comp = ru .. "ее" -- Cyrillic ее if comptr then comptr = tr .. "ee" -- Latin ee end else -- end-stressed comparative, including pattern a' comp, comptr = com.make_unstressed_once(ru, tr) comp = comp .. "е́е" -- Cyrillic е́е if comptr then comptr = comptr .. "e" .. AC .. "e" -- Latin decomposed ée end end local compobj = shallowCopy(positive) compobj.term = comp compobj.tr = comptr m_headword_utilities.combine_termobj_decorations(compobj, compspecobj) insert(comps, compobj) end return comps end -- Meant to be called from a bot function export.generate_comparative(frame) local iparams = { [1] = {required = true, desc = "so sánh hơn"}, [2] = {default = "+"}, } local iargs = require("Module:parameters").process(frame.args, iparams) local comps = iargs[1] local compspec = iargs[2] comps = rsplit(comps, ",") for i, comp in ipairs(comps) do local ru, tr = com.split_russian_tr(comp) comps[i] = {term = ru, tr = tr} end comps = generate_comparative(comps, {term = compspec}) comps = com.combine_translit_of_duplicate_termobjs_and_recompose(comps) return require(json_module).toJSON(comps) end -- Handle comparative and superlative inflections. If an explicit form is given such as коро́че or красне́е, we add -- it in a "hacked" format that notes that e.g. покоро́че or покрасне́е is a possible variant. We also generate an -- informal form in -ей if possible, e.g. красне́й, with по-hacking applied (but no such variant is possible for коро́че). -- We also handle autogenerating comparatives when specified as + or +b, +c'', etc. (All specifications with an accent -- pattern are equivalent other than +a.) Finally, we allow and handle periphrastic comparatives noted using "peri". local function handle_comparatives_and_superlatives(data, args) local noinf = args.noinf local comps = parse_inflection(data, args, {2, "comp"}) comps = com.split_translit_of_duplicate_termobjs_and_decompose(comps) if comps[1] and comps[1].term == "-" then local nocomp = table.remove(comps, 1) if comps[1] then insert_fixed_inflection(data, "không so sánh được nói chung", nocomp) else insert_fixed_inflection(data, "không so sánh được", nocomp) end track("nocomp") end if comps[1] then local comp_parts = {} local function insert_comp(compobj) local informal if not noinf then informal = generate_informal_comp(compobj) if informal then convert_to_po_variant(informal) end end convert_to_po_variant(compobj) m_headword_utilities.insert_termobj_combining_duplicates(comp_parts, compobj) if informal then m_headword_utilities.insert_termobj_combining_duplicates(comp_parts, informal) end end for _, compobj in ipairs(comps) do local term = compobj.term if term == "peri" then if compobj.tr then error("Can't specify manual translit with 'peri' comparative spec") end for _, positive in ipairs(get_split_decomposed_heads(data)) do local pericomp = shallowCopy(positive) pericomp.term, pericomp.tr = com.concat_russian_tr("[[бо́лее]] ", nil, pericomp.term, pericomp.tr) m_headword_utilities.combine_termobj_decorations(pericomp, compobj) m_headword_utilities.insert_termobj_combining_duplicates(comp_parts, pericomp) end track("pericomp") elseif rfind(term, "^+") then local autocomps = generate_comparative(get_split_decomposed_heads(data), compobj) for _, autocomp in ipairs(autocomps) do insert_comp(autocomp) end else insert_comp(compobj) end end comp_parts = com.combine_translit_of_duplicate_termobjs_and_recompose(comp_parts) for _, compobj in ipairs(comp_parts) do local ru, tr = compobj.term, compobj.tr -- WARNING: This has intimate knowledge of how convert_to_po_variant() works. To avoid this, we could -- maintain the un-po-hacked target in each form in comp_parts, but then we'd have to modify -- com.combine_translit_of_duplicate_termobjs_and_recompose() to preserve the extra target info when -- combining duplicate forms, or use a map from hacked Russian form to target. local un_po_hacked_ru = m_links.remove_links(rsub(ru, "^%[%[.-%]%]", "")) local un_po_hacked_tr = tr and rsub(tr, rsub(tr, "^%(po%)", ""), ", %(po%)", ", ") or nil compobj.target_term = un_po_hacked_ru compobj.target_tr = un_po_hacked_tr end insert_inflection(data, comp_parts, "so sánh hơn") end -- Add the superlatives local sups = parse_inflection(data, args, {3, "sup"}) sups = com.split_translit_of_duplicate_termobjs_and_decompose(sups) if sups[1] then local sup_parts = {} for _, supobj in ipairs(sups) do local term = supobj.term if term == "peri" then if supobj.tr then error("Can't specify manual translit with 'peri' superlative spec") end for _, positive in ipairs(get_split_decomposed_heads(data)) do local perisup = shallowCopy(positive) perisup.term, perisup.tr = com.concat_russian_tr("[[са́мый]] ", nil, perisup.term, perisup.tr) m_headword_utilities.combine_termobj_decorations(perisup, supobj) m_headword_utilities.insert_termobj_combining_duplicates(sup_parts, perisup) end track("perisup") else convert_to_nai_variant(supobj) m_headword_utilities.insert_termobj_combining_duplicates(sup_parts, supobj) end end sup_parts = com.combine_translit_of_duplicate_termobjs_and_recompose(sup_parts) for _, supobj in ipairs(sup_parts) do local ru, tr = supobj.term, supobj.tr -- WARNING: This has intimate knowledge of how convert_to_nai_variant() works. To avoid this, we could -- maintain the un-nai-hacked target in each form in sup_parts, but then we'd have to modify -- com.combine_translit_of_duplicate_termobjs_and_recompose() to preserve the extra target info when -- combining duplicate forms, or use a map from hacked Russian form to target. local un_nai_hacked_ru = m_links.remove_links(rsub(ru, "^%[%[.-%]%]", "")) local un_nai_hacked_tr = tr and rsub(tr, rsub(tr, "^%(nai%)", ""), ", %(nai%)", ", ") or nil supobj.target_term = un_nai_hacked_ru supobj.target_tr = un_nai_hacked_tr end insert_inflection(data, sup_parts, "<<superlative>>", "so sánh nhất") end end -- Display additional inflection information for an adjective pos_functions["Tính từ"] = { params = { ["indecl"] = boolean_param, --indeclinable ["noinf"] = boolean_param, --suppress informal comparatives [2] = list_comp, --comparative(s) [3] = list_sup, --superlative(s) ["adv"] = list_param, --corresponding adverb(s) ["absn"] = list_param, --corresponding abstract noun(s) ["dim"] = list_param, --corresponding diminutive(s) ["aug"] = list_param, --corresponding augmentative(s) ["intens"] = list_param, --corresponding intensive(s) ["attenu"] = list_param, --corresponding attenuative(s) ["pej"] = list_param, --corresponding pejorative(s) ["expr"] = list_param, --corresponding expressive term(s) }, func = function(args, data) if args.indecl then insert(data.inflections, {label = "không biến cách"}) insert(data.categories, "Tính từ không biến cách " .. langname) end handle_comparatives_and_superlatives(data, args) local function parse_and_insert_adj_inflection(field, label, accel_form, accel_pos) parse_and_insert_inflection(data, args, field, label, accel_form, accel_pos) end -- Add the adverbs parse_and_insert_adj_inflection("adv", "phó từ") -- Add the abstract nouns local absn_objs = parse_inflection(data, args, "absn") local saw_plus = false for _, absnobj in ipairs(absn_objs) do if absnobj.term == "+" then saw_plus = true break end end if saw_plus then local normalized_absn_objs = {} absn_objs = com.split_translit_of_duplicate_termobjs_and_decompose(absn_objs) for _, absnobj in ipairs(absn_objs) do if absnobj.term == "+" then if absnobj.tr then error("Can't specify manual translit with '+' default abstract noun spec") end local lemmas = get_split_decomposed_heads(data) for _, lemma in ipairs(lemmas) do local ru, tr = lemma.term, lemma.tr if rfind(ru, "о́?й$") then error("Can't form default abstract noun of ending-stressed adjective " .. ru) end if rfind(ru, "ий$") then ru, tr = com.strip_ending(ru, tr, "ий") elseif rfind(ru, "ій$") then ru, tr = com.strip_ending(ru, tr, "ій") else ru, tr = com.strip_ending(ru, tr, "ый") end ru, tr = com.concat_russian_tr(ru, tr, "ость", nil) local lemma_absn = shallowCopy(lemma) lemma_absn.term, lemma_absn.tr = ru, tr m_headword_utilities.combine_termobj_decorations(lemma_absn, absnobj) m_headword_utilities.insert_termobj_combining_duplicates(normalized_absn_objs, lemma_absn) end else m_headword_utilities.insert_termobj_combining_duplicates(normalized_absn_objs, absnobj) end end normalized_absn_objs = com.combine_translit_of_duplicate_termobjs_and_recompose(normalized_absn_objs) insert_inflection(data, normalized_absn_objs, "abstract noun", "danh từ trừu tượng", "danh từ") else insert_inflection(data, absn_objs, "abstract noun", "danh từ trừu tượng", "danh từ") end -- Add the diminutives parse_and_insert_adj_inflection("dim", "<<diminutive>>", "giảm nhẹ nghĩa") -- Add the augmentatives parse_and_insert_adj_inflection("aug", "<<augmentative>>", "tăng nhẹ nghĩa") -- Add the intensives parse_and_insert_adj_inflection("intens", "<<intensive>>", "intensive") -- Add the attenuatives parse_and_insert_adj_inflection("attenu", "<<attenuative>>", "attenuative") -- Add the pejoratives parse_and_insert_adj_inflection("pej", "<<pejorative>>", "nghia xấu") -- Add the expressive terms parse_and_insert_adj_inflection("expr", "<<expressive>> term", "expressive") end } -- Display additional inflection information for an adverb pos_functions["Phó từ"] = { params = { ["noinf"] = boolean_param, --suppress informal comparatives [2] = list_comp, --comparative(s) [3] = list_sup, --superlative(s) ["adj"] = list_param, --corresponding adjective(s) ["dim"] = list_param, --corresponding diminutive(s) ["aug"] = list_param, --corresponding augmentative(s) ["intens"] = list_param, --corresponding intensive(s) ["attenu"] = list_param, --corresponding attenuative(s) ["pej"] = list_param, --corresponding pejorative(s) ["expr"] = list_param, --corresponding expressive term(s) }, func = function(args, data) local comps = args[2] handle_comparatives_and_superlatives(data, args) local function parse_and_insert_adv_inflection(field, label, accel_form) parse_and_insert_inflection(data, args, field, label, accel_form) end -- Add the adjectives parse_and_insert_adv_inflection("adj", "<<adjective>>", "tính từ") -- Add the diminutives parse_and_insert_adv_inflection("dim", "<<diminutive>>", "giảm nhẹ nghĩa") -- Add the augmentatives parse_and_insert_adv_inflection("aug", "<<augmentative>>", "tăng nhẹ nghĩa") -- Add the intensives parse_and_insert_adv_inflection("intens", "<<intensive>>", "intensive") -- Add the attenuatives parse_and_insert_adv_inflection("attenu", "<<attenuative>>", "attenuative") -- Add the pejoratives parse_and_insert_adv_inflection("pej", "<<pejorative>>", "nghĩa xấu") -- Add the expressive terms parse_and_insert_adv_inflection("expr", "<<expressive>> term", "expressive") end } -- Display additional inflection information for a verb and verbal combining form local function get_verb_pos(pos) return { params = { [2] = {required = true, default = "?"}, --aspect ["impf"] = list_param, -- imperfective(s), ["pf"] = list_param, -- perfective(s), ["vn"] = list_param, -- verbal noun(s), }, func = function(args, data) local cform = pos == "Động từ dạng kết hợp" if cform then insert(data.categories, "Động từ tiếng Nga") end -- Aspect local aspect = args[2] if aspect == "both" then insert(data.genders, "biasp") elseif aspect == "pf" or aspect == "impf" or aspect == "biasp" or aspect == "?" then insert(data.genders, aspect) else error("Invalid Russian verb aspect '" .. aspect .. "', should be 'pf', 'impf', 'both', 'biasp' or '?'") end local function add_verb_forms(field, label, accel_form, accel_pos) parse_and_insert_inflection(data, args, field, label, accel_form, accel_pos) end -- Add the imperfective forms; intentionally no accelerator, need manual handling if args.impf[1] and aspect == "impf" then error("Can't specify imperfective counterparts for an imperfective verb") end add_verb_forms("impf", "chưa hoàn thành") -- Add the perfective forms; intentionally no accelerator, need manual handling if args.pf[1] and aspect == "pf" then error("Can't specify perfective counterparts for a perfective verb") end add_verb_forms("pf", "hoàn thành") -- Add the verbal nouns add_verb_forms("vn", "verbal noun", "vị danh từ", "danh từ") end, } end pos_functions["Động từ"] = get_verb_pos("Động từ") pos_functions["Động từ dạng kết hợp"] = get_verb_pos("Động từ dạng kết hợp") return export 9qh4qo47xsuir6clnehi89i7pchxysg Mô đun:nl-headword 828 284348 2566666 2349799 2026-09-26T11:28:50Z Hiyuune 50834 2566666 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:require when needed") local m_table = require("Module:table") local lang = require("Module:languages").getByCode("nl") local langname = lang:getCanonicalName() local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" -- local romut_module = "Module:romance utilities" local nl_common_module = "Module:nl-common" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local insert = table.insert local function track(page) require("Module:debug").track("nl-headword/" .. page) return true end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Từ loại không được chỉ rõ. Vui lòng chuyển tham số đầu tiên để gọi mô đun.") local params = { ["head"] = list_param, ["id"] = true, -- ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {alias_of = "nolink"}, ["json"] = boolean_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if not heads[1] then heads = {pagename} end else --local romut = require(romut_module) --local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, no_split_apostrophe_words) --if not heads[1] then -- heads = {auto_linked_head} --else for i, head in ipairs(heads) do --if head:find("^~") then -- head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) -- heads[i] = head --end if head == auto_linked_head then track("redundant-head") end end --end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = not user_specified_heads[1], genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "Biến thể hình thái hậu tố" then data.is_suffix = true data.pos_category = "Hậu tố" data.checkredlinks = true local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, "Dạng hậu tố " .. singular_poscat .. " " .. langname) insert(data.inflections, {label = "dạng hậu tố " .. singular_poscat}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end ----------------------------------------------- Utilities -------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval end local function frob_term_with_hash(term, lemma) if term:find("#") then term = replace_hash_with_lemma(term, lemma) end return term end local function parse_term_list_with_modifiers(data, paramname, list) return m_headword_utilities.parse_term_list_with_modifiers { paramname = paramname, forms = list, splitchar = ",", include_mods = {"g"}, frob = function(term) return frob_term_with_hash(term, data.pagename) end, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", include_mods = {"g"}, frob = function(term) return frob_term_with_hash(term, data.pagename) end, label = label, accel = accel and {form = accel} or nil, } end -- Insert the parsed inflections in `infls` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end ----------------------------------------------- Adjectives, Adverbs -------------------------------------------- -- Display additional inflection information for an adjective pos_functions["Tính từ"] = { params = { inv = boolean_param, pred = boolean_param, [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, }, func = function(args, data) local pagename = data.pagename local mode if args.inv then mode = "inv" insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, "Tính từ không biến cách tiếng Hà Lan") elseif args.pred then mode = "pred" insert(data.inflections, {label = "chỉ dùng với [[predicative|vị ngữ]]"}) insert(data.categories, "Tính từ chỉ có vị ngữ tiếng Hà Lan") end if args[1][1] == "-" then insert(data.inflections, {label = "không " .. glossary_link("so sánh được")}) else -- Gather parameters local comparatives = parse_term_list_with_modifiers(data, {"1", "comp"}, args[1]) local superlatives = parse_term_list_with_modifiers(data, {"2", "sup"}, args[2]) -- Generate forms if none were given if not comparatives[1] then if mode == "inv" or mode == "pred" then comparatives = {{term = "peri"}} else comparatives = {{term = require("Module:nl-adjectives").make_comparative(pagename)}} end end if not superlatives[1] then if mode == "inv" or mode == "pred" then superlatives = {{term = "peri"}} else -- Add preferred periphrastic superlative, if necessary if pagename:find("[iï]de$") or pagename:find("[^eio]e$") or pagename:find("s$") or pagename:find("sch$") or pagename:find("x$") or pagename:find("sd$") or pagename:find("st$") or pagename:find("scht$") or pagename:find("sk$") then superlatives = {{term = "peri"}} end insert(superlatives, {term = require("Module:nl-adjectives").make_superlative(pagename)}) end end -- Replace "peri" with phrase for _, val in ipairs(comparatives) do if val.term == "peri" then val.term = "[[meer]] " .. pagename end end for _, val in ipairs(superlatives) do if val.term == "peri" then val.term = "[[meest]] " .. pagename end end insert_inflection(data, comparatives, "so sánh hơn") insert_inflection(data, superlatives, "so sánh nhất") end end } -- Display additional inflection information for an adverb pos_functions["Phó từ"] = { params = { [1] = {list = "comp", disallow_holes = true}, [2] = {list = "sup", disallow_holes = true}, }, func = function(args, data) local pagename = data.pagename if args[1][1] then -- Gather parameters local comparatives = parse_term_list_with_modifiers(data, {"1", "comp"}, args[1]) local superlatives = parse_term_list_with_modifiers(data, {"2", "sup"}, args[2]) if not superlatives[1] then superlatives = {{term = pagename .. "st"}} end insert_inflection(data, comparatives, "so sánh hơn") insert_inflection(data, superlatives, "so sánh nhất") end end } ----------------------------------------------- Nouns -------------------------------------------- local allowed_genders = m_table.listToSet { "c", "p", "m", "f", "n", "?", "mf", "mfequiv", "mfbysense" } -- Display information for a noun's gender -- This is separate so that it can also be used for proper nouns local function noun_gender(args, data) -- Validate genders. local saw_f, saw_m, saw_f_without_m, saw_m_without_f, saw_p, saw_non_p for _, gspec in ipairs(args[1]) do local g = gspec.spec if not allowed_genders[g] then error("Không rõ giống " .. langname .. ": " .. g) end if g == "f" then saw_f = true if not saw_m then saw_f_without_m = true end end if g == "m" then saw_m = true if not saw_f then saw_m_without_f = true end end if g == "p" then saw_p = true elseif g ~= "?" then saw_non_p = true end end data.genders = args[1] -- Most nouns that are listed as f+m should really have only f. if saw_f_without_m and saw_m then insert(data.categories, "Danh từ với giống cái+đực " .. langname) end -- Some of these nouns may be like m+f nouns but some are legitimately either masculine or feminine. if saw_m_without_f and saw_f then insert(data.categories, "Danh từ với giống đực+cái " .. langname) end return saw_p, saw_non_p end local function generate_plurals(pagename) local m_common = require(nl_common_module) local generated = {} generated["-s"] = pagename .. "s" generated["-'s"] = pagename .. "'s" generated["-'en"] = pagename .. "'en" local stem_FF = m_common.add_e(pagename, false, false) local stem_TF = m_common.add_e(pagename, true, false) local stem_FT = m_common.add_e(pagename, false, true) generated["-es"] = stem_FF .. "s" generated["-@es"] = stem_TF .. "s" generated["-:es"] = stem_FT .. "s" generated["-en"] = stem_FF .. "n" generated["-@en"] = stem_TF .. "n" generated["-:en"] = stem_FT .. "n" generated["-eren"] = m_common.add_e(pagename .. (pagename:find("n$") and "d" or ""), false, false) .. "ren" generated["-:eren"] = stem_FT .. "ren" if pagename:find("f$") then local stem = pagename:gsub("f$", "v") local stem_FF = m_common.add_e(stem, false, false) local stem_TF = m_common.add_e(stem, true, false) local stem_FT = m_common.add_e(stem, false, true) generated["-ves"] = stem_FF .. "s" generated["-@ves"] = stem_TF .. "s" generated["-:ves"] = stem_FT .. "s" generated["-ven"] = stem_FF .. "n" generated["-@ven"] = stem_TF .. "n" generated["-:ven"] = stem_FT .. "n" generated["-veren"] = stem_FF .. "ren" generated["-:veren"] = stem_FT .. "ren" elseif pagename:find("s$") then local stem = pagename:gsub("s$", "z") local stem_FF = m_common.add_e(stem, false, false) local stem_TF = m_common.add_e(stem, true, false) local stem_FT = m_common.add_e(stem, false, true) generated["-zes"] = stem_FF .. "s" generated["-@zes"] = stem_TF .. "s" generated["-:zes"] = stem_FT .. "s" generated["-zen"] = stem_FF .. "n" generated["-@zen"] = stem_TF .. "n" generated["-:zen"] = stem_FT .. "n" generated["-zeren"] = stem_FF .. "ren" generated["-:zeren"] = stem_FT .. "ren" elseif pagename:find("heid$") then generated["-heden"] = pagename:gsub("heid$", "heden") end return generated end local function generate_diminutive(pagename, dim) local m_common = require(nl_common_module) if dim == "+" then dim = m_common.default_dim(pagename) elseif dim == "++" then dim = m_common.default_dim(pagename, "final multisyllable stress") elseif dim == "++/+" then dim = m_common.default_dim(pagename, false, "modifier final multisyllable stress") elseif dim == "++/++" then dim = m_common.default_dim(pagename, "final multisyllable stress", "modifier final multisyllable stress") elseif dim == "+first" then dim = m_common.default_dim(pagename, false, false, "first only") elseif dim == "++first" then dim = m_common.default_dim(pagename, "final multisyllable stress", false, "first only") elseif dim:sub(1, 1) == "-" then dim = pagename .. dim:sub(2) end return dim end pos_functions["Danh từ riêng"] = { params = { [1] = {list = "g", type = "genders", flatten = true, default = "?", disallow_holes = true}, [2] = {list = "pl", disallow_holes = true}, adj = list_param, mdem = list_param, fdem = list_param, }, func = function(args, data) local saw_p, saw_non_p = noun_gender(args, data) local plurals = parse_term_list_with_modifiers(data, {"2", "pl"}, args[2]) local adjectives = parse_term_list_with_modifiers(data, "adj", args["adj"]) local mdems = parse_term_list_with_modifiers(data, "mdem", args["mdem"]) local fdems = parse_term_list_with_modifiers(data, "fdem", args["fdem"]) local nm = #mdems local nf = #fdems local demonyms = {label = "demonym"} -- plural for certain words like [[Amerika]] insert_inflection(data, plurals, "số nhiều", "p") --adjective for toponyms insert_inflection(data, adjectives, "tính từ") --demonyms for toponyms if nm + nf > 0 then for i, m in ipairs(mdems) do if not m.genders then m.genders = {"m"} end demonyms[i] = m end for i, f in ipairs(fdems) do if not f.genders then f.genders = {"f"} end demonyms[i + nm] = f end insert(data.inflections, demonyms) end end } local function process_plurals(data, plurals, plural_only) local pagename = data.pagename if plural_only then if plurals[1] then error("Can't specify plurals of plurale tantum noun") end insert(data.inflections, {label = glossary_link("chỉ có số nhiều")}) elseif plurals[1] and plurals[1].term == "-" then insert(data.inflections, {label = glossary_link("không đếm được")}) insert(data.categories, "Danh từ không đếm được " .. langname) else local generated = generate_plurals(pagename) -- Process the plural forms for i, pobj in ipairs(plurals) do local p = pobj.term -- Is this a shortcut form? if p:sub(1,1) == "-" then if not generated[p] then error("The shortcut plural " .. p .. " could not be generated.") end if p:sub(-2) == "es" then insert(data.categories, "Danh từ với số nhiều kết thúc bằng -es tiếng Hà Lan") elseif p:sub(-1) == "s" then insert(data.categories, "Danh từ với số nhiều kết thúc bằng -s tiếng Hà Lan") elseif p:sub(-4) == "eren" then insert(data.categories, "Danh từ với số nhiều kết thúc bằng -eren tiếng Hà Lan") else insert(data.categories, "Danh từ với số nhiều kết thúc bằng -en tiếng Hà Lan") end if p:sub(2,2) == ":" then insert(data.categories, "Danh từ với số nhiều là nguyên âm kéo dài tiếng Hà Lan") end p = generated[p] -- Not a shortcut form, but the plural form specified directly. else for _, g in pairs(generated) do if g == p then track("plural-matches-generated-form") break end end if not pagename:find("[ -]") then if p == pagename then insert(data.categories, "Danh từ không biến cách tiếng Hà Lan") elseif p == pagename .. "den" or p == pagename:gsub("ee$", "eden") or p == pagename .. "des" or p == pagename:gsub("ee$", "edes") then insert(data.categories, "Danh từ với số nhiều kết thúc bằng -den tiếng Hà Lan") elseif p == pagename:gsub("([ao])$", "%1%1ien") or p == pagename:gsub("oe$", "oeien") then insert(data.categories, "Danh từ với số nhiều là nguyên âm đôi tiếng Hà Lan") elseif p == pagename:gsub("y$", "ies") then insert(data.categories, "Danh từ với số nhiều là tiếng Anh tiếng Hà Lan") elseif p == pagename:gsub("a$", "ae") or p == pagename:gsub("[ei]x$", "ices") or p == pagename:gsub("is$", "es") or p == pagename:gsub("men$", "mina") or p == pagename:gsub("ns$", "ntia") or p == pagename:gsub("o$", "ones") or p == pagename:gsub("o$", "onen") or p == pagename:gsub("s$", "tes") or p == pagename:gsub("us$", "era") or p == mw.ustring.gsub(pagename, "[uü]s$", "i") or p == mw.ustring.gsub(pagename, "[uü]m$", "a") or p == pagename:gsub("x$", "ges") then insert(data.categories, "Danh từ với số nhiều là tiếng Latinh tiếng Hà Lan") elseif p == pagename:gsub("os$", "oi") or p == mw.ustring.gsub(pagename, "[oö]n$", "a") or p == pagename:gsub("a$", "ata") then insert(data.categories, "Danh từ với số nhiều là tiếng Hy Lạp tiếng Hà Lan") else insert(data.categories, "Danh từ bất quy tắc tiếng Hà Lan") end end end pobj.term = p end -- Add the plural forms m_headword_utilities.insert_inflection { headdata = data, terms = plurals, label = "số nhiều", accel = {form = "p"}, request = true, } end end local function do_noun_ancillary_inflections(data, args) local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end parse_and_insert_noun_inflection("f", "giống cái") parse_and_insert_noun_inflection("m", "giống đực") end -- Display additional inflection information for a noun pos_functions["Danh từ"] = { params = { [1] = {list = "g", type = "genders", flatten = true, default = "?", disallow_holes = true}, [2] = {list = "pl", disallow_holes = true}, [3] = {list = "dim", disallow_holes = true}, ["f"] = list_param, ["m"] = list_param, }, func = function(args, data) local pagename = data.pagename local saw_p, saw_non_p = noun_gender(args, data) local plurals = parse_term_list_with_modifiers(data, {"2", "pl"}, args[2]) local diminutives = parse_term_list_with_modifiers(data, {"3", "dim"}, args[3]) process_plurals(data, plurals, saw_p and not saw_non_p) if diminutives[1] and diminutives[1].term == "-" then -- do nothing else -- Process the diminutive forms for _, dimobj in ipairs(diminutives) do dimobj.term = generate_diminutive(pagename, dimobj.term) if not dimobj.genders then dimobj.genders = {"n"} end end end -- Add the diminutive forms m_headword_utilities.insert_inflection { headdata = data, terms = diminutives, label = "giảm nhẹ nghĩa", accel = {form = "diminutive"}, request = true, } do_noun_ancillary_inflections(data, args) end } -- Display additional inflection information for a diminutive noun pos_functions["Danh từ giảm nhẹ"] = { params = { [1] = {list = "pl", disallow_holes = true}, }, func = function(args, data) local plurals = parse_term_list_with_modifiers(data, {"1", "pl"}, args[1]) if plurals[1] and plurals[1].term == "p" then if m_headword_utilities.termobj_has_decorations(plurals[1]) then error("Can't specify qualifiers or labels with 'p' for plural-only diminutive noun") elseif plurals[2] then error("Can't specify plurals of plurale tantum noun") end data.genders = {"p"} process_plurals(data, {}, "chỉ có số nhiều") else data.genders = {"n"} if not plurals[1] then plurals = {{term = "-s"}} end process_plurals(data, plurals) end end, redlink_pos = "Danh từ", } -- Display additional inflection information for diminutiva tantum nouns ({{nl-noun-dim-tant}}). pos_functions["Danh từ giảm nhẹ nghĩa chỉ có số nhiều"] = { params = { [1] = {list = "pl", disallow_holes = true}, ["f"] = {list = true}, ["m"] = {list = true}, }, func = function(args, data) insert(data.categories, "Danh từ giảm nhẹ nghĩa chỉ có số nhiều") data.genders = {"n"} local plurals = parse_term_list_with_modifiers(data, {"1", "pl"}, args[1]) if not plurals[1] then plurals = {{term = "-s"}} end process_plurals(data, plurals) do_noun_ancillary_inflections(data, args) end, pos_category = "Danh từ", } pos_functions["Phân từ quá khứ"] = { params = { [1] = {}, }, func = function(args, data) if args[1] == "-" then insert(data.inflections, {label = "không có tính từ"}) insert(data.categories, "Phân từ quá khứ không có tính từ tiếng Hà Lan") end end, redlink_pos = "Phân từ", } ----------------------------------------------- Verbs -------------------------------------------- pos_functions["Động từ"] = { params = { [1] = {}, }, func = function(args, data) if args[1] == "-" then insert(data.inflections, {label = "không biến tố"}) insert(data.categories, "Động từ không biến tố tiếng Hà Lan") end end } return export s148kvainfy3d11vdrj81c3k3tezidl Mô đun:mn-headword 828 291479 2566639 2512480 2026-09-26T10:25:09Z Hiyuune 50834 2566639 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local headword_utilities_module = "Module:headword utilities" local languages_module = "Module:languages" local mn = require("Module:mn-common") local lang = require(languages_module).getByCode("mn") --[==[ Main entry point. Takes these params: ; {{para|1}} : The part of speech, pluralized; omit for {{tl|mn-head}}. ; {{para|def}} : Optional default value for the template page. ]==] function export.show(frame) return require(headword_utilities_module).process_headword { lang = lang, frame = frame, pos_functions = pos_functions, include_tr = true, include_sc = true, force_cat = force_cat, infls = { {function(data) return data.process_props.generic_pos_template and 2 or 1 end, docparam = "{{para|2}} for {{tl|mn-head}}, {{para|1}} otherwise", label = function(_data, vals) return "chính tả " .. lang:findBestScript(vals[1].term):getCanonicalName(lang) end, doclabel = "other-script spellings", process_after_parse = function(data, vals) for _, valobj in ipairs(vals) do local other_sc = lang:findBestScript(valobj.term) if data.sc:getCode() == other_sc:getCode() then error(("The headword and alternative spelling %s are both in %s but should be in different scripts"):format( valobj.term, data.sc:getCanonicalName(lang) )) end end return vals end, insert_inflection_props = { enable_auto_translit = true, }, addldoc = "These consist of spellings in Mongolian script if the pagename is Cyrillic, and " .. "vice-versa. An error is thrown if the other-script spelling is in the same script as " .. "the pagename.", }, {cat = function(data) if not data.pagename:find("^%-") and not data.pagename:find(" ") and data.sc:getCode() == "Cyrl" then -- FIXME, should be done by {{mn-IPA}} return "Từ " .. #mn.syllables(data.pagename) .. " âm tiết" end end, doc = "If the pagename is not a suffix, does not have a space in it and is in Cyrillic, a category " .. "such as {{catlink|Mongolian 3-syllable words}} (depending on the number of syllables in the " .. "word) will be added. (FIXME, this should be done by {{tl|mn-IPA}} instead.)", }, }, } end local valid_declensions = { r = "thường", n = "ẩn n", g = "ẩn g", m = "hỗn hợp", } pos_functions["Danh từ"] = { infls = { {"dec", doclabel = "declension", validate = valid_declensions, fixed_label = function(_data, val) return "Biến cách " .. valid_declensions[val.term] end, cat = function(_data, val) return "Danh từ biến cách " .. valid_declensions[val.term] end, }, {"pl", label = "xác định số nhiều"}, }, } pos_functions["Danh từ riêng"] = pos_functions["Danh từ"] pos_functions["Động từ"] = { infls = { {"caus", label = "thể sai khiến"}, {"pass", label = "thể bị động"}, }, } return export tanqtoqxmv4seuzst8l2u3a09go6qbj Bản mẫu:mn-noun 10 291480 2566647 2318535 2026-09-26T10:41:00Z Hiyuune 50834 2566647 wikitext text/x-wiki {{#invoke:mn-headword|show|Danh từ}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> bxv6mls7ok3xcez2golt7tf3io5ub9j Bản mẫu:mn-adjective 10 292943 2566640 2318545 2026-09-26T10:25:51Z Hiyuune 50834 Hiyuune đã đổi [[Bản mẫu:mn-adj]] thành [[Bản mẫu:mn-adjective]] 2318545 wikitext text/x-wiki {{#invoke:mn-headword|basic|Tính từ}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> nnyiw8sv73xqouv7xo67s1akceya8q1 2566643 2566640 2026-09-26T10:27:02Z Hiyuune 50834 2566643 wikitext text/x-wiki {{#invoke:mn-headword|show|Tính từ}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> t2iisxtdnzhwrydioqmi531v9q8iorf биринчи 0 293730 2566617 2135937 2026-09-26T08:57:50Z Kelly zhrm 58416 2566617 wikitext text/x-wiki =={{langname|kum}}== ==={{ĐM|numeral}}=== {{head|kum|Số từ|cat2=Số thứ tự}} # [[thứ|Thứ]] [[nhất]]. =={{langname|ky}}== {{number box|ky|1}} ==={{ĐM|etym}}=== Về mặt hình thái học {{suffix|ky|бир|ынчы|alt2=инчи}}. Cùng gốc với {{cog|az|birinci}}, {{cog|kk|бірінші}}, {{cog|alt|биринчи}}, {{cog|kjh|пірінӌі}}, {{cog|atv|пиринчи}} / {{m|atv|биринджи}}, {{cog|tr|birinci}}, {{cog|tk|birinji}}, {{cog|uz|birinchi}}, {{cog|sah|биирис}}. ==={{ĐM|pron}}=== * {{IPA4|ky|/birinˈt͡ʃi/|[b̥ɪɾɪɲt͡ɕʰɪ́]}} * {{audio|ky|LL-Q9255 (kir)-Almanbet Janışev-биринчи.wav}} * {{hyphenation|ky|би|рин|чи}} ==={{ĐM|numeral}}=== {{head|ky|Số từ}} # {{cln|ky|Số thứ tự}} [[thứ|Thứ]] [[nhất]]. =={{langname|alt}}== {{ordinalbox|alt|0|1|2||экинчи|card=бир|coll=бирӱ}} ==={{ĐM|etym}}=== Về mặt hình thái học {{suffix|alt|бир|инчи}}. Cùng gốc với {{cog|az|birinci}}, {{cog|tr|birinci}}, {{cog|tk|birinji}}, {{cog|kk|бірінші}}, {{cog|ky|биринчи}}, {{cog|ba|беренсе}}, {{cog|tt|беренче}}, {{cog|kum|биринчи}}, {{cog|crh|birinci}}, {{cog|uz|birinchi}}, {{cog|kjh|пірінӌі}}, {{cog|cjs|пиринчи|tr=pirinči}}, {{cog|atv|пиринчи}}, {{cog|ybe|perinč}}, {{cog|sah|биирис}}. ==={{ĐM|numeral}}=== {{head|alt|Số từ}} # [[thứ|Thứ]] [[nhất]]. ===={{ĐM|syn}}==== * {{l|alt|баштапкы}} inwpmpkbiqxc3heqis696bmzrrue13p экинчи 0 293731 2566615 2135936 2026-09-26T08:51:10Z Kelly zhrm 58416 2566615 wikitext text/x-wiki =={{langname|kum}}== ==={{ĐM|numeral}}=== {{head|kum|Số từ|cat2=Số thứ tự}} # [[thứ hai|Thứ hai]]. =={{langname|ky}}== {{number box|ky|2}} ==={{ĐM|etym}}=== Từ {{der|ky|otk|اكنج|tr=ikinç}}, từ {{suffix|ky|эки|ынчы|alt2=нчи}}. Các từ cùng gốc bao gồm {{cog|tr|ikinci}}, {{cog|kk|екінші}}, {{cog|tk|ikinji}} và {{cog|az|ikinci}}. ==={{ĐM|pron}}=== * {{ky-IPA|экинˈчи}} * {{audio|ky|LL-Q9255 (kir)-Almanbet Janışev-экинчи.wav}} * {{hyphenation|ky|э|кин|чи}} ==={{ĐM|numeral}}=== {{head|ky|Số từ}} # {{cln|ky|Số thứ tự}} [[thứ hai|Thứ hai]]. =={{langname|alt}}== {{ordinalbox|alt|1|2|3|биринчи|ӱчинчи|card=эки|coll=экӱ}} ==={{ĐM|etym}}=== Từ {{der|alt|otk|اكنج|tr=ikinç}}, từ {{suffix|alt|эки|нчи}}. Các từ cùng gốc bao gồm {{cog|az|ikinci}}, {{cog|kk|екінші}}, {{cog|ky|экинчи}}, {{cog|ba|икенсе}}, {{cog|tt|икенче}}, {{cog|crh|ekinci}}, {{cog|kum|экинчи}}, {{cog|uz|ikkinchi}}, {{cog|ug|ئىككىنچى}}, {{cog|tr|ikinci}}, {{cog|tk|ikinji}}, {{cog|kjh|ікінӌі}}, {{cog|cjs|ийгинчи|tr=iyginči}}, {{cog|atv|экинжи}} / {{m|atv|экинджи}} / {{m|atv|экиндже}} / {{m|atv|экинчи}}, {{cog|ybe|iškenč}}, {{cog|sah|иккис}},.v.v. ==={{ĐM|numeral}}=== {{head|alt|Số từ}} # {{cln|alt|Số thứ tự}} [[thứ hai|Thứ hai]]. 5nlck992ety3donklw4mtefbofsmuxn төртүнчү 0 293733 2566611 2134233 2026-09-26T08:46:06Z Kelly zhrm 58416 2566611 wikitext text/x-wiki =={{langname|ky}}== {{number box|ky|4}} ==={{ĐM|etym}}=== Từ {{suffix|ky|төрт|ынчы|alt2=үнчү}}. Các từ cùng gốc bao gồm {{cog|tr|dördüncü}}, {{cog|kk|төртінші}}, {{cog|tk|dördünji}} và {{cog|az|dördüncü}}. ==={{ĐM|pron}}=== * {{ky-IPA|төртүнˈчү}} * {{audio|ky|LL-Q9255 (kir)-Almanbet Janışev-төртүнчү.wav}} * {{hyphenation|ky|төр|түн|чү}} ==={{ĐM|numeral}}=== {{head|ky|Số từ}} # {{cln|ky|Số thứ tự}} [[thứ tư|Thứ tư]]. 9k468v15anzwh0ndwzrd4y0v72ww4k8 бешинчи 0 293734 2566609 2566117 2026-09-26T08:44:33Z Kelly zhrm 58416 /* {{ĐM|etym}} */ 2566609 wikitext text/x-wiki =={{langname|kum}}== ==={{ĐM|numeral}}=== {{head|kum|Số từ|cat2=Số thứ tự}} # [[thứ năm|Thứ năm]]. =={{langname|ky}}== {{number box|ky|5}} ==={{ĐM|etym}}=== Từ {{suffix|ky|беш|ынчы|alt2=инчи}}. Các từ cùng gốc bao gồm {{cog|tr|beşinci}}, {{cog|kk|бесінші}}, {{cog|tk|bäşinji}} và {{cog|az|beşinci}}. ==={{ĐM|pron}}=== * {{IPA4|ky|/beʃinˈt͡ʃi/}} * {{audio|ky|LL-Q9255 (kir)-Almanbet Janışev-бешинчи.wav}} * {{hyphenation|ky|бе|шин|чи}} ==={{ĐM|numeral}}=== {{head|ky|Số tự}} # {{cln|ky|Số thứ tự}} [[thứ năm|Thứ năm]]. g77dor3krlod7zm6s3u54j70c283ise Bản mẫu:mn-verb 10 295750 2566644 2318546 2026-09-26T10:27:26Z Hiyuune 50834 2566644 wikitext text/x-wiki {{#invoke:mn-headword|show|Động từ}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> 9je48aqtw5ipwebnzr1n3auvnlsgh8j banyangwe 0 301264 2566540 2149947 2026-09-25T16:07:36Z WhoAlone 40420 2566540 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[bàɲāŋwé]}} {{-noun-}} {{head|zns|Danh từ}} # [[chó rừng]] ''[[w:Canis adustus|Canis adustus]]''. {{-ref-}} * Blench, Roger. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Họ Chó}} 3hicac33y8lnfnq92fp2aytc8u0fe0l ɓakwalwan 0 301334 2566429 2150077 2026-09-25T15:34:27Z WhoAlone 40420 2566429 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓàkʷálwàn]}} {{-noun-}} {{head|zns|Danh từ}} # [[dạ dày]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Bộ phận cơ thể}} 426x4helerulp0cgd788zi46sa4dohp ɓerwandɨr 0 301345 2566435 2150094 2026-09-25T15:36:33Z WhoAlone 40420 2566435 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓérwàndɨ̀r]}} {{-noun-}} {{head|zns|Danh từ}} # Một loại [[cây]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Cây}} b78olxls7zequrf2ob6zc0xib29jgx1 ɓoko 0 301348 2566448 2150097 2026-09-25T15:39:13Z WhoAlone 40420 2566448 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓókò]}} {{-noun-}} {{head|zns|Danh từ}} # cây [[bao báp]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Cây}} 5yodlbts2kcfomgxaajknbjbkao1vuv ɓonggutər 0 301371 2566447 2150143 2026-09-25T15:38:14Z WhoAlone 40420 2566447 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓòŋɡútə̄r]}} {{-noun-}} {{head|zns|Danh từ}} # Một loài gặm nhấm, danh pháp ''Thryonomys swinderianus''. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Bộ Gặm nhấm}} ainzq3vt6007fxv3bu6to6d0uwrr6h7 ɓəmbak na 0 301372 2566436 2150144 2026-09-25T15:36:41Z WhoAlone 40420 2566436 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓəmbàk na]}} {{-noun-}} {{head|zns|Danh từ}} # [[bò]] [[đực]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Gia súc}} 88rqgr9xgfrvkjwde8krdx3f7wtkhws ɓamang gwak 0 301392 2566430 2150177 2026-09-25T15:36:21Z WhoAlone 40420 2566430 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɓàmáŋ ɡʷâk]}} {{-verb-}} {{head|zns|Động từ}} # [[săn]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Săn bắn}} d7jv7ezfbhx9i8v8kt5xjbhmksaz29i dabra 0 301394 2566451 2150179 2026-09-25T15:39:35Z WhoAlone 40420 2566451 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[dàbrà]}} {{-noun-}} {{head|zns|Danh từ}} # [[cây]] ''Vitellaria paradoxa''. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Cây}} 8ymt24ygobmsvlz6a76dagcxywdv94x dangkali 0 301398 2566452 2212108 2026-09-25T15:40:35Z WhoAlone 40420 2566452 wikitext text/x-wiki == {{langname|zns}} == === {{ĐM|pron}} === * {{IPA4|zns|[dàŋkálì]}} === {{ĐM|noun}} === {{head|zns|Danh từ}} # [[khoai lang|Khoai lang]]. === {{ĐM|ref}} === * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Rau}} cmn8xga7nvy152ctwinw375cnchc98v denggi 0 301416 2566453 2150216 2026-09-25T15:40:46Z WhoAlone 40420 2566453 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[de᷄ŋɡì]}} {{-noun-}} {{head|zns|Danh từ}} # mối [[quan hệ]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Xã hội}} svggb1zaqowgz2iaqobh9vhw5pji6iv doki balyang 0 301418 2566464 2150220 2026-09-25T15:44:21Z WhoAlone 40420 2566464 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[dókī bàlʲāŋ]}} {{-noun-}} {{head|zns|Danh từ}} # [[bọ ngựa]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Lớp Côn trùng}} nhic0h3juephcaiuxpl1ucob9w3a44d dogo 0 301419 2566462 2150222 2026-09-25T15:43:31Z WhoAlone 40420 2566462 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[dòɡò]}} {{-noun-}} {{head|zns|Danh từ}} # [[chiếu]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Hàng gia dụng}} c7wv9quj4cry0uv5hwvqppo8qx0wzjk duunsa 0 301424 2566470 2150229 2026-09-25T15:44:56Z WhoAlone 40420 2566470 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[dùːnsā]}} {{-adj-}} {{head|zns|Tính từ}} # [[đen]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Màu sắc}} dx7wbzelg5bxn97zuqsyuv2xz2svtj3 fehu 0 301460 2566513 2150315 2026-09-25T16:03:18Z WhoAlone 40420 2566513 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[fèhû]}} {{-noun-}} {{head|zns|Danh từ}} # [[tiếng]] [[huýt sáo]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Âm thanh}} dzrmf3n9v1qu227b5dud7leek5tunk4 fírì 0 301461 2566512 2150316 2026-09-25T16:03:09Z WhoAlone 40420 2566512 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[fírì]}} {{-noun-}} {{head|zns|Danh từ}} # [[muỗi]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Lớp Côn trùng}} ax8o8x9ch2hflx8l9taqvy1q5853d5o fìrí 0 301462 2566511 2150317 2026-09-25T16:03:01Z WhoAlone 40420 2566511 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[fìrí]}} {{-noun-}} {{head|zns|Danh từ}} # [[bánh]] [[đậu]] châu đã qua sử dụng. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Thực phẩm}} 912tuh938yaekifg2pm1a81nosdpjzs gajimare 0 301465 2566509 2150321 2026-09-25T16:02:35Z WhoAlone 40420 2566509 wikitext text/x-wiki {{-hau-}} {{-pron-}} * {{IPA4|ha|[ɡàːd͡ʒìmàːɽéː]}} * {{hyph|ha|ga·ji·ma·re}} * Âm thanh: [[File:Gajimare 01.ogg]] {{-noun-}} {{head|ha|Danh từ}} # [[mây]]. {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɡàd͡ʒìmárè]}} {{-noun-}} {{head|zns|Danh từ}} # [[mây]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Khí quyển}} qoumaeglz6u27ypoxj1okgk8jwcmz3x gwel tuk 0 301488 2566459 2150357 2026-09-25T15:42:48Z WhoAlone 40420 2566459 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɡʷèl tūk]}} {{-noun-}} {{head|zns|Danh từ}} # [[bụng]], [[dạ dày]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Bộ phận cơ thể}} pjrrwxw5d7564t53b9tz33gr6uk131a gwoninggang 0 301534 2566460 2150483 2026-09-25T15:42:56Z WhoAlone 40420 2566460 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[ɡʷónīŋɡàŋ]}} {{-noun-}} {{head|zns|Danh từ}} # Hai [[ngày]] sau [[ngày kia]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Thời gian}} 854yefab3n9q31bka4o8vp919xv517n kaamburum 0 301551 2566515 2150505 2026-09-25T16:03:51Z WhoAlone 40420 2566515 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[kāːmbúrù]}} {{-noun-}} {{head|zns|Danh từ}} # [[đầu gối]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Bộ phận cơ thể}} 71llypj07alg5ue7rfwyl3uf2qavhwa kadɨrɨm 0 301556 2566517 2150510 2026-09-25T16:04:16Z WhoAlone 40420 2566517 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[kádɨ̀rɨ̌m]}} {{-noun-}} {{head|zns|Danh từ}} # [[thằn lằn]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{C|zns|Lớp Bò sát}} a07m8avi731hwr2bwexswqxjbzd02xl kalesɨm 0 301560 2566516 2150517 2026-09-25T16:04:07Z WhoAlone 40420 2566516 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[kálèsɨ̄m]}} {{-noun-}} {{head|zns|Danh từ}} # [[kiến]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Lớp Côn trùng}} 9lejr05o08uucmrjkl2y3z5xef0n51q kambong 0 301564 2566518 2150524 2026-09-25T16:04:28Z WhoAlone 40420 2566518 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[kāmbôŋ]}} {{-noun-}} {{head|zns|Danh từ}} # [[khoai môn sọ]]. {{-ref-}} * Blench, Roger, Bulkaam, Michael. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Rau}} 2ckks6upxapy5cusmbcaieqk6cd9z1w kɨpgɨkwal 0 301645 2566520 2212109 2026-09-25T16:04:59Z WhoAlone 40420 2566520 wikitext text/x-wiki == {{langname|zns}} == === {{ĐM|pron}} === * {{IPA4|zns|[kɨ́pɡɨ̀kʷàl]}} === {{ĐM|noun}} === {{head|zns|Danh từ}} # [[chất|Chất]] [[hỗn hợp]], [[hợp chất]]. === {{ĐM|ref}} === * Blench, Roger. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Hóa học}} ajna7urhnt67po5s76ag7bwox6u8hox kɨrɨmshirɨm 0 301650 2566521 2150675 2026-09-25T16:05:08Z WhoAlone 40420 2566521 wikitext text/x-wiki {{-zns-}} {{-pron-}} * {{IPA4|zns|[kɨ́rɨ́mʃìrɨ̀m]}} {{-noun-}} {{head|zns|Danh từ}} # [[từ ngữ]]. {{-ref-}} * Blench, Roger. 2020. ''An introduction to Mantsi, a South Bauchi language of Central Nigeria''. {{c|zns|Ngữ pháp}} 78sjq4ikykj0jmopt2mrerzwxos32fd Mô đun:zlw-lch-headword 828 302199 2566657 2363147 2026-09-26T11:19:50Z Hiyuune 50834 2566657 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local concat = table.concat local insert = table.insert local remove = table.remove local rfind = mw.ustring.find local unpack = unpack or table.unpack -- Lua 5.2 compatibility local langs_supported = { ["pl"] = { peri_comp = "bardziej", sup = "naj", -- participle endings act = {"ąc[yae]$"}, -- biegnący pass = {"[ntł][yae]$"}, -- otwarty, uwielbiany, legły cont_adv = {"ąc$"}, ant_adv = {"szy$"}, }, ["csb"] = { peri_comp = "barżi", sup = "nô", -- participle endings act = {"ący$"}, pass = {"[ao]ny$", "ty$", "łi$"}, cont_adv = {"ōnc$"}, ant_adv = {"[wł]szë$"}, }, ["szl"] = { peri_comp = "bardzij", sup = "noj", -- participle endings act = {"ōncy$"}, pass = {"[aō]ny$", "[tł]y$"}, cont_adv = {"ąc$"}, ant_adv = false, }, ["zlw-opl"] = { peri_comp = "barziej", sup = false, -- participle endings act = {"ąc[yae]$"}, -- biegnący pass = {"[ntł][yae]$"}, -- otwarty, uwielbiany, legły cont_adv = {"ąc$"}, ant_adv = {"szy$"}, }, ["pox"] = { peri_comp = false, sup = false, -- participle endings act = false, pass = false, cont_adv = false, ant_adv = false, has_dual = true, }, ["zlw-slv"] = { peri_comp = "barżé", sup = "no", -- participle endings act = false, pass = false, cont_adv = false, ant_adv = false, has_dual = true, }, } ----------------------------------------------- Utilities -------------------------------------------- local function track(page) require("Module:debug").track("zlw-lch-headword/" .. page) return true end local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval end local function frob_term_with_hash(term, lemma) if term:find("#") then term = replace_hash_with_lemma(term, lemma) end return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", include_mods = {"g"}, frob = function(term) return frob_term_with_hash(term, data.pagename) end, label = label, accel = accel and {form = accel} or nil, } end -- Parse and return an inflection not requiring additional processing. The raw arguments come from `args[field]`, which -- is parsed for inline modifiers. local function parse_inflection(data, args, field) return m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", include_mods = {"g"}, frob = function(term) return frob_term_with_hash(term, data.pagename) end, } end -- Insert the parsed inflections in `infls` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end ----------------------------------------------- Main entry point -------------------------------------------- function export.show(frame) local iparams = { [1] = {required = true}, ["lang"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local poscat = iargs[1] langcode = iargs.lang if not langs_supported[langcode] then local langcodes_supported = {} for lang, _ in pairs(langs_supported) do insert(langcodes_supported, lang) end error("Mô đun này chỉ khả dụng với tham số lang=" .. concat(langcodes_supported, "/")) end local lang = require("Module:languages").getByCode(langcode) local langname = lang:getCanonicalName() local params = { ["head"] = {list = true}, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["json"] = boolean_param, ["abbr"] = {list = true}, ["pagename"] = {}, -- for testing } if pos_functions[poscat] then local posparams = pos_functions[poscat].params if type(posparams) == "function" then posparams = posparams(langcode) end for key, val in pairs(posparams) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if #heads == 0 then heads = {pagename} end end local data = { lang = lang, langcode = langcode, langname = langname, pos_category = poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = not user_specified_heads[1], genders = {}, inflections = {}, categories = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, } data.is_suffix = false if args.suffix or ( not args.nosuffix and pagename:find("^%-") and poscat ~= "Hậu tố" and poscat ~= "Biến thể hình thái hậu tố" ) then data.is_suffix = true data.pos_category = "Hậu tố" local singular_poscat = m_en_utilities.singularize(poscat) insert(data.categories, "Dạng hậu tố " .. singular_poscat .. " " .. langname) insert(data.inflections, {label = "dạng hậu tố " .. singular_poscat}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end parse_and_insert_inflection(data, args, "abbr", "viết tắt") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end ----------------------------------------------- Nouns -------------------------------------------- local function get_noun_inflection_specs(langcode) local noun_inflection_specs = { {"gen", "sinh cách số ít"}, } if langs_supported[langcode].has_dual then insert(noun_inflection_specs, {"du", "danh cách số đôi"}) end for _, spec in ipairs { {"pl", "danh cách số nhiều"}, {"genpl", "sinh cách số nhiều"}, {"f", "giống cái tương đương"}, {"m", "giống đực tương đương"}, {"n", "giống trung tương đương"}, {"marr", "traditional married form"}, {"unmarr", "traditional unmarried form"}, {"dim", "giảm nhẹ nghĩa"}, {"pej", "nghĩa xấu"}, {"aug", "tăng nhẹ nghĩa"}, {"adj", "tính từ quan hệ"}, {"poss", "tính từ sở hữu"}, {"dem", "tên gọi dân cư"}, {"fdem", "tên gọi dân cư dành cho nữ"}, } do insert(noun_inflection_specs, spec) end return noun_inflection_specs end local function get_noun_pos(is_proper) return { params = function(langcode) local params = { ["indecl"] = boolean_param, [1] = {list = "g", disallow_holes = true, type = "genders", flatten = true}, -- gender(s) ["gerund"] = boolean_param, } for _, spec in ipairs(get_noun_inflection_specs(langcode)) do local param, desc = unpack(spec) params[param] = list_param end params["rel"] = {list = true, alias_of = "adj"} return params end, func = function(args, data) -- Compute allowed genders, and map incomplete genders to specs with a "?" in them. local genders = {false, "m", "mf", "mfbysense", "f", "n", "g!"} local animacies = {false, "in", "anml", "pr", "an!"} local numbers = {false, "p", "num!"} local allowed_genders = {} for _, g in ipairs(genders) do for _, an in ipairs(animacies) do for _, num in ipairs(numbers) do local source_gender_parts = {} local dest_gender_parts = {} local function ins_part(part, partname) if part then insert(source_gender_parts, part) insert(dest_gender_parts, part) elseif partname == "g" and num == false or partname == "an" and g ~= "f" and g ~= "n" then -- allow incomplete gender plurale tantum nouns; also allow incomplete -- animacy for fem/neut, where it makes no difference for agreement -- purposes; otherwise insert a ? to indicate incomplete gender spec insert(dest_gender_parts, "?") end end ins_part(g, "g") ins_part(an, "an") ins_part(num, "num") if #source_gender_parts == 0 then allowed_genders["?"] = "?" else allowed_genders[concat(source_gender_parts, "-")] = concat(dest_gender_parts, "-") end -- "Virile" = masculine personal, allow in the plural and convert appropriately; -- "Nonvirile" = anything but masculine personal, allow in the plural; -- "Nonpersonal" = anything but personal, i.e. animal or inanimate; allow in the plural. allowed_genders["vr-p"] = "m-pr-p" allowed_genders["nv-p"] = "nv-p" allowed_genders["np-p"] = "np-p" end end end -- Validate and canonicalize genders. for _, g in ipairs(args[1]) do if not allowed_genders[g.spec] then error("Không rõ giống " .. data.langname .. ": " .. g.spec) else g.spec = allowed_genders[g.spec] end end data.genders = args[1] if args.indecl then insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, "Danh tù không biến cách " .. data.langname) end if args.gerund then data.pos_category = "Vị danh từ" end -- Process all inflections. for _, spec in ipairs(get_noun_inflection_specs(data.langcode)) do local param, desc = unpack(spec) parse_and_insert_inflection(data, args, param, desc) end end } end pos_functions["Danh từ"] = get_noun_pos(false) pos_functions["Danh từ riêng"] = get_noun_pos(true) ----------------------------------------------- Verbs -------------------------------------------- local function get_verb_pos() local verb_inflection_specs = { -- order per old [[Module:pl-headword]] {"det", "xác định chưa hoàn thành"}, {"pf", "hoàn thành"}, {"impf", "chưa hoàn thành"}, {"indet", "chưa xác định"}, {"freq", "lặp lại"}, } local params = { [1] = {default = "?"}, ["def"] = boolean_param, } for _, spec in ipairs(verb_inflection_specs) do local param, desc = unpack(spec) params[param] = list_param end return { params = params, func = function(args, data) local allowed_aspects = m_table.listToSet { "pf", "impf", "biasp", "both", "impf-det", "impf-indet", "impf-freq", "?" } local impf_allowed = true local pf_allowed = true local indet_allowed = true local det_allowed = true local freq_allowed = true local function insert_label_and_cat(aspect, label) -- Preserve qualifiers, labels, references. aspect = aspect and m_table.shallowCopy(aspect) or {} aspect.term = nil aspect.label = label insert(data.inflections, aspect) insert(data.categories, "Động từ " .. label .. " " .. data.langname) end local aspects = m_headword_utilities.parse_term_with_modifiers { paramname = 1, val = args[1], splitchar = ",", exclude_mods = {"id"}, -- doesn't make sense for gender specs } -- Validate and canonicalize aspects. for i, aspect in ipairs(aspects) do local a = aspect.term if not allowed_aspects[a] then error("Không rõ thể động từ " .. data.langname .. ": " .. a) elseif a == "both" then a = "biasp" elseif a == "impf-det" then a = "impf" insert_label_and_cat(aspect, "xác định") det_allowed = false elseif a == "impf-indet" then a = "impf" insert_label_and_cat(aspect, "chưa xác định") indet_allowed = false elseif a == "impf-freq" then a = "impf" insert_label_and_cat(aspect, "chưa xác định") insert_label_and_cat(aspect, "lặp lại") indet_allowed = false freq_allowed = false elseif a == "pf" then pf_allowed = false elseif a == "impf" then impf_allowed = false end aspect.spec = a aspect.term = nil end data.genders = aspects if args.def then insert_label_and_cat(nil, "khiếm khuyết") end -- Process all inflections. for _, spec in ipairs(verb_inflection_specs) do local param, desc = unpack(spec) local infls = parse_inflection(data, args, param) if infls[1] then if param == "pf" and not pf_allowed then error("Aspectual-pair perfectives not allowed with perfective-only verb") end if param == "impf" and not impf_allowed then error("Aspectual-pair imperfectives not allowed with imperfective-only verb") end if param == "det" and not det_allowed then error("Aspectual-pair determinates not allowed with imperfective-only determinate verb") end if param == "indet" and not indet_allowed then error("Aspectual-pair indeterminates not allowed with imperfective-only indeterminate or frequentative verb") end if param == "freq" and not freq_allowed then error("Aspectual-pair frequentatives not allowed with imperfective-only frequentative verb") end insert_inflection(data, infls, desc) end end end } end pos_functions["Động từ"] = get_verb_pos() ----------------------------------------------- Adjectives, Adverbs -------------------------------------------- local function get_adj_adv_pos(pos) return { params = function(langcode) local params = { [1] = list_param, ["dim"] = list_param, ["sup"] = list_param, ["nodefsup"] = boolean_param, } if pos == "Tính từ" then params["adv"] = list_param params["indecl"] = boolean_param end if langcode == "pl" then params["mpcomp"] = list_param params["mpsup"] = list_param end return params end, func = function(args, data) local default_sups = {} local comps = parse_inflection(data, args, 1) if comps[1] then local lang_data = langs_supported[data.langcode] if comps[1].term == "-" then if not comps[2] then -- Preserve any qualifiers, labels, etc. comps[1].label = "không " .. glossary_link("so sánh được") comps[1].term = nil insert(data.inflections, comps[1]) insert(data.categories, data.pos_category .. " không so sánh được " .. data.langname) else -- Preserve any qualifiers, labels, etc. comps[1].label = "nói chung không " .. glossary_link("so sánh được") comps[1].term = nil insert(data.inflections, comps[1]) end remove(comps, 1) end for i, comp in ipairs(comps) do if comp.term == "peri" then if not lang_data.peri_comp then error("Don't know how to form periphrastic comparatives for " .. data.langname) end comp.term = ("[[%s]] [[%s]]"):format(lang_data.peri_comp, data.pagename) if lang_data.sup then local default_sup = m_table.shallowCopy(comp) default_sup.term = ("[[%s%s]] [[%s]]"):format(lang_data.sup, lang_data.peri_comp, data.pagename) insert(default_sups, default_sup) end elseif lang_data.sup then local default_sup = m_table.shallowCopy(comp) default_sup.term = ("%s%s"):format(lang_data.sup, comp.term) insert(default_sups, default_sup) end end end insert_inflection(data, comps, "comparative", "so sánh hơn") local sups = parse_inflection(data, args, "sup") if not sups[1] then sups = args.nodefsup and {} or {{term = "+"}} end local combined_sups = {} for _, sup in ipairs(sups) do if sup.term == "+" then for _, def_sup in ipairs(default_sups) do def_sup = m_table.shallowCopy(def_sup) m_headword_utilities.combine_termobj_decorations(def_sup, sup) insert(combined_sups, def_sup) end else insert(combined_sups, sup) end end insert_inflection(data, combined_sups, "superlative", "so sánh nhất") if data.langcode == "pl" then parse_and_insert_inflection(data, args, "mpcomp", "Tính từ so sánh hơn tiếng Ba Lan trung đại") parse_and_insert_inflection(data, args, "mpsup", "Tính từ so sánh nhất tiếng Ba Lan trung đại") end if pos == "Tính từ" then if args.indecl then insert(data.inflections, {label = glossary_link("không biến cách")}) insert(data.categories, "Tính từ không biến cách " .. data.langname) end parse_and_insert_inflection(data, args, "adv", "phó từ phái sinh") end parse_and_insert_inflection(data, args, "dim", "giảm nhẹ nghĩa") end, } end pos_functions["Tính từ"] = get_adj_adv_pos("Tính từ") pos_functions["Phó từ"] = get_adj_adv_pos("Phó từ") ----------------------------------------------- Phân từ -------------------------------------------- local function get_part_pos() local params = { [1] = {}, ["a"] = list_param, } return { params = params, func = function(args, data) if data.langcode ~= "pl" then error("Internal error: Unable to handle languages other than Polish for participles: " .. data.langname) end -- Compute allowed aspects, and map incomplete aspects to specs with a "?" in them. local allowed_aspects = m_table.listToSet { "pf", "impf", "biasp", "both", "pf-it", "pf-sem", "impf-it", "impf-dur", "?" } local allowed_types = m_table.listToSet { "pass", "act", "ant-adv", "cont-adv", "?" } local function insert_label_and_cat(aspect, label, nolink) if not nolink then label = glossary_link(label) end -- Preserve qualifiers, labels, references. aspect = aspect and m_table.shallowCopy(aspect) or {} aspect.term = nil aspect.label = label insert(data.inflections, aspect) insert(data.categories, "Phân từ " .. label .. " " .. data.langname) end local aspects = m_headword_utilities.parse_term_list_with_modifiers { paramname = "a", forms = args.a, splitchar = ",", exclude_mods = {"id"}, -- doesn't make sense for gender specs } -- Validate and canonicalize aspects. for i, aspect in ipairs(aspects) do local a = aspect.term if not allowed_aspects[a] then error("Không rõ thể phân từ " .. data.langname .. ": " .. a) elseif a == "both" then a = "biasp" elseif a == "impf-it" then a = "impf" insert_label_and_cat(aspect, "lặp đi lặp lại") elseif a == "impf-dur" then a = "impf" insert_label_and_cat(aspect, "kéo dài") elseif a == "pf-it" then a = "pf" insert_label_and_cat(aspect, "lặp đi lặp lại") elseif a == "pf-sem" then a = "pf" insert_label_and_cat(aspect, "hành động nhất thời hay đơn lập") end aspect.spec = a aspect.term = nil end data.genders = aspects -- Validate or autodetect participle type. local function matches_parttype(typ) local endings = langs_supported[data.langcode][typ] if not endings then return false end for _, ending in ipairs(endings) do if rfind(data.pagename, ending) then return true end end return false end local ptype = args[1] if ptype then if not allowed_types[ptype] then error("Không rõ loại phân từ " .. data.langname .. ": " .. ptype) end elseif matches_parttype("act") then -- biegnący ptype = "act" elseif matches_parttype("pass") then -- otwarty, uwielbiany, legły ptype = "pass" elseif matches_parttype("cont_adv") then ptype = "cont-adv" elseif matches_parttype("ant_adv") then ptype = "ant-adv" elseif (data.pagename:find("%-participle$") or data.pagename:find("%-part$")) and mw.title.getCurrentTitle().nsText == "Bản_mẫu" then ptype = "pass" else error(("Missing %s participle type and can't infer from pagename '%s'"):format(data.langname, data.pagename)) end if ptype == "act" then insert_label_and_cat(nil, "tính từ chủ động", true) elseif ptype == "pass" then insert_label_and_cat(nil, "tính từ bị động", true) elseif ptype == "cont-adv" then insert_label_and_cat(nil, "tính từ tạm thời", true) elseif ptype == "ant-adv" then insert_label_and_cat(nil, "tính từ phía trước", true) end end } end pos_functions["Phân từ"] = get_part_pos() return export q03ixmxsnbz0xh8uvuwzdiyje234rif Mô đun:require when needed 828 302302 2566653 2182238 2026-09-26T10:52:03Z Hiyuune 50834 2566653 Scribunto text/plain local getmetatable = getmetatable local ipairs = ipairs local loaded = package.loaded local pairs = pairs local require = require local select = select local setmetatable = setmetatable local tostring = tostring local unpack = unpack or table.unpack -- Lua 5.2 compatibility local function get_nested(obj, ...) local n = select("#", ...) if n == 0 then return obj end obj = obj[...] for i = 2, n do obj = obj[select(i, ...)] end return obj end local function get_obj(mt) local obj = require(mt[1]) if #mt > 1 then obj = get_nested(obj, unpack(mt, 2)) end mt[0] = obj return obj end local function __call(self, ...) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end return obj(...) end local function __index(self, k) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end return obj[k] end local function __ipairs(self) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end return ipairs(obj) end local function __newindex(self, k, v) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end obj[k] = v end local function __pairs(self) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end return pairs(obj) end local function __tostring(self) local mt = getmetatable(self) local obj = mt[0] if obj == nil then obj = get_obj(mt) end return tostring(obj) end return function(modname, ...) local mod = loaded[modname] if mod ~= nil then return get_nested(mod, ...) end return setmetatable({}, { modname, __call = __call, __index = __index, __ipairs = __ipairs, __newindex = __newindex, __pairs = __pairs, __tostring = __tostring, -- TODO: other metamethods, if needed. ... }) end 1p8upm5p2cm943t5atixatwvtsenpe2 alomat 0 306379 2566620 2327920 2026-09-26T09:18:04Z Kelly zhrm 58416 /* {{section|etym}} */ 2566620 wikitext text/x-wiki =={{langname|uz}}== ==={{section|etym}}=== {{bor+|uz|ar|عَلَامَة}}. Cùng gốc với {{cog|tr|alamet}}. {{root|uz|ar|ع ل م}} ==={{section|n}}=== {{uz-noun}} # [[dấu hiệu|Dấu hiệu]], [[biểu tượng]], [[chỉ dấu]]. # [[triệu chứng|Triệu chứng]]. lrkxhlm5zbvs80sapnrpamd4dd7mdw2 𑨛𑩇𑨭𑨊𑨫𑨴 0 340755 2566415 2231314 2026-09-25T13:45:01Z Hiyuune 50834 /* Tiếng Phạn */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566415 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|n}}=== {{sa-noun|tr=dvā́r|f}} # {{sa-sc|term=द्वार्}} 367igi6lz16kg6hjcjhx1aqqw8h8ikj Thành viên:Kelly zhrm/nháp 2 348543 2566625 2314652 2026-09-26T09:32:52Z Kelly zhrm 58416 2566625 wikitext text/x-wiki <!-- Đây là trang nháp của tôi, nếu bạn muốn sửa đổi trang này bạn có thể chuyển sang Wiktionary:chỗ thử-- > oe426sjpciv9u09ym4qle5irv0u8nxc Mô đun:mwl-headword 828 370158 2566663 2340193 2026-09-26T11:26:05Z Hiyuune 50834 2566663 Scribunto text/plain --[=[ Based on [[Module:es-headword]] ]=] local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local rfind = mw.ustring.find local rmatch = mw.ustring.match local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:mwl-common") local en_utilities_module = "Module:en-utilities" local mwl_verb_module = "Module:mwl-verb" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("mwl") local langname = lang:getCanonicalName() local insert = table.insert local rsub = com.rsub local usub = mw.ustring.sub local function track(page) require("Module:debug").track("mwl-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = {}, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "suffix forms" then data.is_suffix = true data.pos_category = "suffixes" data.checkredlinks = true local singular_poscat = m_en_utilities.singularize(poscat) table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") table.insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, label = label, accel = accel and {form = accel} or nil, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] table.insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl table.insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable participles' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do table.insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.inv then -- invariable adjective table.insert(data.inflections, {label = glossary_link("invariable")}) table.insert(data.categories, langname .. " indeclinable " .. category_plpos) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) table.insert(feminine_plurals, fpl) end end table.insert(data.inflections, {label = "feminine-only"}) insert_inflection(feminine_plurals, "feminine plural", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end table.insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(feminines[1]) if fem_like_lemma then table.insert(data.categories, category_plpos .. " giống đôi " .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls = com.make_plural(lemma, args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) table.insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_decorations(fplobj, f) table.insert(feminine_plurals, fplobj) end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) table.insert(feminine_plurals, fpl) end end parse_and_insert_inflection(data, args, "mapoc", "masculine singular before a noun") local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_qualifiers_or_labels(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable table.insert(data.inflections, {label = glossary_link("invariable")}) table.insert(data.categories, langname .. " indeclinable " .. category_plpos) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "giống cái", "f|s") else data.genders = {"mf"} end if fem_pl_like_masc_pl then insert_inflection(masculine_plurals, "giống đực và giống cái số nhiều", "p") else insert_inflection(masculine_plurals, "giống đực số nhiều", "m|p") insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "comparative") parse_and_insert_inflection(data, args, "sup", "superlative") parse_and_insert_inflection(data, args, "dim", "diminutive") parse_and_insert_inflection(data, args, "aug", "augmentative") if args.irreg and is_superlative then table.insert(data.categories, langname .. " irregular superlative " .. category_plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = {}, -- special indicator: "first", "first-last", etc. } local function ins_infl(field) params[field] = list_param --feminine form(s) end ins_infl("f") -- feminine form(s) ins_infl("pl") -- plural override(s) ins_infl("mpl") -- masculine plural override(s) ins_infl("fpl") -- feminine plural override(s) if adjtype == "base" then ins_infl("comp") --comparative(s) ins_infl("sup") --superlative(s) ins_infl("dim") --diminutive(s) ins_infl("aug") --augmentative(s) params["fonly"] = boolean_param -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end pos_functions["Tính từ"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["past participles"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "participles", } pos_functions["determiners"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["pronouns"] = { params = get_adjective_params("pron"), func = do_adjective, } pos_functions["comparative adjectives"] = { params = get_adjective_params("comp"), func = do_adjective, pos_category = "adjectives", } pos_functions["superlative adjectives"] = { params = get_adjective_params("sup"), func = function(args, data) do_adjective(args, data, true) end, pos_category = "adjectives", } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- pos_functions["adverbs"] = { params = { ["sup"] = list_param, --superlative(s) }, func = function(args, data) parse_and_insert_inflection(data, args, "sup", "superlative") end, } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- pos_functions["cardinal numbers"] = { params = { ["f"] = list_param, --feminine(s) }, func = function(args, data) table.insert(data.categories, 1, langname .. " cardinal numbers") if args.f[1] then table.insert(data.genders, "m") parse_and_insert_inflection(data, args, "f", "feminine") end end, pos_category = "numerals", } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = require("Module:table").listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "n-p", "?", "?-p"} ) local function process_genders(data, genders, g_qual) for i, g in ipairs(genders) do if not allowed_genders[g] then error("Unrecognized gender: " .. g) end if g_qual[i] then table.insert(data.genders, {spec = g, qualifiers = {g_qual[i]}}) else table.insert(data.genders, g) end end end -- Display additional inflection information for a noun local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) data.genders = {} local saw_m = false local saw_f = false local gender_for_irreg_ending, gender_for_make_plural process_genders(data, args[1], args.g_qual) -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_make_plural = gender_for_irreg_ending local lemma = data.pagename local plurals = {} if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end table.insert(data.inflections, {label = glossary_link("plural only")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if mode == "?" then -- Plural is unknown table.insert(data.categories, langname .. " " .. category_plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested table.insert(data.inflections, {label = "plural not attested"}) table.insert(data.categories, langname .. " " .. category_plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural table.insert(data.categories, langname .. " uncountable " .. category_plpos) -- If plural forms were given explicitly, then show "usually" if plurals[1] then table.insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " countable " .. category_plpos) else table.insert(data.inflections, {label = glossary_link("uncountable")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural table.insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " uncountable " .. category_plpos) table.insert(data.categories, langname .. " countable " .. category_plpos) else -- Countable nouns table.insert(data.categories, langname .. " countable " .. category_plpos) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) table.insert(newpls, pl) end end plurals = newpls end end if #plurals > 1 then table.insert(data.categories, langname .. " " .. category_plpos .. " with multiple plurals") end -- Gather masculines/feminines. For each one, generate the corresponding plural(s). `field` is the name of the -- field containing the masculine or feminine forms (normally "m" or "f"); `gender` is "m" or "f" for the gender -- of the forms; `inflect` is a function of one or two arguments to generate the default masculine or feminine from -- the lemma (the arguments are the lemma and optionally a "special" flag to indicate how to handle multiword -- lemmas, and the function is normally make_feminine or make_masculine from [[Module:es-common]]); and -- `default_plurals` is a list into which the corresponding default plurals of the gathered or generated masculine -- or feminine forms are stored. Note that there may be more default plurals than masculines or feminines, because -- some terms have multiple possible plurals. local function handle_mf(field, gender, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|es|MFSING}} plobj.accel = {form = "p", lemma = mf.term} table.insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", "f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", "m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, gender, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, -- assume each plural goes with the corresponding singular -- and use each corresponding singular as the lemma in the accelerator. -- The generated entry will have # {{plural of|es|SINGULAR}} as the -- definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_decorations(defpl, mfpl) table.insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_decorations(mfplobj, mf) table.insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) table.insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", "f", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", "m", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end insert_noun_inflection(plurals, "plural", "p") insert_noun_inflection(feminines, "feminine", "f") insert_noun_inflection(feminine_plurals, "feminine plural") insert_noun_inflection(masculines, "masculine") insert_noun_inflection(masculine_plurals, "masculine plural") parse_and_insert_noun_inflection("dim", "diminutive") parse_and_insert_noun_inflection("aug", "augmentative") parse_and_insert_noun_inflection("pej", "pejorative") --[=[ -- Maybe add category 'Mirandese nouns with irregular gender' local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then table.insert(data.categories, langname .. " nouns with irregular gender") end ]=] end local function get_noun_params(is_proper) return { [1] = {list = "g", required = not is_proper, default = "?"}, --gender ["g_qual"] = {list = "g\1_qual", allow_holes = true}, [2] = {list = "pl"}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) } end pos_functions["nouns"] = { params = get_noun_params(), func = do_noun, } pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["phrases"] = { params = { ["g"] = list_param, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) data.genders = {} process_genders(data, args.g, args.g_qual) local plpos = "phrases" parse_and_insert_inflection(data, args, "m", "masculine") parse_and_insert_inflection(data, args, "f", "feminine") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = list_param, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, }, func = function(args, data) data.genders = {} process_genders(data, args.g, args.g_qual) local suffix_type = {} for _, typ in ipairs(args[1]) do table.insert(suffix_type, typ .. "-forming suffix") end table.insert(data.inflections, {label = "non-lemma form of " .. require("Module:table").serialCommaJoin(suffix_type, {conj = "or"})}) end, } pos_functions["Động từ"] = { params = { [1] = {}, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["pagename"] = {}, -- for testing ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data) local preses, prets, parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local mwl_verb = require(mwl_verb_module) local alternant_multiword_spec = mwl_verb.do_generate_forms(args, "mwl-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and specforms[slot][1] end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("%s ở ngôi thứ nhất số ít"):format(label_tense), } elseif has_3s then return { slot = slot_tense .. "_3s", label = ("%s ở ngôi thứ ba số ít"):format(label_tense), } else return { slot = slot_tense .. "_3p", label = ("%s ở ngôi thứ ba số nhiều"):format(label_tense), } end end preses = do_finite("pres", "hiện tại") prets = do_finite("pret", "quá khứ đơn") parts = { slot = "pp_ms", label = "phân từ quá khứ", } if args.pres[1] or args.pret[1] or args.part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:es-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use {{es-verb form of}} instead. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "no first-person singular present"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("impersonal")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "third-person only"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "third-person plural only"}) end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:es-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Mirandese equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end end } return export 32m4clz1u3wlzfspe2ezw0i8u3fluf1 2566665 2566663 2026-09-26T11:28:18Z Hiyuune 50834 2566665 Scribunto text/plain --[=[ Based on [[Module:es-headword]] ]=] local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local rfind = mw.ustring.find local rmatch = mw.ustring.match local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local com = require("Module:mwl-common") local en_utilities_module = "Module:en-utilities" local mwl_verb_module = "Module:mwl-verb" local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local inflection_utilities_module = "Module:inflection utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local m_string_utilities = require_when_needed("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local lang = require("Module:languages").getByCode("mwl") local langname = lang:getCanonicalName() local insert = table.insert local rsub = com.rsub local usub = mw.ustring.sub local function track(page) require("Module:debug").track("mwl-headword/" .. page) return true end local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local parargs = frame:getParent().args local params = { ["head"] = list_param, ["id"] = {}, ["splithyph"] = boolean_param, ["nolinkhead"] = boolean_param, ["json"] = boolean_param, ["pagename"] = {}, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolinkhead then if #heads == 0 then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph) if #heads == 0 then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, usub(head, 2)) heads[i] = head end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = #user_specified_heads == 0, genders = {}, inflections = {}, pagename = pagename, id = args.id, force_cat_output = force_cat, checkredlinks = pos_functions[poscat] and pos_functions[poscat].redlink_pos or true, } if pagename:find("^%-") and poscat ~= "suffix forms" then data.is_suffix = true data.pos_category = "suffixes" data.checkredlinks = true local singular_poscat = m_en_utilities.singularize(poscat) table.insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") table.insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end if args.json then return require("Module:JSON").toJSON(data) end return require(headword_module).full_headword(data) end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture -- replace expression. lemma = m_string_utilities.replacement_escape(lemma) return (term:gsub("#", lemma)) -- discard second retval end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, label = label, accel = accel and {form = accel} or nil, } end -- Insert default plurals generated when a given plural had the value of + and default plurals were fetched as a result. -- `plobj` is the parsed object whose `term` field is "+". `defpls` is the list of default plurals. `dest` is the list -- into which the plurals are inserted (which inherit their qualifiers and labels from `plobj`). local function insert_defpls(defpls, plobj, dest) if not defpls then -- Happens e.g. with [[S.A.]] where the default plural algorithm returns nothing. return end if #defpls == 1 then plobj.term = defpls[1] table.insert(dest, plobj) else for _, defpl in ipairs(defpls) do local newplobj = m_table.shallowCopy(plobj) newplobj.term = defpl table.insert(dest, newplobj) end end end ----------------------------------------------------------------------------------------- -- Adjectives -- ----------------------------------------------------------------------------------------- local function do_adjective(args, data, is_superlative) local feminines = {} local masculine_plurals = {} local feminine_plurals = {} -- Use "participle" not "past participle" for categories such as 'invariable participles' local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) if args.sp then local romut = require(romut_module) if not romut.allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(romut.allowed_special_indicators) do table.insert(indicators, "'" .. indic .. "'") end table.sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end end local lemma = data.pagename local function fetch_inflections(field) local retval = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], } if not retval[1] then return {{term = "+"}} end return retval end local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if args.inv then -- invariable adjective table.insert(data.inflections, {label = glossary_link("invariable")}) table.insert(data.categories, langname .. " indeclinable " .. category_plpos) if args.sp or args.f[1] or args.pl[1] or args.mpl[1] or args.fpl[1] then error("Can't specify inflections with an invariable " .. category_pos) end elseif args.fonly then -- feminine-only if args.f[1] then error("Can't specify explicit feminines with feminine-only " .. category_pos) end if args.pl[1] then error("Can't specify explicit plurals with feminine-only " .. category_pos .. ", use fpl=") end if args.mpl[1] then error("Can't specify explicit masculine plurals with feminine-only " .. category_pos) end local argsfpl = fetch_inflections("fpl") for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then -- Generate default feminine plural. local defpls = com.make_plural(lemma, args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, fpl, feminine_plurals) else fpl.term = replace_hash_with_lemma(fpl.term, lemma) table.insert(feminine_plurals, fpl) end end table.insert(data.inflections, {label = "feminine-only"}) insert_inflection(feminine_plurals, "feminine plural", "f|p") else -- Gather feminines. for _, f in ipairs(fetch_inflections("f")) do if f.term == "+" then -- Generate default feminine. f.term = com.make_feminine(lemma, args.sp) else f.term = replace_hash_with_lemma(f.term, lemma) end table.insert(feminines, f) end local fem_like_lemma = #feminines == 1 and feminines[1].term == lemma and not m_headword_utilities.termobj_has_decorations(feminines[1]) if fem_like_lemma then table.insert(data.categories, category_plpos .. " giống đôi " .. langname) end local mpl_field = "mpl" local fpl_field = "fpl" if args.pl[1] then if args.mpl[1] or args.fpl[1] then error("Can't specify both pl= and mpl=/fpl=") end mpl_field = "pl" fpl_field = "pl" end local argsmpl = fetch_inflections(mpl_field) local argsfpl = fetch_inflections(fpl_field) for _, mpl in ipairs(argsmpl) do if mpl.term == "+" then -- Generate default masculine plural. local defpls = com.make_plural(lemma, args.sp) if not defpls then error("Unable to generate default plural of '" .. lemma .. "'") end insert_defpls(defpls, mpl, masculine_plurals) else mpl.term = replace_hash_with_lemma(mpl.term, lemma) table.insert(masculine_plurals, mpl) end end for _, fpl in ipairs(argsfpl) do if fpl.term == "+" then for _, f in ipairs(feminines) do -- Generate default feminine plural; f is a table. local defpls = com.make_plural(f.term, args.sp) if not defpls then error("Unable to generate default plural of '" .. f.term .. "'") end for _, defpl in ipairs(defpls) do local fplobj = m_table.shallowCopy(fpl) fplobj.term = defpl m_headword_utilities.combine_termobj_decorations(fplobj, f) table.insert(feminine_plurals, fplobj) end end else fpl.term = replace_hash_with_lemma(fpl.term, lemma) table.insert(feminine_plurals, fpl) end end parse_and_insert_inflection(data, args, "mapoc", "masculine singular before a noun") local fem_pl_like_masc_pl = masculine_plurals[1] and feminine_plurals[1] and m_table.deepEquals(masculine_plurals, feminine_plurals) local masc_pl_like_lemma = #masculine_plurals == 1 and masculine_plurals[1].term == lemma and not m_headword_utilities.termobj_has_decorations(masculine_plurals[1]) if fem_like_lemma and fem_pl_like_masc_pl and masc_pl_like_lemma then -- actually invariable table.insert(data.inflections, {label = glossary_link("invariable")}) table.insert(data.categories, langname .. " indeclinable " .. category_plpos) else -- Make sure there are feminines given and not same as lemma. if not fem_like_lemma then insert_inflection(feminines, "giống cái", "f|s") else data.genders = {"mf"} end if fem_pl_like_masc_pl then insert_inflection(masculine_plurals, "giống đực và giống cái số nhiều", "p") else insert_inflection(masculine_plurals, "giống đực số nhiều", "m|p") insert_inflection(feminine_plurals, "giống cái số nhiều", "f|p") end end end parse_and_insert_inflection(data, args, "comp", "comparative") parse_and_insert_inflection(data, args, "sup", "superlative") parse_and_insert_inflection(data, args, "dim", "diminutive") parse_and_insert_inflection(data, args, "aug", "augmentative") if args.irreg and is_superlative then table.insert(data.categories, langname .. " irregular superlative " .. category_plpos) end end local function get_adjective_params(adjtype) local params = { ["inv"] = boolean_param, --invariable ["sp"] = {}, -- special indicator: "first", "first-last", etc. } local function ins_infl(field) params[field] = list_param --feminine form(s) end ins_infl("f") -- feminine form(s) ins_infl("pl") -- plural override(s) ins_infl("mpl") -- masculine plural override(s) ins_infl("fpl") -- feminine plural override(s) if adjtype == "base" then ins_infl("comp") --comparative(s) ins_infl("sup") --superlative(s) ins_infl("dim") --diminutive(s) ins_infl("aug") --augmentative(s) params["fonly"] = boolean_param -- feminine only params["hascomp"] = {} -- has comparative end if adjtype == "sup" then params["irreg"] = boolean_param end return params end pos_functions["Tính từ"] = { params = get_adjective_params("base"), func = do_adjective, } pos_functions["past participles"] = { params = get_adjective_params("part"), func = do_adjective, redlink_pos = "participles", } pos_functions["determiners"] = { params = get_adjective_params("det"), func = do_adjective, } pos_functions["pronouns"] = { params = get_adjective_params("pron"), func = do_adjective, } pos_functions["comparative adjectives"] = { params = get_adjective_params("comp"), func = do_adjective, pos_category = "adjectives", } pos_functions["superlative adjectives"] = { params = get_adjective_params("sup"), func = function(args, data) do_adjective(args, data, true) end, pos_category = "adjectives", } ----------------------------------------------------------------------------------------- -- Adverbs -- ----------------------------------------------------------------------------------------- pos_functions["adverbs"] = { params = { ["sup"] = list_param, --superlative(s) }, func = function(args, data) parse_and_insert_inflection(data, args, "sup", "superlative") end, } ----------------------------------------------------------------------------------------- -- Numerals -- ----------------------------------------------------------------------------------------- pos_functions["cardinal numbers"] = { params = { ["f"] = list_param, --feminine(s) }, func = function(args, data) table.insert(data.categories, 1, langname .. " cardinal numbers") if args.f[1] then table.insert(data.genders, "m") parse_and_insert_inflection(data, args, "f", "feminine") end end, pos_category = "numerals", } ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = require("Module:table").listToSet( {"m", "f", "mf", "mfbysense", "mfequiv", "n", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "n-p", "?", "?-p"} ) local function process_genders(data, genders, g_qual) for i, g in ipairs(genders) do if not allowed_genders[g] then error("Unrecognized gender: " .. g) end if g_qual[i] then table.insert(data.genders, {spec = g, qualifiers = {g_qual[i]}}) else table.insert(data.genders, g) end end end -- Display additional inflection information for a noun local function do_noun(args, data, is_proper) local is_plurale_tantum = false local has_singular = false local category_plpos = data.checkredlinks if category_plpos == true then category_plpos = data.pos_category end local category_pos = m_en_utilities.singularize(category_plpos) data.genders = {} local saw_m = false local saw_f = false local gender_for_irreg_ending, gender_for_make_plural process_genders(data, args[1], args.g_qual) -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if g:find("-p$") then is_plurale_tantum = true else has_singular = true if g == "m" or g == "mf" or g == "mfbysense" then saw_m = true end if g == "f" or g == "mf" or g == "mfbysense" then saw_f = true end end end if saw_m and saw_f then gender_for_irreg_ending = "mf" elseif saw_f then gender_for_irreg_ending = "f" else gender_for_irreg_ending = "m" end gender_for_make_plural = gender_for_irreg_ending local lemma = data.pagename local plurals = {} if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. category_pos) end table.insert(data.inflections, {label = glossary_link("plural only")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" then error(("Unexpected plural code '%s'"):format(mode)) end end if mode == "?" then -- Plural is unknown table.insert(data.categories, langname .. " " .. category_plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested table.insert(data.inflections, {label = "plural not attested"}) table.insert(data.categories, langname .. " " .. category_plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural table.insert(data.categories, langname .. " uncountable " .. category_plpos) -- If plural forms were given explicitly, then show "usually" if plurals[1] then table.insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " countable " .. category_plpos) else table.insert(data.inflections, {label = glossary_link("uncountable")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural table.insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) table.insert(data.categories, langname .. " uncountable " .. category_plpos) table.insert(data.categories, langname .. " countable " .. category_plpos) else -- Countable nouns table.insert(data.categories, langname .. " countable " .. category_plpos) end end -- Gather plurals, handling requests for default plurals. local has_default_or_hash = false for _, pl in ipairs(plurals) do if pl.term:find("^%+") or pl.term:find("#") then has_default_or_hash = true break end end if has_default_or_hash then local newpls = {} for _, pl in ipairs(plurals) do if pl.term == "+" then local default_pls = com.make_plural(lemma) insert_defpls(default_pls, pl, newpls) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) local default_pls = com.make_plural(lemma, pl.term) insert_defpls(default_pls, pl, newpls) else pl.term = replace_hash_with_lemma(pl.term, lemma) table.insert(newpls, pl) end end plurals = newpls end end if #plurals > 1 then table.insert(data.categories, langname .. " " .. category_plpos .. " with multiple plurals") end -- Gather masculines/feminines. For each one, generate the corresponding plural(s). `field` is the name of the -- field containing the masculine or feminine forms (normally "m" or "f"); `gender` is "m" or "f" for the gender -- of the forms; `inflect` is a function of one or two arguments to generate the default masculine or feminine from -- the lemma (the arguments are the lemma and optionally a "special" flag to indicate how to handle multiword -- lemmas, and the function is normally make_feminine or make_masculine from [[Module:es-common]]); and -- `default_plurals` is a list into which the corresponding default plurals of the gathered or generated masculine -- or feminine forms are stored. Note that there may be more default plurals than masculines or feminines, because -- some terms have multiple possible plurals. local function handle_mf(field, gender, inflect, default_plurals) local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = inflect(lemma) else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = inflect(lemma, special) end return term end } for _, mf in ipairs(mfs) do local mfpls = com.make_plural(mf.term, special) if mfpls then for _, mfpl in ipairs(mfpls) do local plobj = m_table.shallowCopy(mf) plobj.term = mfpl -- Add an accelerator for each masculine/feminine plural whose lemma -- is the corresponding singular, so that the accelerated entry -- that is generated has a definition that looks like -- # {{plural of|es|MFSING}} plobj.accel = {form = "p", lemma = mf.term} table.insert(default_plurals, plobj) end end end return mfs end local feminine_plurals = {} local feminines = handle_mf("f", "f", com.make_feminine, feminine_plurals) local masculine_plurals = {} local masculines = handle_mf("m", "m", com.make_masculine, masculine_plurals) local function handle_mf_plural(mfplfield, gender, default_plurals, singulars) local mfpl = m_headword_utilities.parse_term_list_with_modifiers { paramname = mfplfield, forms = args[mfplfield], } local new_mfpls = {} local saw_plus for i, mfpl in ipairs(mfpl) do local accel if #mfpl == #singulars then -- If same number of overriding masculine/feminine plurals as singulars, -- assume each plural goes with the corresponding singular -- and use each corresponding singular as the lemma in the accelerator. -- The generated entry will have # {{plural of|es|SINGULAR}} as the -- definition. accel = {form = "p", lemma = singulars[i].term} else accel = nil end if mfpl.term == "+" then -- We should never see + twice. If we do, it will lead to problems since we overwrite the values of -- default_plurals the first time around. if saw_plus then error(("Saw + twice when handling %s="):format(mfplfield)) end saw_plus = true for _, defpl in ipairs(default_plurals) do -- defpl is already a table and has an accel field m_headword_utilities.combine_termobj_decorations(defpl, mfpl) table.insert(new_mfpls, defpl) end elseif mfpl.term:find("^%+") then mfpl.term = require(romut_module).get_special_indicator(mfpl.term) for _, mf in ipairs(singulars) do local default_mfpls = com.make_plural(mf.term, mfpl.term) for _, defp in ipairs(default_mfpls) do local mfplobj = m_table.shallowCopy(mfpl) mfplobj.term = defp mfplobj.accel = accel m_headword_utilities.combine_termobj_decorations(mfplobj, mf) table.insert(new_mfpls, mfplobj) end end else mfpl.accel = accel mfpl.term = replace_hash_with_lemma(mfpl.term, lemma) table.insert(new_mfpls, mfpl) end end return new_mfpls end if args.fpl[1] then -- Override any existing feminine plurals. feminine_plurals = handle_mf_plural("fpl", "f", feminine_plurals, feminines) end if args.mpl[1] then -- Override any existing masculine plurals. masculine_plurals = handle_mf_plural("mpl", "m", masculine_plurals, masculines) end local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end insert_noun_inflection(plurals, "plural", "p") insert_noun_inflection(feminines, "feminine", "f") insert_noun_inflection(feminine_plurals, "feminine plural") insert_noun_inflection(masculines, "masculine") insert_noun_inflection(masculine_plurals, "masculine plural") parse_and_insert_noun_inflection("dim", "diminutive") parse_and_insert_noun_inflection("aug", "augmentative") parse_and_insert_noun_inflection("pej", "pejorative") --[=[ -- Maybe add category 'Mirandese nouns with irregular gender' local irreg_gender_lemma = rsub(lemma, " .*", "") -- only look at first word if (rfind(irreg_gender_lemma, "o$") and (gender_for_irreg_ending == "f" or gender_for_irreg_ending == "mf")) or (irreg_gender_lemma:find("a$") and (gender_for_irreg_ending == "m" or gender_for_irreg_ending == "mf")) then table.insert(data.categories, langname .. " nouns with irregular gender") end ]=] end local function get_noun_params(is_proper) return { [1] = {list = "g", required = not is_proper, default = "?"}, --gender ["g_qual"] = {list = "g\1_qual", allow_holes = true}, [2] = {list = "pl"}, --plural override(s) ["f"] = list_param, --feminine form(s) ["m"] = list_param, --masculine form(s) ["fpl"] = list_param, --feminine plural override(s) ["mpl"] = list_param, --masculine plural override(s) ["dim"] = list_param, --diminutive(s) ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) } end pos_functions["nouns"] = { params = get_noun_params(), func = do_noun, } pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "is proper") end, } ----------------------------------------------------------------------------------------- -- Phrases -- ----------------------------------------------------------------------------------------- pos_functions["phrases"] = { params = { ["g"] = list_param, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, ["m"] = list_param, ["f"] = list_param, }, func = function(args, data) data.genders = {} process_genders(data, args.g, args.g_qual) local plpos = "phrases" parse_and_insert_inflection(data, args, "m", "masculine") parse_and_insert_inflection(data, args, "f", "feminine") end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = list_param, ["g_qual"] = {list = "g\1_qual", allow_holes = true}, }, func = function(args, data) data.genders = {} process_genders(data, args.g, args.g_qual) local suffix_type = {} for _, typ in ipairs(args[1]) do table.insert(suffix_type, typ .. "-forming suffix") end table.insert(data.inflections, {label = "non-lemma form of " .. require("Module:table").serialCommaJoin(suffix_type, {conj = "or"})}) end, } pos_functions["Động từ"] = { params = { [1] = {}, ["pres"] = list_param, --present ["pres_qual"] = {list = "pres\1_qual", allow_holes = true}, ["pret"] = list_param, --preterite ["pret_qual"] = {list = "pret\1_qual", allow_holes = true}, ["part"] = list_param, --participle ["part_qual"] = {list = "part\1_qual", allow_holes = true}, ["pagename"] = {}, -- for testing ["noautolinktext"] = boolean_param, ["noautolinkverb"] = boolean_param, ["attn"] = boolean_param, }, func = function(args, data) local preses, prets, parts if args.attn then insert(data.categories, "Requests for attention concerning " .. langname) return end local mwl_verb = require(mwl_verb_module) local alternant_multiword_spec = mwl_verb.do_generate_forms(args, "mwl-verb", data.heads[1]) local specforms = alternant_multiword_spec.forms local function slot_exists(slot) return specforms[slot] and specforms[slot][1] end local function do_finite(slot_tense, label_tense) -- Use pres_3s if it exists and pres_1s doesn't exist (e.g. impersonal verbs); similarly for pres_3p (only3p verbs); -- but fall back to pres_1s if neither pres_1s nor pres_3s nor pres_3p exist (e.g. [[empedernir]]). local has_1s = slot_exists(slot_tense .. "_1s") local has_3s = slot_exists(slot_tense .. "_3s") local has_3p = slot_exists(slot_tense .. "_3p") if has_1s or (not has_3s and not has_3p) then return { slot = slot_tense .. "_1s", label = ("%s ở ngôi thứ nhất số ít"):format(label_tense), } elseif has_3s then return { slot = slot_tense .. "_3s", label = ("%s ở ngôi thứ ba số ít"):format(label_tense), } else return { slot = slot_tense .. "_3p", label = ("%s ở ngôi thứ ba số nhiều"):format(label_tense), } end end preses = do_finite("pres", "hiện tại") prets = do_finite("pret", "quá khứ đơn") parts = { slot = "pp_ms", label = "phân từ quá khứ", } if args.pres[1] or args.pret[1] or args.part[1] then track("verb-old-multiarg") end local function strip_brackets(qualifiers) if not qualifiers then return nil end local stripped_qualifiers = {} for _, qualifier in ipairs(qualifiers) do local stripped_qualifier = qualifier:match("^%[(.*)%]$") if not stripped_qualifier then error("Internal error: Qualifier should be surrounded by brackets at this stage: " .. qualifier) end insert(stripped_qualifiers, stripped_qualifier) end return stripped_qualifiers end local function do_verb_form(args, qualifiers, slot_desc, skip_if_empty) local forms local to_insert if #args == 0 then forms = specforms[slot_desc.slot] if not forms or #forms == 0 then if skip_if_empty then return end forms = {{form = "-"}} end elseif #args == 1 and args[1] == "-" then forms = {{form = "-"}} else forms = {} for i, arg in ipairs(args) do local qual = qualifiers[i] if qual then -- FIXME: It's annoying we have to add brackets and strip them out later. The inflection -- code adds all footnotes with brackets around them; we should change this. qual = {"[" .. qual .. "]"} end local form = arg if not args.noautolinkverb then -- [[Module:inflection utilities]] already loaded by [[Module:es-verb]] form = require(inflection_utilities_module).add_links(form) end insert(forms, {form = form, footnotes = qual}) end end if forms[1].form == "-" then to_insert = {label = "no " .. slot_desc.label} else local into_table = {label = slot_desc.label} for _, form in ipairs(forms) do local qualifiers = strip_brackets(form.footnotes) -- Strip redundant brackets surrounding entire form. These may get generated e.g. -- if we use the angle bracket notation with a single word. local stripped_form = rmatch(form.form, "^%[%[([^%[%]]*)%]%]$") or form.form -- Don't include accelerators if brackets remain in form, as the result will be wrong. -- FIXME: For now, don't include accelerators. We should use {{es-verb form of}} instead. -- local this_accel = not stripped_form:find("%[%[") and accel or nil local this_accel = nil insert(into_table, {term = stripped_form, q = qualifiers, accel = this_accel}) end to_insert = into_table end insert(data.inflections, to_insert) end local skip_pres_if_empty if alternant_multiword_spec.no_pres1_and_sub then insert(data.inflections, {label = "no first-person singular present"}) insert(data.inflections, {label = "no present subjunctive"}) end if alternant_multiword_spec.no_pres_stressed then insert(data.inflections, {label = "no stressed present indicative or subjunctive"}) skip_pres_if_empty = true end if alternant_multiword_spec.only3s then insert(data.inflections, {label = glossary_link("impersonal")}) elseif alternant_multiword_spec.only3sp then insert(data.inflections, {label = "third-person only"}) elseif alternant_multiword_spec.only3p then insert(data.inflections, {label = "third-person plural only"}) end do_verb_form(args.pres, args.pres_qual, preses, skip_pres_if_empty) do_verb_form(args.pret, args.pret_qual, prets) do_verb_form(args.part, args.part_qual, parts) -- Add categories. for _, cat in ipairs(alternant_multiword_spec.categories) do insert(data.categories, cat) end -- If the user didn't explicitly specify head=, or specified exactly one head (not 2+) and we were able to -- incorporate any links in that head into the 1= specification, use the infinitive generated by -- [[Module:es-verb]] in place of the user-specified or auto-generated head. This was copied from -- [[Module:it-headword]], where doing this gets accents marked on the verb(s). We don't have accents marked on -- the verb but by doing this we do get any footnotes on the infinitive propagated here. Don't do this if the -- user gave multiple heads or gave a head with a multiword-linked verbal expression such as Italian -- '[[dare esca]] [[al]] [[fuoco]]' (FIXME: give Mirandese equivalent). if #data.user_specified_heads == 0 or ( #data.user_specified_heads == 1 and alternant_multiword_spec.incorporated_headword_head_into_lemma ) then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.infinitive_linked) do local quals, refs = require(inflection_utilities_module). convert_footnotes_to_qualifiers_and_references(lemma_obj.footnotes) insert(data.heads, {term = lemma_obj.form, q = quals, refs = refs}) end end end } return export t8sey3v5o3ekp69o8nyg1muj32vq0qd Bản mẫu:mn-proper noun 10 370593 2566648 2477681 2026-09-26T10:41:40Z Hiyuune 50834 2566648 wikitext text/x-wiki {{#invoke:mn-headword|show|Danh từ riêng}}<!-- --><noinclude>{{documentation}}</noinclude> ajnr0tcrtp50bktsurmhokgfz4abrvc Bản mẫu:mon-adj 10 378769 2566642 2318542 2026-09-26T10:26:16Z Hiyuune 50834 Thay đổi trang đích của đổi hướng từ [[Bản mẫu:mn-adj]] sang [[Bản mẫu:mn-adjective]] 2566642 wikitext text/x-wiki #đổi [[Bản mẫu:mn-adjective]] ea9cd5kw7r4mc4ney3qnvxbwg0xkcx7 Bản mẫu:ga-decl-m1 10 380770 2566561 2322722 2026-09-25T16:34:54Z Hiyuune 50834 2566561 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{ga-decl-noun|declclass=1 | {{{1}}}{{{2}}} | a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{{3}}}}} | {{l-self|ga|{{{1}}}{{{3}}}}} | {{l-self|ga|{{{1}}}{{{2}}}}} | {{l-self|ga|{{{1}}}{{{pl|{{{3}}}}}}}} | a {{l-self|ga|{{ga-lenition|{{{1}}}}}{{#ifeq:{{{strong|no}}}|yes|{{{pl}}}|{{{vocpl|{{{2}}}a}}}}}}} | {{l-self|ga|{{{1}}}{{#ifeq:{{{strong|no}}}|yes|{{{pl}}}|{{{2}}}}}}} | {{l-self|ga|{{{1}}}{{{pl|{{{3}}}}}}}}{{#switch:{{{datpl|no}}}|no|0=|yes|1=<br />{{l-self|ga|{{{1}}}{{#ifeq:{{{strong|no}}}|yes|{{{pl}}}|{{{2}}}a}}{{#switch:{{str rightmost|{{{pl}}}|1}}|i|í=bh|ibh}}}}|<br />{{l-self|ga|{{{1}}}{{{datpl}}}}}}}{{#switch:{{{datpl|no}}}|no|0=|&#32;{{qualifier|archaic}}}} <!-- forms with the definite article --> | an {{l-self|ga|{{#switch:{{{1|}}} | a | á | e | é | i | í | o | ó | u | ú = t-{{{1}}} | A | Á | E | É | I | Í | O | Ó | U | Ú = t{{{1}}} | {{{1}}} }}{{{2}}}}} | an {{l-self|ga|{{ga-lenition an|{{{1}}}}}{{{3}}}}} | leis an {{l-self|ga|{{ga-eclipsis an|{{{1}}}}}{{{2}}}}}<br />don {{l-self|ga|{{#switch:{{{1|}}} | b | B | c | C | f | F | g | G | m | M | p | P = {{{1}}}h | {{{1}}} }}{{{2}}}}} | na {{l-self|ga|{{#switch:{{{1|}}} | a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}} | {{{1}}} }}{{{pl|{{{3}}}}}}}} | na {{l-self|ga|{{ga-eclipsis|{{{1}}}}}{{#ifeq:{{{strong|no}}}|yes|{{{pl}}}|{{{2}}}}}}} | leis na {{l-self|ga|{{#switch:{{{1|}}} | a | á | A | Á | e | é | E | É | i | í | I | Í | o | ó | O | Ó | u | ú | U | Ú = h{{{1}}} | {{{1}}} }}{{{pl|{{{3}}}}}}}} }}<includeonly>{{cln|ga|Danh từ biến cách loại 1}}</includeonly><noinclude>{{tài liệu}}{{tcat|ndecl}}</noinclude> duw023ipt44wtit0shqnpeyn24zwqhi soŋ¹ 0 381880 2566623 2324867 2026-09-26T09:20:24Z Kelly zhrm 58416 /* References */ 2566623 wikitext text/x-wiki =={{langname|eee}}== {{number box|eee}} ==={{ĐM|alter form}}=== * {{alter|eee|sɔŋ¹}} ==={{ĐM|etym}}=== So sánh {{cog|za|song||hai}}. ==={{ĐM|pron}}=== * {{eee-IPA}} ==={{ĐM|num}}=== {{head|eee|Số từ}} # [[hai]]. ==={{ĐM|ref}}=== * {{R:eee:Gao 2016}} tm700r466fomi1u2su0zaheqijsk96n Mô đun:letter headword 828 391260 2566659 2342109 2026-09-26T11:22:45Z Hiyuune 50834 2566659 Scribunto text/plain local export = {} local force_cat = false local require_when_needed = require("Module:utilities/require when needed") local headword_module = "Module:headword" local headword_utilities_module = "Module:headword utilities" local JSON_module = "Module:JSON" local languages_module = "Module:languages" local parameters_module = "Module:parameters" local scripts_module = "Module:scripts" local table_module = "Module:table" local m_string_utilities = require("Module:string utilities") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local deep_equals = require_when_needed(table_module, "deepEquals") local shallow_copy = require_when_needed(table_module, "shallowCopy") local uupper = m_string_utilities.upper local ucfirst = m_string_utilities.ucfirst local ulower = m_string_utilities.lower local ulen = m_string_utilities.len local insert = table.insert local per_language_defaults = { de = {g = "n"}, en = {pl_ending = "s,'s"}, it = {g = "f,m", pl_ending = "_"}, pt = {g = "m"}, } local function ine(val) if not val then return val end val = mw.text.trim(val) if val == "" then return nil else return val end end local function add_initial_colon_to_term(term) if term ~= "-" and term ~= "+" and not term:find("^:") then -- Make sure we link to the specified term even if it has a diacritic that would normally be stripped off. term = ":" .. term end return term end local function resolve_plus(termobjs, default, paramname) local saw_plus = false for _, termobj in ipairs(termobjs) do if termobj.term == "+" then saw_plus = true break end end if not saw_plus then return termobjs end if not default then error(("Saw '+' for param '%s' but no default available"):format(paramname)) end if type(default) == "string" then for _, termobj in ipairs(termobjs) do if termobj.term == "+" then termobj.term = default end end return termobjs end if type(default) ~= "table" then error("Internal error: `default` should be nil, string or list of strings") end local resolved_termobjs = {} for _, termobj in ipairs(termobjs) do if termobj.term == "+" then for _, defval in ipairs(default) do defval = shallow_copy(defval) require(headword_utilities_module).combine_termobj_decorations(defval, termobj) insert(resolved_termobjs, defval) end else insert(resolved_termobjs, termobj) end end return resolved_termobjs end local function parse_equivalent(value, default, paramname, no_prefix_colon) if not value then return nil end local termobjs if value == "+" then -- optimization to avoid loading [[Module:headword utilities]] if not default then error(("Saw '+' for param '%s' but no default available"):format(paramname)) end if type(default) == "string" then termobjs = {{term = default}} else if type(default) ~= "table" then error("Internal error: `default` should be nil, string or list of term objects") end termobjs = default end elseif value:find("[,<]") then termobjs = require(headword_utilities_module).parse_term_with_modifiers { val = value, paramname = paramname, splitchar = ",", include_mods = {"tr", "ts", "t", "sc"}, } else termobjs = {{ term = value }} end termobjs = resolve_plus(termobjs, default, paramname) for _, termobj in ipairs(termobjs) do if not no_prefix_colon then termobj.term = add_initial_colon_to_term(termobj.term) end termobj.tr = "-" end return termobjs end --[==[ Implementation of the letter headword template for a given language (e.g. {{tl|en-letter}}, {{tl|it-letter}} or {{tl|sh-letter}}). Supports the following invocation parameters: ; {{para|pos}} : The plural part of speech to use; defaults to {{cd|letters}}. Other possibilities are e.g. {{cd|numeral symbols}} for numeral symbols (letters used for list items). ; {{para|lang}} : The language code of the language of the headword template. Omit for language-agnostic {{tl|letter}}. ; {{para|sc}} : Specify the default script code. Rarely needs to be given. ; {{para|g}} : Specify the default gender(s) of the letter. Multiple comma-separated values are allowed, along with qualifier, label and reference inline modifiers. See [[Module:gender and number]] for more information, including the allowed values. The default(s) can be overridden using the {{para|g}} template parameter. ; {{para|pl_ending}} ... : Specify the default ending(s) of the plural form(s) of the letter. Multiple items should be comma-separated, and qualifier, label, reference, transliteration and gloss inline modifiers are allowed. Use the value {{cd|_}} to indicate a null ending. The default(s) can be overridden using the {{para|pl}} template parameter. ; {{para|allow_tr|1}} : Specify that the template allows the {{para|tr}} parameter to be given for specifying transliteration. ]==] function export.show(frame) local list_param = {list = true, disallow_holes = true} local boolean_param = {type = "boolean"} local frame_args = frame.args local parent_args = frame:getParent().args -- Extract language and any per-language defaults. If they exist, clone the frame args and set the defaults into the -- frame args before parsing. If there is no language specified at either the invocation or template level, we'll -- get an error later. local lang = ine(frame_args.lang) or ine(parent_args[1]) if lang and per_language_defaults[lang] then local cloned_frame_args = {} for k, v in pairs(frame_args) do cloned_frame_args[k] = v end local defaults = per_language_defaults[lang] for k, v in pairs(defaults) do if cloned_frame_args[k] == nil then cloned_frame_args[k] = v end end frame_args = cloned_frame_args end local iargs = require(parameters_module).process(frame_args, { pos = {default = "Chữ cái"}, lang = {type = "language", template_default = "und"}, sc = {type = "script"}, g = {type = "genders"}, pl_ending = true, allow_tr = boolean_param, }) local allowed_types = {"upper", "lower", "mixed", "allcaps", "nocase"} local params = { g = {type = "genders"}, sc = {type = "script"}, type = {set = allowed_types}, head = list_param, upper = true, lower = true, mixed = true, allcaps = true, pl = true, nopl = boolean_param, id = true, sort = true, pagename = true, modern = true, } local langparam, otherparam if not iargs.lang then langparam = 1 otherparam = 2 params[langparam] = {type = "language", required = true, template_default = "und"} else otherparam = 1 end params[otherparam] = list_param if iargs.g and iargs.g[1] then params.nog = boolean_param end if iargs.allow_tr or not iargs.lang then params.tr = list_param end if not iargs.lang then params.ts = list_param end local args = require(parameters_module).process(parent_args, params) local others = {} for i, otherspec in ipairs(args[otherparam]) do local lang_sc, rest = otherspec:match("^([a-zA-Z0-9-]+):([^ ].*)$") if not lang_sc then error(("Expected other-lang or other-script param %s=%s to begin with a language code or script code followed by a colon and no space"):format(i + otherparam - 1, otherspec)) end local obj = require(scripts_module).getByCode(lang_sc) local objtype if obj then objtype = "script" else obj = require(languages_module).getByCode(lang_sc, nil, "allow etym") if obj then objtype = "language" else error(("Unrecognized language or script '%s' in %s=%s"):format(lang_sc, i + otherparam - 1, otherspec)) end end insert(others, { obj = obj, objtype = objtype, value = rest, }) end local pagename = args.pagename or mw.loadData("Module:headword/data").pagename if args.type then if args.type ~= "upper" and args.type ~= "lower" and args.type ~= "mixed" and args.type ~= "nocase" then error(("Unrecognized value for type '%s'; should be one of 'upper', 'lower', 'mixed' or 'nocase'"):format( args.type)) end end local lang = langparam and args[langparam] or iargs.lang local sc = args.sc or iargs.sc or lang:findBestScript(pagename) local data = { lang = lang, sc = sc, pos_category = iargs.pos, categories = {}, pagename = pagename, inflections = {}, id = args.id, sort_key = args.sort, heads = args.head, translits = args.tr, transcriptions = args.ts, force_cat_output = force_cat, genders = not args.nog and (args.g and args.g[1] and args.g or iargs.g) or nil, categories = {}, -- Disable "terms with redundant script codes" and "terms with non-redundant manual script codes" -- categories. We always specify the script and the categories simply aren't useful in this case; having -- them just clutters the categories with letter entries. no_script_code_cat = true, } -- All letters can also be used as nouns ("There are two f's in that word"). insert(data.categories, "Danh từ " .. lang:getFullName()) if sc:getCode() ~= "None" then insert(data.categories, "Ký tự " .. sc:getCategoryName()) end local uppage = uupper(pagename) local lopage = ulower(pagename) local ucfirstpage = ucfirst(lopage) local function insert_inflection(termobjs, label) if not termobjs or not termobjs[1] then return end if termobjs[1].term == "-" then require(headword_utilities_module).insert_inflection { headdata = data, terms = termobjs, label = label, } else termobjs.label = label insert(data.inflections, termobjs) end end local typ = args.type if not typ then if uppage == lopage then typ = "nocase" elseif data.pagename == ucfirstpage then typ = "upper" elseif data.pagename == uppage then typ = "allcaps" elseif data.pagename == lopage then typ = "lower" else typ = "mixed" end end if typ == "nocase" then if args.upper or args.lower or args.mixed or args.allcaps then error("Can't specify upper=, lower=, mixed= or allcaps= when letter has no case") end insert(data.inflections, {label = "no case"}) else local upper = parse_equivalent(args.upper or "+", ucfirstpage, "upper") local lower = parse_equivalent(args.lower or "+", lopage, "lower") local allcaps = parse_equivalent(args.allcaps or ulen(pagename) == 1 and args.upper or "+", uppage, "allcaps") local mixed = parse_equivalent(args.mixed, nil, "mixed") local pagenameobj = {{term = ":" .. pagename, tr = "-"}} if typ == "upper" then if args.upper then error("Already uppercase; can't specify upper=") end insert(data.inflections, {label = "[[Phụ lục:Chữ hoa|chữ hoa]]"}) insert_inflection(lower, "chữ thường") if not deep_equals(pagenameobj, allcaps) then insert_inflection(allcaps, "[[Phụ lục:Chữ hoa|viết hoa toàn bộ]]") end insert_inflection(mixed, "mixed case") elseif typ == "lower" then if args.lower then error("Already lowercase; can't specify lower=") end insert(data.inflections, {label = "chữ thường"}) if deep_equals(upper, allcaps) then if ulen(pagename) == 1 then insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]]") else insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]] và viết hoa toàn bộ") end else insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]]") insert_inflection(allcaps, "[[Phụ lục:Chữ hoa|viết hoa toàn bộ]]") end insert_inflection(mixed, "mixed case") elseif typ == "allcaps" then if args.allcaps then error("Already all-caps; can't specify allcaps=") end insert(data.inflections, {label = "[[Phụ lục:Chữ hoa|viết hoa toàn bộ]]"}) if not deep_equals(pagenameobj, upper) then insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]]") end insert_inflection(lower, "chữ thường") insert_inflection(mixed, "mixed case") else if args.mixed then error("Already mixed-case; can't specify mixed=") end insert(data.inflections, {label = "mixed case"}) insert_inflection(lower, "chữ thường") if deep_equals(upper, allcaps) then insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]] và viết hoa toàn bộ") else insert_inflection(upper, "[[Phụ lục:Chữ hoa|chữ hoa]]") insert_inflection(allcaps, "[[Phụ lục:Chữ hoa|viết hoa toàn bộ]]") end end end if args.nopl then insert(data.inflections, {label = "no plural"}) elseif args.pl or iargs.pl_ending then local default_pls if iargs.pl_ending then default_pls = parse_equivalent(iargs.pl_ending, nil, "pl_ending", "no_prefix_colon") for _, pl_ending in ipairs(default_pls) do if pl_ending.term == "_" then pl_ending.term = pagename else pl_ending.term = pagename .. pl_ending.term end end end local pls = parse_equivalent(args.pl or "+", default_pls, "pl") if not pls[2] and pls[1].term == ":" .. pagename then require(headword_utilities_module).insert_fixed_inflection { headdata = data, originating_term = pls[1], label = glossary_link("invariable"), } else insert_inflection(pls, "plural") end end if args.modern then local termobjs = parse_equivalent(args.modern, nil, "modern") insert_inflection(termobjs, "modern equivalent") end if others[1] then for _, other in ipairs(others) do local termobjs = parse_equivalent(other.value, nil, other.obj:getCode()) for _, termobj in ipairs(termobjs) do if other.objtype == "language" then termobj.lang = other.obj else termobj.sc = other.obj end end insert_inflection(termobjs, other.obj:getCanonicalName() .. " equivalent") end end if args.json then return require(JSON_module).toJSON(data) end return require(headword_module).full_headword(data) end return export 35w3fbk6kpoqgr09rufus16i20jlkxv Mô đun:typing-aids/data/Armi 828 402988 2566420 2368832 2026-09-25T13:50:00Z Hiyuune 50834 Hiyuune đã đổi [[Mô đun:typing-aids/Armi]] thành [[Mô đun:typing-aids/data/Armi]] 2368832 Scribunto text/plain local U = mw.ustring.char local circumflex = U(0x302) -- circumflex local macron_below = U(0x331) -- macron below local data = { ["ʾ"] = "𐡀", ["'"] = "𐡀", -- aleph ["b"] = "𐡁", -- beth ["g"] = "𐡂", -- gimel ["d"] = "𐡃", -- daleth ["h"] = "𐡄", -- he ["w"] = "𐡅", -- waw ["z"] = "𐡆", -- zayin ["ḥ"] = "𐡇", -- heth ["ṭ"] = "𐡈", -- teth ["y"] = "𐡉", -- yodh ["k"] = "𐡊", -- khaph ["l"] = "𐡋", -- lamedh ["m"] = "𐡌", -- mem ["n"] = "𐡍", -- nun ["s"] = "𐡎", -- samekh ["ʿ"] = "𐡏", ["3"] = "𐡏", -- ayin ["p"] = "𐡐", -- pe ["c"] = "𐡑", ["ṣ"] = "𐡑", -- sadhe ["q"] = "𐡒", -- qoph ["r"] = "𐡓", -- resh ["š"] = "𐡔", ["s" .. circumflex] = "𐡔", -- shin ["t"] = "𐡕", -- taw [" "] = "𐡗", -- section sign ["1"] = "𐡘", -- one ["2"] = "𐡙", -- two ["3"] = "𐡚", -- three ["10"] = "𐡛", -- ten ["20"] = "𐡜", -- twenty ["100"] = "𐡝", -- one hundred ["1000"] = "𐡞", -- one thousand ["10000"] = "𐡟", -- ten thousand } return require "Module:typing-aids/data helpers".split_single_and_multi_char(data) o4rt1cz7do8dthkwsobqip54awjswmz अकाङ्क्षीत् 0 403598 2566416 2374357 2026-09-25T13:45:17Z Hiyuune 50834 /* Tiếng Phạn */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566416 wikitext text/x-wiki =={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|pron}}=== {{sa-IPA}} ==={{section|v}}=== {{sa-verb|काङ्क्ष्|||aorist}} # {{infl of|sa|काङ्क्ष्||aorist}} ===={{section|forms}}==== {{sa-conj|aor}} ctxbb8iwr1lho198yxfl0qbto4c8ant अर्धमास 0 404128 2566419 2377462 2026-09-25T13:46:16Z Hiyuune 50834 /* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566419 wikitext text/x-wiki =={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|etym}}=== {{dercat|sa|iir-pro|ine-pro}} {{com+|sa|अर्ध|मास|t1=một nửa|t2=tháng}}. ==={{section|pron}}=== * {{sa-IPA|a=4}} ==={{section|n}}=== {{sa-noun|tr=ardhamāsá|m}} # [[hai|Hai]] [[tuần lễ]], [[mười lăm]] [[ngày]]. ===={{section|decl}}==== {{sa-decl-noun-m|ardhamāsá}} ===={{section|desc}}==== * {{desc|pi|aḍḍhamāsa}} * {{desc|pra|𑀅𑀤𑁆𑀥𑀫𑀸𑀲}} * Nam: ** {{desc|si|අඩමස}} ==={{section|ref}}=== * {{R:MW|92}} i3ntgxr4fm1d6imcvo5fr4jsw5ifz4h अन्त्र 0 404172 2566418 2379841 2026-09-25T13:45:40Z Hiyuune 50834 /* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566418 wikitext text/x-wiki =={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|etym}}=== {{etymon|sa|id=ruột|:inh|inc-pro:*Hántram<ety:inh<iir-pro:*Hántram<ety:inh<ine-pro:*h₁éntrom<ety:af<*h₁én><*-trom>>>>>>|tree=1|text=++}} Cùng gốc với {{cog|grc|ἔντερον}}, {{cog|ru|я́тро}}, {{cog|sh|је̏тра}}. ==={{section|pron}}=== * {{sa-IPA|novedic=1}} ==={{section|n}}=== {{sa-noun|n}} # {{altform|sa|आ॒न्त्र|from=cổ điển|from2=sử thi|t=[[ruột]]}} ===={{section|decl}}==== {{sa-decl-noun-n|novedic=1}} ===={{section|desc}}==== * {{desc|pi|anta}} ** {{desc|km|អន្តៈ|bor=1}} * {{desc|pra|𑀅𑀁𑀢}} ; Từ vay mượn: * {{desc|bn|অন্ত্র|bor=1}} * {{desc|hi|अंत्र|bor=1}} ==={{section|ref}}=== * {{R:Apte}} * {{R:MW|44}} g1xnbhm7hxc4n8ok6ej8xlr1biust3s अकर् 0 405158 2566417 2401013 2026-09-25T13:45:32Z Hiyuune 50834 /* Động từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566417 wikitext text/x-wiki =={{langname|sa}}== ==={{section|alternative script}}=== {{sa-alt}} ==={{section|etym}}=== {{root|sa|ine-pro|*kʷer-}} Từ {{inh|sa|inc-pro|*Hákart}}, từ {{inh|sa|iir-pro|*Hákart}}, từ {{inh|sa|ine-pro||*kʷér-t ~ *kʷr-ént}} với tạo mới tiền tố {{mention|ine-pro||*h₁é-}}, từ {{mention|ine-pro|*kʷer-}}.<ref>{{R:ine:LIV|head=*k<sup>u̯</sup>er-|page=391}}</ref> ==={{section|pron}}=== {{sa-IPA|a=1}} ==={{section|v}}=== {{sa-verb|tr=ákar|कृ||P|aorist}} {{tlb|sa|Vedic}} # {{inflection of|sa|कृ||aorist}} #: {{syn|sa|अकार्षीत्|tr=ákārṣīt|अकरत्|tr2=ákarat}} ===={{section|forms}}==== {{sa-conj|aor|ákar|ákṛta}} Thể tự vị ở ngôi thứ ba số ít {{mention|sa||अस्कृत}} xuất hiện trong Rigveda 10,127,3. ==={{section|ref}}=== <references/> d6r1jftyzfivi251r0jh31rec9qgsbm Mô đun:njh-conj 828 411924 2566603 2513574 2026-09-26T03:51:13Z Hiyuune 50834 2566603 Scribunto text/plain local export = {} local m_str_utils = require("Module:string utilities") local gsub = m_str_utils.gsub local len = m_str_utils.len local match = m_str_utils.match local sub = m_str_utils.sub local find = m_str_utils.find local function make_forms(input) -- Functions to generate forms from stems local function present(stem, tam) local pres_form if tam == "perf" or tam == "abil" then pres_form = stem .. "a" else pres_form = gsub(stem .. "ala", "%(t%)ala$", "tala") pres_form = gsub(pres_form, "aala$", "ala") end return pres_form end local function past(stem) return stem .. "cho" end local function future(stem) local fut_form if find(stem, "[aeiouü]$") or find(stem, "%(t%)$") then fut_form = stem .. "v" else fut_form = stem .. "ü" fut_form = gsub(fut_form, "nü$", "mü") fut_form = gsub(fut_form, "([kp])ü$", "%1vü") end return fut_form end local function imperative(stem, tam) if tam == "simp" or tam == "caus" then local imp_form = stem .. "a" imp_form = gsub(imp_form, "aa$", "a") imp_form = gsub(imp_form, "%(t%)a$", "ta") return imp_form else return nil end end -- Process stems with final -t, part 1; the -t appears only in the imperative and present, nowhere else input = gsub(input, "t$", "(t)") -- Table of stems local stems = { ["simp"] = input, ["caus"] = input .. "tok", ["perf"] = input .. "thak", ["abil"] = input .. "khok", } -- Create table of output forms local out_forms = {} for tam, stem in pairs(stems) do out_forms["pres_" .. tam] = present(stem, tam) out_forms["past_" .. tam] = past(stem) out_forms["fut_" .. tam] = future(stem) out_forms["imp_" .. tam] = imperative(stem, tam) end -- Process t-final stems, part 2 for cell, form in pairs(out_forms) do out_forms[cell] = gsub(form, "%(t%)", "") end return out_forms end function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, } local args = require("Module:parameters").process(parent_args, params) local input = args[1] or mw.loadData("Module:headword/data").pagename local stem = gsub(input, "a$", "") local table = mw.getCurrentFrame():expandTemplate{ title = "njh-conj-table", args = make_forms(stem), } return table end return export 51a88sgd23da1bzdx602wutkdh37tty sumbulere 0 412170 2566624 2514043 2026-09-26T09:20:52Z Kelly zhrm 58416 /* References */ 2566624 wikitext text/x-wiki =={{langname|ny}}== [[File:ASC Leiden - W.E.A. van Beek Collection - Dogon markets 40 - Just back from a stint in Abidjan, Domo shows his wealth at the market. Clothing, hat, umbrella. Tireli, Mali 1980.jpg|thumb|upright|Người đàn ông cầm ô tại [[Tireli]], [[Mali]].]] ==={{ĐM|etym}}=== {{ety|ny|:bor|sw:shumburere|tree=}} Vay mượn từ {{bor|ny|sw|shumburere}}, từ {{der|ny|pt|sombreiro}}. ==={{ĐM|pron}}=== * {{ny-IPA|súmbúlere}} ==={{ĐM|noun}}=== {{ny-noun|súmbúlere|9}} hoặc {{ny-noun|súmbúlere|9/6}} # {{lb|ny|dated}} [[ô|Ô]], [[dù]]. ===={{ĐM|syn}}==== * {{l|ny|ambulera}} ==={{ĐM|ref}}=== * {{R:ny:Paas:2016|page=503}} 0c8pdespaestv7eqmlunmuhi9dju1cj bá khí 0 415956 2566396 2566392 2026-09-25T12:05:04Z Hiyuune 50834 /* Tiếng Việt */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566396 wikitext text/x-wiki =={{langname|vi}}== ==={{section|etymology}}=== {{vi-etym-sino|播棄}}. ==={{section|pron}}=== {{vi-pron}} ==={{section|adj}}=== {{vi-adj}} # {{lb|vi|Ít dùng}} Chỉ [[khí phách]] và phong thái [[uy nghi]] trong [[nhân cách]]. fva9lb7zb9fesp9f6tywhjywbbten4q 2566426 2566396 2026-09-25T15:14:14Z TheHighFighter2 42988 /* Tiếng Việt */ 2566426 wikitext text/x-wiki =={{langname|vi}}== ==={{section|etymology}}=== {{vi-etym-sino|霸氣}}. ==={{section|pron}}=== {{vi-pron}} ==={{section|noun}}=== {{vi-noun}} # [[thần thái|Thần thái]], [[khí chất]] [[áp đảo]] hay [[sức hút]] đặc biệt phát ra từ một cá nhân, nhân vật. #* {{quote-web|vi|date=27-01-2014|title=Đánh giá: Pokemon X/Y - Hồi sinh một "huyền thoại"|site=Thanh Niên|url=https://thanhnien.vn/danh-gia-pokemon-xy-hoi-sinh-mot-quothuyen-thoaiquot-1851118150.htm|passage=Ví dụ như MegaCharizard X giờ đây khoác lên bộ cánh đen sẫm và ngọn lửa xanh bất diệt hoặc MegaMewtwo X trở nên cơ bắp cuồn cuộn, '''bá khí''' ngập tràn.}} #* {{quote-web|vi|date=6-6-2019|author=Ngọc Nhi|title=‘Trùm, cớm và ác quỷ’ - chuyến đi săn kịch tính, bạo lực và hài hước|site=Znews|url=https://znews.vn/trum-com-va-ac-quy-chuyen-di-san-kich-tinh-bao-luc-va-hai-huoc-post953937.html|passage=Còn Dong-Soo là ông trùm có vẻ ngoài thâm trầm nhưng đầy '''bá khí''', với phong cách làm việc lặng lẽ, hiệu quả, và không kém phần tàn nhẫn.}} ==={{section|adj}}=== {{vi-adj}} # {{lb|vi|từ lóng Internet}} [[ngầu|Ngầu]], [[chất]]. #: {{ux|vi|'''Bá khí''' quá mấy em ơi!}} #: {{ux|vi|Ní nào đậu quả xe '''bá khí''' vãi.}} ==={{section|ref}}=== * {{Chú thích web|date=19-09-2026|author=Dương Kiều (tổng hợp)|title="Bá khí" là gì, có nguồn gốc từ đâu mà thành meme phủ sóng khắp mạng xã hội?|site=Hoa Học Trò Online|url=https://hoahoctro.tienphong.vn/ba-khi-la-gi-co-nguon-goc-tu-dau-ma-thanh-meme-phu-song-khap-mang-xa-hoi-post1877363.tpo}} p8gvdcqt57o1vsw8rni404jp2701f32 𐰘𐰃𐰢𐱁𐰴 0 417162 2566621 2564926 2026-09-26T09:18:33Z Kelly zhrm 58416 /* {{section|etym}} */ 2566621 wikitext text/x-wiki =={{langname|otk}}== ==={{section|etym}}=== {{inh+|otk|trk-pro|*yïmĺčak|t=mềm}}. Cùng gốc với {{cog|cv|ҫемҫе}}, {{cog|tr|yumuşak}}, {{cog|ba|йомшаҡ}}, {{cog|sah|сымнаҕас}}. ==={{section|adj}}=== {{head|otk|Tính từ|tr=yïmšaq}} # [[mềm|Mềm]]. ==={{section|ref}}=== * {{R:otk:Tekin:1968|entry=yimšaq|page=403}} * {{R:trk:Clauson|entry=yumşa:k|page=938}} * {{R:trk-pro:SDM|*jɨm-ĺča-k|1024}} 86ne2hnqv56x9o54axodts7f629aozq habben 0 418003 2566397 2026-09-25T12:07:09Z Hiyuune 50834 Trang mới: “{{also|Habben}} =={{langname|enm}}== ==={{section|v}}=== {{head|enm|Động từ|var=1}} # {{alt form|enm|haven|id=có|t=có}} =={{langname|sv}}== ==={{section|n}}=== {{head|sv|Biến thể hình thái danh từ}} # {{noun form of|sv|habb||def|s}}” 2566397 wikitext text/x-wiki {{also|Habben}} =={{langname|enm}}== ==={{section|v}}=== {{head|enm|Động từ|var=1}} # {{alt form|enm|haven|id=có|t=có}} =={{langname|sv}}== ==={{section|n}}=== {{head|sv|Biến thể hình thái danh từ}} # {{noun form of|sv|habb||def|s}} ph61oehdb0mwmoiu23495g9rpcoau17 hafen 0 418004 2566398 2026-09-25T12:09:29Z Hiyuune 50834 Trang mới: “{{also|Häfen|Hafen}} =={{langname|en}}== ==={{section|alt}}=== * {{alter|ang|ġehafen|hæfen}} ==={{section|etym}}=== Từ {{inh|ang|gem-pro|*habanaz}}, phân từ quá khứ của {{der|ang|gem-pro|*habjaną}}. ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ}} # {{past participle of|ang|hebban}} ===={{section|desc}}==== * {{desc|enm|hoven}} ** {{desc|en|hoven|pos=past participle}} ===={{section|ref}}==== * {{R:ang:BT|hebban|ref=018570}} =={{langname|enm}}…” 2566398 wikitext text/x-wiki {{also|Häfen|Hafen}} =={{langname|en}}== ==={{section|alt}}=== * {{alter|ang|ġehafen|hæfen}} ==={{section|etym}}=== Từ {{inh|ang|gem-pro|*habanaz}}, phân từ quá khứ của {{der|ang|gem-pro|*habjaną}}. ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ}} # {{past participle of|ang|hebban}} ===={{section|desc}}==== * {{desc|enm|hoven}} ** {{desc|en|hoven|pos=past participle}} ===={{section|ref}}==== * {{R:ang:BT|hebban|ref=018570}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|var=1}} # {{alt form|enm|havene}} o1m8nn325yi9d6jdmtxz1kgxrte7ycf 2566399 2566398 2026-09-25T12:10:04Z Hiyuune 50834 /* Tiếng Anh */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566399 wikitext text/x-wiki {{also|Häfen|Hafen}} =={{langname|ang}}== ==={{section|alt}}=== * {{alter|ang|ġehafen|hæfen}} ==={{section|etym}}=== Từ {{inh|ang|gem-pro|*habanaz}}, phân từ quá khứ của {{der|ang|gem-pro|*habjaną}}. ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ}} # {{past participle of|ang|hebban}} ===={{section|desc}}==== * {{desc|enm|hoven}} ** {{desc|en|hoven|pos=past participle}} ===={{section|ref}}==== * {{R:ang:BT|hebban|ref=018570}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|var=1}} # {{alt form|enm|havene}} 3el07r5i6e1njrvsjiqe3h188mi9006 2566427 2566399 2026-09-25T15:19:36Z TheHighFighter2 42988 /* Hậu duệ */ 2566427 wikitext text/x-wiki {{also|Häfen|Hafen}} =={{langname|ang}}== ==={{section|alt}}=== * {{alter|ang|ġehafen|hæfen}} ==={{section|etym}}=== Từ {{inh|ang|gem-pro|*habanaz}}, phân từ quá khứ của {{der|ang|gem-pro|*habjaną}}. ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ}} # {{past participle of|ang|hebban}} ===={{section|desc}}==== * {{desc|enm|hoven}} ** {{desc|en|hoven|pos=phân từ quá khứ}} ===={{section|ref}}==== * {{R:ang:BT|hebban|ref=018570}} =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Danh từ|var=1}} # {{alt form|enm|havene}} 4f3mq4ezsc9vutllcxvp5rvdg5hvqkq gehafen 0 418005 2566400 2026-09-25T12:10:54Z Hiyuune 50834 Trang mới: “=={{langname|ang}}== ==={{section|etym}}=== Từ {{af|ang|ġe-|hafen}}. ==={{section|pron}}=== * {{ang-IPA|ġehafen}} ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ|head=ġehafen}} # {{alternative form of|ang|ġehæfen}} ===={{section|decl}}==== {{ang-adecl|ġehafen}} ===={{section|desc}}==== * {{desc|enm|ihoven|ihove|iheoven|iheven}}” 2566400 wikitext text/x-wiki =={{langname|ang}}== ==={{section|etym}}=== Từ {{af|ang|ġe-|hafen}}. ==={{section|pron}}=== * {{ang-IPA|ġehafen}} ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ|head=ġehafen}} # {{alternative form of|ang|ġehæfen}} ===={{section|decl}}==== {{ang-adecl|ġehafen}} ===={{section|desc}}==== * {{desc|enm|ihoven|ihove|iheoven|iheven}} qfu8lhmy3hlgj4o7x6ipqu9rl58mb0y gehæfen 0 418006 2566401 2026-09-25T12:11:44Z Hiyuune 50834 + ang 2566401 wikitext text/x-wiki =={{langname|ang}}== ==={{section|alt}}=== * {{alter|ang|ġehafen|ġehefen}} * {{alter|ang|ġehefed||Hạ Saxon Tây}} ==={{section|pron}}=== * {{ang-IPA|ġehæfen}} ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ|head=ġehæfen}} # {{infl of|ang|hebban||part|past}} # {{infl of|ang|ġehebban||part|past}} i6txgd0d6tmmdqwx225skkx8iwufegr gehefen 0 418007 2566402 2026-09-25T12:12:28Z Hiyuune 50834 + ang 2566402 wikitext text/x-wiki =={{langname|ang}}== ==={{section|pron}}=== * {{ang-IPA|ġehefen}} ==={{section|ptcp}}=== {{head|ang|Phân từ quá khứ|head=ġehefen}} # {{alternative form of|ang|ġehæfen}} fbtfspr83neie71s6cwdzy3i721d3x7 hebban 0 418008 2566403 2026-09-25T12:17:08Z Hiyuune 50834 + ang 2566403 wikitext text/x-wiki =={{langname|ang}}== ==={{section|alt}}=== * {{alter|ang|heffan}} ==={{section|etym}}=== {{etymon|ang|:inh|gmw-pro:*habbjan<id:nâng lên>|id=nâng lên}} Từ {{inh|ang|gmw-pro|*habbjan}}, từ {{inh|ang|gem-pro|*habjaną||nâng lên}}. ==={{section|pron}}=== * {{ang-IPA|hebban}} * {{rhymes|ang|eb.bɑn|s=2}} ==={{section|v}}=== {{ang-verb}} # [[giơ|Giơ]] lên; [[nhấc]] lên; [[nâng]] lên. ===={{section|forms}}==== {{ang-conj|hebban<s6/2sg_pres_indc:hefst/3sg_pres_indc:hefþ/1sg_past_indc:hōf,hefde/2sg_past_indc:hōfe,hefdest/3sg_past_indc:hōf,hefde/pl_past_indc:hōfon,hefdon/sg_past_subj:hōfe,hefde/pl_past_subj:hōfen,hefden/pp:hæfen,hafen,hefen,hefed>}} {{ang-conj-anglian|hebban<s6>}} ====Ghi chú chia động từ==== * Dạng thì quá khứ ⟨hefd-⟩ và thì phân từ quá khứ {{m|ang|ġehefed}} rõ ràng thuộc phương ngữ Saxon Tây hậu kỳ. ===={{section|drv}}==== {{col|ang|āhebban|ġehebban|oferhebban|onhebban|upāhebban|uphebban}} ===={{section|rel}}==== {{col|ang|habban|hafetian|hæft|hefiġ|behōf}} ===={{section|desc}}==== * {{desctree|enm|heven}} p2e82gff4y2rk9pte2zclt0x3miyytx hebbenne 0 418009 2566404 2026-09-25T12:18:35Z Hiyuune 50834 + ang 2566404 wikitext text/x-wiki =={{langname|ang}}== ==={{section|pron}}=== * {{ang-IPA|hebbenne}} ==={{section|v}}=== {{head|ang|Biến thể hình thái động từ}} # {{infl of|ang|hebban||biến tố|inf}} 1b327m0trhxm5q6aubzqdn6sf8p4ofd hebbe 0 418010 2566405 2026-09-25T12:23:38Z Hiyuune 50834 + 2566405 wikitext text/x-wiki =={{langname|ang}}== ==={{section|pron}}=== * {{ang-IPA|hebbe}} ==={{section|v}}=== {{head|ang|Biến thể hình thái động từ}} # {{infl of|ang|hebban||indc|pres|ở|1|s}} =={{langname|enm}}== ==={{section|v}}=== {{head|enm|Động từ|var=1}} # {{lb|enm|Devon|Gloucs|K|Somerset}} {{alt form|enm|heven}} =={{langname|nl}}== ==={{section|pron}}=== * {{IPA|nl|/ˈɦɛ.bə/}} * {{audio|nl|Nl-hebbe.ogg}} ==={{section|v}}=== {{head|nl|Biến thể hình thái động từ}} # {{infl of|nl|hebben||sub|pres|s}} =={{langname|dum}}== ==={{section|v}}=== {{head|dum|Biến thể hình thái động từ}} # {{inflection of|dum|hebben||indc|pres|ở|1|s|;|subj|pres|ở|1//3|s}} =={{langname|nds}}== ==={{section|v}}=== {{head|nds|Động từ}} {{tlb|nds|eastern|_|Low Prussian}} # {{alternative form of|nds|hebben}} hch7rlrhwx6tyt19lv6uyw2sj8rphmx hefenn 0 418011 2566406 2026-09-25T12:25:19Z Hiyuune 50834 Trang mới: “=={{langname|enm}}== ==={{section|v}}=== {{head|enm|Động từ|var=1}} # {{lb|enm|Orm}} {{alt form|enm|heven}}” 2566406 wikitext text/x-wiki =={{langname|enm}}== ==={{section|v}}=== {{head|enm|Động từ|var=1}} # {{lb|enm|Orm}} {{alt form|enm|heven}} sactz31r3a5ix89vm1rz09otg42ue7s hevinge 0 418012 2566407 2026-09-25T12:26:17Z Hiyuune 50834 Trang mới: “=={{langname|enm}}== ==={{section|n}}=== {{head|enm|Động từ|var=1}} # {{alt form|enm|hevynge}}” 2566407 wikitext text/x-wiki =={{langname|enm}}== ==={{section|n}}=== {{head|enm|Động từ|var=1}} # {{alt form|enm|hevynge}} j4eyy4omy8g7wpxwzjoct4lzyv9ah0m پریدن 0 418013 2566408 2026-09-25T12:31:33Z Hiyuune 50834 Trang mới: “{{also|تزيدن|بریدن|پزیدن}} =={{langname|fa}}== ==={{section|etym}}=== Từ {{uder|fa|pal|𐭯𐭫𐭣𐭭𐭠|tr=pldn'|ts=parrīdan|sc=Phlv|t=bay}}, từ {{inh|fa|ine-pro|*prew-|t=nhảy}}. Cùng gốc với {{cog|kmr| firîn}}, {{cog|ckb|فْڕین}}, {{cog|zza|perayen}}, {{cog|bal|پرگ|tr=parrag}}. Các từ khác cùng gốc {{w|Ngữ hệ Ấn-Âu|ngữ hệ Ấn-Âu}} bao gồm {{cog|sa|प्रवते|t=nhảy}}, {{cog|ru|прыгать}}, {{c…” 2566408 wikitext text/x-wiki {{also|تزيدن|بریدن|پزیدن}} =={{langname|fa}}== ==={{section|etym}}=== Từ {{uder|fa|pal|𐭯𐭫𐭣𐭭𐭠|tr=pldn'|ts=parrīdan|sc=Phlv|t=bay}}, từ {{inh|fa|ine-pro|*prew-|t=nhảy}}. Cùng gốc với {{cog|kmr| firîn}}, {{cog|ckb|فْڕین}}, {{cog|zza|perayen}}, {{cog|bal|پرگ|tr=parrag}}. Các từ khác cùng gốc {{w|Ngữ hệ Ấn-Âu|ngữ hệ Ấn-Âu}} bao gồm {{cog|sa|प्रवते|t=nhảy}}, {{cog|ru|прыгать}}, {{cog|en|frolic}}, và {{cog|de|fröhlich}}. {{false cognate|ta|பற|t=bay}}, {{ncog|ml|പറക്കുക|pos=như trên}}. ==={{section|pron}}=== {{fa-IPA|parī`dan}} ==={{section|v}}=== {{fa-regional|پریدن|پریدن|паридан}} {{fa-verb|tr=paridan|prstem=پر|tr2=par}} # {{lb|fa|intransitive}} [[bay|Bay]]. #: {{syn|fa|پرواز کردن|tr=parvâz kardan}} # {{lb|fa|intransitive}} [[nhảy|Nhảy]]. #: {{syn|fa|جستن|tr=jastan}} # {{lb|fa|transitive|colloquial|Iran}} [[tấn công|Tấn công]], [[lao vào]] ai đó. #: {{syn|fa|حمله کردن|tr1=hamle kardan|تاختن|tr2=tâxtan}} # {{lb|fa|intransitive|rare}} [[bay hơi|Bay hơi]]. #: {{syn|fa|تبخیر شدن|tr=tabxir šodan}} ===={{section|forms}}==== {{fa-conj|پرید|parid|پر|par}} {{prs-conj|پرید|parīd|پر|par}} ===={{section|drv}}==== * {{l|fa|پراندن|tr=parândan}} * {{l|fa|ورپریدن|tr=varparidan}} * {{l|fa|پرش|tr=pareš}} * {{l|fa|پرنده|tr=parande}} hnwykwr0q03zorgs47c798qcqyhii5y 2566409 2566408 2026-09-25T12:31:57Z Hiyuune 50834 /* Tiếng Ba Tư */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566409 wikitext text/x-wiki {{also|تزيدن|بریدن|پزیدن}} =={{langname|fa}}== ==={{section|etym}}=== Từ {{uder|fa|pal|𐭯𐭫𐭣𐭭𐭠|tr=pldn'|ts=parrīdan|sc=Phlv|t=bay}}, từ {{inh|fa|ine-pro|*prew-|t=nhảy}}. Cùng gốc với {{cog|kmr| firîn}}, {{cog|ckb|فْڕین}}, {{cog|zza|perayen}}, {{cog|bal|پرگ|tr=parrag}}. Các từ khác cùng gốc {{w|Ngữ hệ Ấn-Âu|ngữ hệ Ấn-Âu}} bao gồm {{cog|sa|प्रवते|t=nhảy}}, {{cog|ru|прыгать}}, {{cog|en|frolic}}, và {{cog|de|fröhlich}}. {{false cognate|ta|பற|t=bay}}, {{ncog|ml|പറക്കുക|pos=idem}}. ==={{section|pron}}=== {{fa-IPA|parī`dan}} ==={{section|v}}=== {{fa-regional|پریدن|پریدن|паридан}} {{fa-verb|tr=paridan|prstem=پر|tr2=par}} # {{lb|fa|intransitive}} [[bay|Bay]]. #: {{syn|fa|پرواز کردن|tr=parvâz kardan}} # {{lb|fa|intransitive}} [[nhảy|Nhảy]]. #: {{syn|fa|جستن|tr=jastan}} # {{lb|fa|transitive|colloquial|Iran}} [[tấn công|Tấn công]], [[lao vào]] ai đó. #: {{syn|fa|حمله کردن|tr1=hamle kardan|تاختن|tr2=tâxtan}} # {{lb|fa|intransitive|rare}} [[bay hơi|Bay hơi]]. #: {{syn|fa|تبخیر شدن|tr=tabxir šodan}} ===={{section|forms}}==== {{fa-conj|پرید|parid|پر|par}} {{prs-conj|پرید|parīd|پر|par}} ===={{section|drv}}==== * {{l|fa|پراندن|tr=parândan}} * {{l|fa|ورپریدن|tr=varparidan}} * {{l|fa|پرش|tr=pareš}} * {{l|fa|پرنده|tr=parande}} 2p2lrhoatx7eajq4slpawbhdm3yc812 2566410 2566409 2026-09-25T12:32:12Z Hiyuune 50834 /* Động từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566410 wikitext text/x-wiki {{also|تزيدن|بریدن|پزیدن}} =={{langname|fa}}== ==={{section|etym}}=== Từ {{uder|fa|pal|𐭯𐭫𐭣𐭭𐭠|tr=pldn'|ts=parrīdan|sc=Phlv|t=bay}}, từ {{inh|fa|ine-pro|*prew-|t=nhảy}}. Cùng gốc với {{cog|kmr| firîn}}, {{cog|ckb|فْڕین}}, {{cog|zza|perayen}}, {{cog|bal|پرگ|tr=parrag}}. Các từ khác cùng gốc {{w|Ngữ hệ Ấn-Âu|ngữ hệ Ấn-Âu}} bao gồm {{cog|sa|प्रवते|t=nhảy}}, {{cog|ru|прыгать}}, {{cog|en|frolic}}, và {{cog|de|fröhlich}}. {{false cognate|ta|பற|t=bay}}, {{ncog|ml|പറക്കുക|pos=idem}}. ==={{section|pron}}=== {{fa-IPA|parī`dan}} ==={{section|v}}=== {{fa-regional|پریدن|پریدن|паридан}} {{fa-verb|tr=paridan|prstem=پر|tr2=par}} # {{lb|fa|intransitive}} [[bay|Bay]]. #: {{syn|fa|پرواز کردن|tr=parvâz kardan}} # {{lb|fa|intransitive}} [[nhảy|Nhảy]]. #: {{syn|fa|جستن|tr=jastan}} # {{lb|fa|transitive|colloquial|Iran}} [[tấn công|Tấn công]], [[lao]] [[vào]] ai đó. #: {{syn|fa|حمله کردن|tr1=hamle kardan|تاختن|tr2=tâxtan}} # {{lb|fa|intransitive|rare}} [[bay hơi|Bay hơi]]. #: {{syn|fa|تبخیر شدن|tr=tabxir šodan}} ===={{section|forms}}==== {{fa-conj|پرید|parid|پر|par}} {{prs-conj|پرید|parīd|پر|par}} ===={{section|drv}}==== * {{l|fa|پراندن|tr=parândan}} * {{l|fa|ورپریدن|tr=varparidan}} * {{l|fa|پرش|tr=pareš}} * {{l|fa|پرنده|tr=parande}} k240i6f9z3lhmrzzxpz2fcz7fum4xhq آفتاب‌پرست 0 418014 2566412 2026-09-25T13:23:18Z Hiyuune 50834 + fa 2566412 wikitext text/x-wiki =={{langname|fa}}== [[File:Chamaeleo jacksonii.jpg|thumb|{{lang|fa|آفتاب‌پرست جکسونی<br>(فارسی ایرانی)}}<br/>[[Jackson's chameleon]]<br>(tiếng Ba Tư Iran)]] [[Image:Sunflower sky backdrop.jpg|thumb| {{lang|fa|آفتاب‌پرست}}<br>[[hoa]] [[hướng dương]]]] ==={{section|alt}}=== * {{alt|fa|آفتابپرست|tr=âftâbparast}} ==={{section|etym}}=== {{ety|fa|:af|آفتاب<t:mặt trời><tr:âftâb>|ـپرست<tr:-parast>|text=+|tree=1}} ==={{section|pron}}=== {{fa-IPA|āftāb-pa`rast|kbl=aftaw-pa`rast}} ==={{section|n}}=== {{fa-regional|آفتاب‌پرست|آفتاب‌پرست|офтобпараст}} {{fa-noun|tr=âftâb-parast}} # {{lb|fa|classical|Dari|and|Tajik}} Hoa [[hướng dương]]. #: {{syn|fa|ورتاج|tr1=vartâj|آفتاب‌گردان|tr2=âftâb-gardân}} # {{lb|fa|Iran}} [[tắc kè hoa|Tắc kè hoa]]. ===={{section|desc}}==== * {{desc|chg|آفتابپرست|ts=āftābparast|bor=1}} ** {{desc|ug|ئاپتاپپەرەس}} ** {{desc|uz|oftobparast}} m9g2ejvubfurdtqho6u94czdzvtfgu8 2566428 2566412 2026-09-25T15:22:50Z TheHighFighter2 42988 /* Tiếng Ba Tư */ 2566428 wikitext text/x-wiki =={{langname|fa}}== [[File:Chamaeleo jacksonii.jpg|thumb|{{lang|fa|آفتاب‌پرست جکسونی<br>(فارسی ایرانی)}}<br/>tắc kè hoa {{taxlink|Trioceros jacksonii|loài}}<br>(tiếng Ba Tư Iran)]] [[Image:Sunflower sky backdrop.jpg|thumb| {{lang|fa|آفتاب‌پرست}}<br>[[hoa]] [[hướng dương]]]] ==={{section|alt}}=== * {{alt|fa|آفتابپرست|tr=âftâbparast}} ==={{section|etym}}=== {{ety|fa|:af|آفتاب<t:mặt trời><tr:âftâb>|ـپرست<tr:-parast>|text=+|tree=1}} ==={{section|pron}}=== {{fa-IPA|āftāb-pa`rast|kbl=aftaw-pa`rast}} ==={{section|n}}=== {{fa-regional|آفتاب‌پرست|آفتاب‌پرست|офтобпараст}} {{fa-noun|tr=âftâb-parast}} # {{lb|fa|classical|Dari|and|Tajik}} Hoa [[hướng dương]]. #: {{syn|fa|ورتاج|tr1=vartâj|آفتاب‌گردان|tr2=âftâb-gardân}} # {{lb|fa|Iran}} [[tắc kè hoa|Tắc kè hoa]]. ===={{section|desc}}==== * {{desc|chg|آفتابپرست|ts=āftābparast|bor=1}} ** {{desc|ug|ئاپتاپپەرەس}} ** {{desc|uz|oftobparast}} 0c3dw7aaps73xmlwbx9x0c8i1mfxjwx 野獣 0 418015 2566413 2026-09-25T13:44:08Z Hiyuune 50834 + ja 2566413 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|や|じゅう|yomi=o,kanyoon}} ==={{section|pron}}=== {{ja-pron|やじゅう|acc=0|acc_ref=DJR,NHK}} ==={{section|n}}=== {{ja-noun|やじゅう|hhira=やじう|count=頭}} # [[thú vật|Thú vậ]]; [[súc vật]]. ===={{section|drv}}==== {{col|ja | {{ja-r|野%獣%派|や%じゅう%は}} | {{ja-r|野%獣%主%義|や%じゅう%しゅ%ぎ}} }} ==={{section|ref}}=== {{reflist}} :* {{R:Kanjipedia Kotoba|0006788400}} {{c|ja|Animals|sort=やじゅう}} rc799dk78h6x2c9vxgmquxumxwu4b8u 2566414 2566413 2026-09-25T13:44:40Z Hiyuune 50834 /* Danh từ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566414 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|や|じゅう|yomi=o,kanyoon}} ==={{section|pron}}=== {{ja-pron|やじゅう|acc=0|acc_ref=DJR,NHK}} ==={{section|n}}=== {{ja-noun|やじゅう|hhira=やじう|count=頭}} # [[thú vật|Thú vật]]; [[súc vật]]. ===={{section|drv}}==== {{col|ja | {{ja-r|野%獣%派|や%じゅう%は}} | {{ja-r|野%獣%主%義|や%じゅう%しゅ%ぎ}} }} ==={{section|ref}}=== {{reflist}} :* {{R:Kanjipedia Kotoba|0006788400}} {{c|ja|Animals|sort=やじゅう}} 84x7gq86ugj16h1doa1icbd44q586ms Mô đun:typing-aids/Armi 828 418016 2566421 2026-09-25T13:50:00Z Hiyuune 50834 Hiyuune đã đổi [[Mô đun:typing-aids/Armi]] thành [[Mô đun:typing-aids/data/Armi]] 2566421 Scribunto text/plain return require [[Mô đun:typing-aids/data/Armi]] ioahfne7ihmfe27u4xutrtd8bgyw69s Mô đun:typing-aids/data/Chrs 828 418017 2566422 2026-09-25T13:50:44Z Hiyuune 50834 Trang mới: “local data = {} local U = mw.ustring.char local dot_below = U(0x323) -- dot below local caron = U(0x30C) -- caron local circumflex = U(0x302) -- circumflex local macron = U(0x304) -- macron local scaron = U(0x161) -- latin small letter s with caron data = { [1] = { ["’"] = "ʾ", ["a" .. circumflex] = "ʾ", ["a" .. macron] = "ʾ", ["B"] = "b", ["G"] = "ɣ", ["H" .. dot_below] = "x", ["L"] = "δ", ["e" .. circumflex] = "ʿ", ["e" .. macron] = "ʿ", ["E"]…” 2566422 Scribunto text/plain local data = {} local U = mw.ustring.char local dot_below = U(0x323) -- dot below local caron = U(0x30C) -- caron local circumflex = U(0x302) -- circumflex local macron = U(0x304) -- macron local scaron = U(0x161) -- latin small letter s with caron data = { [1] = { ["’"] = "ʾ", ["a" .. circumflex] = "ʾ", ["a" .. macron] = "ʾ", ["B"] = "b", ["G"] = "ɣ", ["H" .. dot_below] = "x", ["L"] = "δ", ["e" .. circumflex] = "ʿ", ["e" .. macron] = "ʿ", ["E"] = "ʿ", ["S"] = "s" .. caron, }, [2] = { ["s" .. caron] = "𐽁", -- shin }, [3] = { ["ʾ"] = "𐾰", -- aleph ["A"] = "𐾱", -- small aleph ["β"] = "𐾲", -- beth ["ɣ"] = "𐾳", -- gimel ["d"] = "𐾴", -- daleth ["h"] = "𐾵", -- he ["w"] = "𐾶", -- waw ["W"] = "𐾷", -- curled waw ["z"] = "𐾸", -- zayin ["x"] = "𐾹", -- heth ["y"] = "𐾺", -- yodh ["k"] = "𐾻", -- kaph ["δ"] = "𐾼", -- lamedh ["m"] = "𐾽", -- mem ["n"] = "𐾾", -- nun ["s"] = "𐾿", -- samekh ["ʿ"] = "𐿀", -- ayin ["p"] = "𐿁", -- pe ["r"] = "𐿂", -- resh [scaron] = "𐿃", -- shin ["t"] = "𐿄", -- taw ["1"] = "𐿅", -- one ["2"] = "𐿆", -- two ["3"] = "𐿇", -- three ["4"] = "𐿈", -- four ["10"] = "𐿉", -- ten ["20"] = "𐿊", -- twenty ["100"] = "𐿋", -- one hundred }, } return data kbgb69fnhuzglgut2smwndhhhzqbfh0 𱃸 0 418018 2566423 2026-09-25T13:54:48Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=184|rad=饣|as=6|sn=9|four=|canj=|ids=⿰饣至}} ===={{section|ref}}==== {{Han ref|uh=310F8}} {{-}} =={{langname|zh}}== {{zh-see|䬹}}” 2566423 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=184|rad=饣|as=6|sn=9|four=|canj=|ids=⿰饣至}} ===={{section|ref}}==== {{Han ref|uh=310F8}} {{-}} =={{langname|zh}}== {{zh-see|䬹}} jfkrtaqmgr5oqinkpe9de2t5smr7kc7 𡊵 0 418019 2566424 2026-09-25T13:57:06Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=32|rad=土|as=5|sn=8|four=|canj=|ids=⿱石土}} ===={{ĐM|ref}}==== * {{Han ref|kx=0227.271|dkj=|dj=|hdz=10430.030|uh=212B5}}” 2566424 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{ĐM|han}}=== {{Han char|rn=32|rad=土|as=5|sn=8|four=|canj=|ids=⿱石土}} ===={{ĐM|ref}}==== * {{Han ref|kx=0227.271|dkj=|dj=|hdz=10430.030|uh=212B5}} r8qnge0fpeu9w0cxw431g418px4pg4x Mô đun:zh/data/och-pron-ZS/鬌 828 418020 2566425 2026-09-25T13:57:37Z Hiyuune 50834 Trang mới: “return { { "5415", "隓", "歌", "3", "埵", "ʔl&#39;oːlʔ", "" }, { "5428", "隓", "歌", "3", "墮", "l&#39;oːlʔ", "" }, { "5438", "隓", "歌", "3", "鬌", "l&#39;ol", "" }, }” 2566425 Scribunto text/plain return { { "5415", "隓", "歌", "3", "埵", "ʔl&#39;oːlʔ", "" }, { "5428", "隓", "歌", "3", "墮", "l&#39;oːlʔ", "" }, { "5438", "隓", "歌", "3", "鬌", "l&#39;ol", "" }, } 0xph78xnwqu94s1hbi48hz1mo3y3tyk Thành viên:Knoweverythingwiki 2 418021 2566432 2026-09-25T15:36:31Z Pminh141 53740 Pminh141 đã đổi [[Thành viên:Knoweverythingwiki]] thành [[Thành viên:SpaceEncoder]]: Tự động di chuyển trang khi đổi tên thành viên “[[Special:CentralAuth/Knoweverythingwiki|Knoweverythingwiki]]” thành “[[Special:CentralAuth/SpaceEncoder|SpaceEncoder]]” 2566432 wikitext text/x-wiki #đổi [[Thành viên:SpaceEncoder]] 35tcz6soa8efqndi5ob2vxqtxje6g64 Thảo luận Thành viên:Knoweverythingwiki 3 418022 2566434 2026-09-25T15:36:31Z Pminh141 53740 Pminh141 đã đổi [[Thảo luận Thành viên:Knoweverythingwiki]] thành [[Thảo luận Thành viên:SpaceEncoder]]: Tự động di chuyển trang khi đổi tên thành viên “[[Special:CentralAuth/Knoweverythingwiki|Knoweverythingwiki]]” thành “[[Special:CentralAuth/SpaceEncoder|SpaceEncoder]]” 2566434 wikitext text/x-wiki #đổi [[Thảo luận Thành viên:SpaceEncoder]] 1wb8l3mc71b704a6vfcfzonrk4cltdn Thể loại:zns:Cây 14 418023 2566437 2026-09-25T15:37:00Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566437 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Gia súc 14 418024 2566438 2026-09-25T15:37:02Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566438 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Săn bắn 14 418025 2566439 2026-09-25T15:37:07Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566439 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Thực vật 14 418026 2566440 2026-09-25T15:37:15Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566440 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Nông nghiệp 14 418027 2566441 2026-09-25T15:37:17Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566441 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Hoạt động của con người 14 418028 2566442 2026-09-25T15:37:25Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566442 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Danh sách chủ đề thuộc nhóm loại hình 14 418029 2566443 2026-09-25T15:37:35Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566443 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Khoa học ứng dụng 14 418030 2566444 2026-09-25T15:37:39Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566444 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Hành vi con người 14 418031 2566445 2026-09-25T15:37:44Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566445 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Con người 14 418032 2566446 2026-09-25T15:37:51Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566446 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Bộ Gặm nhấm 14 418033 2566449 2026-09-25T15:39:16Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566449 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Lớp Thú 14 418034 2566450 2026-09-25T15:39:24Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566450 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Rau 14 418035 2566454 2026-09-25T15:40:50Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566454 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Xã hội 14 418036 2566455 2026-09-25T15:40:52Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566455 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Thực phẩm 14 418037 2566456 2026-09-25T15:40:58Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566456 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ăn 14 418038 2566457 2026-09-25T15:41:05Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566457 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ăn uống 14 418039 2566458 2026-09-25T15:41:09Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566458 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Thời gian 14 418040 2566461 2026-09-25T15:43:01Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566461 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Hàng gia dụng 14 418041 2566463 2026-09-25T15:43:46Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566463 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Chỗ ở 14 418042 2566465 2026-09-25T15:44:27Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566465 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Máy móc 14 418043 2566466 2026-09-25T15:44:29Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566466 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Lớp Côn trùng 14 418044 2566467 2026-09-25T15:44:32Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566467 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Công nghệ 14 418045 2566468 2026-09-25T15:44:36Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566468 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ngành Chân đốt 14 418046 2566469 2026-09-25T15:44:44Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566469 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Màu sắc 14 418047 2566473 2026-09-25T15:45:20Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566473 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Thị giác 14 418048 2566474 2026-09-25T15:45:37Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566474 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ánh sáng 14 418049 2566475 2026-09-25T15:45:39Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566475 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Năng lượng 14 418050 2566476 2026-09-25T15:46:10Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566476 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Cảm nhận 14 418051 2566477 2026-09-25T15:46:12Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566477 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Màu sắc 14 418052 2566478 2026-09-25T15:46:42Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566478 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ kế thừa từ tiếng Turk nguyên thủy tiếng Ili Turki 14 418053 2566479 2026-09-25T15:46:45Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566479 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ tiếng Turk nguyên thủy tiếng Ili Turki 14 418054 2566480 2026-09-25T15:46:47Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566480 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Ánh sáng 14 418055 2566481 2026-09-25T15:46:53Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566481 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Thị giác 14 418056 2566482 2026-09-25T15:46:55Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566482 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Danh sách chủ đề thuộc nhóm hỗn hợp 14 418057 2566483 2026-09-25T15:47:06Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566483 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ kế thừa tiếng Ili Turki 14 418058 2566484 2026-09-25T15:47:26Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566484 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ ngữ hệ Turk tiếng Ili Turki 14 418059 2566485 2026-09-25T15:47:29Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566485 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Cảm nhận 14 418060 2566486 2026-09-25T15:47:35Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566486 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Năng lượng 14 418061 2566487 2026-09-25T15:47:38Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566487 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ nguyên tiếng Ili Turki 14 418062 2566488 2026-09-25T15:47:42Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566488 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Từ dẫn xuất từ ngôn ngữ khác tiếng Ili Turki 14 418063 2566489 2026-09-25T15:47:46Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566489 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Danh sách chủ đề thuộc nhóm hỗn hợp 14 418064 2566490 2026-09-25T15:47:55Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566490 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Tri giác 14 418065 2566491 2026-09-25T15:47:57Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566491 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ili:Cơ thể 14 418066 2566492 2026-09-25T15:48:06Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566492 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Tri giác 14 418067 2566493 2026-09-25T15:48:10Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566493 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ごいち 0 418068 2566497 2026-09-25T15:54:35Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== ==={{ĐM|pr-noun}}=== {{ja-pos|proper}} # {{ja-def|吾一}} {{given name|ja|nam}}” 2566497 wikitext text/x-wiki =={{langname|ja}}== ==={{ĐM|pr-noun}}=== {{ja-pos|proper}} # {{ja-def|吾一}} {{given name|ja|nam}} o7q3e1ucaycc7164a69ig9fk8d4us8l Goichi 0 418069 2566498 2026-09-25T15:56:28Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|ごいち}}” 2566498 wikitext text/x-wiki =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|ごいち}} 6a3a3py3f2udw4ccky5ndytx8ovkpxj 吾一 0 418070 2566499 2026-09-25T15:57:01Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|ご|いち|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|ごいち}} # {{given name|ja|nam|sort=ごいち}}” 2566499 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|ご|いち|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|ごいち}} # {{given name|ja|nam|sort=ごいち}} metiihzgllrr5bh72d3gt9utm98409i こうじゅ 0 418071 2566501 2026-09-25T15:58:12Z WhoAlone 40420 Trang mới: “{{also|こうしゅ|ごうしゅ}} =={{langname|ja}}== ==={{ĐM|etym}} 1=== {{ja-see-kango|口入|口受|口授|坑儒|皇寿|紅樹|香薷|高寿|堠樹|講授|鴻儒}} ==={{ĐM|etym}} 2=== ===={{ĐM|pr-noun}}==== {{ja-pos|proper}} # {{ja-def|公寿}} {{given name|ja|nam}}” 2566501 wikitext text/x-wiki {{also|こうしゅ|ごうしゅ}} =={{langname|ja}}== ==={{ĐM|etym}} 1=== {{ja-see-kango|口入|口受|口授|坑儒|皇寿|紅樹|香薷|高寿|堠樹|講授|鴻儒}} ==={{ĐM|etym}} 2=== ===={{ĐM|pr-noun}}==== {{ja-pos|proper}} # {{ja-def|公寿}} {{given name|ja|nam}} t8dx5dh288up1ahf05rd8fiht90hgeg ʀ 0 418072 2566502 2026-09-25T15:58:54Z Lcsnes 40261 Trang mới: “{{also|Ʀ|ᴙ|ᴚ|ʁ|uni=auto}} {{-Latn-}} {{character info}} ==={{ĐM|desction}}=== {{mul-letter}} #[[chữ cái|Chữ cái]] '''[[R]] hoa''' viết thường. ==={{ĐM|see}}=== {{Latn-script}} =={{langname|mul}}== ==={{ĐM|symbol}}=== {{mul-symbol}} #{{lb|mul|IPA|NAPA}} [[phụ âm|Phụ âm]] [[rung]] [[lưỡi gà]]. #:{{syn|mul|ṛ̃<qq:chỉ có trong NAPA>}} #{{lb|mul|viết trên ⟨𐞪⟩|IPA}} An {{IPAfont|[ʀ]}} rung [[nhả]] của âm [[bật]] (ví dụ {{…” 2566502 wikitext text/x-wiki {{also|Ʀ|ᴙ|ᴚ|ʁ|uni=auto}} {{-Latn-}} {{character info}} ==={{ĐM|desction}}=== {{mul-letter}} #[[chữ cái|Chữ cái]] '''[[R]] hoa''' viết thường. ==={{ĐM|see}}=== {{Latn-script}} =={{langname|mul}}== ==={{ĐM|symbol}}=== {{mul-symbol}} #{{lb|mul|IPA|NAPA}} [[phụ âm|Phụ âm]] [[rung]] [[lưỡi gà]]. #:{{syn|mul|ṛ̃<qq:chỉ có trong NAPA>}} #{{lb|mul|viết trên ⟨𐞪⟩|IPA}} An {{IPAfont|[ʀ]}} rung [[nhả]] của âm [[bật]] (ví dụ {{IPAfont|[ɢ𐞪]}}, đôi khi hàm ý âm [[tắc]] [[xát]] {{IPAfont|[ɢ͜ʀ]}}); {{IPAfont|[ʀ]}} thêm âm sắc, yếu hoặc thoáng qua. #{{lb|mul|UPA}} Âm ''[[r]]'' vô thanh (âm rung lợi vô thanh; IPA {{IPAchar|[r̥]}}). =={{langname|ems}}== ==={{ĐM|pron}}=== *{{IPA4|ems|[r]}} ==={{ĐM|letter}}=== {{letter|ems}} #Chữ cái thứ 21 viết thường trong bảng chữ cái Latinh tiếng Alutiiq. #:{{ux|ems|tupuu'''ʀ'''uq|[[rìu]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=ems|sc=Latn|qual=Bảng chữ cái Latinh tiếng Alutiiq|Aa|Cc|Ee|Ff|Gg|Gw/gw|Hm/hm|Hn/hn|Hng/hng|Ii|Kk|Kw/kw|Ll|Ll/ll|Mm|Nn|Ng/ng|Pp|Qq|Rr|Ʀʀ|Ss|Tt|Uu|Ww|Yy}} ==={{ĐM|ref}}=== *[http://www.alutiiqlanguage.org/dictionary Dictionary] =={{langname|en}}== ==={{ĐM|symbol}}=== {{eng-symbol}} #{{lb|en|lexicography}} Ký hiệu biểu thị âm R không phải tiếng Anh (ví dụ IPA {{IPAfont|[r, ʁ]}}) trong các từ mượn chưa đồng hóa. =={{langname|non}}== ==={{ĐM|letter}}=== {{letter|non}} #Chuyển tự Latinh tương đương của chữ Rune {{l|non|ᛦ}}. #Cặp với ''{{l|non|r}}''. ==={{ĐM|see}}=== *{{letters|lang=non|sc=Latn|qual=Bảng chữ cái Latinh tiếng Bắc Âu cổ|Aa|Áá|Bb|Cc|Dd|Ðð|Ee|Éé|Ff|Gg|(Gj/gj)|Hh|(Hl/hl)|(Hn/hn)|(Hr/hr)|(Hv/hv)|Ii|Íí|Jj|Kk|(Kj/kj)|Ll|Mm|Nn|(Ng/ng)|Oo|Óó|Pp|Qq|Rr|Ss|Tt|Uu|Úú|Vv|Ww|Xx|Yy|Ýý|Þþ|Ææ|Ǽǽ|Œœ|Øø|Ǫǫ}} [[Thể loại:Khối ký tự IPA Extensions|80]] hu5r4m14ny101iz19phrr27rctqb5ka 2566616 2566502 2026-09-26T08:51:12Z Hiyuune 50834 2566616 wikitext text/x-wiki {{also|Ʀ|ᴙ|ᴚ|ʁ|uni=auto}} {{character info}} =={{langname|mul}}== ==={{ĐM|etym}} 1=== ===={{ĐM|desction}}==== {{mul-letter}} # [[chữ cái|Chữ cái]] '''[[R]] hoa''' viết thường. ===={{ĐM|see}}==== {{Latn-script}} ==={{ĐM|etym}} 2=== ===={{ĐM|symbol}}==== {{mul-symbol}} # {{lb|mul|IPA|NAPA}} [[phụ âm|Phụ âm]] [[rung]] [[lưỡi gà]]. #:{{syn|mul|ṛ̃<qq:chỉ có trong NAPA>}} #{{lb|mul|viết trên ⟨𐞪⟩|IPA}} An {{IPAfont|[ʀ]}} rung [[nhả]] của âm [[bật]] (ví dụ {{IPAfont|[ɢ𐞪]}}, đôi khi hàm ý âm [[tắc]] [[xát]] {{IPAfont|[ɢ͜ʀ]}}); {{IPAfont|[ʀ]}} thêm âm sắc, yếu hoặc thoáng qua. #{{lb|mul|UPA}} Âm ''[[r]]'' vô thanh (âm rung lợi vô thanh; IPA {{IPAchar|[r̥]}}). =={{langname|ems}}== ==={{ĐM|pron}}=== * {{IPA|ems|[r]}} ==={{ĐM|letter}}=== {{letter|ems}} # Chữ cái thứ 21 viết thường trong bảng chữ cái Latinh tiếng Alutiiq. #:{{ux|ems|tupuu'''ʀ'''uq|[[rìu]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=ems|sc=Latn|qual=Bảng chữ cái Latinh tiếng Alutiiq|Aa|Cc|Ee|Ff|Gg|Gw/gw|Hm/hm|Hn/hn|Hng/hng|Ii|Kk|Kw/kw|Ll|Ll/ll|Mm|Nn|Ng/ng|Pp|Qq|Rr|Ʀʀ|Ss|Tt|Uu|Ww|Yy}} ==={{ĐM|ref}}=== *[http://www.alutiiqlanguage.org/dictionary Dictionary] =={{langname|en}}== ==={{ĐM|symbol}}=== {{en-symbol}} # {{lb|en|lexicography}} Ký hiệu biểu thị âm R không phải tiếng Anh (ví dụ IPA {{IPAfont|[r, ʁ]}}) trong các từ mượn chưa đồng hóa. =={{langname|non}}== ==={{ĐM|letter}}=== {{letter|non}} # Chuyển tự Latinh tương đương của chữ Rune {{l|non|ᛦ}}. # Cặp với ''{{l|non|r}}''. ==={{ĐM|see}}=== * {{letters|lang=non|sc=Latn|qual=Bảng chữ cái Latinh tiếng Bắc Âu cổ|Aa|Áá|Bb|Cc|Dd|Ðð|Ee|Éé|Ff|Gg|(Gj/gj)|Hh|(Hl/hl)|(Hn/hn)|(Hr/hr)|(Hv/hv)|Ii|Íí|Jj|Kk|(Kj/kj)|Ll|Mm|Nn|(Ng/ng)|Oo|Óó|Pp|Qq|Rr|Ss|Tt|Uu|Úú|Vv|Ww|Xx|Yy|Ýý|Þþ|Ææ|Ǽǽ|Œœ|Øø|Ǫǫ}} r7yp5fzfqral2ao8vkeh61mth7cejqu Kōju 0 418073 2566503 2026-09-25T15:59:01Z WhoAlone 40420 Trang mới: “{{also|koju}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|こうじゅ}}” 2566503 wikitext text/x-wiki {{also|koju}} =={{langname|ja}}== ==={{ĐM|rom}}=== {{ja-romaji}} # {{ja-romanization of|こうじゅ}} 0b9eeq9m8h4m5s0dpro7pf13kdvy2qk 公寿 0 418074 2566504 2026-09-25T15:59:24Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|こう|じゅ|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|こうじゅ}} # {{given name|ja|nam|sort=こうじゅ}}” 2566504 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|こう|じゅ|yomi=o}} ==={{ĐM|pr-noun}}=== {{ja-pos|proper|こうじゅ}} # {{given name|ja|nam|sort=こうじゅ}} tj29xynatgsiumj456ginh1bi88lsqr Thể loại:Từ đánh vần với 寿 là じゅ tiếng Nhật 14 418075 2566505 2026-09-25T15:59:48Z WhoAlone 40420 Trang mới: “{{auto cat|goon}}” 2566505 wikitext text/x-wiki {{auto cat|goon}} 61hfhqx3v8r5m1ogmo84resyna33p53 Thể loại:Từ đánh vần với kanji là じゅ tiếng Nhật 14 418076 2566506 2026-09-25T16:00:12Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566506 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Kanji đọc là じゅ tiếng Nhật 14 418077 2566507 2026-09-25T16:01:15Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566507 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 公壽 0 418078 2566508 2026-09-25T16:01:39Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|公寿}}” 2566508 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|公寿}} sh5yzb8lsrxemzm8l13rdck9sslbp7u Thể loại:zns:Khí quyển 14 418079 2566510 2026-09-25T16:02:45Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566510 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Âm thanh 14 418080 2566514 2026-09-25T16:03:24Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566514 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Vùng nước 14 418081 2566522 2026-09-25T16:05:14Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566522 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ngữ pháp 14 418082 2566523 2026-09-25T16:05:16Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566523 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Đặc điểm tự nhiên 14 418083 2566524 2026-09-25T16:05:35Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566524 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Danh sách chủ đề thuộc nhóm tên gọi 14 418084 2566525 2026-09-25T16:05:36Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566525 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Hệ thống sinh thái 14 418085 2566526 2026-09-25T16:05:38Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566526 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Địa mạo 14 418086 2566527 2026-09-25T16:05:40Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566527 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ngôn ngữ học 14 418087 2566528 2026-09-25T16:05:42Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566528 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Địa danh 14 418088 2566529 2026-09-25T16:05:47Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566529 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Sinh thái học 14 418089 2566530 2026-09-25T16:05:53Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566530 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Tên 14 418090 2566531 2026-09-25T16:05:56Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566531 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Sinh học 14 418091 2566532 2026-09-25T16:06:00Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566532 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Trái Đất 14 418092 2566533 2026-09-25T16:06:10Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566533 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Khoa học xã hội 14 418093 2566535 2026-09-25T16:06:19Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566535 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Ngôn ngữ 14 418094 2566536 2026-09-25T16:06:21Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566536 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:uz:Lịch sử 14 418095 2566538 2026-09-25T16:06:48Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566538 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Giao tiếp 14 418096 2566539 2026-09-25T16:06:53Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566539 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Họ Chó 14 418097 2566541 2026-09-25T16:07:48Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566541 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:zns:Bộ Ăn thịt 14 418098 2566542 2026-09-25T16:07:54Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2566542 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx renule 0 418099 2566543 2026-09-25T16:09:07Z Hiyuune 50834 + en, ro 2566543 wikitext text/x-wiki =={{langname|en}}== ==={{section|etym}}=== Từ {{der|en|la|renulus}}, từ {{m|la|ren||thận}}. ==={{section|n}}=== {{en-noun}} # [[thận|Thận]] [[nhỏ]]. ==={{section|n}}=== * {{anagrams|en|a=eelnru|en rule|unreel}} {{c|en|Cơ quan}} =={{langname|ro}}== ==={{section|n}}=== {{head|ro|Biến thể hình thái danh từ}} # {{infl of|ro|ren||voc|def//indef|s}} kcg8ir82r10gkfznbgr9hugrau8712g 2566545 2566543 2026-09-25T16:10:06Z Hiyuune 50834 /* Tiếng Rumani */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566545 wikitext text/x-wiki =={{langname|en}}== ==={{section|etym}}=== Từ {{der|en|la|renulus}}, từ {{m|la|ren||thận}}. ==={{section|n}}=== {{en-noun}} # [[thận|Thận]] [[nhỏ]]. ==={{section|n}}=== * {{anagrams|en|a=eelnru|en rule|unreel}} {{c|en|Cơ quan}} =={{langname|ro}}== ==={{section|n}}=== {{head|ro|Biến thể hình thái danh từ}} # {{infl of|ro|ren||voc|indef//def|s}} ncxodjprzkylbnzh0w2v0uol69sts96 x-edik 0 418100 2566544 2026-09-25T16:09:58Z TheHighFighter2 42988 Trang mới: “=={{langname|hu}}== ==={{ĐM|etym}}=== Từ {{af|hu|x|-edik|id2=hậu tố tạo số từ|pos2=hậu tố tạo số thứ tự}}. ==={{ĐM|pron}}=== * {{hu-IPA|ikszedik}} * {{hyphenation|hu|x-edik}} ==={{ĐM|num}}=== {{head|hu|numeral}} # {{cln|hu|Số thứ tự}} [[thứ n|Thứ n]], thứ không biết bao nhiêu. ===={{ĐM|decl}}==== {{hu-infl-nom|x-edike|e|esm_sg=y}}{{hu-pos-etek|x-edik||ei|n=sg}}” 2566544 wikitext text/x-wiki =={{langname|hu}}== ==={{ĐM|etym}}=== Từ {{af|hu|x|-edik|id2=hậu tố tạo số từ|pos2=hậu tố tạo số thứ tự}}. ==={{ĐM|pron}}=== * {{hu-IPA|ikszedik}} * {{hyphenation|hu|x-edik}} ==={{ĐM|num}}=== {{head|hu|numeral}} # {{cln|hu|Số thứ tự}} [[thứ n|Thứ n]], thứ không biết bao nhiêu. ===={{ĐM|decl}}==== {{hu-infl-nom|x-edike|e|esm_sg=y}}{{hu-pos-etek|x-edik||ei|n=sg}} 89y8brc1jya8chgf5ewuxtx9j7zk8p2 renilor 0 418101 2566546 2026-09-25T16:10:51Z Hiyuune 50834 + ro 2566546 wikitext text/x-wiki =={{langname|ro}}== ==={{section|n}}=== {{head|ro|Biến thể hình thái danh từ}} # {{infl of|ro|ren||gen//dat|def||p|;|voc|indef//def|p}} qn1shjzwnt3gy9z0xsc90t2n5zug5k1 rayne 0 418102 2566547 2026-09-25T16:13:25Z Hiyuune 50834 Trang mới: “{{also|Rayne}} =={{langname|en}}== ==={{section|n}}=== {{en-noun|?}} # {{obsolete form of|en|rain}} ==={{section|ana}}=== * {{anagrams|en|a=aenry|Aeryn|Arney|Neary|Neyra|Raney|Yaren|aryne|renay|yarne|yearn}} =={{langname|enm}}== ==={{section|etym}} 1=== ===={{section|n}}==== {{head|enm|Danh từ|var=1}} # {{alt form|enm|reyn}} ==={{section|etym}} 2=== ===={{section|n}}==== {{head|enm|Danh từ|var=1}} # {{alt form|enm|reyn}} ==={{section|etym}} 3=== ===={{se…” 2566547 wikitext text/x-wiki {{also|Rayne}} =={{langname|en}}== ==={{section|n}}=== {{en-noun|?}} # {{obsolete form of|en|rain}} ==={{section|ana}}=== * {{anagrams|en|a=aenry|Aeryn|Arney|Neary|Neyra|Raney|Yaren|aryne|renay|yarne|yearn}} =={{langname|enm}}== ==={{section|etym}} 1=== ===={{section|n}}==== {{head|enm|Danh từ|var=1}} # {{alt form|enm|reyn}} ==={{section|etym}} 2=== ===={{section|n}}==== {{head|enm|Danh từ|var=1}} # {{alt form|enm|reyn}} ==={{section|etym}} 3=== ===={{section|adj}}==== {{head|enm|Tính từ|var=1}} # {{alt form|enm|reyny}} ijhsqh5i4u60h3m013m7m6r9fkmc4c9 rěn 0 418103 2566548 2026-09-25T16:15:18Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|pron}}=== * {{audio|cmn|Zh-ren.ogg}} ==={{section|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|忍}} # {{cmn-pinyin of|栠}} # {{cmn-pinyin of|栣}} # {{cmn-pinyin of|棯}} # {{cmn-pinyin of|秹}} # {{cmn-pinyin of|稔}} # {{cmn-pinyin of|腍}} # {{cmn-pinyin of|荏}} # {{cmn-pinyin of|荵}}” 2566548 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|pron}}=== * {{audio|cmn|Zh-ren.ogg}} ==={{section|rom}}=== {{cmn-pinyin}} # {{cmn-pinyin of|忍}} # {{cmn-pinyin of|栠}} # {{cmn-pinyin of|栣}} # {{cmn-pinyin of|棯}} # {{cmn-pinyin of|秹}} # {{cmn-pinyin of|稔}} # {{cmn-pinyin of|腍}} # {{cmn-pinyin of|荏}} # {{cmn-pinyin of|荵}} evyts6yjxmrwxpjbr5t0qj3acwhs79f ren3 0 418104 2566549 2026-09-25T16:16:33Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|rěn}}” 2566549 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|rěn}} mk5laqubfv22lndnucpbqmkjkn49upv bet nyied cibngux 0 418105 2566550 2026-09-25T16:17:06Z TheHighFighter2 42988 Trang mới: “=={{langname|za}}== ==={{ĐM|etym}}=== Từ {{bor|za|ltc|-}} {{ltc-l|八月十五}}. ==={{ĐM|pron}}=== * {{za-pron}} ==={{ĐM|noun}}=== {{za-head|noun}} # [[Tết Trung thu]]. {{C|za|Lễ hội}}” 2566550 wikitext text/x-wiki =={{langname|za}}== ==={{ĐM|etym}}=== Từ {{bor|za|ltc|-}} {{ltc-l|八月十五}}. ==={{ĐM|pron}}=== * {{za-pron}} ==={{ĐM|noun}}=== {{za-head|noun}} # [[Tết Trung thu]]. {{C|za|Lễ hội}} 5nr9gpw6umbsud3yk7aag2amnos6u1q ren4 0 418106 2566551 2026-09-25T16:17:16Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|rèn}}” 2566551 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "ren"}} =={{langname|cmn}}== ==={{section|rom}}=== {{cmn-pinyin}} # {{alternative spelling of|cmn|rèn}} dyocgakyubry2j4jgev8q88r75pq21f raidis fhiáin 0 418107 2566552 2026-09-25T16:19:20Z Hiyuune 50834 + ga 2566552 wikitext text/x-wiki =={{langname|ga}}== ==={{section|noun}}=== {{ga-noun|f|raidise fiáine|raidisí fiáine}} # [[cải ngựa|Cải ngựa]]. #: {{syn|ga|meacan ragaim}} ==={{section|further}}=== * {{R:ga:ODonaill}} {{C|ga|Rau ăn rễ}} ep24pcq7dxx4txtgehgd6ex30nwgzdi Thể loại:ga:Rau ăn rễ 14 418108 2566553 2026-09-25T16:20:22Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566553 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Rau ăn rễ 14 418109 2566554 2026-09-25T16:21:38Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566554 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ga:Danh sách chủ đề thuộc nhóm tập hợp 14 418110 2566555 2026-09-25T16:23:08Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566555 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx cairéad 0 418111 2566556 2026-09-25T16:26:25Z Hiyuune 50834 + ga 2566556 wikitext text/x-wiki {{also|cáiréad}} =={{langname|ga}}== ==={{section|alt}}=== * {{l|ga|cáiréad}} ==={{Section|etym}}=== Từ {{bor|ga|frm|carotte}}, từ {{der|ga|la|carōta}}, từ {{der|ga|grc|καρωτόν}}. ==={{section|pron}}=== * {{IPA|ga|/kaˈɾʲiad̪ˠ/|a=Munster}} * {{IPA|ga|/ˈkaɾʲeːd̪ˠ/|a=Connacht}} * {{IPA|ga|/ˈkaɾʲad̪ˠ/|a=Ulster}} ==={{section|n}}=== {{ga-noun|m|cairéid|cairéid}} # [[cà rốt|Cà rốt]] {{gloss|rau, {{taxlink|Daucus carota ssp. sativus|phân loài}}}} ====Declension==== {{ga-decl-m1|c|airéad|airéid}} ==={{section|mut}}=== {{ga-mut}} ==={{section|further}}=== * {{R:ga:Corpas|h}} * {{R:ga:Dinneen|ed=2|p=150|cáiréad}} * {{R:ga:Ó Dónaill}} {{C|ga|Scandiceae|Rau ăn rễ}} 7pitbok8o4bsvt6f5qs5cnua6ttub74 2566557 2566556 2026-09-25T16:26:54Z Hiyuune 50834 /* Bản mẫu:Section */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566557 wikitext text/x-wiki {{also|cáiréad}} =={{langname|ga}}== ==={{section|alt}}=== * {{l|ga|cáiréad}} ==={{section|etym}}=== Từ {{bor|ga|frm|carotte}}, từ {{der|ga|la|carōta}}, từ {{der|ga|grc|καρωτόν}}. ==={{section|pron}}=== * {{IPA|ga|/kaˈɾʲiad̪ˠ/|a=Munster}} * {{IPA|ga|/ˈkaɾʲeːd̪ˠ/|a=Connacht}} * {{IPA|ga|/ˈkaɾʲad̪ˠ/|a=Ulster}} ==={{section|n}}=== {{ga-noun|m|cairéid|cairéid}} # [[cà rốt|Cà rốt]] {{gloss|rau, {{taxlink|Daucus carota ssp. sativus|phân loài}}}} ====Declension==== {{ga-decl-m1|c|airéad|airéid}} ==={{section|mut}}=== {{ga-mut}} ==={{section|further}}=== * {{R:ga:Corpas|h}} * {{R:ga:Dinneen|ed=2|p=150|cáiréad}} * {{R:ga:Ó Dónaill}} {{C|ga|Scandiceae|Rau ăn rễ}} 46aqwz1fghagb9aig4gp9qxvzy0bm1i 2566558 2566557 2026-09-25T16:27:26Z Hiyuune 50834 /* Declension */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566558 wikitext text/x-wiki {{also|cáiréad}} =={{langname|ga}}== ==={{section|alt}}=== * {{l|ga|cáiréad}} ==={{section|etym}}=== Từ {{bor|ga|frm|carotte}}, từ {{der|ga|la|carōta}}, từ {{der|ga|grc|καρωτόν}}. ==={{section|pron}}=== * {{IPA|ga|/kaˈɾʲiad̪ˠ/|a=Munster}} * {{IPA|ga|/ˈkaɾʲeːd̪ˠ/|a=Connacht}} * {{IPA|ga|/ˈkaɾʲad̪ˠ/|a=Ulster}} ==={{section|n}}=== {{ga-noun|m|cairéid|cairéid}} # [[cà rốt|Cà rốt]] {{gloss|rau, {{taxlink|Daucus carota ssp. sativus|phân loài}}}} ===={{section|decl}}==== {{ga-decl-m1|c|airéad|airéid}} ==={{section|mut}}=== {{ga-mut}} ==={{section|further}}=== * {{R:ga:Corpas|h}} * {{R:ga:Dinneen|ed=2|p=150|cáiréad}} * {{R:ga:Ó Dónaill}} {{C|ga|Scandiceae|Rau ăn rễ}} 08n3afce9i7lhoo3ftjoqc7rpnw345g meacan 0 418112 2566559 2026-09-25T16:31:36Z Hiyuune 50834 Trang mới: “=={{langname|ga}}== ==={{section|etym}}=== Từ {{inh|ga|sga|meccon}}.<ref>{{R:DIL|31720|head=mecon}}</ref> ==={{section|pron}}=== * {{IPA|ga|a=Connacht|/ˈmʲakənˠ/|ref={{R:ga:Erris|page=14|section=52}}}} * {{IPA|ga|a=Ulster|/ˈmʲakənˠ/|/ˈmʲakanˠ/|ref2={{R:ga:Quiggin|7|10}}}} ==={{section|n}}=== {{ga-noun|m|meacain|meacain}} # [[rau|Rau]] [[ăn]] [[rễ]]. ===={{section|decl}}==== {{ga-decl-m1|m|eacan|eacain}} ===={{section|drv}}==== {{col|ga |meacan bán<t…” 2566559 wikitext text/x-wiki =={{langname|ga}}== ==={{section|etym}}=== Từ {{inh|ga|sga|meccon}}.<ref>{{R:DIL|31720|head=mecon}}</ref> ==={{section|pron}}=== * {{IPA|ga|a=Connacht|/ˈmʲakənˠ/|ref={{R:ga:Erris|page=14|section=52}}}} * {{IPA|ga|a=Ulster|/ˈmʲakənˠ/|/ˈmʲakanˠ/|ref2={{R:ga:Quiggin|7|10}}}} ==={{section|n}}=== {{ga-noun|m|meacain|meacain}} # [[rau|Rau]] [[ăn]] [[rễ]]. ===={{section|decl}}==== {{ga-decl-m1|m|eacan|eacain}} ===={{section|drv}}==== {{col|ga |meacan bán<t:củ cải vàng> |meacan biatais<t:củ dền; củ cải đường> |meacan dearg<t:cà rốt> |meacan compair }} ==={{section|mut}}=== {{ga-mut}} ==={{section|ref}}=== {{reflist|size=smaller}} ==={{section|further}}=== * {{R:ga:Dinneen|ed=1|p=471}} * {{R:ga:Ó Dónaill}} * {{R:ga:EID}} * {{R:ga:NEID}} {{C|ga|Rau ăn rễ}} l93w2rfu9vugxyn064v690uqa7cberc Bản mẫu:R:ga:Erris 10 418113 2566560 2026-09-25T16:32:00Z Hiyuune 50834 Trang mới: “{{#invoke:quote|call_template |template=cite-book |title=The Irish of Erris, Co. Mayo: A Phonemic Study |first=Éamonn |last=Mhac an Fhailigh |publisher=Dublin Institute for Advanced Studies |year=1968 |pageparam=page |propagateparams=section,line }}<noinclude> {{documentation}} </noinclude>” 2566560 wikitext text/x-wiki {{#invoke:quote|call_template |template=cite-book |title=The Irish of Erris, Co. Mayo: A Phonemic Study |first=Éamonn |last=Mhac an Fhailigh |publisher=Dublin Institute for Advanced Studies |year=1968 |pageparam=page |propagateparams=section,line }}<noinclude> {{documentation}} </noinclude> s7xqt1tfr4s567pydacfkgaqvulkmbu oinniún 0 418114 2566562 2026-09-25T16:38:10Z Hiyuune 50834 + ga 2566562 wikitext text/x-wiki =={{langname|ga}}== [[File:Onion on White.JPG|thumb|{{l|ga||oinniún}}]] ==={{section|alt}}=== * {{alt|ga|inniún}} * {{alt|ga|iniún|oiniún|uinniún||obsolete}}<ref>{{R:ga:Corpas|h}}</ref> ==={{section|etym}}=== Từ {{inh|ga|mga|uinniún}},<ref>{{R:DIL|43020|head=uinniún}}</ref> {{m|mga|uinneman}},<ref>{{R:DIL|43016|head=uinneman}}</ref> từ {{der|ga|fro|oignon}}, từ {{der|ga|la|ūniō}}. ==={{section|pron}}=== * {{IPA|ga|a=Munster|/ɪˈnʲuːn̪ˠ/|ref1={{R:ga:GCD|page=17|section=10}}}} * {{IPA|ga|a=Connacht|/ˈin̠ʲuːnˠ/|ref1={{R:ga:Finck|II|142}}}} * {{IPA|ga|a=Ulster|/ˈʌn̠ʲənʲ/|ref1={{R:ga:Ros Goill|page=285}}}} ==={{section|n}}=== {{ga-noun|m|oinniúin|oinniúin}} # [[hành|Hành]]. ===={{section|decl}}==== {{ga-decl-m1|o|inniún|inniúin}} ===={{section|drv}}==== * {{l|ga|oinniún fiáin|g=m}} ==={{section|mut}}=== {{ga-mut|msn}} ==={{section|ref}}=== {{reflist|size=smaller}} ==={{section|further}}=== * {{R:ga:ODonaill}} {{C|ga|Chi Hành|Rau ăn rễ}} pc2ks0b9ckjoeqw2j6prfmqbtb2covg svaeid 0 418115 2566563 2026-09-25T16:43:42Z Hiyuune 50834 + ga 2566563 wikitext text/x-wiki =={{langname|ga}}== ==={{section|etym}} 1=== Vay mượn từ {{bor|ga|en|swede}}. ===={{section|n}}==== {{ga-noun|m|~|~eanna}} # [[củ cải|Củ cải]] [[Thụy Điển]]. ====={{section|decl}}===== {{ga-decl-m4|sv|aeid|aeideanna}} ==={{section|etym}} 2=== Vay mượn từ {{bor|ga|en|suede}}, từ {{der|ga|fr|suède}}. ===={{section|n}}==== {{ga-noun|f|~e|-}} # [[da lộn|Da lộn]]. ====={{section|decl}}===== {{ga-decl-f2-nopl|sv|aeid|aeide}} ==={{section|further}}=== * {{R:ga:Ó Dónaill}} * {{R:ga:EID}} * {{R:ga:NEID}} {{topics|ga|Chi Cải|Rau ăn rễ}} lmnkzszrglterhxtwk0w6b8inim08rn Thể loại:ga:Rau 14 418116 2566564 2026-09-25T16:44:08Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566564 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ga:Thực vật 14 418117 2566565 2026-09-25T16:44:35Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566565 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ga:Thực phẩm 14 418118 2566566 2026-09-25T16:45:02Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566566 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:ga:Ăn uống 14 418119 2566567 2026-09-25T16:45:25Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2566567 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 𩽧 0 418120 2566568 2026-09-25T16:47:38Z Hiyuune 50834 Trang mới: “{{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=195|rad=魚|as=18|sn=29|four=|canj=NFOGE|ids=⿰魚雙}} ===={{section|ref}}==== {{Han ref|uh=29F67}}” 2566568 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=195|rad=魚|as=18|sn=29|four=|canj=NFOGE|ids=⿰魚雙}} ===={{section|ref}}==== {{Han ref|uh=29F67}} 12l6x25i2hsfs1dg7afntxcm06i8t5r Mô đun:zh/data/dial-syn/風箏 828 418121 2566569 2026-09-25T16:49:02Z Hiyuune 50834 Trang mới: “local export = {} export.list = { ["title"] = "", ["meaning"] = "diều (đồ chơi)", ["note"] = "", ["Classical"] = { "紙鳶" }, ["Formal"] = { "風箏" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "風箏" }, ["Beijing-PG"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "…” 2566569 Scribunto text/plain local export = {} export.list = { ["title"] = "", ["meaning"] = "diều (đồ chơi)", ["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"] = { "" }, --風tsau ["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"] = { "風燈兒", "風箏兒", "風箏" }, --風燈兒 also written as 風登兒 ["Xindu"] = { "風燈兒" }, --written as 風登兒 ["Xindu-XF"] = { "" }, ["Huayang"] = { "" }, ["Pidu"] = { "風圈兒" }, ["Wenjiang"] = { "風圈兒" }, ["Shuangliu"] = { "風燈兒" }, --written as 風登兒 ["Xinjin"] = { "風燈兒" }, --written as 風登兒 ["Jintang"] = { "風燈兒" }, --written as 風登兒 ["Pengzhou"] = { "風燈兒" }, --written as 風登兒 ["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"] = { "風吹" }, ["Shuifu"] = { "" }, --風得兒? ["Daguan"] = { "風箏", "風吹兒" }, --風燈? ["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"] = { "風箏", "風籠", "風籠子" }, --風籠 also written as 風龍 ["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"] = { "鷂子" }, --written as 鷂則 ["Kunshan"] = { "風箏", "鷂子" }, ["Taicang"] = { "" }, ["Zhangjiagang"] = { "" }, ["Tongzhou"] = { "" }, ["Qidong"] = { "" }, ["Qidong-LS"] = { "" }, ["Haimen"] = { "" }, ["Haimen-SJ"] = { "" }, ["Rudong-W"] = { "" }, ["Jiaxing"] = { "鷂子" }, ["Jiashan"] = { "" }, ["Pinghu"] = { "" }, ["Haining-YG"] = { "" }, ["Haining-XS"] = { "" }, ["Tongxiang"] = { "" }, ["Haiyan"] = { "" }, ["Changzhou"] = { "鷂子" }, --written as 鷂則 ["Liyang"] = { "風箏", "鷂子" }, --鷂子 written as 鷂則 ["Jintan"] = { "風箏" }, ["Yixing"] = { "風箏", "鷂子" }, --鷂子 written as 鷂則 ["Danyang"] = { "風箏", "鷂子" }, --also o子 ["Danyang-TJQ"] = { "風箏", "八角" }, ["Jingjiang"] = { "風箏", "鷂子" }, ["Jiangyin"] = { "鷂子", "風箏" }, --鷂子 written as 鷂則 ["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"] = { "紙鷂子" }, --written as 紙鷂兒 but pronunciation is tsɿ iau tsɿ ["Nanxiong-ZJ"] = { "" }, ["Qujiang"] = { "紙鷂" }, ["Xinfeng-MT"] = { "" }, ["Xinfeng-DX"] = { "" }, ["Xiaosanjiang"] = { "紙鷂" }, ["Liannan"] = { "紙鷂" }, ["Conghua-H"] = { "紙鷂" }, ["Jiexi"] = { "紙鷂" }, ["Luhe"] = { "紙鷂" }, ["Raoping-XF"] = { "風禽" }, --written as 風琴 ["Xiuzhuan"] = { "高鷂" }, ["Pinghe-JF"] = { "" }, ["Nanjing-ML"] = { "風旗" }, ["Nanjing-BL"] = { "風旗" }, ["Changting"] = { "風禽" }, ["Shanghang"] = { "" }, ["Yongding"] = { "風旗" }, ["Yongding-XY"] = { "紙鷂子", "風旗" }, ["Yongding-GB"] = { "風旗" }, ["Yongding-HK"] = { "風旗" }, ["Wuping"] = { "風禽" }, ["Wuping-ZS"] = { "風禽" }, --written as 風琴 ["Wuping-Y"] = { "紙鷂子" }, ["Wuping-WD"] = { "" }, ["Pingyu"] = { "紙鷂子" }, ["Liancheng"] = { "風禽" }, ["Liancheng-PT"] = { "風禽" }, ["Liancheng-JX"] = { "風禽" }, --written as 風箏 ["Liancheng-ZB"] = { "風禽" }, --風 kiŋ24 ["Liancheng-LY"] = { "風旗" }, ["Ninghua"] = { "風禽" }, ["Qingliu"] = { "" }, ["Yudu"] = { "風禽" }, ["Ningdu"] = { "風燈" }, ["Ruijin"] = { "風禽" }, --not very sure if it should be 風禽 or 風箏 ["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"] = { "" }, --紙鷂仔 or 紙鷂? ["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"] = { "鷹" }, --from 放鷹 ["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"] = { "" }, ["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"] = { "風吹" }, ["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"] = { "風禽" }, --written as 風琴 ["Chenghai-DX"] = { "" }, ["Chaoyang"] = { "" }, ["Nan'ao-HZ"] = { "風禽" }, --written as 風琴 ["Nan'ao-YA"] = { "風禽" }, --written as 風琴 ["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"] = { "" }, --niəu 兒 ["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 8rm9j9z4qrdrtrt78fsazjyme4zxlzv Bản mẫu:zh-dial-map/風箏 10 418122 2566570 2026-09-25T16:49:44Z Hiyuune 50834 Trang mới: “{{zh-dial-map}}” 2566570 wikitext text/x-wiki {{zh-dial-map}} 2k1iq8ezm3e0psqf7avnc52al6y68vt 風箏兒 0 418123 2566571 2026-09-25T16:51:10Z Hiyuune 50834 + zh 2566571 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|s=风筝儿|type=21}} ==={{section|pron}}=== {{zh-pron |m-s=fong1zenr1/fong1cenr1 |m-x=fěngzengr |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # {{lb|zh|phương ngữ Quan Thoại}} {{zh-erhua form of|[[diều]]|nolb=1}} ===={{section|syn}}==== {{zh-dial|風箏}} ieb254hh1t5qtyu8vyydsklqwts9ppl Mô đun:zh/data/dial-syn/人民幣 828 418124 2566572 2026-09-25T16:52:54Z Hiyuune 50834 Trang mới: “local export = {} export.list = { ["title"] = "", ["meaning"] = "nhân dân tệ", ["note"] = "", ["Classical"] = { "" }, ["Formal"] = { "人民幣" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "" }, ["Beijing-MY"] = { "" }, ["Beijing-HR"] = { "" }, ["Beijing-YQ"] = { "" }, ["Beijing-CP"] = { "" }, ["Beijing-MTG"] = { "" }, ["Beijing-FS"] = { "" }, ["Taiwan"] = { "人民幣" }, ["Tianjin-WQ"] = { "" },…” 2566572 Scribunto text/plain local export = {} export.list = { ["title"] = "", ["meaning"] = "nhân dân tệ", ["note"] = "", ["Classical"] = { "" }, ["Formal"] = { "人民幣" }, ["Taxonomic"] = { "" }, ["Beijing"] = { "" }, ["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"] = { "" }, ["Jingzhou-SS"] = { "" }, ["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"] = { "" }, ["Beijing-PG"] = { "" }, ["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"] = { "" }, ["Wendeng"] = { "" }, ["Rongcheng"] = { "" }, ["Qingdao"] = { "" }, ["Chengyang"] = { "" }, ["Jimo"] = { "" }, ["Laixi"] = { "" }, ["Pingdu"] = { "" }, ["Jiaozhou"] = { "" }, ["Jiaonan"] = { "" }, ["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"] = { "" }, ["Yanchi"] = { "" }, ["Guyuan"] = { "" }, ["Xiji"] = { "" }, ["Longde"] = { "" }, ["Jingyuan"] = { "" }, ["Tianshui"] = { "" }, ["Hezuo"] = { "" }, ["Xining"] = { "" }, ["Menyuan"] = { "" }, ["Yanqi"] = { "" }, ["Dunhuang"] = { "" }, ["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"] = { "" }, ["Lingwu"] = { "" }, ["Najiahu"] = { "" }, ["Wuzhong"] = { "" }, ["Tongxin"] = { "" }, ["Zhongwei"] = { "" }, ["Bayanhot"] = { "" }, ["Lanzhou"] = { "" }, ["Jiuquan"] = { "" }, ["Shandan"] = { "" }, ["Wuwei-GS"] = { "" }, ["Wuwei-GS-ZY"] = { "" }, ["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"] = { "" }, ["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"] = { "" }, ["Shuifu"] = { "" }, ["Daguan"] = { "" }, ["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"] = { "" }, ["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"] = { "" }, ["Jintan-XG"] = { "" }, ["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"] = { "" }, ["Langxi"] = { "" }, ["Guangde"] = { "" }, ["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"] = { "" }, ["Jinhua-M-SDJ"] = { "" }, ["Dianbai-Jun"] = { "" }, ["Qinzhou-M"] = { "" }, ["Pinghai-Jun"] = { "" }, ["Ningguo-GK"] = { "" }, ["Changle-QJ"] = { "" }, ["Yanping"] = { "" }, ["Wuping-ZS-Jun"] = { "" }, ["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"] = { "" }, ["Shangdang"] = { "" }, ["Baochang"] = { "" }, ["Linhe"] = { "" }, ["Pingshun"] = { "" }, ["Zhangzi"] = { "" }, ["Qinxian"] = { "" }, ["Jincheng"] = { "" }, ["Lingchuan"] = { "" }, ["Yangcheng"] = { "" }, ["Gaoping"] = { "" }, ["Jining"] = { "" }, ["Liangcheng"] = { "" }, ["Hohhot"] = { "" }, ["Baotou"] = { "" }, ["Dongsheng"] = { "" }, ["Haibowan"] = { "" }, ["Erenhot"] = { "" }, ["Pingshan"] = { "" }, ["Luquan"] = { "" }, ["Zhangjiakou"] = { "" }, ["Chongli"] = { "" }, ["Handan"] = { "" }, ["Linzhang"] = { "" }, ["Anyang"] = { "" }, ["Linzhou"] = { "" }, ["Hebi"] = { "" }, ["Xinxiang"] = { "" }, ["Huojia"] = { "" }, ["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-HS"] = { "" }, ["Cangnan-JX"] = { "" }, ["Cangnan-PC"] = { "" }, ["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"] = { "" }, ["Shangrao-ZF"] = { "" }, ["Guangfeng"] = { "" }, ["Yushan"] = { "" }, ["Yanshan-JC"] = { "" }, ["Hengfeng-GY"] = { "" }, ["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"] = { "" }, ["Xiangtan-CES"] = { "" }, ["Miluo-CL"] = { "" }, ["Xiangxiang"] = { "" }, ["Xiangxiang-MQ"] = { "" }, ["Loudi"] = { "" }, ["Shuangfeng"] = { "" }, ["Xinhua"] = { "" }, ["Lianyuan"] = { "" }, ["Shaoyang"] = { "" }, ["Lengshuitan"] = { "" }, ["Zhuzhou"] = { "" }, ["Longhui"] = { "" }, ["Suining-X"] = { "" }, ["Dongkou-HQ"] = { "" }, ["Wugang"] = { "" }, ["Hengyang"] = { "" }, ["Hengyang County"] = { "" }, ["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"] = { "" }, ["Yushan-G"] = { "" }, ["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"] = { "" }, ["Dabu-XH"] = { "" }, ["Dabu-TY"] = { "" }, ["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"] = { "" }, ["Shenzhen-HG"] = { "" }, ["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"] = { "" }, ["Lechang-MH"] = { "" }, ["Xinfeng-MT"] = { "" }, ["Xinfeng-DX"] = { "" }, ["Xiaosanjiang"] = { "" }, ["Liannan"] = { "" }, ["Conghua-H"] = { "人民幣" }, ["Jiexi"] = { "" }, ["Jiexi-HZ"] = { "" }, ["Luhe"] = { "" }, ["Raoping-XF"] = { "" }, ["Xiuzhuan"] = { "" }, ["Pinghe-JF"] = { "" }, ["Nanjing-ML"] = { "" }, ["Nanjing-BL"] = { "" }, ["Changting"] = { "" }, ["Shanghang"] = { "" }, ["Shanghang-GT"] = { "" }, ["Yongding"] = { "" }, ["Yongding-XY"] = { "" }, ["Yongding-GB"] = { "" }, ["Yongding-HK"] = { "" }, ["Longyan-WA"] = { "" }, ["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"] = { "" }, ["Miaoli"] = { "" }, ["Zaoqiao"] = { "" }, ["Touwu"] = { "" }, ["Nanzhuang"] = { "" }, ["Shitan"] = { "" }, ["Sanwan"] = { "" }, ["Toufen"] = { "" }, ["Gongguan"] = { "" }, ["Taoyuan"] = { "" }, ["Longtan"] = { "" }, ["Zhuolan-SX"] = { "" }, ["Guanxi"] = { "" }, ["Changhua-PT"] = { "" }, ["Liudui"] = { "" }, ["Wuluo"] = { "" }, ["Daluguan"] = { "" }, ["Jiadong"] = { "" }, ["Meinong"] = { "" }, ["Shanlin"] = { "" }, ["Hsinchu"] = { "" }, ["Guanxi-DP"] = { "" }, ["Guanxi-LQW"] = { "" }, ["Xinwu-HL"] = { "" }, ["Dongshi"] = { "" }, ["Raoping"] = { "" }, ["Guanxi-RP"] = { "" }, ["Hukou-RP"] = { "" }, ["Liujia-RP"] = { "" }, ["Zhongli-ZB-RP"] = { "" }, ["Zhongli-XN-RP"] = { "" }, ["Zhongli-GL-RP"] = { "" }, ["Pingzhen-NS-RP"] = { "" }, ["Xinwu-TZ-RP"] = { "" }, ["Guanyin-XP-RP"] = { "" }, ["Zhuolan-RP"] = { "" }, ["Yunlin"] = { "" }, ["Daxi"] = { "" }, ["Guoxing"] = { "" }, ["Hong Kong-H"] = { "" }, ["Tangkou"] = { "" }, ["Sanjia"] = { "" }, ["Sihe"] = { "" }, ["Qianpai"] = { "" }, ["Xindong"] = { "" }, ["Shalang"] = { "" }, ["Xin'an"] = { "" }, ["Shijiao"] = { "" }, ["Qingping"] = { "" }, ["Xihe"] = { "" }, ["Fumian-XS"] = { "" }, ["Luchuan-LC"] = { "" }, ["Luchuan-DQ"] = { "" }, ["Luchuan-SH"] = { "" }, ["Luchuan-WS"] = { "" }, ["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"] = { "" }, ["Guigang-H-WL"] = { "" }, ["Guigang-H-QX"] = { "" }, ["Guigang-H-BT"] = { "" }, ["Guiping-H-JT"] = { "" }, ["Guiping-H-DX"] = { "" }, ["Pingnan-H-GA"] = { "" }, ["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"] = { "" }, ["Shexian-SY"] = { "" }, ["Tunxi"] = { "" }, ["Huizhou-HZ"] = { "" }, ["Xiuning"] = { "" }, ["Yixian"] = { "" }, ["Qimen"] = { "" }, ["Qimen-AL-Min"] = { "" }, ["Wuyuan"] = { "" }, ["Wuyuan-QK"] = { "" }, ["Wuyuan-JW"] = { "" }, ["Fuliang"] = { "" }, ["Fuliang-EH"] = { "" }, ["Dexing"] = { "" }, ["Dexing-ZC"] = { "" }, ["Jingde"] = { "" }, ["Zhanda"] = { "" }, ["Chun'an"] = { "" }, ["Sui'an"] = { "" }, ["Jiande"] = { "" }, ["Shouchang"] = { "" }, ["Guangzhou"] = { "人民幣" }, ["Hong Kong"] = { "人民幣", "人仔" }, ["HK Weitou"] = { "" }, ["Kam Tin"] = { "人民幣" }, ["Shek Pik"] = { "" }, ["Ting Kok"] = { "" }, ["Tung Ping Chau"] = { "" }, ["Sam Mun Tsai"] = { "" }, ["Macau"] = { "人民幣" }, ["Macau-Tanka"] = { "" }, ["Guangzhou-XJ"] = { "" }, ["Guangzhou-LX"] = { "" }, ["Guangzhou-HP"] = { "" }, ["Luogang"] = { "" }, ["Guangzhou-LH"] = { "" }, ["Guangzhou-MT"] = { "" }, ["Guangzhou-JS"] = { "" }, ["Guangzhou-XS"] = { "" }, ["Guangzhou-SJ"] = { "" }, ["Guangzhou-JC"] = { "" }, ["Guangzhou-LG"] = { "" }, ["Guangzhou-RH"] = { "" }, ["Guangzhou-ZL"] = { "" }, ["Guangzhou-ZLT"] = { "" }, ["Guangzhou-JF"] = { "" }, ["Panyu"] = { "人民幣" }, ["Huadu"] = { "人民幣" }, ["Conghua"] = { "人民幣" }, ["Zengcheng"] = { "人民券" }, ["Zengcheng-XT"] = { "" }, ["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"] = { "" }, ["Zhongshan-TG"] = { "" }, ["Zhuhai"] = { "人民幣" }, ["Zhuhai-TJW"] = { "" }, ["Doumen-T"] = { "銀紙" }, ["Doumen-S"] = { "銀紙" }, ["Jiangmen"] = { "銀紙" }, ["Xinhui"] = { "銀紙" }, ["Taishan"] = { "人民幣", "銀紙" }, ["Taishan-GH"] = { "" }, ["Kaiping"] = { "銀紙" }, ["Enping"] = { "銀紙" }, ["Heshan"] = { "人民幣" }, ["Heshan-SP"] = { "" }, ["Malan"] = { "" }, ["Malan-BTQ"] = { "" }, ["Malan-MHD"] = { "" }, ["Malan-SZP"] = { "" }, ["Malan-BLH"] = { "" }, ["Dongguan"] = { "人民幣" }, ["Shenzhen-C-LH"] = { "" }, ["Shenzhen-NT"] = { "" }, ["Shenzhen-XX"] = { "" }, ["Bao'an"] = { "人民券" }, ["Yantian"] = { "" }, ["Dapeng"] = { "" }, ["Shenzhen-PD"] = { "" }, ["Pingshan-ZM"] = { "" }, ["Ebu-ZM"] = { "" }, ["Longmen"] = { "" }, ["Qingyuan"] = { "" }, ["Fogang"] = { "" }, ["Yingde"] = { "" }, ["Yangshan"] = { "" }, ["Lianshan"] = { "" }, ["Lianshan-YH"] = { "" }, ["Lianzhou"] = { "" }, ["Shaoguan"] = { "" }, ["Qujiang-C"] = { "" }, ["Renhua"] = { "" }, ["Lechang"] = { "" }, ["Gaoyao"] = { "" }, ["Sihui"] = { "" }, ["Guangning"] = { "" }, ["Deqing"] = { "" }, ["Huaiji"] = { "" }, ["Huaiji-LC"] = { "" }, ["Fengkai"] = { "" }, ["Fengkai-JK"] = { "" }, ["Fengkai-LD"] = { "" }, ["Yunfu"] = { "" }, ["Xinxing"] = { "" }, ["Luoding"] = { "" }, ["Luoding-SL"] = { "" }, ["Yunan"] = { "" }, ["Yangjiang"] = { "" }, ["Yangdong"] = { "" }, ["Yangdong-YS"] = { "" }, ["Yangchun"] = { "" }, ["Yangxi"] = { "" }, ["Xinyi"] = { "" }, ["Maoming"] = { "" }, ["Maoming-YJ"] = { "" }, ["Gaozhou"] = { "" }, ["Huazhou"] = { "" }, ["Huazhou-CQ"] = { "" }, ["Zhanjiang"] = { "" }, ["Lianjiang"] = { "" }, ["Lianjiang-CB"] = { "" }, ["Wuchuan"] = { "" }, ["Wuchuan-ML"] = { "" }, ["Nanning"] = { "" }, ["Nanning-Tanka"] = { "" }, ["Wuzhou"] = { "" }, ["Wuzhou-LX"] = { "" }, ["Cangwu-SQ"] = { "" }, ["Cangwu-LB"] = { "" }, ["Tengxian"] = { "" }, ["Yulin"] = { "" }, ["Rongxian"] = { "" }, ["Hepu"] = { "" }, ["Hepu-ST"] = { "" }, ["Guiping"] = { "" }, ["Guiping-JT"] = { "" }, ["Guiping-JK"] = { "" }, ["Guiping-MD"] = { "" }, ["Guiping-ML"] = { "" }, ["Pingnan-PN"] = { "" }, ["Pingnan-DZ"] = { "" }, ["Pingnan-GC"] = { "" }, ["Mengshan"] = { "" }, ["Mengshan-XX"] = { "" }, ["Mengshan-CT"] = { "" }, ["Guigang-GC"] = { "" }, ["Guigang-NJ"] = { "" }, ["Guigang-PD"] = { "" }, ["Beiliu"] = { "" }, ["Beiliu-TL"] = { "" }, ["Beiliu-XC"] = { "" }, ["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"] = { "" }, ["Zhaoping"] = { "" }, ["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"] = { "" }, ["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"] = { "" }, ["Wuxuan-ZC"] = { "" }, ["Chongzuo-P"] = { "" }, ["Chongzuo-P-XH"] = { "" }, ["Fusui-P"] = { "" }, ["Liucheng-P"] = { "" }, ["Liucheng-P-GZ"] = { "" }, ["Liucheng-P-DP"] = { "" }, ["Rongshui"] = { "" }, ["Yizhou-P-DS"] = { "" }, ["Luocheng-P"] = { "" }, ["Baise-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"] = { "" }, ["Tamsui"] = { "" }, ["Sanxia"] = { "" }, ["Pingxi"] = { "" }, ["Kaohsiung"] = { "" }, ["Cijin"] = { "" }, ["Hongmaogang"] = { "" }, ["Dalinpu"] = { "" }, ["Tianliao"] = { "" }, ["Cieding"] = { "" }, ["Xinwu-YX"] = { "" }, ["Yilan"] = { "" }, ["Luodong"] = { "" }, ["Toucheng"] = { "" }, ["Lukang"] = { "" }, ["Yongjing-MN"] = { "" }, ["Caotun"] = { "" }, ["Taichung"] = { "" }, ["Wuqi"] = { "" }, ["Tainan"] = { "" }, ["Anping"] = { "" }, ["Shanhua"] = { "" }, ["Jiali"] = { "" }, ["Taitung"] = { "" }, ["Green Island"] = { "" }, ["Hsinchu-MN"] = { "" }, ["Miaoli-MN"] = { "" }, ["Mailiao"] = { "" }, ["Taixi"] = { "" }, ["Lunbei"] = { "" }, ["Chiayi"] = { "" }, ["Chiayi-TB"] = { "" }, ["Chiayi-SS"] = { "" }, ["Chiayi-ZP"] = { "" }, ["Chiayi-DP"] = { "" }, ["Chiayi-ZQ"] = { "" }, ["Chiayi-DL"] = { "" }, ["Chiayi-XK"] = { "" }, ["Chiayi-MX"] = { "" }, ["Chiayi-PZ"] = { "" }, ["Chiayi-LJ"] = { "" }, ["Chiayi-ST"] = { "" }, ["Chiayi-FL"] = { "" }, ["Chiayi-ALS"] = { "" }, ["Chiayi-LC"] = { "" }, ["Chiayi-YZ"] = { "" }, ["Chiayi-XG"] = { "" }, ["Chiayi-MS"] = { "" }, ["Chiayi-DS"] = { "" }, ["Chiayi-BD"] = { "" }, ["Chiayi-WL"] = { "" }, ["Pingtung"] = { "" }, ["Baoli"] = { "" }, ["Liuqiu"] = { "" }, ["Gabulong"] = { "" }, ["Kinmen"] = { "" }, ["Jinsha"] = { "" }, ["Magong"] = { "" }, ["Pengnan"] = { "" }, ["Xiyu"] = { "" }, ["Huxi"] = { "" }, ["Wangan"] = { "" }, ["Cimei"] = { "" }, ["Huayu"] = { "" }, ["Zhongtun"] = { "" }, ["Houliao"] = { "" }, ["Tongliang"] = { "" }, ["Jibei"] = { "" }, ["Malaysia-MN"] = { "" }, ["Melaka"] = { "" }, ["Labuan"] = { "" }, ["Klang"] = { "" }, ["Singapore-MN"] = { "" }, ["Philippine-MN"] = { "" }, ["Medan"] = { "" }, ["Seri Begawan"] = { "" }, ["Ho Chi Minh City-MN"] = { "" }, ["Yangon-MN"] = { "" }, ["Longyan"] = { "" }, ["Shizhong"] = { "" }, ["Zhangping"] = { "" }, ["Yongfu"] = { "" }, ["Datian"] = { "" }, ["Datian-GP"] = { "" }, ["Youxi-JM"] = { "" }, ["Youxi-XQ"] = { "" }, ["Shunchang-PS"] = { "" }, ["Xiapu-SS"] = { "" }, ["Putian-MN"] = { "" }, ["Pingnan"] = { "" }, ["Pingnan-PT"] = { "" }, ["Pingnan-SJ"] = { "" }, ["Guiping-XW"] = { "" }, ["Guiping-DS"] = { "" }, ["Guilin-MN-BYG"] = { "" }, ["Pingle-MN"] = { "" }, ["Qinzhou-MN"] = { "" }, ["Lechang-TT"] = { "" }, ["Renhua-CSB"] = { "" }, ["Yingde-YZ"] = { "" }, ["Yunan-LT"] = { "" }, ["Heyuan-NJ"] = { "" }, ["Hangzhou-PF"] = { "" }, ["Cangnan-MN"] = { "" }, ["Yuhuan-KM"] = { "" }, ["Wenling-RS"] = { "" }, ["Yixing-SB"] = { "" }, ["Guangfeng-NSD"] = { "" }, ["Hengfeng-YJ"] = { "" }, ["Yushan-ZH"] = { "" }, ["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"] = { "" }, ["Nanlang"] = { "" }, ["Fuzhou"] = { "" }, ["Changle"] = { "" }, ["Lianjiang-MD"] = { "" }, ["Tailu"] = { "" }, ["Minhou"] = { "" }, ["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"] = { "" }, ["Longyou-LS"] = { "" }, ["Singapore-MD-FQ"] = { "" }, ["Sitiawan-MD-GT"] = { "" }, ["Sibu-MD-MQ"] = { "" }, ["Jian'ou"] = { "" }, ["Dikou"] = { "" }, ["Yanping-XY"] = { "" }, ["Yanping-XD"] = { "" }, ["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"] = { "" }, ["Zhangping-She"] = { "" }, ["Guixi-She"] = { "" }, ["Yanshan-She"] = { "" }, ["Wuning-She"] = { "" }, ["Cangnan-She"] = { "" }, ["Jingning-She"] = { "" }, ["Jingning-ZK-She"] = { "" }, ["Lishui-She"] = { "" }, ["Longyou-She"] = { "" }, ["Lin'an-She"] = { "" }, ["Jiande-She"] = { "" }, ["Jinhua-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"] = { "" }, ["Lianzhou-XZ"] = { "" }, ["Lianzhou-BA"] = { "" }, ["Lianzhou-YC"] = { "" }, ["Lianzhou-XA"] = { "" }, ["Lianzhou-FY"] = { "" }, } return export r8s3oztg08hnglozeslrbk34fmxk2qt Bản mẫu:zh-dial-map/人民幣 10 418125 2566573 2026-09-25T16:53:17Z Hiyuune 50834 Trang mới: “{{zh-dial-map}}” 2566573 wikitext text/x-wiki {{zh-dial-map}} 2k1iq8ezm3e0psqf7avnc52al6y68vt 人民幣 0 418126 2566574 2026-09-26T02:00:57Z Hiyuune 50834 Trang mới: “{{also|人民币}} =={{langname|vi}}== ==={{section|n}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|nhân dân tệ}} =={{langname|ja}}== {{wp|ja:}} {{ja-kanjitab|yomi=o|じん|みん|へい}} ==={{section|pron}}=== {{ja-pron|じんみんへい}} ==={{section|n}}=== {{ja-noun|じんみんへい}} # [[nhân dân tệ|Nhân dân tệ]]. #: {{syn|ja|{{ja-r|人%民%元|じん%みん%げん}}}} {{C|ja|Tiền tệ|sort=じんみんへい}} =={{langname|ko}}== {{ko-hanjata…” 2566574 wikitext text/x-wiki {{also|人民币}} =={{langname|vi}}== ==={{section|n}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|nhân dân tệ}} =={{langname|ja}}== {{wp|ja:}} {{ja-kanjitab|yomi=o|じん|みん|へい}} ==={{section|pron}}=== {{ja-pron|じんみんへい}} ==={{section|n}}=== {{ja-noun|じんみんへい}} # [[nhân dân tệ|Nhân dân tệ]]. #: {{syn|ja|{{ja-r|人%民%元|じん%みん%げん}}}} {{C|ja|Tiền tệ|sort=じんみんへい}} =={{langname|ko}}== {{ko-hanjatab}} ==={{section|n}}=== {{ko-noun|hj|hangeul=인민폐}} # {{hanja form of|인민폐|nhân dân tệ}} =={{langname|zh}}== {{zh-forms|s=人民币|type=21|lit=tiền tệ của nhân dân}} ==={{section|pron}}=== {{zh-pron |m=rénmínbì |c=jan4 man4 bai6 |ca=LL-Q9186-Luilui6666-人民币.wav |c-t=ngin3 min3 bai5,ngin3 min3 bai5* |h=pfs=ngìn-mìn-pi |md=ìng-mìng-bê |mn=xm,tp:lîn-bîn-pè/qz:lîn-bîn-pē/zz:jîn-bîn-pī/kh:jîn-bîn-pè |mn-t=nang5 ming5 bi6 |w=sh:6zen min bi |ma=y |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[nhân dân tệ|Nhân dân tệ]]. ===={{section|syn}}==== {{zh-dial}} ===={{section|desc}}==== {{CJKV|人民幣|じんみんへい|인민폐|nhân dân tệ}} ''Khác'': * {{desc|bor=1|en|renminbi}} * {{desc|bor=1|fr|renminbi}} * {{desc|bor=1|de|Renminbi}} * {{desc|bor=1|hi|रॅन्मिन्बी}} * {{desc|bor=1|ko|런민비}} * {{desc|bor=1|pt|renminbi|renmimbi}} * {{desc|bor=1|ru|жэньминьби́}} * {{desc|bor=1|za|yinzminzbi}} {{C|zh|Tiền tệ}} tix8vt085td70y0pkv2s5i5q9tnr58l 2566630 2566574 2026-09-26T09:48:32Z TheHighFighter2 42988 /* Hậu duệ */ 2566630 wikitext text/x-wiki {{also|人民币}} =={{langname|vi}}== ==={{section|n}}=== {{vi-noun|sc=Hani}} # {{vi-Han form of|nhân dân tệ}} =={{langname|ja}}== {{wp|ja:}} {{ja-kanjitab|yomi=o|じん|みん|へい}} ==={{section|pron}}=== {{ja-pron|じんみんへい}} ==={{section|n}}=== {{ja-noun|じんみんへい}} # [[nhân dân tệ|Nhân dân tệ]]. #: {{syn|ja|{{ja-r|人%民%元|じん%みん%げん}}}} {{C|ja|Tiền tệ|sort=じんみんへい}} =={{langname|ko}}== {{ko-hanjatab}} ==={{section|n}}=== {{ko-noun|hj|hangeul=인민폐}} # {{hanja form of|인민폐|nhân dân tệ}} =={{langname|zh}}== {{zh-forms|s=人民币|type=21|lit=tiền tệ của nhân dân}} ==={{section|pron}}=== {{zh-pron |m=rénmínbì |c=jan4 man4 bai6 |ca=LL-Q9186-Luilui6666-人民币.wav |c-t=ngin3 min3 bai5,ngin3 min3 bai5* |h=pfs=ngìn-mìn-pi |md=ìng-mìng-bê |mn=xm,tp:lîn-bîn-pè/qz:lîn-bîn-pē/zz:jîn-bîn-pī/kh:jîn-bîn-pè |mn-t=nang5 ming5 bi6 |w=sh:6zen min bi |ma=y |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # [[nhân dân tệ|Nhân dân tệ]]. ===={{section|syn}}==== {{zh-dial}} ===={{section|desc}}==== {{CJKV|人民幣|じんみんへい|인민폐|nhân dân tệ}} ''Khác'': * {{desc|bor=1|en|renminbi}} * {{desc|bor=1|pt|renminbi|renmimbi}} * {{desc|bor=1|de|Renminbi}} * {{desc|bor=1|hi|रॅन्मिन्बी}} * {{desc|bor=1|ru|жэньминьби́}} * {{desc|bor=1|fr|renminbi}} * {{desc|bor=1|za|yinzminzbi}} * {{desc|bor=1|ko|런민비}} {{C|zh|Tiền tệ}} 1vzhj43ns5d46aelceakzzdmkhjczc8 nhân dân tệ 0 418127 2566575 2026-09-26T02:11:40Z Hiyuune 50834 Trang mới: “=={{langname|vi}}== {{wp}} ==={{section|alt}}=== * {{alt|vi|NDT||initialism}} ==={{section|pron}}=== {{vi-etym-sino|人民幣}}. ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun|head=[[nhân dân]] [[tệ]]}} # {{senseid|vi|Q39099}} [[đơn vị tiền tệ|Đơn vị tiền tệ]] [[chính thức]] của nước [[Cộng hòa Nhân dân Trung Hoa]]. ===={{section|trans}}==== {{trans-top|đơn vị tiền tệ chính thức của Cộng hòa Nhân d…” 2566575 wikitext text/x-wiki =={{langname|vi}}== {{wp}} ==={{section|alt}}=== * {{alt|vi|NDT||initialism}} ==={{section|pron}}=== {{vi-etym-sino|人民幣}}. ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun|head=[[nhân dân]] [[tệ]]}} # {{senseid|vi|Q39099}} [[đơn vị tiền tệ|Đơn vị tiền tệ]] [[chính thức]] của nước [[Cộng hòa Nhân dân Trung Hoa]]. ===={{section|trans}}==== {{trans-top|đơn vị tiền tệ chính thức của Cộng hòa Nhân dân Trung Hoa}} * {{langname|en}}: {{t+|en|renminbi}} * {{langname|hi}}: {{t|hi|रॅन्मिन्बी}} * {{langname|ru}}: {{t|ru|жэньминьби́|f}} * {{langname|ja}}: {{t|ja|人民元|tr=じんみんげん, jinmingen}}, {{t+|ja|人民幣|tr=じんみんへい, jinminhei}} * {{langname|fi}}: {{t+|fi|renminbi}} * {{langname|fr}}: {{t+|fr|renminbi|m}} * {{langname|eo}}: {{t|eo|renminbio}} * {{langname|bo}}: {{t|bo|མི་དམངས་ཤོག་དངུལ།}} * {{langname|ko}}: {{t|ko|런민비}}, {{t|ko|인민폐(人民幣)}} * {{langname|zh}}: *: {{langname|nan-hbl}}: {{t+|nan-hbl|人民幣|tr=jîn-bîn-pè, lîn-bîn-pè}}, {{t|nan-hbl|人頭紙|tr=lâng-thâu-choá}} {{qualifier|Đài Loan, từ lóng}} *: {{langname|cmn}}: {{t+|cmn|人民幣|tr=rénmínbì}} *: {{langname|yue}}: {{t|yue|人民幣|tr=jan4 man4 bai6}}, {{t+|yue|人仔|tr=jan4 zai2}} {{qualifier|từ lóng}} {{trans-bottom}} {{c|vi|Tiền tệ}} 8rgy4jurckdczmv28ciedjzmbde5qd1 2566576 2566575 2026-09-26T02:13:14Z Hiyuune 50834 /* {{section|trans}} */ 2566576 wikitext text/x-wiki =={{langname|vi}}== {{wp}} ==={{section|alt}}=== * {{alt|vi|NDT||initialism}} ==={{section|pron}}=== {{vi-etym-sino|人民幣}}. ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun|head=[[nhân dân]] [[tệ]]}} # {{senseid|vi|Q39099}} [[đơn vị tiền tệ|Đơn vị tiền tệ]] [[chính thức]] của nước [[Cộng hòa Nhân dân Trung Hoa]]. ===={{section|trans}}==== {{trans-top|đơn vị tiền tệ chính thức của Cộng hòa Nhân dân Trung Hoa}} * {{langname|en}}: {{t+|en|renminbi}} * {{langname|de}}: {{t+|de|Renminbi|m}} * {{langname|hi}}: {{t|hi|रॅन्मिन्बी}} * {{langname|kk}}: {{t|kk|женминби}} * {{langname|km}}: {{t|km|រ៉ិនមិនប៊ី|tr=rənminbii}} * {{langname|ms}}: {{t|ms|renminbi}} * {{langname|mr}}: {{t|mr|रॅन्मिन्बी}} * {{langname|mn}}: {{t|mn|ᠠᠷᠠᠳ ᠤᠨ ᠵᠣᠭᠣᠰ}}, {{t|mn|ардын зоос}} * {{langname|ru}}: {{t|ru|жэньминьби́|f}} * {{langname|ja}}: {{t|ja|人民元|tr=じんみんげん, jinmingen}}, {{t+|ja|人民幣|tr=じんみんへい, jinminhei}} * {{langname|fi}}: {{t+|fi|renminbi}} * {{langname|fr}}: {{t+|fr|renminbi|m}} * {{langname|eo}}: {{t|eo|renminbio}} * {{langname|bo}}: {{t|bo|མི་དམངས་ཤོག་དངུལ།}} * {{langname|ko}}: {{t|ko|런민비}}, {{t|ko|인민폐(人民幣)}} * {{langname|zh}}: *: {{langname|nan-hbl}}: {{t+|nan-hbl|人民幣|tr=jîn-bîn-pè, lîn-bîn-pè}}, {{t|nan-hbl|人頭紙|tr=lâng-thâu-choá}} {{qualifier|Đài Loan, từ lóng}} *: {{langname|cmn}}: {{t+|cmn|人民幣|tr=rénmínbì}} *: {{langname|yue}}: {{t|yue|人民幣|tr=jan4 man4 bai6}}, {{t+|yue|人仔|tr=jan4 zai2}} {{qualifier|từ lóng}} {{trans-bottom}} {{c|vi|Tiền tệ}} rbm8luh4iph9zbxr2f9c7rzgnr0t9jl 人民币 0 418128 2566577 2026-09-26T02:17:05Z Hiyuune 50834 Trang mới: “{{also|人民幣}} =={{langname|zh}}== {{zh-see|人民幣}}” 2566577 wikitext text/x-wiki {{also|人民幣}} =={{langname|zh}}== {{zh-see|人民幣}} q3sypxksxhvmj0ewjcx6uzjx2jtd570 Mô đun:zh/data/ltc-pron/紙 828 418129 2566578 2026-09-26T02:20:14Z Hiyuune 50834 Trang mới: “return { "章支三開 上諸氏" }” 2566578 Scribunto text/plain return { "章支三開 上諸氏" } r5e51f90erimmlsglqgvejrvzu7a5t1 Mô đun:zh/data/ltc-pron/鳶 828 418130 2566579 2026-09-26T02:20:54Z Hiyuune 50834 Trang mới: “return { "以仙三合 平與專" }” 2566579 Scribunto text/plain return { "以仙三合 平與專" } tva0i30jja74kg8xs650d69nx7tq9h5 紙鳶 0 418131 2566580 2026-09-26T02:21:14Z Hiyuune 50834 + zh 2566580 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms|s=纸鸢}} ==={{section|pron}}=== {{zh-pron |m=zhǐyuān |c=zi2 jyun1 |mn=tw:chóa-ian |mc=y |cat=n }} ==={{section|n}}=== {{head|zh|Danh từ}} # {{lb|zh|literary}} [[diều|Diều]]. ===={{section|syn}}==== {{zh-dial|風箏}} ===={{section|desc}}==== {{CJKV||j=紙%鳶|し%えん|지연}} {{C|zh|Đồ chơi}} kyx0emu5gdbzoglh8u7w8rqjn7rrqm1 纸鸢 0 418132 2566581 2026-09-26T02:24:02Z Hiyuune 50834 Trang mới: “=={{langname|zh}}== {{zh-see|紙鳶}}” 2566581 wikitext text/x-wiki =={{langname|zh}}== {{zh-see|紙鳶}} sfhasci7t2ezy6pbrvtd1on5xfq3c1a 纸 0 418133 2566582 2026-09-26T02:37:34Z Hiyuune 50834 Trang mới: “{{also|紙}} {{character info}} =={{langname|mul}}== {{stroke order|strokes=11}} ==={{section|han}}=== {{Han char|rn=120|rad=纟|as=04|sn=7|four=|canj=VMHVP|ids=⿰纟氏}} # [[giấy|Giấy]]. ===={{section|ref}}==== * {{Han ref|kx=0944.251|hdz=53376.010|uh=7EB8}} =={{langname|zh}}== {{zh-see|紙}}” 2566582 wikitext text/x-wiki {{also|紙}} {{character info}} =={{langname|mul}}== {{stroke order|strokes=11}} ==={{section|han}}=== {{Han char|rn=120|rad=纟|as=04|sn=7|four=|canj=VMHVP|ids=⿰纟氏}} # [[giấy|Giấy]]. ===={{section|ref}}==== * {{Han ref|kx=0944.251|hdz=53376.010|uh=7EB8}} =={{langname|zh}}== {{zh-see|紙}} rsjhgvbvy7i7qu781rr9u55u33recw0 鸢 0 418134 2566583 2026-09-26T02:39:22Z Hiyuune 50834 Trang mới: “{{also|鳶}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=196|rad=鸟|as=03|sn=8|four=|canj=IPPYM|ids=⿱弋鸟}} ===={{section|ref}}==== * {{Han ref|kx=1505.141|hdz=74615.140|uh=9E22}} =={{langname|zh}}== {{zh-see|鳶}}” 2566583 wikitext text/x-wiki {{also|鳶}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=196|rad=鸟|as=03|sn=8|four=|canj=IPPYM|ids=⿱弋鸟}} ===={{section|ref}}==== * {{Han ref|kx=1505.141|hdz=74615.140|uh=9E22}} =={{langname|zh}}== {{zh-see|鳶}} finapzir5pqqhja9pkzmbmk4c8sq0e8 鸣 0 418135 2566584 2026-09-26T02:45:00Z Hiyuune 50834 Trang mới: “{{also|呜|鳴}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=196|rad=鸟|as=03|sn=8|four=67027|canj=RPYM|ids=⿰口鸟}} ===={{secton|ref}}==== * {{Han ref|kx=1505.141|hdz=74616.010|uh=9E23}} =={{langname|zh}}== ==={{section|glyph origin}}=== {{Han simp|鳴|f=鳥|t=鸟}}. ==={{section|dfn}}=== {{zh-see|鳴}}” 2566584 wikitext text/x-wiki {{also|呜|鳴}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=196|rad=鸟|as=03|sn=8|four=67027|canj=RPYM|ids=⿰口鸟}} ===={{secton|ref}}==== * {{Han ref|kx=1505.141|hdz=74616.010|uh=9E23}} =={{langname|zh}}== ==={{section|glyph origin}}=== {{Han simp|鳴|f=鳥|t=鸟}}. ==={{section|dfn}}=== {{zh-see|鳴}} ara9x9fe7umnbuiqftho8d9f64a40h8 2566585 2566584 2026-09-26T02:48:40Z Hiyuune 50834 /* Bản mẫu:secton */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566585 wikitext text/x-wiki {{also|呜|鳴}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=196|rad=鸟|as=03|sn=8|four=67027|canj=RPYM|ids=⿰口鸟}} ===={{section|ref}}==== * {{Han ref|kx=1505.141|hdz=74616.010|uh=9E23}} =={{langname|zh}}== ==={{section|glyph origin}}=== {{Han simp|鳴|f=鳥|t=鸟}}. ==={{section|dfn}}=== {{zh-see|鳴}} 6q7brk2dbd8c2dgn11d1wcb8l6ay50l Phụ lục:Biến thể của "agu" 100 418136 2566588 2026-09-26T03:05:30Z Hiyuune 50834 Trang mới: “{{wp|en:AGU<dab!>}} Từ "agu" xuất hiện trong nhiều ngôn ngữ với nhiều biến thể về cách [[chữ hoa|viết hoa]], thêm [[dấu câu]] và [[dấu phụ]]. ==Viết hoa và dấu câu== {{top2}} * [[agu]] * [[Agu]] * [[AGU]] {{bottom}} ==Dấu phụ== {{top2}} * [[agū]] * [[agú]] * [[agụ]] * [[aĝu]] * [[ağu]], [[Ağu]] * [[águ]] * [[ágú]], [[ágú.]] * [[ágụ]] {{bottom}} ==Chữ viết khác== {{top3}} ; Kirin * [[агу]] (agu), Аг…” 2566588 wikitext text/x-wiki {{wp|en:AGU<dab!>}} Từ "agu" xuất hiện trong nhiều ngôn ngữ với nhiều biến thể về cách [[chữ hoa|viết hoa]], thêm [[dấu câu]] và [[dấu phụ]]. ==Viết hoa và dấu câu== {{top2}} * [[agu]] * [[Agu]] * [[AGU]] {{bottom}} ==Dấu phụ== {{top2}} * [[agū]] * [[agú]] * [[agụ]] * [[aĝu]] * [[ağu]], [[Ağu]] * [[águ]] * [[ágú]], [[ágú.]] * [[ágụ]] {{bottom}} ==Chữ viết khác== {{top3}} ; Kirin * [[агу]] (agu), [[Агу]] (Agu), [[АГУ]] (AGU) * [[аґу]] (agu) * [[ағу]] (ağu) * [[аӷу]] * [[аҕу]] ; Hiragana * [[あぐ]] (agu) * [[あぐう]] (agū) * [[あぐー]] (agū) ; Katakana * [[アグー]] (agū) {{bottom}} ==Xem thêm== * [[Phụ lục:Biến thể của "a"]] * [[Phụ lục:Biến thể của "g"]] * [[Phụ lục:Biến thể của "u"]] [[Thể loại:Biến thể của tổ hợp ba chữ cái|agu]] [[fr:Modèle:voir/agu]] dhpw3z2xvsgpo9q03tagdhiuuouo5ke Agu 0 418137 2566589 2026-09-26T03:09:43Z Hiyuune 50834 + et, id 2566589 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|et}}== ==={{section|pr-noun}}=== {{head|et|Danh từ riêng}} # {{given name|et|nam}} ===={{section|rel}}==== * {{l|et|Ago}} ===={{section|see}}==== * {{l|et|Koit}} =={{langname|id}}== ==={{section|pr-noun}}=== {{head|id|Danh từ riêng}} # {{abbreviation of|id|Agustus||tháng Tám}} #: {{cot|id|Jan|Feb|Mar|Apr|Mei|Jun|Jul|Sep|Okt|Nov|Des}} md8zhlui6bqsd2oszuscumza7hhx0gd agū 0 418138 2566590 2026-09-26T03:13:21Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|ja}}== ==={{section|rom}}=== {{ja-romaji}} # {{ja-romanization of|あぐう}} # {{ja-romanization of|アグー}}” 2566590 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|ja}}== ==={{section|rom}}=== {{ja-romaji}} # {{ja-romanization of|あぐう}} # {{ja-romanization of|アグー}} 6krnrklf0viaknc1mzyqqvgf6uvuszx agú 0 418139 2566591 2026-09-26T03:14:30Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|ga}}== ==={{section|n}}=== {{ga-noun|m|agaithe|-}} # {{verbal noun of|ga|agaigh}} ===={{section|decl}}==== {{ga-decl-m-irreg-nopl|a|gú|gaithe}} ==={{section|mut}}=== {{ga-mut|msn}} ==={{section|further}}=== * {{R:ga:Ó Dónaill}}” 2566591 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|ga}}== ==={{section|n}}=== {{ga-noun|m|agaithe|-}} # {{verbal noun of|ga|agaigh}} ===={{section|decl}}==== {{ga-decl-m-irreg-nopl|a|gú|gaithe}} ==={{section|mut}}=== {{ga-mut|msn}} ==={{section|further}}=== * {{R:ga:Ó Dónaill}} qcke36cl2cnilmjg3aopr3tzmqfpqvn ağu 0 418140 2566592 2026-09-26T03:23:10Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|lzz}}== ==={{section|n}}=== {{head|lzz|Danh từ}} # {{spelling of|lzz|Latinh|აღუ||chất độc}} =={{langname|slr}}== ==={{section|etym}}=== {{inh+|slr|trk-pro|*āgu}}. Cùng gốc với {{cog|tr|ağı}}. ==={{section|pron}}=== * {{IPA|slr|/ɑʁu/|a=Thanh Thủy,Tuần Hóa,Thanh Hải}} * {{IPA|slr|/aːʁu/|a=Ili,Y Ninh,Tân Cương}} ==={{section|n}}=== {{head|slr|Danh từ}} # {{lb|slr|dated|dial…” 2566592 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|lzz}}== ==={{section|n}}=== {{head|lzz|Danh từ}} # {{spelling of|lzz|Latinh|აღუ||chất độc}} =={{langname|slr}}== ==={{section|etym}}=== {{inh+|slr|trk-pro|*āgu}}. Cùng gốc với {{cog|tr|ağı}}. ==={{section|pron}}=== * {{IPA|slr|/ɑʁu/|a=Thanh Thủy,Tuần Hóa,Thanh Hải}} * {{IPA|slr|/aːʁu/|a=Ili,Y Ninh,Tân Cương}} ==={{section|n}}=== {{head|slr|Danh từ}} # {{lb|slr|dated|dialectal}} [[chất độc|Chất độc]]. #: {{syn|slr|du}} #: {{ant|slr|em}} ==={{section|ref}}=== * {{R:slr:Ayso|page=2}} * {{R:slr:MaChengjun|page=8|aağu}} * {{R:slr:Yakup|page=34|aːʁu}} * {{R:slr:Stroy|page=281|agu}} =={{langname|tt}}== ==={{section|n}}=== {{head|tt|Danh từ}} # {{spelling of|tt|Latinh|агу||chất độc}} lbxj6btamrun048343nj3ovxmlv8zgn 2566593 2566592 2026-09-26T03:23:36Z Hiyuune 50834 /* Tiếng Laz */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566593 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|lzz}}== ==={{section|n}}=== {{head|lzz|Danh từ}} # {{spelling of|lzz|Latinh|აღუ||nọc độc, chất độc}} =={{langname|slr}}== ==={{section|etym}}=== {{inh+|slr|trk-pro|*āgu}}. Cùng gốc với {{cog|tr|ağı}}. ==={{section|pron}}=== * {{IPA|slr|/ɑʁu/|a=Thanh Thủy,Tuần Hóa,Thanh Hải}} * {{IPA|slr|/aːʁu/|a=Ili,Y Ninh,Tân Cương}} ==={{section|n}}=== {{head|slr|Danh từ}} # {{lb|slr|dated|dialectal}} [[chất độc|Chất độc]]. #: {{syn|slr|du}} #: {{ant|slr|em}} ==={{section|ref}}=== * {{R:slr:Ayso|page=2}} * {{R:slr:MaChengjun|page=8|aağu}} * {{R:slr:Yakup|page=34|aːʁu}} * {{R:slr:Stroy|page=281|agu}} =={{langname|tt}}== ==={{section|n}}=== {{head|tt|Danh từ}} # {{spelling of|tt|Latinh|агу||chất độc}} jvwt7f6sxkyp86u246kkvff8hluzkuq აღუ 0 418141 2566594 2026-09-26T03:25:02Z Hiyuune 50834 Trang mới: “=={{langname|lzz}}== ==={{section|etym}}=== {{bor+|lzz|ota|اغو|tr=ağu}}. ==={{section|n}}=== {{head|lzz|Danh từ|chính tả Latinh|ağu}} # [[nọc độc|Nọc độc]], [[chất độc]] #: {{syn|lzz|ღურზული|აბუტრაკი|ნჭამი}} ==={{section|further}}=== * {{R:lzz:Kojima|ağu}} * {{R:lzz:Tandilava}} {{C|lzz|Chất độc|Độc chất học}}” 2566594 wikitext text/x-wiki =={{langname|lzz}}== ==={{section|etym}}=== {{bor+|lzz|ota|اغو|tr=ağu}}. ==={{section|n}}=== {{head|lzz|Danh từ|chính tả Latinh|ağu}} # [[nọc độc|Nọc độc]], [[chất độc]] #: {{syn|lzz|ღურზული|აბუტრაკი|ნჭამი}} ==={{section|further}}=== * {{R:lzz:Kojima|ağu}} * {{R:lzz:Tandilava}} {{C|lzz|Chất độc|Độc chất học}} 0ywf1v7rbviiktg5fmx6gxml81qpejc 2566595 2566594 2026-09-26T03:25:08Z Hiyuune 50834 2566595 wikitext text/x-wiki =={{langname|lzz}}== ==={{section|etym}}=== {{bor+|lzz|ota|اغو|tr=ağu}}. ==={{section|n}}=== {{head|lzz|Danh từ|chính tả Latinh|ağu}} # [[nọc độc|Nọc độc]], [[chất độc]]. #: {{syn|lzz|ღურზული|აბუტრაკი|ნჭამი}} ==={{section|further}}=== * {{R:lzz:Kojima|ağu}} * {{R:lzz:Tandilava}} {{C|lzz|Chất độc|Độc chất học}} 8exoinq3dragk58zdvns7923es7bx3c Ağu 0 418142 2566596 2026-09-26T03:25:59Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|tr}}== ==={{section|n}}=== {{head|tr|Danh từ}} # {{abbreviation of|tr|[[ağustos|Ağustos]]||tháng Tám}} #: {{cot|tr|Oca|Şub|Mar|Nis|May|Haz|Tem|Eyl|Eki|Kas|Ara}}” 2566596 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|tr}}== ==={{section|n}}=== {{head|tr|Danh từ}} # {{abbreviation of|tr|[[ağustos|Ağustos]]||tháng Tám}} #: {{cot|tr|Oca|Şub|Mar|Nis|May|Haz|Tem|Eyl|Eki|Kas|Ara}} ms4iez4178d5ma327u3o9wh27n49ibz águ 0 418143 2566597 2026-09-26T03:43:41Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|kea}}== ==={{section|etym}}=== Từ {{der|kea|pt|água}}. ==={{section|n}}=== {{head|kea|Danh từ}} # [[nước|Nước]]. ==={{section|ref}}=== * Nicolas Quint, ''Dictionnaire cap-verdien - français'' (1999), [http://books.google.fr/books?id=T6ZxXXzAhz0C&pg=PA2#v=onepage&q&f=false tr. 2] * Jürgen Lang, ''Dicionário do Crioulo da Ilha de Santiago (Cabo Verde)'' (2002)” 2566597 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|kea}}== ==={{section|etym}}=== Từ {{der|kea|pt|água}}. ==={{section|n}}=== {{head|kea|Danh từ}} # [[nước|Nước]]. ==={{section|ref}}=== * Nicolas Quint, ''Dictionnaire cap-verdien - français'' (1999), [http://books.google.fr/books?id=T6ZxXXzAhz0C&pg=PA2#v=onepage&q&f=false tr. 2] * Jürgen Lang, ''Dicionário do Crioulo da Ilha de Santiago (Cabo Verde)'' (2002) 5gu71m6wdmo2betvwllfrz4x33d3iry aĝu 0 418144 2566598 2026-09-26T03:44:21Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|eo}}== ==={{section|pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-aĝu.wav}} ==={{section|v}}=== {{eo-head}} # {{eo-form of|aĝ|u}}” 2566598 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|eo}}== ==={{section|pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-aĝu.wav}} ==={{section|v}}=== {{eo-head}} # {{eo-form of|aĝ|u}} maxd8si68nhmahyotiz0xwfvgzt0mus ágú. 0 418145 2566599 2026-09-26T03:45:48Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "agu"}} =={{langname|is}}== ==={{section|n}}=== {{head|is|Danh từ|g=m}} # {{abbr of|is|ágúst||tháng Tám}} #: {{cot|is|jan.|feb.|mar.|apr.|maí|jún.|júl.|sep.|okt.|nóv.|des.}}” 2566599 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "agu"}} =={{langname|is}}== ==={{section|n}}=== {{head|is|Danh từ|g=m}} # {{abbr of|is|ágúst||tháng Tám}} #: {{cot|is|jan.|feb.|mar.|apr.|maí|jún.|júl.|sep.|okt.|nóv.|des.}} 39nsj0v94z0s3pimm3beovlnnq4083e roa 0 418146 2566600 2026-09-26T03:48:13Z Hiyuune 50834 Trang mới: “{{also|Phụ lục:Biến thể của "roa"}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ro'''m'''a'''nce}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|2&5|Nhóm ngôn ngữ Rôman}}” 2566600 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "roa"}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ro'''m'''a'''nce}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|2&5|Nhóm ngôn ngữ Rôman}} jecitkoxoj6176j30wpfgq6lwxly9k9 2566601 2566600 2026-09-26T03:49:04Z Hiyuune 50834 /* Ký hiệu */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566601 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "roa"}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ro'''m'''a'''nce}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|2&5|Nhóm ngôn ngữ Rôman}} =={{langname|et}}== ==={{section|n}}=== {{head|et|Biến thể hình thái danh từ}} # {{noun form of|et|roog||gen|s}} =={{langname|gl}}== ==={{section|v}}=== {{head|gl|Biến thể hình thái động từ}} # {{gl-reinteg-verb form of|roer}} 4kxvzfhv6ap8vznrv0zhc9ez2q7otev 2566602 2566601 2026-09-26T03:50:17Z Hiyuune 50834 /* Tiếng Galicia */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2566602 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "roa"}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ro'''m'''a'''nce}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|2&5|Nhóm ngôn ngữ Rôman}} =={{langname|et}}== ==={{section|n}}=== {{head|et|Biến thể hình thái danh từ}} # {{noun form of|et|roog||gen|s}} =={{langname|gl}}== ==={{section|v}}=== {{head|gl|Biến thể hình thái động từ}} # {{gl-reinteg-verb form of|roer}} =={{langname|lld}}== ==={{section|etym}}=== Từ {{der|lld|xrr|-}}. ==={{section|n}}=== {{lld-noun|f|roes}} # [[lở đất|Lở đất]]. qgqeyk6jm07bv38ps3lp7z34svzdfr4 2566627 2566602 2026-09-26T09:37:20Z TheHighFighter2 42988 /* Ký hiệu */ 2566627 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "roa"}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ro'''m'''a'''nce}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|2&5|nhóm ngôn ngữ Rôman}} =={{langname|et}}== ==={{section|n}}=== {{head|et|Biến thể hình thái danh từ}} # {{noun form of|et|roog||gen|s}} =={{langname|gl}}== ==={{section|v}}=== {{head|gl|Biến thể hình thái động từ}} # {{gl-reinteg-verb form of|roer}} =={{langname|lld}}== ==={{section|etym}}=== Từ {{der|lld|xrr|-}}. ==={{section|n}}=== {{lld-noun|f|roes}} # [[lở đất|Lở đất]]. 641v16143qixozn2cuuhtnjxblokypm Bản mẫu:njh-conj-table 10 418147 2566604 2026-09-26T03:53:52Z Hiyuune 50834 Trang mới: “{{inflection-table-top|palette=blue|tall=yes}} ! rowspan=2 class="outer"| Dạng ! colspan=3 class="outer"| Thì ! rowspan=2 class="outer"| Mệnh lệnh |- ! Hiện tại ! Quá khứ ! Tương lai |- ! Đơn giản | {{{pres_simp}}} | {{{past_simp}}} | {{{fut_simp}}} | {{{imp_simp}}} |- ! Nguyên nhân | {{{pres_caus}}} | {{{past_caus}}} | {{{fut_caus}}} | {{{imp_caus}}} |- ! Hoàn thành | {{{pres_perf}}} | {{{past_perf}}} | {{{fut_perf}}} | &mdash; |- ! Khả năng |…” 2566604 wikitext text/x-wiki {{inflection-table-top|palette=blue|tall=yes}} ! rowspan=2 class="outer"| Dạng ! colspan=3 class="outer"| Thì ! rowspan=2 class="outer"| Mệnh lệnh |- ! Hiện tại ! Quá khứ ! Tương lai |- ! Đơn giản | {{{pres_simp}}} | {{{past_simp}}} | {{{fut_simp}}} | {{{imp_simp}}} |- ! Nguyên nhân | {{{pres_caus}}} | {{{past_caus}}} | {{{fut_caus}}} | {{{imp_caus}}} |- ! Hoàn thành | {{{pres_perf}}} | {{{past_perf}}} | {{{fut_perf}}} | &mdash; |- ! Khả năng | {{{pres_abil}}} | {{{past_abil}}} | {{{fut_abil}}} | &mdash; {{inflection-table-bottom}}<!-- --><noinclude>{{tcat}}{{documentation}}</noinclude> e7ih9phuv9sverbx8q76bll4rlnrckq घ 0 418148 2566606 2026-09-26T07:57:29Z Lcsnes 40261 Trang mới: “{{minitoc}} {{-Deva-}} {{character info}} [[File:Deva-घ-order.gif|thumb]] ==={{ĐM|pron}}=== *{{IPA4|mul|/ɡʱə/}} {{qualifier|thay đổi theo ngôn ngữ}} ==={{ĐM|desction}}=== {{mul-letter|gha}} #Chữ Devanagari ''gha'', thể hiện phụ âm hầu bật hơi hữu thanh =={{langname|ahr}}== ==={{ĐM|pron}}=== *{{IPA4|ahr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|ahr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Ahiran, viết bằng chữ Devanagari. #:{{ux|ahr|…” 2566606 wikitext text/x-wiki {{minitoc}} {{-Deva-}} {{character info}} [[File:Deva-घ-order.gif|thumb]] ==={{ĐM|pron}}=== *{{IPA4|mul|/ɡʱə/}} {{qualifier|thay đổi theo ngôn ngữ}} ==={{ĐM|desction}}=== {{mul-letter|gha}} #Chữ Devanagari ''gha'', thể hiện phụ âm hầu bật hơi hữu thanh =={{langname|ahr}}== ==={{ĐM|pron}}=== *{{IPA4|ahr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|ahr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Ahiran, viết bằng chữ Devanagari. #:{{ux|ahr|पं'''घ'''रनं|[[mặc]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Ahiran'') [[अ#Tiếng_Ahiran|अ]], [[आ#Tiếng_Ahiran|आ]], [[इ#Tiếng_Ahiran|इ]], [[ई#Tiếng_Ahiran|ई]], [[उ#Tiếng_Ahiran|उ]], [[ऊ#Tiếng_Ahiran|ऊ]], [[ए#Tiếng_Ahiran|ए]], [[ऐ#Tiếng_Ahiran|ऐ]], [[ओ#Tiếng_Ahiran|ओ]], [[औ#Tiếng_Ahiran|औ]], [[अं#Tiếng_Ahiran|अं]], [[अः#Tiếng_Ahiran|अः]], [[क#Tiếng_Ahiran|क]], [[ख#Tiếng_Ahiran|ख]], [[ग#Tiếng_Ahiran|ग]], [[घ#Tiếng_Ahiran|घ]], [[ङ#Tiếng_Ahiran|ङ]], [[च#Tiếng_Ahiran|च]], [[छ#Tiếng_Ahiran|छ]], [[ज#Tiếng_Ahiran|ज]], [[झ#Tiếng_Ahiran|झ]], [[ञ#Tiếng_Ahiran|ञ]], [[ट#Tiếng_Ahiran|ट]], [[ठ#Tiếng_Ahiran|ठ]], [[ड#Tiếng_Ahiran|ड]], [[ढ#Tiếng_Ahiran|ढ]], [[ण#Tiếng_Ahiran|ण]], [[त#Tiếng_Ahiran|त]], [[थ#Tiếng_Ahiran|थ]], [[द#Tiếng_Ahiran|द]], [[ध#Tiếng_Ahiran|ध]], [[न#Tiếng_Ahiran|न]], [[प#Tiếng_Ahiran|प]], [[फ#Tiếng_Ahiran|फ]], [[ब#Tiếng_Ahiran|ब]], [[भ#Tiếng_Ahiran|भ]], [[म#Tiếng_Ahiran|म]], [[य#Tiếng_Ahiran|य]], [[र#Tiếng_Ahiran|र]], [[ल#Tiếng_Ahiran|ल]], [[व#Tiếng_Ahiran|व]], [[श#Tiếng_Ahiran|श]], [[ष#Tiếng_Ahiran|ष]], [[स#Tiếng_Ahiran|स]], [[ह#Tiếng_Ahiran|ह]], [[ळ#Tiếng_Ahiran|ळ]], [[क्ष#Tiếng_Ahiran|क्ष]], [[ज्ञ#Tiếng_Ahiran|ज्ञ]] ==={{ĐM|ref}}=== *{{Chú thích web|ahr|author=The Word for the World International|work=Ahirani Bible|year=2025|entry=मत्तय 1|entryurl=https://www.bible.com/bible/2776/MAT.1.AII25}} =={{langname|anp}}== ==={{ĐM|pron}}=== *{{IPA4|anp|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|anp|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Angika, viết bằng chữ Devanagari. #:{{ux|anp|'''घ'''रौवा|làm nhà|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Angika|list={{l-self|anp|अ}}, {{l-self|anp|आ}}, {{l-self|anp|इ}}, {{l-self|anp|ई}}, {{l-self|anp|उ}}, {{l-self|anp|ऊ}}, {{l-self|anp|ऋ}}, {{l-self|anp|ए}}, {{l-self|anp|ऐ}}, {{l-self|anp|ऍ}}, {{l-self|anp|ओ}}, {{l-self|anp|औ}}, {{l-self|anp|अः}}, {{l-self|anp|अँ}}, {{l-self|anp|अं}}, {{l-self|anp|क}}, {{l-self|anp|ख}}, {{l-self|anp|ग}}, {{l-self|anp|घ}}, {{l-self|anp|ङ}}, {{l-self|anp|च}}, {{l-self|anp|छ}}, {{l-self|anp|ज}}, {{l-self|anp|झ}}, {{l-self|anp|ञ}}, {{l-self|anp|ट}}, {{l-self|anp|ठ}}, {{l-self|anp|ड}}, {{l-self|anp|ढ}}, {{l-self|anp|ण}}, {{l-self|anp|त}}, {{l-self|anp|थ}}, {{l-self|anp|द}}, {{l-self|anp|ध}}, {{l-self|anp|न}}, {{l-self|anp|प}}, {{l-self|anp|फ}}, {{l-self|anp|ब}}, {{l-self|anp|भ}}, {{l-self|anp|म}}, {{l-self|anp|य}}, {{l-self|anp|र}}, {{l-self|anp|ल}}, {{l-self|anp|व}}, {{l-self|anp|श}}, {{l-self|anp|ष}}, {{l-self|anp|स}}, {{l-self|anp|ह}}, {{l-self|anp|ड़}}, {{l-self|anp|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hi|author=Toby Anderson|entry=घ|entryurl=https://www.webonary.org/angika/browse/browse-vernacular-english/?key=anp&letter=%E0%A4%98|publisher=SIL International|year=2020|work=Angika Dictionary}} =={{langname|inc-apa}}== ==={{ĐM|pron}}=== *{{IPA|inc-apa|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|inc-apa|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Apabhramsa. #:{{ux|inc-apa|'''घे'''उर|kẹo ghevar|inline=1}} =={{langname|aph}}== ==={{ĐM|pron}}=== *{{IPA4|aph|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|aph|Chữ cái|tr=hha}} #Phụ âm thứ 4 trong tiếng Athpariya, viết bằng chữ Devanagari. #:{{ux|aph|'''घाँ'''सा|tr='''ghā̃'''sā|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Athpariya|list={{l-self|aph|आ}}, {{l-self|aph|इ}}, {{l-self|aph|उ}}, {{l-self|aph|ए}}, {{l-self|aph|ओ}}, {{l-self|aph|क}}, {{l-self|aph|ख}}, {{l-self|aph|ग}}, {{l-self|aph|घ}}, {{l-self|aph|ङ}}, {{l-self|aph|च}}, {{l-self|aph|छ}}, {{l-self|aph|ज}}, {{l-self|aph|झ}}, {{l-self|aph|ट}}, {{l-self|aph|ठ}}, {{l-self|aph|ड}}, {{l-self|aph|ढ}}, {{l-self|aph|त}}, {{l-self|aph|थ}}, {{l-self|aph|द}}, {{l-self|aph|ध}}, {{l-self|aph|न}}, {{l-self|aph|प}}, {{l-self|aph|फ}}, {{l-self|aph|ब}}, {{l-self|aph|भ}}, {{l-self|aph|म}}, {{l-self|aph|य}}, {{l-self|aph|र}}, {{l-self|aph|ल}}, {{l-self|aph|व}}, {{l-self|aph|व्ह}}, {{l-self|aph|स}}, {{l-self|aph|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Dhan Bahadur Kimdan (David)|entry=घ|entryurl=https://www.webonary.org/athpahariya/en/browse/browse-vernacular-nepali/?key=aph&letter=%E0%A4%98|publisher=SIL International|year=2015|work=Athpahariya – Nepali – English Dictionary}} =={{langname|awa}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Awadh|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|awa|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|awa|Chữ cái}} #Phụ âm thứ 4 trong tiếng Awadh, viết bằng chữ Devanagari. #:{{ux|awa|[[w:awa:घाना|'''घा'''ना]]|[[w:Ghana|Ghana]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Awadh|list={{l-self|awa|अ}}, {{l-self|awa|आ}}, {{l-self|awa|इ}}, {{l-self|awa|ई}}, {{l-self|awa|उ}}, {{l-self|awa|ऊ}}, {{l-self|awa|ए}}, {{l-self|awa|ऐ}}, {{l-self|awa|ओ}}, {{l-self|awa|औ}}, {{l-self|awa|अं}}, {{l-self|awa|अः}}, {{l-self|awa|अँ}}, {{l-self|awa|ऋ}}, {{l-self|awa|क}}, {{l-self|awa|ख}}, {{l-self|awa|ग}}, {{l-self|awa|घ}}, {{l-self|awa|ङ}}, {{l-self|awa|च}}, {{l-self|awa|छ}}, {{l-self|awa|ज}}, {{l-self|awa|झ}}, {{l-self|awa|ञ}}, {{l-self|awa|ट}}, {{l-self|awa|ठ}}, {{l-self|awa|ड}}, {{l-self|awa|ढ}}, {{l-self|awa|ण}}, {{l-self|awa|त}}, {{l-self|awa|थ}}, {{l-self|awa|द}}, {{l-self|awa|ध}}, {{l-self|awa|न}}, {{l-self|awa|प}}, {{l-self|awa|फ}}, {{l-self|awa|ब}}, {{l-self|awa|भ}}, {{l-self|awa|म}}, {{l-self|awa|य}}, {{l-self|awa|र}}, {{l-self|awa|ल}}, {{l-self|awa|व}}, {{l-self|awa|श}}, {{l-self|awa|ष}}, {{l-self|awa|स}}, {{l-self|awa|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|awa|author=Bible League International|work=पवित्तर बाइबिल|year=2025|entry=उत्पत्ति 1|entryurl=https://www.bible.com/bible/2560/GEN.1.AERV}} =={{langname|bhj}}== ==={{ĐM|pron}}=== *{{IPA4|bhj|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|bhj|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Bahing, viết bằng chữ Devanagari. #:{{ux|bhj|'''घ'''मन्‍डी|tr='''gha'''ravāv|[[tự hào]]|inline=1}} ==={{Đ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/en/browse/browse-vernacular-nepali/?key=bhj&letter=%E0%A4%98|entry=घ}} =={{langname|vjk}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Bajjika|𑂐]] |- ! Tirhuta | [[𑒒#Tiếng_Bajjika|𑒒]] |- |} ==={{ĐM|pron}}=== *{{IPA|vjk|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|vjk|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bajjika. #:{{quote|vjk|हमनीके बिचमे जोन '''घ'''टना '''घ'''टल हइ ओकर लेखा-जोखा तैयार करेके काम बहुत लोग अपना हातमे ले लेले हइ।|tr=Hamnikē bicame jona '''gha'''ṭanā '''gha'''ṭala hai okara lekhā-jokhā taiyāra kareke kāma bahuta loga apanā hātame lelele hai.|Hỡi Thê-ô-phi-lơ quí-nhơn, vì có nhiều kẻ dốc lòng chép sử về những sự đã làm nên trong chúng ta, ([[s:Lu-ca/1#1:1|Lu-ca 1:1]])}} ==={{ĐM|ref}}=== *{{Chú thích web|vjk|author=Manna Harvest, Bajjika Translation Committee & Wycliffe Bible Translators Inc.|work=[https://media.ipsapps.org/vjk/osa/bible/#/text Bajjika Bible 1.0]|year=2026|entry=लूका १}} =={{langname|bap}}== ==={{ĐM|pron}}=== *{{IPA|bap|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|bap|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bantawa, viết bằng chữ Devanagari. #:{{quote|bap|मो ए'''घा'''रकापाङ्‌माङ काखेङ्‌पाचि गालिल्‌ओ मो भ़ऱदु म़खारा, मोदु खात्‍मा निकिना येसुआ म़लोचिओ।|tr=mo e'''ghā'''rakāpāṅmāṅ kākheṅpāci gālil'o mo bẖṛadu m̱akhārā, modu khātma nikina yesuā m̱aloci'o.|Mười một môn-đồ đi qua xứ Ga-li-lê, lên hòn núi mà Đức Chúa Jêsus đã chỉ cho. ([[s:Ma-thi-ơ/28#28:16|Ma-thi-ơ 28:16]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bantawa|list={{l-self|bap|अ}}, {{l-self|bap|अ़}}, {{l-self|bap|आ}}, {{l-self|bap|इ}}, {{l-self|bap|उ}}, {{l-self|bap|उ़}}, {{l-self|bap|ए}}, {{l-self|bap|ओ}}, {{l-self|bap|अ៱}}, {{l-self|bap|क}}, {{l-self|bap|ख}}, {{l-self|bap|ग}}, {{l-self|bap|घ}}, {{l-self|bap|ङ}}, {{l-self|bap|च}}, {{l-self|bap|छ}}, {{l-self|bap|ज}}, {{l-self|bap|झ}}, {{l-self|bap|त}}, {{l-self|bap|थ}}, {{l-self|bap|द}}, {{l-self|bap|ध}}, {{l-self|bap|न}}, {{l-self|bap|प}}, {{l-self|bap|फ}}, {{l-self|bap|ब}}, {{l-self|bap|भ}}, {{l-self|bap|म}}, {{l-self|bap|य}}, {{l-self|bap|र}} ({{l-self|bap|ऱ}}), {{l-self|bap|ल}}, {{l-self|bap|व}}, {{l-self|bap|स}}, {{l-self|bap|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Werner Winter|title=A Bantawa Dictionary|year=2003|publisher=Walter de Gruyter|isbn=9783110177107|page=34|pageurl=https://books.google.com/books?id=RTuMWRZ8OfkC&pg=PA34}} *{{Chú thích web|bap|entryurl=https://www.bible.com/en-GB/bible/3060/MAT.28.BAP|entry=मत्‍ति 28|author=Wycliffe Bible Translators, Inc.|year=2025|work=बान्‍तावा राई}} =={{langname|byw}}== ==={{ĐM|pron}}=== *{{IPA4|byw|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|byw|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Belhariya, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{letters|lang=byw|sc=Deva|qual=Chữ Devanagari tiếng Belhariya|अ|इ|उ|ए|ओ|क|ख|ग|घ|ङ|च|छ|ज|झ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|ष|ह}} =={{langname|bhd}}== ==={{ĐM|pron}}=== *{{IPA4|bhd|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|bhd|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bhadarwah. #:{{quote|bhd|तैखन राहाब ज़ैसारू '''घ'''र नगरेरे दिवारी सेइं साथी थियूं, एल्हेरेलेइ राहाबां तैना दैरी मरां नगरेरे बेइर कढनेरे लेई रेसारो इस्तेमाल कियो।|Vậy, nàng dùng một sợi dây dòng hai người xuống nơi cửa sổ, vì nhà nàng ở tại trên vách thành. ([[s:Giô-suê/2#2:15|Giô-suê 2:15]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bhd|author=Beyond Translation|work=भड्लाई भाषाई मां पवित्र शास्त्र|year=2020|entry=यहोशू 2|entryurl=https://www.bible.com/bible/2767/JOS.2.BHDNT}} =={{langname|bht}}== ==={{ĐM|pron}}=== *{{IPA4|bht|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|bht|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bhattiyat. #:{{quote|bht|इसा कताबा च उना गल्लां जो लिख्या है जड़िया परमेश्वरे यीशु मसीह जो दसियां न। परमेश्वरे इस तांई उसयो दसियां ताकि सै अपणे सेबकां जो उना '''घ'''टना दे बारे च दस्सी सके जड़ियां जल्दी ही होणियां न। यीशु मसीहे ऐ संदेश मिंजो, अपणे सेबक यूहन्ना बाल स्वर्गदूते जो भेजी करी दसया,|tr=sā katābā ca unā gallā̃ jo likhyā hai jaṛiyā parameśvare yīśu masīha jo dasiā̃ na. parameśvare isa tā̃ī̃ usayo dasiā̃ tāki sai apaṇe sebakā̃ jo unā '''gha'''ṭanā de bāre ca dassī sake jaṛiyā̃ jaldī hī hoṇiyā̃ na. yīśu masīhe ai sandesa miñjo, apaṇe sebaka yuhannā bāla svargadūte jo bhejī karī dasayā,|Sự mặc-thị của Đức Chúa Jêsus-Christ mà Đức Chúa Trời đã ban cho Ngài đặng đem tỏ ra cùng tôi-tớ Ngài những đều kíp phải xảy đến, thì Ngài đã sai thiên-sứ đến tỏ những đều đó cho Giăng, tôi-tớ Ngài, ([[s:Khải huyền/1#1:1|Khải huyền 1:1]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bht|author=Beyond Translation|work=भटियाली नोआ नियम|year=2020|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/3245/REV.1.BHTNT}} =={{langname|bhb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Bhil|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|bhb|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|bhb|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bhil, viết bằng chữ Devanagari. #:{{ux|bhb|'''घी'''जवो|tr='''ghī'''jvo|[[óc]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhil|list={{l-self|bhb|अ}}, {{l-self|bhb|आ}}, {{l-self|bhb|इ}}, {{l-self|bhb|ई}}, {{l-self|bhb|उ}}, {{l-self|bhb|ऊ}}, {{l-self|bhb|ए}}, {{l-self|bhb|ऐ}}, {{l-self|bhb|ओ}}, {{l-self|bhb|औ}}, {{l-self|bhb|अं}}, {{l-self|bhb|क}}, {{l-self|bhb|ख}}, {{l-self|bhb|ग}}, {{l-self|bhb|घ}}, {{l-self|bhb|ङ}}, {{l-self|bhb|च}}, {{l-self|bhb|ज}}, {{l-self|bhb|ट}}, {{l-self|bhb|ठ}}, {{l-self|bhb|ड}}, {{l-self|bhb|ढ}}, {{l-self|bhb|ण}}, {{l-self|bhb|त}}, {{l-self|bhb|थ}}, {{l-self|bhb|द}}, {{l-self|bhb|ध}}, {{l-self|bhb|न}}, {{l-self|bhb|प}}, {{l-self|bhb|फ}}, {{l-self|bhb|ब}}, {{l-self|bhb|भ}}, {{l-self|bhb|म}}, {{l-self|bhb|य}}, {{l-self|bhb|र}}, {{l-self|bhb|ल}}, {{l-self|bhb|ळ}}, {{l-self|bhb|व}}, {{l-self|bhb|श}}, {{l-self|bhb|स}}, {{l-self|bhb|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Stephen Watters|title=[https://www.sil.org/system/files/reapdata/16/54/22/165422481227949765106602053433447679464/silesr2013_004.pdf A Sociolinguistic Profile of the Bhils of Northern Dhule District]|year=2013|publisher=SIL International|location=Dallas, Texas}} =={{langname|bho}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Bhojpur|𑂐]] |- |} ==={{ĐM|pron}}=== *{{bho-IPA}} ==={{ĐM|letter}}=== {{head|bho|Chữ cái}} #Phụ âm thứ 4 trong tiếng Bhojpur, viết bằng chữ Devanagari. #:{{ux|bho|चिड़िया'''घ'''र|[[vườn bách thú]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhojpur|list={{l-self|bho|अ}}, {{l-self|bho|आ}}, {{l-self|bho|इ}}, {{l-self|bho|ई}}, {{l-self|bho|उ}}, {{l-self|bho|ऊ}}, {{l-self|bho|ए}}, {{l-self|bho|ऐ}}, {{l-self|bho|ओ}}, {{l-self|bho|औ}}, {{l-self|bho|अः}}, {{l-self|bho|अँ}}, {{l-self|bho|क}}, {{l-self|bho|ख}}, {{l-self|bho|ग}}, {{l-self|bho|घ}}, {{l-self|bho|ङ}}, {{l-self|bho|च}}, {{l-self|bho|छ}}, {{l-self|bho|ज}}, {{l-self|bho|झ}}, {{l-self|bho|ञ}}, {{l-self|bho|ट}}, {{l-self|bho|ठ}}, {{l-self|bho|ड}}, {{l-self|bho|ड़}}, {{l-self|bho|ढ}}, {{l-self|bho|ढ़}}, {{l-self|bho|ण}}, {{l-self|bho|त}}, {{l-self|bho|थ}}, {{l-self|bho|द}}, {{l-self|bho|ध}}, {{l-self|bho|न}}, {{l-self|bho|प}}, {{l-self|bho|फ}}, {{l-self|bho|ब}}, {{l-self|bho|भ}}, {{l-self|bho|म}}, {{l-self|bho|य}}, {{l-self|bho|र}}, {{l-self|bho|ल}}, {{l-self|bho|व}}, {{l-self|bho|श}}, {{l-self|bho|ष}}, {{l-self|bho|स}}, {{l-self|bho|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Bhojpuri – Hindi Dictionary|year=2019|publisher=SIL International|entryurl=https://www.webonary.org/bhojpuri/browse/browse-vernacular-english/?letter=%E0%A4%98&key=bho|entry=घ}} =={{langname|aav-bhu}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Bhumij|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Bhumij|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|aav-bhu|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|aav-bhu|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bhumij, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhumij|list={{l-self|aav-bhu|अ|tr=-}}, {{l-self|aav-bhu|आ|tr=-}}, {{l-self|aav-bhu|इ|tr=-}}, {{l-self|aav-bhu|ई|tr=-}}, {{l-self|aav-bhu|उ|tr=-}}, {{l-self|aav-bhu|ऊ|tr=-}}, {{l-self|aav-bhu|ए|tr=-}}, {{l-self|aav-bhu|ऐ|tr=-}}, {{l-self|aav-bhu|ओ|tr=-}}, {{l-self|aav-bhu|औ|tr=-}}, {{l-self|aav-bhu|क|tr=-}}, {{l-self|aav-bhu|ख|tr=-}}, {{l-self|aav-bhu|ग|tr=-}}, {{l-self|aav-bhu|घ|tr=-}}, {{l-self|aav-bhu|ङ|tr=-}}, {{l-self|aav-bhu|च|tr=-}}, {{l-self|aav-bhu|छ|tr=-}}, {{l-self|aav-bhu|ज|tr=-}}, {{l-self|aav-bhu|झ|tr=-}}, {{l-self|aav-bhu|ञ|tr=-}}, {{l-self|aav-bhu|ट|tr=-}}, {{l-self|aav-bhu|ठ|tr=-}}, {{l-self|aav-bhu|ड|tr=-}}, {{l-self|aav-bhu|ढ|tr=-}}, {{l-self|aav-bhu|ण|tr=-}}, {{l-self|aav-bhu|त|tr=-}}, {{l-self|aav-bhu|थ|tr=-}}, {{l-self|aav-bhu|द|tr=-}}, {{l-self|aav-bhu|ध|tr=-}}, {{l-self|aav-bhu|न|tr=-}}, {{l-self|aav-bhu|प|tr=-}}, {{l-self|aav-bhu|फ|tr=-}}, {{l-self|aav-bhu|ब|tr=-}}, {{l-self|aav-bhu|भ|tr=-}}, {{l-self|aav-bhu|म|tr=-}}, {{l-self|aav-bhu|य|tr=-}}, {{l-self|aav-bhu|र|tr=-}}, {{l-self|aav-bhu|ल|tr=-}}, {{l-self|aav-bhu|व|tr=-}}, {{l-self|aav-bhu|श|tr=-}}, {{l-self|aav-bhu|ष|tr=-}}, {{l-self|aav-bhu|स|tr=-}}, {{l-self|aav-bhu|ह|tr=-}}, {{l-self|aav-bhu|ड़|tr=-}}, {{l-self|aav-bhu|ढ़|tr=-}}}} =={{langname|bhu}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Oriya | [[ଘ#Tiếng_Bhunjia|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|bhu|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|bhu|Chữ cái|tr=gh}} #Chữ Oriya thể hiện phụ âm '''/ɡʰ/''' trong tiếng Bhunjia. #:{{quote|bhu|अपन टोरवा हमर परभु यीसु मसीह के बारे हे ऊ देह के भाव दाऊद के '''घ'''राना लग पइदा हुइस।|tr=apan ṭoravā hamar parabhu yīsu masīha ke bāre he ū deha ke bhāva dāūd ke '''gha'''rānā laga paidā huisa.|về Con Ngài, theo xác-thịt thì bởi dòng-dõi vua Đa-vít sanh ra ([[s:Rô-ma/1#1:3|Rô-ma 1:3]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bhu|author=The Word for the World International|entryurl=https://www.bible.com/en-GB/bible/3712/ROM.1.BTP25|entry=रोमियो 1|work=Bhumiya Bible|year=2025}} =={{langname|kfs}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Bilaspur|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kfs|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|kfs|Chữ cái}} #Phụ âm thứ 4 trong tiếng Bilaspur, viết bằng chữ Devanagari. #:{{quote|kfs|सै जे तिस पर बैठिरा सै यशब कने माणिक्य साई दिस्सां, कने तिस सं'''घा'''सणा रे चऊँ पासयां मरकता साई इक मे'''घ'''-धनुष दुस्याराँ।|Đấng ngồi đó rực-rỡ như bích-ngọc và mã-não; có cái mống dáng như lục-bửu-thạch bao chung-quanh ngôi. ([[s:Khải huyền/4#4:3|Khải huyền 4:3]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bilaspur|list={{l-self|kfs|अ}}, {{l-self|kfs|आ}}, {{l-self|kfs|इ}}, {{l-self|kfs|ई}}, {{l-self|kfs|उ}}, {{l-self|kfs|ऊ}}, {{l-self|kfs|ए}}, {{l-self|kfs|ऐ}}, {{l-self|kfs|ओ}}, {{l-self|kfs|औ}}, {{l-self|kfs|अँ}}, {{l-self|kfs|अं}}, {{l-self|kfs|क}}, {{l-self|kfs|ख}}, {{l-self|kfs|ग }}, {{l-self|kfs|घ}}, {{l-self|kfs|ङ}}, {{l-self|kfs|च}}, {{l-self|kfs|छ}}, {{l-self|kfs|ज}}, {{l-self|kfs|झ}}, {{l-self|kfs|ञ}}, {{l-self|kfs|ट}}, {{l-self|kfs|ठ}}, {{l-self|kfs|ड}}, {{l-self|kfs|ड़}}, {{l-self|kfs|ढ}}, {{l-self|kfs|ण}}, {{l-self|kfs|त}}, {{l-self|kfs|थ}}, {{l-self|kfs|द}}, {{l-self|kfs|ध}}, {{l-self|kfs|न}}, {{l-self|kfs|प}}, {{l-self|kfs|फ}}, {{l-self|kfs|ब}}, {{l-self|kfs|भ}}, {{l-self|kfs|म}}, {{l-self|kfs|य}}, {{l-self|kfs|र}}, {{l-self|kfs|ल}}, {{l-self|kfs|व}}, {{l-self|kfs|ल़}}, {{l-self|kfs|श}}, {{l-self|kfs|ष}}, {{l-self|kfs|स}}, {{l-self|kfs|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kfs|author=The Love Fellowship|work=बिलासपुरी नौआं नियम|year=2025|entry=प्रकाशितवाक्य 4|entryurl=https://www.bible.com/bible/2768/REV.4.KFSNT}} =={{langname|biy}}== ==={{ĐM|pron}}=== *{{IPA4|biy|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|biy|Chữ cái|tr=gh}} #Phụ âm thứ 5 trong tiếng Birhor, viết bằng chữ Devanagari. #:{{ux|biy|'''घा'''व|[[vết thương]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Birhor|list={{l-self|biy|अ}}, {{l-self|biy|आ}}, {{l-self|biy|इ}}, {{l-self|biy|ई}}, {{l-self|biy|उ}}, {{l-self|biy|ऊ}}, {{l-self|biy|ए}}, {{l-self|biy|ऐ}}, {{l-self|biy|ओ}}, {{l-self|biy|औ}}, {{l-self|biy|क}}, {{l-self|biy|क्ष}}, {{l-self|biy|ख}}, {{l-self|biy|ग}}, {{l-self|biy|घ}}, {{l-self|biy|ङ}}, {{l-self|biy|च}}, {{l-self|biy|छ}}, {{l-self|biy|ज}}, {{l-self|biy|झ}}, {{l-self|biy|ञ}}, {{l-self|biy|ट}}, {{l-self|biy|ठ}}, {{l-self|biy|ड}}, {{l-self|biy|ड़}}, {{l-self|biy|ढ}}, {{l-self|biy|ण}}, {{l-self|biy|त}}, {{l-self|biy|थ}}, {{l-self|biy|द}}, {{l-self|biy|ध}}, {{l-self|biy|न}}, {{l-self|biy|प}}, {{l-self|biy|फ}}, {{l-self|biy|ब}}, {{l-self|biy|भ}}, {{l-self|biy|म}}, {{l-self|biy|य}}, {{l-self|biy|र}}, {{l-self|biy|ल}}, {{l-self|biy|ळ}}, {{l-self|biy|व}}, {{l-self|biy|श}}, {{l-self|biy|ष}}, {{l-self|biy|स}}, {{l-self|biy|ह}}}} ==={{ĐM|ref}}=== *[https://livingdictionaries.app/birhor/entries/list Từ điển tiếng Birhor] tại Living Dictionaries. =={{langname|brx}}== ==={{ĐM|pron}}=== *{{IPA4|brx|[ɡɦɔ]}} ==={{ĐM|letter}}=== {{head|brx|Chữ cái|tr=gho}} #Phụ âm thứ 4 trong tiếng Bodo, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bodo|list={{l-self|brx|अ}}, {{l-self|brx|आ}}, {{l-self|brx|इ}}, {{l-self|brx|ई}}, {{l-self|brx|उ}}, {{l-self|brx|ऊ}}, {{l-self|brx|ऋ}}, {{l-self|brx|ए}}, {{l-self|brx|ऐ}}, {{l-self|brx|ओ}}, {{l-self|brx|औ}}, {{l-self|brx|क}}, {{l-self|brx|ख}}, {{l-self|brx|ग}}, {{l-self|brx|घ}}, {{l-self|brx|ङ}}, {{l-self|brx|च}}, {{l-self|brx|छ}}, {{l-self|brx|ज}}, {{l-self|brx|ट}}, {{l-self|brx|ठ}}, {{l-self|brx|ड}}, {{l-self|brx|त}}, {{l-self|brx|थ}}, {{l-self|brx|द}}, {{l-self|brx|ध}}, {{l-self|brx|न}}, {{l-self|brx|प}}, {{l-self|brx|फ}}, {{l-self|brx|ब}}, {{l-self|brx|भ}}, {{l-self|brx|म}}, {{l-self|brx|य}}, {{l-self|brx|र}}, {{l-self|brx|ल}}, {{l-self|brx|व}}, {{l-self|brx|श}}, {{l-self|brx|स}}, {{l-self|brx|ह}}, {{l-self|brx|त्}}, {{l-self|brx|ड़}}, {{l-self|brx|ढ़}}, {{l-self|brx|क्ष}}}} =={{langname|bra}}== ==={{ĐM|pron}}=== *{{IPA4|bra|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bra|Chữ cái}} #Phụ âm thứ 4 trong tiếng Braj, viết bằng chữ Devanagari. #:{{ux|bra|मे'''घ'''|[[mây]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Braj|list={{l-self|bra|अ|tr=-}}, {{l-self|bra|आ|tr=-}}, {{l-self|bra|इ|tr=-}}, {{l-self|bra|ई|tr=-}}, {{l-self|bra|उ|tr=-}}, {{l-self|bra|ऊ|tr=-}}, {{l-self|bra|ऋ|tr=-}}, {{l-self|bra|ए|tr=-}}, {{l-self|bra|ऐ|tr=-}}, {{l-self|bra|ओ|tr=-}}, {{l-self|bra|औ|tr=-}}, {{l-self|bra|क|tr=-}}, {{l-self|bra|ख|tr=-}}, {{l-self|bra|ग|tr=-}}, {{l-self|bra|घ|tr=-}}, {{l-self|bra|ङ|tr=-}}, {{l-self|bra|च|tr=-}}, {{l-self|bra|छ|tr=-}}, {{l-self|bra|ज|tr=-}}, {{l-self|bra|झ|tr=-}}, {{l-self|bra|ञ|tr=-}}, {{l-self|bra|ट|tr=-}}, {{l-self|bra|ठ|tr=-}}, {{l-self|bra|ड|tr=-}}, {{l-self|bra|ड़|tr=-}}, {{l-self|bra|ढ|tr=-}}, {{l-self|bra|ढ़|tr=-}}, {{l-self|bra|ण|tr=-}}, {{l-self|bra|त|tr=-}}, {{l-self|bra|थ|tr=-}}, {{l-self|bra|द|tr=-}}, {{l-self|bra|ध|tr=-}}, {{l-self|bra|न|tr=-}}, {{l-self|bra|प|tr=-}}, {{l-self|bra|फ|tr=-}}, {{l-self|bra|ब|tr=-}}, {{l-self|bra|भ|tr=-}}, {{l-self|bra|म|tr=-}}, {{l-self|bra|य|tr=-}}, {{l-self|bra|र|tr=-}}, {{l-self|bra|ल|tr=-}}, {{l-self|bra|व|tr=-}}, {{l-self|bra|श|tr=-}}, {{l-self|bra|ष|tr=-}}, {{l-self|bra|स|tr=-}}, {{l-self|bra|ह|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|title=Braj Bhasha Dictionary|year=19xx|volume=1|pageurl=https://archive.org/details/BrajBhashaDictionary/Braj%20Bhasha%20Dictionary%20Part%201/page/n449|page=448}} *{{Chú thích web|bra|author=New Life Computer Institute|work=बृज भासा|year=2025|entry=मत्‍ती 1|entryurl=https://www.bible.com/bible/3797/MAT.1.BRAJ}} =={{langname|rab}}== ==={{ĐM|pron}}=== *{{IPA4|rab|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|rab|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Camling, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Camling|list={{l-self|rab|अ}}, {{l-self|rab|आ}}, {{l-self|rab|इ}}, {{l-self|rab|ई}}, {{l-self|rab|उ}}, {{l-self|rab|ऊ}}, {{l-self|rab|ए}}, {{l-self|rab|ऐ}}, {{l-self|rab|ओ}}, {{l-self|rab|औ}}, {{l-self|rab|क}}, {{l-self|rab|ख}}, {{l-self|rab|ग}}, {{l-self|rab|घ}}, {{l-self|rab|ङ}}, {{l-self|rab|च}}, {{l-self|rab|छ}}, {{l-self|rab|ज}}, {{l-self|rab|झ}}, {{l-self|rab|ञ}}, {{l-self|rab|ट}}, {{l-self|rab|ठ}}, {{l-self|rab|ड}}, {{l-self|rab|ढ}}, {{l-self|rab|ण}}, {{l-self|rab|त}}, {{l-self|rab|थ}}, {{l-self|rab|द}}, {{l-self|rab|ध}}, {{l-self|rab|न}}, {{l-self|rab|प}}, {{l-self|rab|फ}}, {{l-self|rab|ब}}, {{l-self|rab|भ}}, {{l-self|rab|म}}, {{l-self|rab|य}}, {{l-self|rab|र}}, {{l-self|rab|ल}}, {{l-self|rab|व}}, {{l-self|rab|श}}, {{l-self|rab|ष}}, {{l-self|rab|स}}, {{l-self|rab|ह}}}} =={{langname|cdh}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Chamba|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cdh|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cdh|Chữ cái}} #Phụ âm thứ 4 trong tiếng Chamba, viết bằng chữ Devanagari. #:{{quote|cdh|मैं जाणदा कि इक्क विश्वासी होणे रे तौर पर तुसा री जिन्दगी रा स्तर तिस जगाह् पर नी है जे परमेश्वर ने ठैहराए रा है, इधेरे तांइ चुकन्ने होई जाओ ते अपणी आत्मिक निंद्दर का उठी हो, ते अपणी मसीही खुबियां जो तिन्हेरे मुकणे का पैल्ले फिरी नौए जदेया करी लेयो जे तुसा बिच हल्ले भी हिन। मैं जाणदा कि तेरी '''घ'''टी बड़ी जादा है किजोकी परमेश्वर तेरे कम्मां का खुस नी हिन।|Hãy tỉnh-thức, và làm cho vững sự còn lại, là sự hầu chết; vì ta không thấy công-việc của ngươi là trọn-vẹn trước mặt Đức Chúa Trời ta. ([[s:Khải huyền/3#3:2|Khải huyền 3:2]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagar tiếng Chamba|list={{l-self|cdh|अ|tr=-}}, {{l-self|cdh|आ|tr=-}}, {{l-self|cdh|इ|tr=-}}, {{l-self|cdh|ई|tr=-}}, {{l-self|cdh|उ|tr=-}}, {{l-self|cdh|ऊ|tr=-}}, {{l-self|cdh|ए|tr=-}}, {{l-self|cdh|ऐ|tr=-}}, {{l-self|cdh|ओ|tr=-}}, {{l-self|cdh|औ|tr=-}}, {{l-self|cdh|अँ|tr=-}}, {{l-self|cdh|अः|tr=-}}, {{l-self|cdh|क|tr=-}}, {{l-self|cdh|ख|tr=-}}, {{l-self|cdh|ग|tr=-}}, {{l-self|cdh|घ|tr=-}}, {{l-self|cdh|ङ|tr=-}}, {{l-self|cdh|च|tr=-}}, {{l-self|cdh|छ|tr=-}}, {{l-self|cdh|ज|tr=-}}, {{l-self|cdh|झ|tr=-}}, {{l-self|cdh|ञ|tr=-}}, {{l-self|cdh|ट|tr=-}}, {{l-self|cdh|ठ|tr=-}}, {{l-self|cdh|ड|tr=-}}, {{l-self|cdh|ढ|tr=-}}, {{l-self|cdh|ण|tr=-}}, {{l-self|cdh|त|tr=-}}, {{l-self|cdh|थ|tr=-}}, {{l-self|cdh|द|tr=-}}, {{l-self|cdh|ध|tr=-}}, {{l-self|cdh|न|tr=-}}, {{l-self|cdh|प|tr=-}}, {{l-self|cdh|फ|tr=-}}, {{l-self|cdh|ब|tr=-}}, {{l-self|cdh|भ|tr=-}}, {{l-self|cdh|म|tr=-}}, {{l-self|cdh|य|tr=-}}, {{l-self|cdh|र|tr=-}}, {{l-self|cdh|ल|tr=-}}, {{l-self|cdh|व|tr=-}}, {{l-self|cdh|श|tr=-}}, {{l-self|cdh|ष|tr=-}}, {{l-self|cdh|स|tr=-}}, {{l-self|cdh|ह|tr=-}}, {{l-self|cdh|ड़|tr=-}}, {{l-self|cdh|ढ़|tr=-}}, {{l-self|cdh|ळ|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Julia Bischoffberger|title=The ASJP Database|year=2025|work=[https://asjp.clld.org/languages/CHAMBEALI Wordlist Chambeali]}} *{{Chú thích web|cdh|author=The Love Fellowship|work=चम्बयाली नौआ नियम|year=2025|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/2968/REV.1.CDHNT}} =={{langname|chx}}== ==={{ĐM|pron}}=== *{{IPA4|chx|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|chx|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Chantyal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Chantyal|list={{l-self|chx|अ}}, {{l-self|chx|आ}}, {{l-self|chx|इ}}, {{l-self|chx|ई}}, {{l-self|chx|उ}}, {{l-self|chx|ऊ}}, {{l-self|chx|ए}}, {{l-self|chx|एै}}, {{l-self|chx|ओ}}, {{l-self|chx|औ}}, {{l-self|chx|क}}, {{l-self|chx|ख}}, {{l-self|chx|ग}}, {{l-self|chx|घ}}, {{l-self|chx|ङ}}, {{l-self|chx|क्ह}}, {{l-self|chx|ख्ह}}, {{l-self|chx|च}}, {{l-self|chx|छ}}, {{l-self|chx|ज}}, {{l-self|chx|झ}}, {{l-self|chx|ञ}}, {{l-self|chx|च्ह}}, {{l-self|chx|ञ्ह}}, {{l-self|chx|ट}}, {{l-self|chx|ठ}}, {{l-self|chx|ड}}, {{l-self|chx|ढ}}, {{l-self|chx|त}}, {{l-self|chx|थ}}, {{l-self|chx|द}}, {{l-self|chx|ध}}, {{l-self|chx|न}}, {{l-self|chx|त्ह}}, {{l-self|chx|थ्ह}}, {{l-self|chx|न्ह}}, {{l-self|chx|प}}, {{l-self|chx|फ}}, {{l-self|chx|ब}}, {{l-self|chx|भ}}, {{l-self|chx|म}}, {{l-self|chx|प्ह}}, {{l-self|chx|म्ह}}, {{l-self|chx|य}}, {{l-self|chx|र}}, {{l-self|chx|ल}}, {{l-self|chx|व}}, {{l-self|chx|ऱ्ह}}, {{l-self|chx|ल्ह}}, {{l-self|chx|श}}, {{l-self|chx|स}}, {{l-self|chx|ह}}, {{l-self|chx|स्ह}}, {{l-self|chx|ह्य}}, {{l-self|chx|ह्व}}}} =={{langname|cdm}}== ==={{ĐM|pron}}=== *{{IPA4|cdm|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|cdm|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Chepang, viết bằng chữ Devanagari. #:{{ux|cdm|'''घ'''यःदो|tr='''gha'''yaḥdo|[[tây]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Chepang'') [[अ#Tiếng_Chepang|अ]], [[आ#Tiếng_Chepang|आ]], [[इ#Tiếng_Chepang|इ]], [[उ#Tiếng_Chepang|उ]], [[ए#Tiếng_Chepang|ए]], [[ओ#Tiếng_Chepang|ओ]], [[क#Tiếng_Chepang|क]], [[ख#Tiếng_Chepang|ख]], [[ग#Tiếng_Chepang|ग]], [[घ#Tiếng_Chepang|घ]], [[ङ#Tiếng_Chepang|ङ]], [[ङ्‍ह#Tiếng_Chepang|ङ्‍ह]], [[च#Tiếng_Chepang|च]], [[छ#Tiếng_Chepang|छ]], [[ज#Tiếng_Chepang|ज]], [[झ#Tiếng_Chepang|झ]], [[त#Tiếng_Chepang|त]], [[थ#Tiếng_Chepang|थ]], [[द#Tiếng_Chepang|द]], [[ध#Tiếng_Chepang|ध]], [[न#Tiếng_Chepang|न]], [[न्‍ह#Tiếng_Chepang|न्‍ह]], [[प#Tiếng_Chepang|प]], [[फ#Tiếng_Chepang|फ]], [[ब#Tiếng_Chepang|ब]], [[भ#Tiếng_Chepang|भ]], [[म#Tiếng_Chepang|म]], [[म्‍ह#Tiếng_Chepang|म्‍ह]], [[य#Tiếng_Chepang|य]], [[र#Tiếng_Chepang|र]], [[ह्र#Tiếng_Chepang|ह्र]], [[ल#Tiếng_Chepang|ल]], [[ल्‍ह#Tiếng_Chepang|ल्‍ह]], [[व#Tiếng_Chepang|व]], [[स#Tiếng_Chepang|स]], [[ह#Tiếng_Chepang|ह]], [[ड#Tiếng_Chepang|ड]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Ross Caughley|entry=घ|entryurl=https://www.webonary.org/chepang/en/browse/browse-vernacular-nepali/?letter=%E0%A4%98&key=cdm|publisher=SIL International|year=2016|work=Chepang – Nepali – English Dictionary}} =={{langname|hne}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Chhattisgarh|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hne|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|hne|Chữ cái}} #Phụ âm thứ 4 trong tiếng Chhattisgarh, viết bằng chữ Devanagari. #:{{ux|hne|ज'''घा'''|[[địa điểm]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Chhattisgarh|list={{l-self|hne|अ}}, {{l-self|hne|आ}}, {{l-self|hne|इ}}, {{l-self|hne|ई}}, {{l-self|hne|उ}}, {{l-self|hne|ऊ}}, {{l-self|hne|ऋ}}, {{l-self|hne|ए}}, {{l-self|hne|ऐ}}, {{l-self|hne|ओ}}, {{l-self|hne|औ}}, {{l-self|hne|अं}}, {{l-self|hne|अः}}, {{l-self|hne|अँ}}, {{l-self|hne|क}}, {{l-self|hne|ख}}, {{l-self|hne|ग}}, {{l-self|hne|घ}}, {{l-self|hne|ङ}}, {{l-self|hne|च}}, {{l-self|hne|छ}}, {{l-self|hne|ज}}, {{l-self|hne|झ}}, {{l-self|hne|ञ}}, {{l-self|hne|ट}}, {{l-self|hne|ठ}}, {{l-self|hne|ड}}, {{l-self|hne|ढ}}, {{l-self|hne|ण}}, {{l-self|hne|त}}, {{l-self|hne|थ}}, {{l-self|hne|द}}, {{l-self|hne|ध}}, {{l-self|hne|न}}, {{l-self|hne|प}}, {{l-self|hne|फ}}, {{l-self|hne|ब}}, {{l-self|hne|भ}}, {{l-self|hne|म}}, {{l-self|hne|य}}, {{l-self|hne|र}}, {{l-self|hne|ल}}, {{l-self|hne|व}}, {{l-self|hne|श}}, {{l-self|hne|ष}}, {{l-self|hne|स}}, {{l-self|hne|ह}}, {{l-self|hne|क्ष}}, {{l-self|hne|त्र}}, {{l-self|hne|ज्ञ}}, {{l-self|hne|श्र}}, {{l-self|hne|ड़}}, {{l-self|hne|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hne|author=Biblica, Inc.|work=पबितर बाईबल,समकालीन छत्तीसगढ़ी अनुवाद|year=2024|entry=उतपत्ती 1|entryurl=https://ebible.org/hne/GEN01.htm}} =={{langname|cih}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Chinal|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cih|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cih|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Chinal. #:{{ux|cih|मे'''घ'''|tr=me'''gh'''|[[tuyết]]|inline=1}} =={{langname|cdj}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Churah|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cdj|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cdj|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Churah. #:{{ux|cdj|मै'''घ'''|[[mưa]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|cdj|author=Beyond Translation|work=चुराही नवाँ नियम|year=2020|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/3250/REV.1.CDJNT}} =={{langname|dhw}}== ==={{ĐM|pron}}=== *{{IPA4|dhw|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dhw|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Danuwar, viết bằng chữ Devanagari. #:{{quote|dhw|तब मरियम तिन महिना तलिक एलिसिबासङ रहले आ आप्‍न '''घ'''र '''घु'''मिक एले।|tr=taba mariyama tina mahina talika elisibāsaṅ rahale ā āpna '''gha'''ra '''ghu'''mika ele.|Ma-ri ở với Ê-li-sa-bét chừng ba tháng, rồi trở về nhà mình. ([[s:Lu-ca/1#1:56|Lu-ca 1:56]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Danuwar|list={{l-self|dhw|अ}}, {{l-self|dhw|आ}}, {{l-self|dhw|इ}}, {{l-self|dhw|ई}}, {{l-self|dhw|उ}}, {{l-self|dhw|ऊ}}, {{l-self|dhw|ए}}, {{l-self|dhw|ऐ}}, {{l-self|dhw|ओ}}, {{l-self|dhw|औ}}, {{l-self|dhw|अँ}}, {{l-self|dhw|क}}, {{l-self|dhw|ख}}, {{l-self|dhw|ग}}, {{l-self|dhw|घ}}, {{l-self|dhw|ङ}}, {{l-self|dhw|च}}, {{l-self|dhw|छ}}, {{l-self|dhw|ज}}, {{l-self|dhw|झ}}, {{l-self|dhw|ञ}}, {{l-self|dhw|ट}}, {{l-self|dhw|ठ}}, {{l-self|dhw|ड}}, {{l-self|dhw|ढ}}, {{l-self|dhw|ण}}, {{l-self|dhw|त}}, {{l-self|dhw|थ}}, {{l-self|dhw|द}}, {{l-self|dhw|ध}}, {{l-self|dhw|न}}, {{l-self|dhw|प}}, {{l-self|dhw|फ}}, {{l-self|dhw|ब}}, {{l-self|dhw|भ}}, {{l-self|dhw|म}}, {{l-self|dhw|य}}, {{l-self|dhw|र}}, {{l-self|dhw|ल}}, {{l-self|dhw|व}}, {{l-self|dhw|श}}, {{l-self|dhw|ष}}, {{l-self|dhw|स}}, {{l-self|dhw|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|dhw|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/4355/LUK.1.DANU|entry=लुका 1|work=दनुवारि|year=2024}} =={{langname|dhn}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Dhanka|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|dhn|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dhn|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Dhanka, viết bằng chữ Devanagari. #:{{quote|dhn|काय असी काहली वात छे, जेका वाराम लोगहन कय सके की देख यी नवली छे? यी ते वेगला वाराम हामरे सी '''घ'''ण पेहले सी हुयती आय रयी।|tr=Kāy asī kāhalī vāt che, jekā vārām loghan kay sake kī dekh yī navalī che? Yī te veglā vārām hāmre sī '''gha'''ṇ pehale sī huytī āy rayī.|Nếu có một vật chi mà người ta nói rằng: Hãy xem, cái nầy mới, vật ấy thật đã có rồi trong các thời-đời trước ta. ([[s:Truyền đạo/1#1:10|Truyền đạo 1:10]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Dhanka|list={{l-self|dhn|अ}}, {{l-self|dhn|आ}}, {{l-self|dhn|इ}}, {{l-self|dhn|ई}}, {{l-self|dhn|उ}}, {{l-self|dhn|ऊ}}, {{l-self|dhn|ए}}, {{l-self|dhn|ऐ}}, {{l-self|dhn|ओ}}, {{l-self|dhn|औ}}, {{l-self|dhn|अं}}, {{l-self|dhn|क}}, {{l-self|dhn|ख}}, {{l-self|dhn|ग}}, {{l-self|dhn|घ}}, {{l-self|dhn|ङ}}, {{l-self|dhn|च}}, {{l-self|dhn|ज}}, {{l-self|dhn|ट}}, {{l-self|dhn|ठ}}, {{l-self|dhn|ड}}, {{l-self|dhn|ढ}}, {{l-self|dhn|ण}}, {{l-self|dhn|त}}, {{l-self|dhn|थ}}, {{l-self|dhn|द}}, {{l-self|dhn|ध}}, {{l-self|dhn|न}}, {{l-self|dhn|प}}, {{l-self|dhn|फ}}, {{l-self|dhn|ब}}, {{l-self|dhn|भ}}, {{l-self|dhn|म}}, {{l-self|dhn|य}}, {{l-self|dhn|र}}, {{l-self|dhn|ल}}, {{l-self|dhn|ळ}}, {{l-self|dhn|व}}, {{l-self|dhn|श}}, {{l-self|dhn|स}}, {{l-self|dhn|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|dhn|author=The Word for the World International|entryurl=https://www.bible.com/bible/4055/ECC.1.DII25|entry=सभोपदेशक 1|work=परमेश्वरन सत्य वचन, नवलो नियम|year=2020}} =={{langname|mki}}== ==={{ĐM|pron}}=== *{{IPA4|mki|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|mki|Chữ cái|tr=gha}} #Phụ âm thứ 8 trong tiếng Dhatki, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Dhatki'') [[अ#Tiếng_Dhatki|अ]], [[आ#Tiếng_Dhatki|आ]], [[इ#Tiếng_Dhatki|इ]], [[ई#Tiếng_Dhatki|ई]], [[उ#Tiếng_Dhatki|उ]], [[ऊ#Tiếng_Dhatki|ऊ]], [[ए#Tiếng_Dhatki|ए]], [[ऐ#Tiếng_Dhatki|ऐ]], [[ओ#Tiếng_Dhatki|ओ]], [[औ#Tiếng_Dhatki|औ]], [[क#Tiếng_Dhatki|क]], [[क़#Tiếng_Dhatki|क़]], [[ख#Tiếng_Dhatki|ख]], [[ख़#Tiếng_Dhatki|ख़]], [[ग#Tiếng_Dhatki|ग]], [[ग़#Tiếng_Dhatki|ग़]], [[ॻ#Tiếng_Dhatki|ॻ]], [[घ#Tiếng_Dhatki|घ]], [[ङ#Tiếng_Dhatki|ङ]], [[च#Tiếng_Dhatki|च]], [[छ#Tiếng_Dhatki|छ]], [[ज#Tiếng_Dhatki|ज]], [[ज़#Tiếng_Dhatki|ज़]], [[ॼ#Tiếng_Dhatki|ॼ]], [[झ#Tiếng_Dhatki|झ]], [[ञ#Tiếng_Dhatki|ञ]], [[ट#Tiếng_Dhatki|ट]], [[ठ#Tiếng_Dhatki|ठ]], [[ड#Tiếng_Dhatki|ड]], [[ड़#Tiếng_Dhatki|ड़]], [[ॾ#Tiếng_Dhatki|ॾ]], [[ढ#Tiếng_Dhatki|ढ]], [[ढ़#Tiếng_Dhatki|ढ़]], [[ण#Tiếng_Dhatki|ण]], [[त#Tiếng_Dhatki|त]], [[थ#Tiếng_Dhatki|थ]], [[द#Tiếng_Dhatki|द]], [[ध#Tiếng_Dhatki|ध]], [[न#Tiếng_Dhatki|न]], [[प#Tiếng_Dhatki|प]], [[फ#Tiếng_Dhatki|फ]], [[फ़#Tiếng_Dhatki|फ़]], [[ब#Tiếng_Dhatki|ब]], [[ॿ#Tiếng_Dhatki|ॿ]], [[भ#Tiếng_Dhatki|भ]], [[म#Tiếng_Dhatki|म]], [[य#Tiếng_Dhatki|य]], [[र#Tiếng_Dhatki|र]], [[ल#Tiếng_Dhatki|ल]], [[ळ#Tiếng_Dhatki|ळ]], [[व#Tiếng_Dhatki|व]], [[श#Tiếng_Dhatki|श]], [[ष#Tiếng_Dhatki|ष]], [[स#Tiếng_Dhatki|स]], [[ह#Tiếng_Dhatki|ह]] =={{langname|dhi}}== ==={{ĐM|pron}}=== *{{IPA4|dhi|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|dhi|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Dhimal, viết bằng chữ Devanagari. #:{{ux|dhi|'''घ'''ङगर|tr='''gha'''ṅgara|[[màn]] [[che]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Dhimal'') [[अ#Tiếng_Dhimal|अ]], [[आ#Tiếng_Dhimal|आ]], [[आः#Tiếng_Dhimal|आः]], [[इ#Tiếng_Dhimal|इ]], [[इः#Tiếng_Dhimal|इः]], [[उ#Tiếng_Dhimal|उ]], [[उः#Tiếng_Dhimal|उः]], [[ए#Tiếng_Dhimal|ए]], [[एः#Tiếng_Dhimal|एः]], [[ओ#Tiếng_Dhimal|ओ]], [[ओः#Tiếng_Dhimal|ओः]], [[अँ#Tiếng_Dhimal|अँ]], [[अ्#Tiếng_Dhimal|अ्]], [[क#Tiếng_Dhimal|क]], [[ख#Tiếng_Dhimal|ख]], [[ग#Tiếng_Dhimal|ग]], [[घ#Tiếng_Dhimal|घ]], [[ङ#Tiếng_Dhimal|ङ]], [[च#Tiếng_Dhimal|च]], [[छ#Tiếng_Dhimal|छ]], [[ज#Tiếng_Dhimal|ज]], [[झ#Tiếng_Dhimal|झ]], [[ट#Tiếng_Dhimal|ट]], [[ठ#Tiếng_Dhimal|ठ]], [[ड#Tiếng_Dhimal|ड]], [[ढ#Tiếng_Dhimal|ढ]], [[त#Tiếng_Dhimal|त]], [[थ#Tiếng_Dhimal|थ]], [[द#Tiếng_Dhimal|द]], [[ध#Tiếng_Dhimal|ध]], [[न#Tiếng_Dhimal|न]], [[न्ह#Tiếng_Dhimal|न्ह]], [[प#Tiếng_Dhimal|प]], [[फ#Tiếng_Dhimal|फ]], [[ब#Tiếng_Dhimal|ब]], [[भ#Tiếng_Dhimal|भ]], [[म#Tiếng_Dhimal|म]], [[म्ह#Tiếng_Dhimal|म्ह]], [[य#Tiếng_Dhimal|य]], [[य्ह#Tiếng_Dhimal|य्ह]], [[र#Tiếng_Dhimal|र]], [[ऱ्ह#Tiếng_Dhimal|ऱ्ह]], [[ल#Tiếng_Dhimal|ल]], [[ल्ह#Tiếng_Dhimal|ल्ह]], [[व#Tiếng_Dhimal|व]], [[व्ह#Tiếng_Dhimal|व्ह]], [[स#Tiếng_Dhimal|स]], [[ह#Tiếng_Dhimal|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|work=Dhimal-Nepali-English Dictionary|entryurl=https://www.webonary.org/dhimal/en/browse/browse-vernacular-nepali/?key=dhi&letter=%E0%A4%98|entry=घ|year=2020|publisher=SIL International}} =={{langname|dho}}== ==={{ĐM|pron}}=== *{{IPA4|dho|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|dho|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Dhodia. =={{langname|doi}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Dogri|𑚍]] |- ! Dogri | [[𑠍#Tiếng_Dogri|𑠍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|doi|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|doi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Dogri, viết bằng chữ Devanagari. #:{{ux|doi|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Dogri|list={{l-self|doi|अ}}, {{l-self|doi|आ}}, {{l-self|doi|इ}}, {{l-self|doi|ई}}, {{l-self|doi|उ}}, {{l-self|doi|ऊ}}, {{l-self|doi|ऋ}}, {{l-self|doi|ए}}, {{l-self|doi|ऐ}}, {{l-self|doi|ओ}}, {{l-self|doi|औ}}, {{l-self|doi|अं}}, {{l-self|doi|क}}, {{l-self|doi|ख}}, {{l-self|doi|ग}}, {{l-self|doi|घ}}, {{l-self|doi|ङ}}, {{l-self|doi|च}}, {{l-self|doi|छ}}, {{l-self|doi|ज}}, {{l-self|doi|झ}}, {{l-self|doi|ञ}}, {{l-self|doi|ट}}, {{l-self|doi|ठ}}, {{l-self|doi|ड}}, {{l-self|doi|ढ}}, {{l-self|doi|ण}}, {{l-self|doi|त}}, {{l-self|doi|थ}}, {{l-self|doi|द}}, {{l-self|doi|ध}}, {{l-self|doi|न}}, {{l-self|doi|प}}, {{l-self|doi|फ}}, {{l-self|doi|ब}}, {{l-self|doi|भ}}, {{l-self|doi|म}}, {{l-self|doi|य}}, {{l-self|doi|र}}, {{l-self|doi|ल}}, {{l-self|doi|व}}, {{l-self|doi|श}}, {{l-self|doi|ष}}, {{l-self|doi|स}}, {{l-self|doi|ह}}, {{l-self|doi|क्ष}}, {{l-self|doi|त्र}}, {{l-self|doi|ज्ञ}}, {{l-self|doi|ज़}}, {{l-self|doi|थ़}}, {{l-self|doi|ड़}}, {{l-self|doi|ढ़}}, {{l-self|doi|फ़}}}} =={{langname|dgo}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Dogri_Hindi|𑚍]] |- ! Ả Rập | [[غ#Tiếng_Dogri_Hindi|غ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|dgo|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dgo|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Dogri Hindi. #:{{quote|dgo|लेकन आं, सरदीस च तेरे इत्थैं ऐसे लोग बी ऐ, जिन्हैं अपने-अपने कपड़े गन्दा नेई कित्ते, ओ सफेद कपड़े लाए दे मेरे कन्ने कुम'''घ'''न, किके ओ एस जोगे न।|tr=Lekana āṃ, sardīs ca tere itthaiṃ aise log bī ai, jinheṃ apne-apne kapṛe gandā neī kittē, o saphed kapṛe lāe de mere kanne kum'''gh'''an, kike o es joge ne.|Nhưng, ở Sạt-đe, ngươi còn có mấy người chưa làm ô-uế áo-xống mình: những kẻ đó sẽ mặc áo trắng mà đi cùng ta, vì họ xứng-đáng như vậy. ([[s:Khải huyền/3#3:4|Khải huyền 3:4]])}} ==={{ĐM|ref}}=== *{{Chú thích web|dgo|author=The Love Fellowship|work=डोगरी नवां नियम|year=2026|entry=प्रकाशितवाक्य 3|entryurl=https://www.bible.com/bible/2958/REV.3.DOG}} =={{langname|dty}}== ==={{ĐM|pron}}=== *{{IPA4|dty|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|dty|Chữ cái}} #Phụ âm thứ 4 trong tiếng Doteli, viết bằng chữ Devanagari. #:{{quote|dty|सुण, तमरा हृदयमि पस्साइलाइ, म '''घ'''रको बाइर कल्लिर्या रे ढोका ढकढक अददार्या मान्स जसो हुँ। यदि तमले मेरो आवाज सुण्या रे मेरी निउति आफ्नो हृदय खोल्या भण्या, म भितर आउनउ रे हाम एक अर्खासित संङइ संगति अद्दया हौ।|Nầy, ta đứng ngoài cửa mà gõ; nếu ai nghe tiếng ta mà mở cửa cho, thì ta sẽ vào cùng người ấy, ăn bữa tối với người, và người với ta. ([[s:Khải huyền/3#3:20|Khải huyền 3:20]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Doteli'') [[अ#Tiếng_Doteli|अ]], [[आ#Tiếng_Doteli|आ]], [[इ#Tiếng_Doteli|इ]], [[ई#Tiếng_Doteli|ई]], [[उ#Tiếng_Doteli|उ]], [[ऊ#Tiếng_Doteli|ऊ]], [[ए#Tiếng_Doteli|ए]], [[ऐ#Tiếng_Doteli|ऐ]], [[ओ#Tiếng_Doteli|ओ]], [[औ#Tiếng_Doteli|औ]], [[अं#Tiếng_Doteli|अं]], [[अः#Tiếng_Doteli|अः]], [[अँ#Tiếng_Doteli|अँ]], [[क#Tiếng_Doteli|क]], [[ख#Tiếng_Doteli|ख]], [[ग#Tiếng_Doteli|ग]], [[घ#Tiếng_Doteli|घ]], [[ङ#Tiếng_Doteli|ङ]], [[च#Tiếng_Doteli|च]], [[छ#Tiếng_Doteli|छ]], [[ज#Tiếng_Doteli|ज]], [[झ#Tiếng_Doteli|झ]], [[ञ#Tiếng_Doteli|ञ]], [[ट#Tiếng_Doteli|ट]], [[ठ#Tiếng_Doteli|ठ]], [[ड#Tiếng_Doteli|ड]], [[ढ#Tiếng_Doteli|ढ]], [[ण#Tiếng_Doteli|ण]], [[त#Tiếng_Doteli|त]], [[थ#Tiếng_Doteli|थ]], [[द#Tiếng_Doteli|द]], [[ध#Tiếng_Doteli|ध]], [[न#Tiếng_Doteli|न]], [[प#Tiếng_Doteli|प]], [[फ#Tiếng_Doteli|फ]], [[ब#Tiếng_Doteli|ब]], [[भ#Tiếng_Doteli|भ]], [[म#Tiếng_Doteli|म]], [[य#Tiếng_Doteli|य]], [[र#Tiếng_Doteli|र]], [[ल#Tiếng_Doteli|ल]], [[ळ#Tiếng_Doteli|ळ]], [[व#Tiếng_Doteli|व]], [[श#Tiếng_Doteli|श]], [[स#Tiếng_Doteli|स]], [[स#Tiếng_Doteli|स]], [[ह#Tiếng_Doteli|ह]], [[ड़#Tiếng_Doteli|ड़]], [[ढ़#Tiếng_Doteli|ढ़]] ==={{ĐM|ref}}=== *{{Chú thích web|dty|author=Beyond Translation|entryurl=https://www.bible.com/bible/3503/REV.3.DTYNT|entry=प्रकाश 3|work=डोटेली नयाँ करार|year=2025}} =={{langname|dus}}== ==={{ĐM|pron}}=== *{{IPA4|dus|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|dus|Chữ cái|tr=gh}} #Chữ cái Devanagari thể hiện phụ âm '''/ɡʰ/''' trong tiếng Dumi. #:{{ux|dus|'''घ'''री|tr='''gha'''rī|[[thời gian]]|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/en/browse/browse-vernacular-nepali/?key=dus&letter=%E0%A4%98|entry=घ|year=2016|publisher=SIL International}} =={{langname|gbk}}== ==={{ĐM|pron}}=== *{{IPA4|gbk|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|gbk|Chữ cái}} #Phụ âm thứ 4 trong tiếng Gaddi, viết bằng chữ Devanagari. #:{{ux|gbk|सिं'''घ'''णा|[[ngửi]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Gaddi|list={{l-self|gbk|अ}}, {{l-self|gbk|आ}}, {{l-self|gbk|इ}}, {{l-self|gbk|ई}}, {{l-self|gbk|उ}}, {{l-self|gbk|ऊ}}, {{l-self|gbk|ए}}, {{l-self|gbk|ऐ}}, {{l-self|gbk|ओ}}, {{l-self|gbk|औ}}, {{l-self|gbk|अँ}}, {{l-self|gbk|अं}}, {{l-self|gbk|क}}, {{l-self|gbk|ख}}, {{l-self|gbk|ग }}, {{l-self|gbk|घ}}, {{l-self|gbk|च}}, {{l-self|gbk|छ}}, {{l-self|gbk|ज}}, {{l-self|gbk|झ}}, {{l-self|gbk|ट}}, {{l-self|gbk|ठ}}, {{l-self|gbk|ड}}, {{l-self|gbk|ड़}}, {{l-self|gbk|ढ}}, {{l-self|gbk|ण}}, {{l-self|gbk|त}}, {{l-self|gbk|थ}}, {{l-self|gbk|द}}, {{l-self|gbk|ध}}, {{l-self|gbk|न}}, {{l-self|gbk|प}}, {{l-self|gbk|फ}}, {{l-self|gbk|ब}}, {{l-self|gbk|भ}}, {{l-self|gbk|म}}, {{l-self|gbk|य}}, {{l-self|gbk|र}}, {{l-self|gbk|ल}}, {{l-self|gbk|व}}, {{l-self|gbk|ल़}}, {{l-self|gbk|श}}/{{l-self|gbk|स}}, {{l-self|gbk|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbk|author=The Love Fellowship|work=गददी|year=2025|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/2959/REV.1.GBKNT}} =={{langname|gbl}}== {| class="floatright wikitable" style="text-align:center;" |- ! Gujarat | [[ઘ#Tiếng_Gamit|ઘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|gbl|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gbl|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Gamit, viết bằng chữ Devanagari. #:{{quote|gbl|एने च्याल वोळखी लेदो का ओ तोज हेय जो देवाळा सुंदर नांवा बाअणा पाय बोहीन बिख मागे, एने च्ये ये '''घ'''टना कोय जीं च्याआरे जायली, च्ये बोज नोवाय पामीन चमकाय गीये।|tr=Ene cyāl voḷkhī ledo kā o toj hey jo devāḷā sundar nāṃvā bāaṇā pāy bohīn bikh māge, ene cye ye '''gha'''ṭanā koy jīṃ cyāāre jāylī, cye boj novāy pāmīn camakāy gīye.|Người ta nhận là chính người đó đã ngồi tại Cửa Đẹp đền-thờ đặng xin bố-thí; nên đều bỡ-ngỡ và sững-sờ về việc đã xảy đến cho người. ([[s:Công vụ các Sứ đồ/3#3:10|Công vụ các Sứ đồ 3:10]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Gamit|list={{l-self|gbl|अ}}, {{l-self|gbl|आ}}, {{l-self|gbl|इ}}, {{l-self|gbl|ई}}, {{l-self|gbl|उ}}, {{l-self|gbl|ऊ}}, {{l-self|gbl|ए}}, {{l-self|gbl|ऐ}}, {{l-self|gbl|ओ}}, {{l-self|gbl|औ}}, {{l-self|gbl|अं}}, {{l-self|gbl|क}}, {{l-self|gbl|ख}}, {{l-self|gbl|ग}}, {{l-self|gbl|घ}}, {{l-self|gbl|ङ}}, {{l-self|gbl|च}}, {{l-self|gbl|ज}}, {{l-self|gbl|ट}}, {{l-self|gbl|ठ}}, {{l-self|gbl|ड}}, {{l-self|gbl|ढ}}, {{l-self|gbl|ण}}, {{l-self|gbl|त}}, {{l-self|gbl|थ}}, {{l-self|gbl|द}}, {{l-self|gbl|ध}}, {{l-self|gbl|न}}, {{l-self|gbl|प}}, {{l-self|gbl|फ}}, {{l-self|gbl|ब}}, {{l-self|gbl|भ}}, {{l-self|gbl|म}}, {{l-self|gbl|य}}, {{l-self|gbl|र}}, {{l-self|gbl|ल}}, {{l-self|gbl|ळ}}, {{l-self|gbl|व}}, {{l-self|gbl|श}}, {{l-self|gbl|स}}, {{l-self|gbl|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbl|author=Beyond Translation|entryurl=https://www.bible.com/bible/3504/ACT.3.GBLNT|entry=પ્રેષિતોનાં ક્રત્યો 3|work=ગામીત નોવો કરાર|year=2025}} =={{langname|gas}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Garasia_Adiwasi|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gas|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gas|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Garasia Adiwasi, viết bằng chữ Devanagari. #:{{quote|gas|फेंर शेतान इसु नं '''घ'''णास उंसा डुंगोर इपेर लेंज्यो अने आखी दुन्य नुं राज अने वैभव वताडेने,|tr=Phēṃra śētāna isu naṃ '''gha'''ṇāsa uṃsā ḍuṃgora ipēra leṃjyo ane ākhī dunyā nuṃ rāja ane vaibhava vatāḍene.|Ma-quỉ lại đem Ngài lên trên núi rất cao, chỉ cho Ngài các nước thế-gian, cùng sự vinh-hiển các nước ấy; ([[s:Ma-thi-ơ/4#4:8|Ma-thi-ơ 4:8]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garasia Adiwasi|list={{l-self|gas|अ}}, {{l-self|gas|आ}}, {{l-self|gas|इ}}, {{l-self|gas|ई}}, {{l-self|gas|उ}}, {{l-self|gas|ऊ}}, {{l-self|gas|ए}}, {{l-self|gas|ऐ}}, {{l-self|gas|ओ}}, {{l-self|gas|औ}}, {{l-self|gas|अं}}, {{l-self|gas|क}}, {{l-self|gas|ख}}, {{l-self|gas|ग}}, {{l-self|gas|घ}}, {{l-self|gas|ङ}}, {{l-self|gas|च}}, {{l-self|gas|ज}}, {{l-self|gas|ट}}, {{l-self|gas|ठ}}, {{l-self|gas|ड}}, {{l-self|gas|ढ}}, {{l-self|gas|ण}}, {{l-self|gas|त}}, {{l-self|gas|थ}}, {{l-self|gas|द}}, {{l-self|gas|ध}}, {{l-self|gas|न}}, {{l-self|gas|प}}, {{l-self|gas|फ}}, {{l-self|gas|ब}}, {{l-self|gas|भ}}, {{l-self|gas|म}}, {{l-self|gas|य}}, {{l-self|gas|र}}, {{l-self|gas|ल}}, {{l-self|gas|ळ}}, {{l-self|gas|व}}, {{l-self|gas|श}}, {{l-self|gas|स}}, {{l-self|gas|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gas|author=The Love Fellowship|entryurl=https://www.bible.com/bible/3442/MAT.4.GASNT|entry=મત્તિ 4|work=ગરાસિયા નવો કરાર|year=2024}} =={{langname|gra}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Garasia_Rajput|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gra|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gra|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Garasia Rajput, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garasia Rajput|list={{l-self|gra|अ}}, {{l-self|gra|आ}}, {{l-self|gra|इ}}, {{l-self|gra|ई}}, {{l-self|gra|उ}}, {{l-self|gra|ऊ}}, {{l-self|gra|ए}}, {{l-self|gra|ऐ}}, {{l-self|gra|ओ}}, {{l-self|gra|औ}}, {{l-self|gra|अं}}, {{l-self|gra|क}}, {{l-self|gra|ख}}, {{l-self|gra|ग}}, {{l-self|gra|घ}}, {{l-self|gra|ङ}}, {{l-self|gra|च}}, {{l-self|gra|ज}}, {{l-self|gra|ट}}, {{l-self|gra|ठ}}, {{l-self|gra|ड}}, {{l-self|gra|ढ}}, {{l-self|gra|ण}}, {{l-self|gra|त}}, {{l-self|gra|थ}}, {{l-self|gra|द}}, {{l-self|gra|ध}}, {{l-self|gra|न}}, {{l-self|gra|प}}, {{l-self|gra|फ}}, {{l-self|gra|ब}}, {{l-self|gra|भ}}, {{l-self|gra|म}}, {{l-self|gra|य}}, {{l-self|gra|र}}, {{l-self|gra|ल}}, {{l-self|gra|ळ}}, {{l-self|gra|व}}, {{l-self|gra|श}}, {{l-self|gra|स}}, {{l-self|gra|ह}}}} =={{langname|gbm}}== ==={{ĐM|pron}}=== *{{IPA4|gbm|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gbm|Chữ cái}} #Phụ âm thứ 4 trong tiếng Garhwal, viết bằng chữ Devanagari. #:{{ux|gbm|'''घं''''टा|[[giờ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garhwal|list={{l-self|gbm|अ|tr=-}}, {{l-self|gbm|आ|tr=-}}, {{l-self|gbm|इ|tr=-}}, {{l-self|gbm|ई|tr=-}}, {{l-self|gbm|उ|tr=-}}, {{l-self|gbm|ऊ|tr=-}}, {{l-self|gbm|ए|tr=-}}, {{l-self|gbm|ऐ|tr=-}}, {{l-self|gbm|ओ|tr=-}}, {{l-self|gbm|औ|tr=-}}, {{l-self|gbm|अं|tr=-}}, {{l-self|gbm|अँ|tr=-}}, {{l-self|gbm|अइ|tr=-}}, {{l-self|gbm|आइ|tr=-}}, {{l-self|gbm|अउ|tr=-}}, {{l-self|gbm|आउ|tr=-}}, {{l-self|gbm|इउ|tr=-}}, {{l-self|gbm|उइ|tr=-}}, {{l-self|gbm|क|tr=-}}, {{l-self|gbm|ख|tr=-}}, {{l-self|gbm|ग|tr=-}}, {{l-self|gbm|घ|tr=-}}, {{l-self|gbm|ङ|tr=-}}, {{l-self|gbm|च|tr=-}}, {{l-self|gbm|छ|tr=-}}, {{l-self|gbm|ज|tr=-}}, {{l-self|gbm|झ|tr=-}}, {{l-self|gbm|ञ|tr=-}}, {{l-self|gbm|ट|tr=-}}, {{l-self|gbm|ठ|tr=-}}, {{l-self|gbm|ड|tr=-}}, {{l-self|gbm|ढ|tr=-}}, {{l-self|gbm|ण|tr=-}}, {{l-self|gbm|त|tr=-}}, {{l-self|gbm|थ|tr=-}}, {{l-self|gbm|द|tr=-}}, {{l-self|gbm|ध|tr=-}}, {{l-self|gbm|न|tr=-}}, {{l-self|gbm|प|tr=-}}, {{l-self|gbm|फ|tr=-}}, {{l-self|gbm|ब|tr=-}}, {{l-self|gbm|भ|tr=-}}, {{l-self|gbm|म|tr=-}}, {{l-self|gbm|य|tr=-}}, {{l-self|gbm|र|tr=-}}, {{l-self|gbm|ल|tr=-}}, {{l-self|gbm|ळ|tr=-}}, {{l-self|gbm|व|tr=-}}, {{l-self|gbm|श|tr=-}}, {{l-self|gbm|स|tr=-}}, {{l-self|gbm|ह|tr=-}}, {{l-self|gbm|ड़|tr=-}}, {{l-self|gbm|ढ़|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbm|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/4037/MAT.27.GBM|entry=मत्ती 27|work=Garhwali|year=2025}} =={{langname|gon}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Gondi_Adilabad|ఘ]] |- ! Devanagari | '''घ''' |- ! Oriya | [[ଘ#Tiếng_Gondi_Adilabad|ଘ]] |- ! Gunjala | [[𑵷#Tiếng_Gondi_Adilabad|𑵷]] |- ! Masara | [[𑴏#Tiếng_Gondi_Adilabad|𑴏]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gon|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|gon|Chữ cái}} #Phụ âm thứ 4 trong tiếng Gondi Aheri, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Gondi'') [[अ#Tiếng_Gondi_Adilabad|अ]], [[आ#Tiếng_Gondi_Adilabad|आ]], [[इ#Tiếng_Gondi_Adilabad|इ]], [[ई#Tiếng_Gondi_Adilabad|ई]], [[उ#Tiếng_Gondi_Adilabad|उ]], [[ऊ#Tiếng_Gondi_Adilabad|ऊ]], [[ऋ#Tiếng_Gondi_Adilabad|ऋ]], [[ए#Tiếng_Gondi_Adilabad|ए]], [[ऐ#Tiếng_Gondi_Adilabad|ऐ]], [[ओ#Tiếng_Gondi_Adilabad|ओ]], [[औ#Tiếng_Gondi_Adilabad|औ]], [[अं#Tiếng_Gondi_Adilabad|अं]], [[अः#Tiếng_Gondi_Adilabad|अः]], [[अँ#Tiếng_Gondi_Adilabad|अँ]], [[क#Tiếng_Gondi_Adilabad|क]], [[ख#Tiếng_Gondi_Adilabad|ख]], [[ग#Tiếng_Gondi_Adilabad|ग]], [[घ#Tiếng_Gondi_Adilabad|घ]], [[ङ#Tiếng_Gondi_Adilabad|ङ]], [[च#Tiếng_Gondi_Adilabad|च]], [[छ#Tiếng_Gondi_Adilabad|छ]], [[ज#Tiếng_Gondi_Adilabad|ज]], [[झ#Tiếng_Gondi_Adilabad|झ]], [[ट#Tiếng_Gondi_Adilabad|ट]], [[ठ#Tiếng_Gondi_Adilabad|ठ]], [[ड#Tiếng_Gondi_Adilabad|ड]], [[ढ#Tiếng_Gondi_Adilabad|ढ]], [[ड़#Tiếng_Gondi_Adilabad|ड़]], [[त#Tiếng_Gondi_Adilabad|त]], [[थ#Tiếng_Gondi_Adilabad|थ]], [[द#Tiếng_Gondi_Adilabad|द]], [[ध#Tiếng_Gondi_Adilabad|ध]], [[न#Tiếng_Gondi_Adilabad|न]], [[प#Tiếng_Gondi_Adilabad|प]], [[फ#Tiếng_Gondi_Adilabad|फ]], [[ब#Tiếng_Gondi_Adilabad|ब]], [[भ#Tiếng_Gondi_Adilabad|भ]], [[म#Tiếng_Gondi_Adilabad|म]], [[य#Tiếng_Gondi_Adilabad|य]], [[र#Tiếng_Gondi_Adilabad|र]], [[ल#Tiếng_Gondi_Adilabad|ल]], [[व#Tiếng_Gondi_Adilabad|व]], [[स#Tiếng_Gondi_Adilabad|स]], [[ह#Tiếng_Gondi_Adilabad|ह]], [[क्ष#Tiếng_Gondi_Adilabad|क्ष]], [[त्र#Tiếng_Gondi_Adilabad|त्र]], [[ज्ञ#Tiếng_Gondi_Adilabad|ज्ञ]], [[श्र#Tiếng_Gondi_Adilabad|श्र]] ==={{ĐM|ref}}=== *{{Chú thích web|gon|author=Wycliffe Bible Translators, Inc.|work=पवित्र पोल्‍ले|year=2022|entry=मत्‍तयाल 1|entryurl=https://www.bible.com/bible/3417/MAT.1.ESG-DEVA}} =={{langname|inc-ogu}}== ==={{ĐM|pron}}=== *{{IPA|inc-ogu|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|inc-ogu|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Gujarat cổ. #:{{ux|inc-ogu|'''घ'''णउं|[[nhiều]]|inline=1}} =={{langname|hlb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Halba|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA|hlb|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|hlb|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Halba. #:{{ux|hlb|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Halba|list={{l-self|hlb|अ}}, {{l-self|hlb|आ}}, {{l-self|hlb|इ}}, {{l-self|hlb|ई}}, {{l-self|hlb|उ}}, {{l-self|hlb|ऊ}}, {{l-self|hlb|ए}}, {{l-self|hlb|ओ}}, {{l-self|hlb|औ}}, {{l-self|hlb|अं}}, {{l-self|hlb|क}}, {{l-self|hlb|ख}}, {{l-self|hlb|ग}}, {{l-self|hlb|घ}}, {{l-self|hlb|च}}, {{l-self|hlb|छ}}, {{l-self|hlb|ज}}, {{l-self|hlb|झ}}, {{l-self|hlb|ट}}, {{l-self|hlb|ठ}}, {{l-self|hlb|ड}}, {{l-self|hlb|ढ}}, {{l-self|hlb|त}}, {{l-self|hlb|थ}}, {{l-self|hlb|द}}, {{l-self|hlb|ध}}, {{l-self|hlb|न}}, {{l-self|hlb|प}}, {{l-self|hlb|फ}}, {{l-self|hlb|ब}}, {{l-self|hlb|भ}}, {{l-self|hlb|म}}, {{l-self|hlb|र}}, {{l-self|hlb|ल}}, {{l-self|hlb|स}}, {{l-self|hlb|ह}}, {{l-self|hlb|य}}, {{l-self|hlb|व}}, {{l-self|hlb|ड़}}, {{l-self|hlb|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Fran Woods|entryurl=https://www.webonary.org/halbi/browse/browse-vernacular/?letter=%E0%A4%98&key=hlb|entry=घ|work=Halbi – English Dictionary|publisher=SIL International|year=2019}} *{{Chú thích web|hlb|author=Beyond Translation|entryurl=https://www.bible.com/bible/3612/REV.1.HLBNT|entry=प्रकाशितवाक्य 1|work=Halbi|year=2024}} =={{langname|bgc}}== ==={{ĐM|pron}}=== *{{IPA4|bgc|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bgc|Chữ cái}} #Phụ âm thứ 4 trong tiếng Haryanvi, viết bằng chữ Devanagari. #:{{ux|bgc|'''घ'''नखरा|[[phần lớn]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Haryanvi'') [[अ#Tiếng_Haryanvi|अ]], [[आ#Tiếng_Haryanvi|आ]], [[इ#Tiếng_Haryanvi|इ]], [[ई#Tiếng_Haryanvi|ई]], [[उ#Tiếng_Haryanvi|उ]], [[ऊ#Tiếng_Haryanvi|ऊ]], [[ए#Tiếng_Haryanvi|ए]], [[ऐ#Tiếng_Haryanvi|ऐ]], [[ओ#Tiếng_Haryanvi|ओ]], [[औ#Tiếng_Haryanvi|औ]], [[क#Tiếng_Haryanvi|क]], [[ख#Tiếng_Haryanvi|ख]], [[ग#Tiếng_Haryanvi|ग]], [[घ#Tiếng_Haryanvi|घ]], [[ङ#Tiếng_Haryanvi|ङ]], [[च#Tiếng_Haryanvi|च]], [[छ#Tiếng_Haryanvi|छ]], [[ज#Tiếng_Haryanvi|ज]], [[झ#Tiếng_Haryanvi|झ]], [[ञ#Tiếng_Haryanvi|ञ]], [[ट#Tiếng_Haryanvi|ट]], [[ठ#Tiếng_Haryanvi|ठ]], [[ड#Tiếng_Haryanvi|ड]], [[ढ#Tiếng_Haryanvi|ढ]], [[ण#Tiếng_Haryanvi|ण]], [[त#Tiếng_Haryanvi|त]], [[थ#Tiếng_Haryanvi|थ]], [[द#Tiếng_Haryanvi|द]], [[ध#Tiếng_Haryanvi|ध]], [[न#Tiếng_Haryanvi|न]], [[प#Tiếng_Haryanvi|प]], [[फ#Tiếng_Haryanvi|फ]], [[ब#Tiếng_Haryanvi|ब]], [[भ#Tiếng_Haryanvi|भ]], [[म#Tiếng_Haryanvi|म]], [[य#Tiếng_Haryanvi|य]], [[र#Tiếng_Haryanvi|र]], [[ल#Tiếng_Haryanvi|ल]], [[ळ#Tiếng_Haryanvi|ळ]], [[व#Tiếng_Haryanvi|व]], [[श#Tiếng_Haryanvi|श]], [[ष#Tiếng_Haryanvi|ष]], [[स#Tiếng_Haryanvi|स]], [[ह#Tiếng_Haryanvi|ह]], [[क्ष#Tiếng_Haryanvi|क्ष]], [[त्र#Tiếng_Haryanvi|त्र]], [[ज्ञ#Tiếng_Haryanvi|ज्ञ]], [[श्र#Tiếng_Haryanvi|श्र]], [[ड़#Tiếng_Haryanvi|ड़]], [[ढ़#Tiếng_Haryanvi|ढ़]] ==={{ĐM|ref}}=== *{{Chú thích web|bgc|author=Beyond Translation|work=हरियाणवी|year=2025|entry=होशे 1|entryurl=https://www.bible.com/bible/2766/HOS.1.BGC}} =={{langname|hi}}== {{wikipedia|lang=hi}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Hindi|𑂐]] |- ! Newa | [[𑐑#Tiếng_Hindi|𑐑]] |- |} ==={{ĐM|pron}}=== *{{hi-IPA}} ==={{ĐM|letter}}=== {{head|hi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Hindi. #:{{ux|hi|[[w:hi:घड़ी|'''घ'''ड़ी]]|[[đồng hồ]] [[đeo]] [[tay]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Hindi|list={{l-self|hi|अ}}, {{l-self|hi|आ}}, {{l-self|hi|इ}}, {{l-self|hi|ई}}, {{l-self|hi|उ}}, {{l-self|hi|ऊ}}, {{l-self|hi|ऋ}}, {{l-self|hi|ए}}, {{l-self|hi|ऐ}}, {{l-self|hi|ओ}}, {{l-self|hi|औ}}, {{l-self|hi|अं}}, {{l-self|hi|अः}}, {{l-self|hi|अँ}}, {{l-self|hi|क}}, {{l-self|hi|ख}}, {{l-self|hi|ग}}, {{l-self|hi|घ}}, {{l-self|hi|ङ}}, {{l-self|hi|च}}, {{l-self|hi|छ}}, {{l-self|hi|ज}}, {{l-self|hi|झ}}, {{l-self|hi|ञ}}, {{l-self|hi|ट}}, {{l-self|hi|ठ}}, {{l-self|hi|ड}}, {{l-self|hi|ढ}}, {{l-self|hi|ण}}, {{l-self|hi|त}}, {{l-self|hi|थ}}, {{l-self|hi|द}}, {{l-self|hi|ध}}, {{l-self|hi|न}}, {{l-self|hi|प}}, {{l-self|hi|फ}}, {{l-self|hi|ब}}, {{l-self|hi|भ}}, {{l-self|hi|म}}, {{l-self|hi|य}}, {{l-self|hi|र}}, {{l-self|hi|ल}}, {{l-self|hi|व}}, {{l-self|hi|श}}, {{l-self|hi|ष}}, {{l-self|hi|स}}, {{l-self|hi|ह}}, {{l-self|hi|त्र}}, {{l-self|hi|ज्ञ}}, {{l-self|hi|क्ष}}, {{l-self|hi|क़}}, {{l-self|hi|ख़}}, {{l-self|hi|ग़}}, {{l-self|hi|ज़}}, {{l-self|hi|झ़}}, {{l-self|hi|ड़}}, {{l-self|hi|ढ़}}, {{l-self|hi|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=R.C. Tiwari, R.S. Sharma & Krishna Vikal|title=[https://archive.org/details/hindienglishengl0000unse Hindi-English, English-Hindi dictionary]|year=1993|location=New York|publisher=Hippocrene Books|isbn=9780781800846}} =={{langname|hii}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Hinduri|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA|hii|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|hii|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Hinduri. =={{langname|hoc}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Ho|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Ho|ଘ]] |- ! Telugu | [[ఘ#Tiếng_Ho|ఘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hoc|[ɡʱɐ]}} ==={{ĐM|letter}}=== {{head|hoc|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Ho, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Ho|list={{l-self|hoc|अ}}, {{l-self|hoc|आ}}, {{l-self|hoc|इ}}, {{l-self|hoc|ई}}, {{l-self|hoc|उ}}, {{l-self|hoc|ऊ}}, {{l-self|hoc|ऋ}}, {{l-self|hoc|ए}}, {{l-self|hoc|ऐ}}, {{l-self|hoc|ओ}}, {{l-self|hoc|ओः}}, {{l-self|hoc|औ}}, {{l-self|hoc|अं}}, {{l-self|hoc|अः}}, {{l-self|hoc|अँ}}, {{l-self|hoc|क}}, {{l-self|hoc|ख}}, {{l-self|hoc|ग}}, {{l-self|hoc|घ}}, {{l-self|hoc|ङ}}, {{l-self|hoc|च}}, {{l-self|hoc|छ}}, {{l-self|hoc|ज}}, {{l-self|hoc|झ}}, {{l-self|hoc|ट}}, {{l-self|hoc|ठ}}, {{l-self|hoc|ड}}, {{l-self|hoc|ढ}}, {{l-self|hoc|ड़}}, {{l-self|hoc|त}}, {{l-self|hoc|थ}}, {{l-self|hoc|द}}, {{l-self|hoc|ध}}, {{l-self|hoc|न}}, {{l-self|hoc|प}}, {{l-self|hoc|फ}}, {{l-self|hoc|ब}}, {{l-self|hoc|भ}}, {{l-self|hoc|म}}, {{l-self|hoc|य}}, {{l-self|hoc|र}}, {{l-self|hoc|ल}}, {{l-self|hoc|व}}, {{l-self|hoc|श}}, {{l-self|hoc|स}}, {{l-self|hoc|ह}}}} =={{langname|hoy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kannada | [[ಘ#Tiếng_Holiya|ಘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hoy|[ɡʱɒ]}} ==={{ĐM|letter}}=== {{head|hoy|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Holiya. #:{{quote|hoy|नीम्द दिल जान्सतद कि खुद नीव भी हापाळ '''घ'''न दुसरा मंळसागोळ बुराई माळीर.|tr=Nīmd dil jānsatad ki khud nīv bhī hāpāḷ '''gha'''na dusarā maṃḷasāgoḷ burāī māḷīr.|Vì thường khi lòng ngươi cũng biết mình đã rủa kẻ khác. ([[s:Truyền đạo/7#7:22|Truyền đạo 7:22]])}} ==={{ĐM|ref}}=== *{{Chú thích web|hoy|author=The Word for the World International|entryurl=https://www.bible.com/bible/2782/ECC.7.HAA25|entry=सभोपदेशक 7|work=Holiya Bible|year=2025}} =={{langname|jns}}== ==={{ĐM|pron}}=== *{{IPA4|jns|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|jns|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Jaunsar. #:{{ux|jns|'''घा'''स|tr='''ghā'''s|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Jaunsar|list={{l-self|jns|अ}}, {{l-self|jns|आ}}, {{l-self|jns|इ}}, {{l-self|jns|ई}}, {{l-self|jns|उ}}, {{l-self|jns|ऊ}}, {{l-self|jns|ए}}, {{l-self|jns|ऐ}}, {{l-self|jns|ओ}}, {{l-self|jns|औ}}, {{l-self|jns|अं}}, {{l-self|jns|अः }}, {{l-self|jns|क}}, {{l-self|jns|ख}}, {{l-self|jns|ग}}, {{l-self|jns|घ}}, {{l-self|jns|गं}}, {{l-self|jns|च}}, {{l-self|jns|छ}}, {{l-self|jns|ज}}, {{l-self|jns|झ}}, {{l-self|jns|ट}}, {{l-self|jns|ठ}}, {{l-self|jns|ड}}, {{l-self|jns|ड़}}, {{l-self|jns|ढ}}, {{l-self|jns|ढ़}}, {{l-self|jns|ण}}, {{l-self|jns|त}}, {{l-self|jns|थ}}, {{l-self|jns|द}}, {{l-self|jns|ध}}, {{l-self|jns|न}}, {{l-self|jns|प}}, {{l-self|jns|फ}}, {{l-self|jns|ब}}, {{l-self|jns|भ}}, {{l-self|jns|म}}, {{l-self|jns|य}}, {{l-self|jns|र}}, {{l-self|jns|ल}}, {{l-self|jns|व}}, {{l-self|jns|स}}, {{l-self|jns|ह}}}} =={{langname|jul}}== ==={{ĐM|pron}}=== *{{IPA4|jul|[ɡa]}} ==={{ĐM|letter}}=== {{head|jul|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Jirel, viết bằng chữ Devanagari. #:{{ux|jul|'''घ'''ण्‍टा|tr='''gha'''ṇṭā|[[chuông]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=jul|sc=Deva|qual=Chữ Devanagari tiếng Jirel|अ|आ|इ|ई|उ|ऊ|ऋ|ए|ऐ|ओ|औ|क|ख|ग|घ|ङ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|श|स|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|editor=Anita Maibaum & Esther Strahm|entryurl=https://www.webonary.org/jirel/en/browse/browse-vernacular-nepali/?letter=%E0%A4%98&key=jul|entry=घ|year=2019|publisher=SIL International®|work=Jirel-Nepali-English Dictionary}} *{{Chú thích web|jul|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/3866/MAT.5.JUL|entry=मत्ती 5|work=जिरेल|year=1992}} =={{langname|xnr}}== ==={{ĐM|pron}}=== *{{IPA4|xnr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|xnr|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Kangra #:{{ux|xnr|मे'''घा'''|[[mây]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kangra'') [[अ#Tiếng_Kangra|अ]], [[आ#Tiếng_Kangra|आ]], [[इ#Tiếng_Kangra|इ]], [[ई#Tiếng_Kangra|ई]], [[उ#Tiếng_Kangra|उ]], [[ऊ#Tiếng_Kangra|ऊ]], [[ए#Tiếng_Kangra|ए]], [[ऐ#Tiếng_Kangra|ऐ]], [[ओ#Tiếng_Kangra|ओ]], [[औ#Tiếng_Kangra|औ]], [[आह़#Tiếng_Kangra|आह़]], [[इह़#Tiếng_Kangra|इह़]], [[उह़#Tiếng_Kangra|उह़]], [[एह़#Tiếng_Kangra|एह़]], [[ऐह़#Tiếng_Kangra|ऐह़]], [[ओह़#Tiếng_Kangra|ओह़]], [[औह़#Tiếng_Kangra|औह़]], [[अं#Tiếng_Kangra|अं]], [[क#Tiếng_Kangra|क]], [[ख#Tiếng_Kangra|ख]], [[ग#Tiếng_Kangra|ग]], [[घ#Tiếng_Kangra|घ]], [[घ़#Tiếng_Kangra|घ़]], [[च#Tiếng_Kangra|च]], [[छ#Tiếng_Kangra|छ]], [[ज#Tiếng_Kangra|ज]], [[ज्ह़#Tiếng_Kangra|ज्ह़]], [[झ#Tiếng_Kangra|झ]], [[ट#Tiếng_Kangra|ट]], [[ठ#Tiếng_Kangra|ठ]], [[ड#Tiếng_Kangra|ड]], [[ढ#Tiếng_Kangra|ढ]], [[ड़#Tiếng_Kangra|ड़]], [[ण#Tiếng_Kangra|ण]], [[त#Tiếng_Kangra|त]], [[थ#Tiếng_Kangra|थ]], [[द#Tiếng_Kangra|द]], [[ध#Tiếng_Kangra|ध]], [[ध़#Tiếng_Kangra|ध़]], [[न#Tiếng_Kangra|न]], [[न्ह़#Tiếng_Kangra|न्ह़]], [[प#Tiếng_Kangra|प]], [[प्ह़#Tiếng_Kangra|प्ह़]], [[फ#Tiếng_Kangra|फ]], [[ब#Tiếng_Kangra|ब]], [[ब्ह़#Tiếng_Kangra|ब्ह़]], [[भ#Tiếng_Kangra|भ]], [[भ़#Tiếng_Kangra|भ़]], [[म#Tiếng_Kangra|म]], [[म्ह़#Tiếng_Kangra|म्ह़]], [[य#Tiếng_Kangra|य]], [[य्ह़#Tiếng_Kangra|य्ह़]], [[र#Tiếng_Kangra|र]], [[ल#Tiếng_Kangra|ल]], [[ल़#Tiếng_Kangra|ल़]], [[स#Tiếng_Kangra|स]], [[स्ह़#Tiếng_Kangra|स्ह़]], [[ह#Tiếng_Kangra|ह]], [[ह़#Tiếng_Kangra|ह़]] ==={{ĐM|ref}}=== *{{Chú thích web|xnr|author=The Love Fellowship|work=काँगड़ी|year=2025|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/2962/REV.1.XNR}} =={{langname|bjj}}== ==={{ĐM|pron}}=== *{{IPA4|bjj|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bjj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kannauj, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kannauj|list={{l-self|bjj|अ}}, {{l-self|bjj|आ}}, {{l-self|bjj|इ}}, {{l-self|bjj|ई}}, {{l-self|bjj|उ}}, {{l-self|bjj|ऊ}}, {{l-self|bjj|ऋ}}, {{l-self|bjj|ए}}, {{l-self|bjj|ऐ}}, {{l-self|bjj|ओ}}, {{l-self|bjj|औ}}, {{l-self|bjj|क}}, {{l-self|bjj|ख}}, {{l-self|bjj|ग}}, {{l-self|bjj|घ}}, {{l-self|bjj|ङ}}, {{l-self|bjj|च}}, {{l-self|bjj|छ}}, {{l-self|bjj|ज}}, {{l-self|bjj|झ}}, {{l-self|bjj|ञ}}, {{l-self|bjj|ट}}, {{l-self|bjj|ठ}}, {{l-self|bjj|ड}}, {{l-self|bjj|ढ}}, {{l-self|bjj|ण}}, {{l-self|bjj|त}}, {{l-self|bjj|थ}}, {{l-self|bjj|द}}, {{l-self|bjj|ध}}, {{l-self|bjj|न}}, {{l-self|bjj|प}}, {{l-self|bjj|फ}}, {{l-self|bjj|ब}}, {{l-self|bjj|भ}}, {{l-self|bjj|म}}, {{l-self|bjj|य}}, {{l-self|bjj|र}}, {{l-self|bjj|ल}}, {{l-self|bjj|व}}, {{l-self|bjj|श}}, {{l-self|bjj|ष}}, {{l-self|bjj|स}}, {{l-self|bjj|ह}}, {{l-self|bjj|क्ष}}, {{l-self|bjj|त्र}}, {{l-self|bjj|ज्ञ}}, {{l-self|bjj|श्र}}, {{l-self|bjj|ज़}}, {{l-self|bjj|ड़}}, {{l-self|bjj|ढ़}}, {{l-self|bjj|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Mathews John, Bezily P. Varghese|title=[https://www.sil.org/system/files/reapdata/14/08/88/140888458996511652997295155804641103350/JLSR2021_012.pdf The Kannauji-speaking People of Uttar Pradesh: A Sociolinguistic Profile]|year=2021|publisher=SIL International|isbn=9788173420610|location=Dallas, Texas|series=Journal of Language Survey Reports 2021-012}} =={{langname|kyv}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Kayort|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|kyv|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|kyv|Chữ cái|tr=ghô}} #Phụ âm thứ 4 trong tiếng Kayort, viết bằng chữ Devanagari. #:{{quote|kyv|जब बलि-भेंडा सतमा मोहर खोलल्कै ते, ऊसब जे स्वर्गमे रहै आधा '''घ'''ण्टाके लिए शान्त भ्यागेलै।|tr=Jab bali-bheṃḍā satamā mohar kholalkai te, ūsab je svargame rahai ādhā '''gha'''ṇṭāke lie śānta bhyāgelai.|Khi Chiên Con mở ấn thứ bảy, trên trời yên-lặng chừng nửa giờ. ([[s:Khải huyền/8#8:1|Khải huyền 8:1]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kayort'') [[अ#Tiếng_Kayort|अ]], [[आ#Tiếng_Kayort|आ]], [[इ#Tiếng_Kayort|इ]], [[ई#Tiếng_Kayort|ई]], [[उ#Tiếng_Kayort|उ]], [[ऊ#Tiếng_Kayort|ऊ]], [[ए#Tiếng_Kayort|ए]], [[ऐ#Tiếng_Kayort|ऐ]], [[ओ#Tiếng_Kayort|ओ]], [[औ#Tiếng_Kayort|औ]], [[क#Tiếng_Kayort|क]], [[ख#Tiếng_Kayort|ख]], [[ग#Tiếng_Kayort|ग]], [[घ#Tiếng_Kayort|घ]], [[ङ#Tiếng_Kayort|ङ]], [[ङ़#Tiếng_Kayort|ङ़]] ([[ङ्ह#Tiếng_Kayort|ङ्ह]]), [[च#Tiếng_Kayort|च]], [[छ#Tiếng_Kayort|छ]], [[ज#Tiếng_Kayort|ज]], [[झ#Tiếng_Kayort|झ]], [[ट#Tiếng_Kayort|ट]], [[ठ#Tiếng_Kayort|ठ]], [[ड#Tiếng_Kayort|ड]], [[ढ#Tiếng_Kayort|ढ]], [[त#Tiếng_Kayort|त]], [[थ#Tiếng_Kayort|थ]], [[द#Tiếng_Kayort|द]], [[ध#Tiếng_Kayort|ध]], [[न#Tiếng_Kayort|न]], [[ऩ#Tiếng_Kayort|ऩ]] ([[न्ह#Tiếng_Kayort|न्ह]]), [[प#Tiếng_Kayort|प]], [[फ#Tiếng_Kayort|फ]], [[ब#Tiếng_Kayort|ब]], [[भ#Tiếng_Kayort|भ]], [[म#Tiếng_Kayort|म]], [[म़#Tiếng_Kayort|म़]] ([[म्ह#Tiếng_Kayort|म्ह]]), [[य#Tiếng_Kayort|य]], [[र#Tiếng_Kayort|र]], [[ऱ#Tiếng_Kayort|ऱ]] ([[ह#Tiếng_Kayort|ह]]), [[ल#Tiếng_Kayort|ल]], [[ल़#Tiếng_Kayort|ल़]] ([[ल्ह#Tiếng_Kayort|ल्ह]]), [[व#Tiếng_Kayort|व]], [[श#Tiếng_Kayort|श]], [[ष#Tiếng_Kayort|ष]], [[स#Tiếng_Kayort|स]], [[ह#Tiếng_Kayort|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|kyv|author=Beyond Translation|work=केवट नया कारार|year=2025|entryurl=https://www.bible.com/bible/3514/REV.8.KYVNT|entry=प्रकाश 8}} =={{langname|klr}}== ==={{ĐM|pron}}=== *{{IPA4|klr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|klr|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Khaling. #:{{ux|klr|'''घ'''म्‌‍सिना़|tr='''gha'''m̐sinā|[[uốn]] [[cong]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Khaling|list={{l-self|klr|अ}}, {{l-self|klr|अ़}}, {{l-self|klr|आ}}, {{l-self|klr|इ}}, {{l-self|klr|उ}}, {{l-self|klr|उ़}}, {{l-self|klr|ऊ}}, {{l-self|klr|ए}}, {{l-self|klr|ओ}}, {{l-self|klr|ओ़}}, {{l-self|klr|अः}}, {{l-self|klr|क}}, {{l-self|klr|ख}}, {{l-self|klr|ग}}, {{l-self|klr|घ}}, {{l-self|klr|ङ}}, {{l-self|klr|च}}, {{l-self|klr|छ}}, {{l-self|klr|ज}}, {{l-self|klr|झ}}, {{l-self|klr|त}}, {{l-self|klr|थ}}, {{l-self|klr|द}}, {{l-self|klr|ध}}, {{l-self|klr|न}}, {{l-self|klr|प}}, {{l-self|klr|फ}}, {{l-self|klr|ब}}, {{l-self|klr|भ}}, {{l-self|klr|म}}, {{l-self|klr|य}}, {{l-self|klr|र}}, {{l-self|klr|ल}}, {{l-self|klr|व}}, {{l-self|klr|स}}, {{l-self|klr|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Ingrid Toba & Sueyoshi Toba|work=Khaling - Nepali - English Dictionary|year=2016|publisher=SIL International|entryurl=https://www.webonary.org/khaling/en/browse/browse-khaling/?key=klr-NP&letter=%E0%A4%98|entry=घ}} *{{Chú thích web|klr|author=Ekta Books|work=[https://media.ipsapps.org/klr/osa/bible/#/text Khaling Bible 1.10]|year=2011|entry=१ शमूएल 1}} =={{langname|kgj}}== ==={{ĐM|pron}}=== *{{IPA4|kgj|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kgj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Gamale, viết bằng chữ Devanagari. #:{{ux|kgj|'''घ'''री|tr='''gha'''ri|[[chuối]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Gamale|list={{l-self|kgj|अ}}, {{l-self|kgj|आ}}, {{l-self|kgj|इ}}, {{l-self|kgj|ई}}, {{l-self|kgj|उ}}, {{l-self|kgj|ऊ}}, {{l-self|kgj|ए}}, {{l-self|kgj|ओ}}, {{l-self|kgj|इ़}}, {{l-self|kgj|ए़}}, {{l-self|kgj|अः}}, {{l-self|kgj|अॱ}}, {{l-self|kgj|अँ}}, {{l-self|kgj|क}}, {{l-self|kgj|ख}}, {{l-self|kgj|ग}}, {{l-self|kgj|घ}}, {{l-self|kgj|ङ}}, {{l-self|kgj|च}}, {{l-self|kgj|छ}}, {{l-self|kgj|ज}}, {{l-self|kgj|ज़}}, {{l-self|kgj|झ}}, {{l-self|kgj|झ़}}, {{l-self|kgj|ट}}, {{l-self|kgj|ठ}}, {{l-self|kgj|त}}, {{l-self|kgj|थ}}, {{l-self|kgj|द}}, {{l-self|kgj|ध}}, {{l-self|kgj|न}}, {{l-self|kgj|न्ह}}, {{l-self|kgj|प}}, {{l-self|kgj|फ}}, {{l-self|kgj|ब}}, {{l-self|kgj|भ}}, {{l-self|kgj|म}}, {{l-self|kgj|म्ह}}, {{l-self|kgj|य}}, {{l-self|kgj|र}}, {{l-self|kgj|ल}}, {{l-self|kgj|ह्ल}}, {{l-self|kgj|व}}, {{l-self|kgj|ह्व}}, {{l-self|kgj|व़}}, {{l-self|kgj|ह्व़}}, {{l-self|kgj|श}}, {{l-self|kgj|ष}}, {{l-self|kgj|स}}, {{l-self|kgj|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Christopher P. Wilde|title=[https://openresearch-repository.anu.edu.au/server/api/core/bitstreams/bb22e879-0e06-4b5c-865b-b0c3ab3ad748/content Gamale kham phonology revisited, with Devanagari-based orthography and lexicon]|year=2016|publisher=Payap Unversity|page=152}} *{{Chú thích web|kgj|author=Manna Harvest|work=[https://media.ipsapps.org/kgj/osa/bible/#/text Gamal Kham Bible]|year=2019|entry=मटि १}} =={{langname|kif}}== ==={{ĐM|pron}}=== *{{IPA4|kif|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kif|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Parbate Đông, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Parbate Đông|list={{l-self|kif|अ}}, {{l-self|kif|आ}}, {{l-self|kif|इ}}, {{l-self|kif|ई}}, {{l-self|kif|उ}}, {{l-self|kif|ऊ}}, {{l-self|kif|ए}}, {{l-self|kif|ओ}}, {{l-self|kif|इ़}}, {{l-self|kif|ए़}}, {{l-self|kif|अः}}, {{l-self|kif|अॱ}}, {{l-self|kif|अँ}}, {{l-self|kif|क}}, {{l-self|kif|ख}}, {{l-self|kif|ग}}, {{l-self|kif|घ}}, {{l-self|kif|ङ}}, {{l-self|kif|च}}, {{l-self|kif|छ}}, {{l-self|kif|ज}}, {{l-self|kif|ज़}}, {{l-self|kif|झ}}, {{l-self|kif|झ़}}, {{l-self|kif|ट}}, {{l-self|kif|ठ}}, {{l-self|kif|त}}, {{l-self|kif|थ}}, {{l-self|kif|द}}, {{l-self|kif|ध}}, {{l-self|kif|न}}, {{l-self|kif|न्ह}}, {{l-self|kif|प}}, {{l-self|kif|फ}}, {{l-self|kif|ब}}, {{l-self|kif|भ}}, {{l-self|kif|म}}, {{l-self|kif|म्ह}}, {{l-self|kif|य}}, {{l-self|kif|र}}, {{l-self|kif|ल}}, {{l-self|kif|ह्ल}}, {{l-self|kif|व}}, {{l-self|kif|ह्व}}, {{l-self|kif|व़}}, {{l-self|kif|ह्व़}}, {{l-self|kif|श}}, {{l-self|kif|ष}}, {{l-self|kif|स}}, {{l-self|kif|ह}}}} =={{langname|kjl}}== ==={{ĐM|pron}}=== *{{IPA4|kjl|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kjl|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Parbate Tây, viết bằng chữ Devanagari. #:{{quote|kjl|येसु ननी पुलुस्‍द ओबाज़्‍याक ‘येसुलाई सैतानए '''घ'''जाँचिउक’ लिद परमेस्‍वरए छैंव उपुरूसए तोबो साइँसुइँव पोङ लाँक्‍यो।|tr=Yesu nanī pulusda obāzyāk ‘Yesulāī saitānae '''gha'''jā̃ciuk’ lid Paramesvare chaĩv upurūsae tobo sā̃suī̃v poṅ lā̃kyo.|Bấy giờ, Đức Thánh-Linh đưa Đức Chúa Jêsus đến nơi đồng-vắng, đặng chịu ma-quỉ cám-dỗ. ([[s:Ma-thi-ơ/4#4:1|Ma-thi-ơ 4:1]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Parbate Tây|list={{l-self|kjl|अ}}, {{l-self|kjl|आ}}, {{l-self|kjl|इ}}, {{l-self|kjl|ई}}, {{l-self|kjl|उ}}, {{l-self|kjl|ऊ}}, {{l-self|kjl|ए}}, {{l-self|kjl|ओ}}, {{l-self|kjl|इ़}}, {{l-self|kjl|ए़}}, {{l-self|kjl|अः}}, {{l-self|kjl|अॱ}}, {{l-self|kjl|अँ}}, {{l-self|kjl|क}}, {{l-self|kjl|ख}}, {{l-self|kjl|ग}}, {{l-self|kjl|घ}}, {{l-self|kjl|ङ}}, {{l-self|kjl|च}}, {{l-self|kjl|छ}}, {{l-self|kjl|ज}}, {{l-self|kjl|ज़}}, {{l-self|kjl|झ}}, {{l-self|kjl|झ़}}, {{l-self|kjl|ट}}, {{l-self|kjl|ठ}}, {{l-self|kjl|त}}, {{l-self|kjl|थ}}, {{l-self|kjl|द}}, {{l-self|kjl|ध}}, {{l-self|kjl|न}}, {{l-self|kjl|न्ह}}, {{l-self|kjl|प}}, {{l-self|kjl|फ}}, {{l-self|kjl|ब}}, {{l-self|kjl|भ}}, {{l-self|kjl|म}}, {{l-self|kjl|म्ह}}, {{l-self|kjl|य}}, {{l-self|kjl|र}}, {{l-self|kjl|ल}}, {{l-self|kjl|ह्ल}}, {{l-self|kjl|व}}, {{l-self|kjl|ह्व}}, {{l-self|kjl|व़}}, {{l-self|kjl|ह्व़}}, {{l-self|kjl|श}}, {{l-self|kjl|ष}}, {{l-self|kjl|स}}, {{l-self|kjl|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=David E. Watters|title=[https://www.sil.org/system/files/reapdata/87/99/38/87993827156821364547273905654085575544/Kham_dictionary.pdf A dictionary of Kham: Taka dialect (a Tibeto-Burman language of Nepal)]|publisher=SIL International|year=2004|location=Nepal}} *{{Chú thích web|kjl|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/2495/MAT.4.NKHAM|entry=मत्ती 4|work=साःरो बाचा|year=2015}} =={{langname|kip}}== ==={{ĐM|pron}}=== *{{IPA4|kip|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kip|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Sheshi, viết bằng chữ Devanagari. #:{{quote|kip|नकाल आन्हाए नोक्करयाङै ईका सोगलै रांरङौ ओटन नकाङ भ्याईज दुखी ताइवाङ। नकाङै हिनस्यु रा:साहूजन ईका स्वाट्टै '''घ'''टना रापानस्यौ।|tr=Nakāla ānhāe nokkarayāṅai īkā sogalai rāṃraṅau oṭana nakāṅ bhyāij dukhi tāivāṅ. Nakāṅai hinsyu rā:sāhūjana īkā svāṭṭai '''gha'''ṭanā rāpānasyaü.|Các bạn thấy vậy, buồn lắm, đến thuật lại cùng chủ mình mọi đều đã xảy ra. ([[s:Ma-thi-ơ/18#18:31|Ma-thi-ơ 18:31]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Sheshi|list={{l-self|kip|अ}}, {{l-self|kip|आ}}, {{l-self|kip|इ}}, {{l-self|kip|ई}}, {{l-self|kip|उ}}, {{l-self|kip|ऊ}}, {{l-self|kip|ए}}, {{l-self|kip|ओ}}, {{l-self|kip|इ़}}, {{l-self|kip|ए़}}, {{l-self|kip|अः}}, {{l-self|kip|अॱ}}, {{l-self|kip|अँ}}, {{l-self|kip|क}}, {{l-self|kip|ख}}, {{l-self|kip|ग}}, {{l-self|kip|घ}}, {{l-self|kip|ङ}}, {{l-self|kip|च}}, {{l-self|kip|छ}}, {{l-self|kip|ज}}, {{l-self|kip|ज़}}, {{l-self|kip|झ}}, {{l-self|kip|झ़}}, {{l-self|kip|ट}}, {{l-self|kip|ठ}}, {{l-self|kip|त}}, {{l-self|kip|थ}}, {{l-self|kip|द}}, {{l-self|kip|ध}}, {{l-self|kip|न}}, {{l-self|kip|न्ह}}, {{l-self|kip|प}}, {{l-self|kip|फ}}, {{l-self|kip|ब}}, {{l-self|kip|भ}}, {{l-self|kip|म}}, {{l-self|kip|म्ह}}, {{l-self|kip|य}}, {{l-self|kip|र}}, {{l-self|kip|ल}}, {{l-self|kip|ह्ल}}, {{l-self|kip|व}}, {{l-self|kip|ह्व}}, {{l-self|kip|व़}}, {{l-self|kip|ह्व़}}, {{l-self|kip|श}}, {{l-self|kip|ष}}, {{l-self|kip|स}}, {{l-self|kip|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kip|author=The Word for the World South Asia|entryurl=https://www.bible.com/bible/4468/MAT.18.NTSKM25|entry=मत्ती 18|work=छार बाचाला नियाम|year=2025}} =={{langname|khr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Kharia|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Kharia|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|khr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|khr|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong bảng chữ cái Devanagari tiếng Kharia. #:{{ux|khr|[[घल#Tiếng_Kharia|'''घ'''ल]]|tr='''ghô'''l|[[mười]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kharia|list={{l-self|khr|अ}}, {{l-self|khr|आ}}, {{l-self|khr|इ}}, {{l-self|khr|ई}}, {{l-self|khr|उ}}, {{l-self|khr|ऊ}}, {{l-self|khr|ए}}, {{l-self|khr|ऐ}}, {{l-self|khr|ओ}}, {{l-self|khr|औ}}, {{l-self|khr|क}}, {{l-self|khr|ख}}, {{l-self|khr|ग}}, {{l-self|khr|घ}}, {{l-self|khr|ङ}}, {{l-self|khr|च}}, {{l-self|khr|छ}}, {{l-self|khr|ज}}, {{l-self|khr|झ}}, {{l-self|khr|ञ}}, {{l-self|khr|ट}}, {{l-self|khr|ठ}}, {{l-self|khr|ड}}, {{l-self|khr|ढ}}, {{l-self|khr|ण}}, {{l-self|khr|त}}, {{l-self|khr|थ}}, {{l-self|khr|द}}, {{l-self|khr|ध}}, {{l-self|khr|न}}, {{l-self|khr|प}}, {{l-self|khr|फ}}, {{l-self|khr|ब}}, {{l-self|khr|भ}}, {{l-self|khr|म}}, {{l-self|khr|य}}, {{l-self|khr|र}}, {{l-self|khr|ल}}, {{l-self|khr|श}}, {{l-self|khr|ष}}, {{l-self|khr|स}}, {{l-self|khr|ह}}, {{l-self|khr|ड़}}, {{l-self|khr|ढ़}}}} =={{langname|kfb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Kolami|ఘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|kfb|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kfb|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kolami, viết bằng chữ Devanagari. ===={{ĐM|see}}==== *{{letters|lang=kfb|sc=Deva|qual=Chữ Devanagari tiếng Kolami|अ|आ|इ|ई|उ|ऊ|ऋ|ॠ|ऌ|ॡ|ए|ऐ|ओ|औ|क|ख|ग|घ|ङ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|ण|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|श|ष|स|ह|ळ}} ==={{ĐM|ref}}=== *{{Chú thích web|kfb|author=Malcolm and Uma Johnson|work=Bible.is|year=2005|entry=मात्ताक लेय्‍पुळ ओव्‍वोल गोट्टी 1|entryurl=https://live.bible.is/bible/KFBNTA/MAT/1}} =={{langname|kok}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kannada | [[ಘ#Tiếng_Konkan|ಘ]] |- ! Malayalam | [[ഘ#Tiếng_Konkan|ഘ]] |- ! Ả Rập | [[گھ#Tiếng_Konkan|گھ]] |- ! Latinh | [[Gh#Tiếng_Konkan|Gh]] [[gh#Tiếng_Konkan|gh]] |- ! Brahmi | [[𑀖#Tiếng_Konkan|𑀖]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kok|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|kok|Chữ cái}} #Phụ âm thứ 4 trong tiếng Konkan, viết bằng chữ Devanagari. #:{{ux|kok|'''घ'''ट|[[chật]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Konkan|list={{l-self|kok|अ}}, {{l-self|kok|आ}}, {{l-self|kok|इ}}, {{l-self|kok|ई}}, {{l-self|kok|उ}}, {{l-self|kok|ऊ}}, {{l-self|kok|ॠ}}, {{l-self|kok|ऌ}}, {{l-self|kok|ए}}, {{l-self|kok|ॲ}}, {{l-self|kok|ऐ}}, {{l-self|kok|ओ}}, {{l-self|kok|ऑ}}, {{l-self|kok|औ}}, {{l-self|kok|अं }}, {{l-self|kok|अः}}, {{l-self|kok|क}}, {{l-self|kok|ख}}, {{l-self|kok|ग}}, {{l-self|kok|घ}}, {{l-self|kok|ङ}}, {{l-self|kok|च}}, {{l-self|kok|छ}}, {{l-self|kok|ज}}, {{l-self|kok|झ}}, {{l-self|kok|ञ}}, {{l-self|kok|ट}}, {{l-self|kok|ठ}}, {{l-self|kok|ड}}, {{l-self|kok|ढ}}, {{l-self|kok|ण}}, {{l-self|kok|त}}, {{l-self|kok|थ}}, {{l-self|kok|द}}, {{l-self|kok|ध}}, {{l-self|kok|न}}, {{l-self|kok|प}}, {{l-self|kok|फ}}, {{l-self|kok|ब}}, {{l-self|kok|भ}}, {{l-self|kok|म}}, {{l-self|kok|य}}, {{l-self|kok|र}}, {{l-self|kok|ऱ}}, {{l-self|kok|ल}}, {{l-self|kok|व}}, {{l-self|kok|ष}}, {{l-self|kok|श}}, {{l-self|kok|स}}, {{l-self|kok|ह}}, {{l-self|kok|ळ}}, {{l-self|kok|क्ष}}, {{l-self|kok|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Angelus Francis Xavier Maffei|title=Konkani-English Dictionary|year=1990|page=112|pageurl=https://archive.org/details/konkanienglishdi0000ange/page/112|location=New Delhi - Madras|publisher=Asian Educational Services}} =={{langname|kfq}}== ==={{ĐM|pron}}=== *{{IPA4|kfq|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kfq|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Korku, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Korku|list={{l-self|kfq|अ}}, {{l-self|kfq|आ}}, {{l-self|kfq|इ}}, {{l-self|kfq|ई}}, {{l-self|kfq|उ}}, {{l-self|kfq|ऊ}}, {{l-self|kfq|ए}}, {{l-self|kfq|ऐ}}, {{l-self|kfq|ओ}}, {{l-self|kfq|ऑ}}, {{l-self|kfq|अं}}, {{l-self|kfq|अः}}, {{l-self|kfq|अँ}}, {{l-self|kfq|क}}, {{l-self|kfq|ख}}, {{l-self|kfq|ग}}, {{l-self|kfq|घ}}, {{l-self|kfq|ङ}}, {{l-self|kfq|च}}, {{l-self|kfq|छ}}, {{l-self|kfq|ज}}, {{l-self|kfq|झ}}, {{l-self|kfq|ञ}}, {{l-self|kfq|ट}}, {{l-self|kfq|ठ}}, {{l-self|kfq|ड}}, {{l-self|kfq|ढ}}, {{l-self|kfq|ण}}, {{l-self|kfq|त}}, {{l-self|kfq|थ}}, {{l-self|kfq|द}}, {{l-self|kfq|ध}}, {{l-self|kfq|न}}, {{l-self|kfq|प}}, {{l-self|kfq|फ}}, {{l-self|kfq|ब}}, {{l-self|kfq|भ}}, {{l-self|kfq|म}}, {{l-self|kfq|य}}, {{l-self|kfq|र}}, {{l-self|kfq|ल}}, {{l-self|kfq|श}}, {{l-self|kfq|स}}, {{l-self|kfq|ह}}, {{l-self|kfq|ड़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Wichmann, Søren & Brown, Cecil H. & Holman, Eric W.|title=The ASJP Database|year=2024|work=[https://asjp.clld.org/languages/KORKU Wordlist Korku]}} =={{langname|kyw}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Kudmal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Kudmal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kyw|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|kyw|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kudmal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kudmal|list={{l-self|kyw|अ}}, {{l-self|kyw|आ}}, {{l-self|kyw|इ}}, {{l-self|kyw|उ}}, {{l-self|kyw|ए}}, {{l-self|kyw|ओ}}, {{l-self|kyw|क}}, {{l-self|kyw|ख}}, {{l-self|kyw|ग}}, {{l-self|kyw|घ}}, {{l-self|kyw|ङ}}, {{l-self|kyw|च}}, {{l-self|kyw|छ}}, {{l-self|kyw|ज}}, {{l-self|kyw|झ}}, {{l-self|kyw|ञ}}, {{l-self|kyw|ट}}, {{l-self|kyw|ठ}}, {{l-self|kyw|ड}}, {{l-self|kyw|ढ}}, {{l-self|kyw|त}}, {{l-self|kyw|थ}}, {{l-self|kyw|द}}, {{l-self|kyw|ध}}, {{l-self|kyw|न}}, {{l-self|kyw|प}}, {{l-self|kyw|फ}}, {{l-self|kyw|ब}}, {{l-self|kyw|भ}}, {{l-self|kyw|म}}, {{l-self|kyw|य}}, {{l-self|kyw|र}}, {{l-self|kyw|ल}}, {{l-self|kyw|स}}, {{l-self|kyw|ह}}, {{l-self|kyw|ड़}}, {{l-self|kyw|ढ़}}}} =={{langname|kex}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Kukna|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kex|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|kex|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kukna, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kukna|list={{l-self|kex|अ}}, {{l-self|kex|आ}}, {{l-self|kex|इ}}, {{l-self|kex|ई}}, {{l-self|kex|उ}}, {{l-self|kex|ऊ}}, {{l-self|kex|ए}}, {{l-self|kex|ऐ}}, {{l-self|kex|ओ}}, {{l-self|kex|औ}}, {{l-self|kex|अं}}, {{l-self|kex|क}}, {{l-self|kex|ख}}, {{l-self|kex|ग}}, {{l-self|kex|घ}}, {{l-self|kex|ङ}}, {{l-self|kex|च}}, {{l-self|kex|ज}}, {{l-self|kex|ट}}, {{l-self|kex|ठ}}, {{l-self|kex|ड}}, {{l-self|kex|ढ}}, {{l-self|kex|ण}}, {{l-self|kex|त}}, {{l-self|kex|थ}}, {{l-self|kex|द}}, {{l-self|kex|ध}}, {{l-self|kex|न}}, {{l-self|kex|प}}, {{l-self|kex|फ}}, {{l-self|kex|ब}}, {{l-self|kex|भ}}, {{l-self|kex|म}}, {{l-self|kex|य}}, {{l-self|kex|र}}, {{l-self|kex|ल}}, {{l-self|kex|ळ}}, {{l-self|kex|व}}, {{l-self|kex|श}}, {{l-self|kex|स}}, {{l-self|kex|ह}}}} =={{langname|kfx}}== ==={{ĐM|pron}}=== *{{IPA4|kfx|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|kfx|Chữ cái}} #Phụ âm thứ 4 trong tiếng Kullu, viết bằng chữ Devanagari. #:{{quote|kfx|होर पहाड़ होर चटान का यह बोलदे लागे, हामा पेन्दे पड़ होर हामे तेऊरे मुहा जेह सिंहासना पेन्दे वैठदे साहा, होर मेमने रे प्रकोपा का '''घ'''झ़या।|chúng nói với núi và đá lớn rằng: Hãy rơi xuống chận trên chúng ta, đặng tránh khỏi mặt của Đấng ngự trên ngôi, và khỏi cơn giận của Chiên Con! ([[s:Khải huyền/6#6:16|Khải huyền 6:16]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kullu|list={{l-self|kfx|अ}}, {{l-self|kfx|आ}}, {{l-self|kfx|इ}}, {{l-self|kfx|ई}}, {{l-self|kfx|उ}}, {{l-self|kfx|ऊ}}, {{l-self|kfx|ए}}, {{l-self|kfx|ऐ}}, {{l-self|kfx|ओ}}, {{l-self|kfx|औ}}, {{l-self|kfx|अं}}, {{l-self|kfx|अँ}}, {{l-self|kfx|क}}, {{l-self|kfx|ख}}, {{l-self|kfx|ग}}, {{l-self|kfx|घ}}, {{l-self|kfx|गं}}, {{l-self|kfx|च}}, {{l-self|kfx|छ}}, {{l-self|kfx|ज}}, {{l-self|kfx|झ}}, {{l-self|kfx|ञ}}, {{l-self|kfx|ट}}, {{l-self|kfx|ठ}}, {{l-self|kfx|ड}}, {{l-self|kfx|ढ}}, {{l-self|kfx|ण}}, {{l-self|kfx|त}}, {{l-self|kfx|थ}}, {{l-self|kfx|द}}, {{l-self|kfx|ध}}, {{l-self|kfx|न}}, {{l-self|kfx|प}}, {{l-self|kfx|फ}}, {{l-self|kfx|ब}}, {{l-self|kfx|भ}}, {{l-self|kfx|म}}, {{l-self|kfx|य}}, {{l-self|kfx|र}}, {{l-self|kfx|ल}}, {{l-self|kfx|ळ}}, {{l-self|kfx|व}}, {{l-self|kfx|श}}, {{l-self|kfx|ष}}, {{l-self|kfx|स}}, {{l-self|kfx|ह}}, {{l-self|kfx|ड़}}, {{l-self|kfx|च़}}, {{l-self|kfx|छ़}}, {{l-self|kfx|ज़}}, {{l-self|kfx|त्र}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|title=[https://pahari-languages.ru/wp-content/uploads/2023/07/Kullui-Eng-Rus-Dictionary-July2023.pdf Kullui-English-Russian Dictionary]|year=2023|publisher=Pahari languages|page=24}} *{{Chú thích web|kfx|author=Beyond Translation|entryurl=https://www.bible.com/bible/3531/REV.6.ISJNT|entry=प्रकाशितवाक्य 6|work=ईनर सराजी मे नया नियम|year=2025}} =={{langname|kfy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Kumaon|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kfy|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|kfy|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Kumaon. #:{{ux|kfy|'''घ'''रवाव|tr='''gha'''ravāv|[[chồng]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|kfy|author=Beyond Translation|work=सोरियाली नय्या नियम|year=2020|entry=मत्ती 1|entryurl=https://www.bible.com/bible/3246/MAT.1.SORNT}} =={{langname|kru}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Kurukh|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kru|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|kru|Chữ cái}} #Phụ âm thứ 4 trong tiếng Kurukh, viết bằng chữ Devanagari. #:{{quote|kru|ख़ने आ आलस ल'''घ'''लेम आर ही अगू नू चोचस की तंग्‍हय खटियन उठ्‍बाचस की धर्मेस ही महबा नन्‍नुम तंग्‍हय एड़पा तरा केरस।|Tức thì kẻ bại đứng dậy trước mặt chúng, vác giường mình đã nằm, và đi về nhà, ngợi-khen Đức Chúa Trời. ([[s:Lu-ca/5#5:25|Lu-ca 5:25]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kurukh'') [[अ#Tiếng_Kurukh|अ]], [[आ#Tiếng_Kurukh|आ]], [[इ#Tiếng_Kurukh|इ]], [[उ#Tiếng_Kurukh|उ]], [[ऋ#Tiếng_Kurukh|ऋ]], [[ए#Tiếng_Kurukh|ए]], [[ओ#Tiếng_Kurukh|ओ]], [[आ़#Tiếng_Kurukh|आ़]], [[ओ़#Tiếng_Kurukh|ओ़]], [[ॲ#Tiếng_Kurukh|ॲ]], [[क#Tiếng_Kurukh|क]], [[ख#Tiếng_Kurukh|ख]], [[ग#Tiếng_Kurukh|ग]], [[घ#Tiếng_Kurukh|घ]], [[ङ#Tiếng_Kurukh|ङ]], [[च#Tiếng_Kurukh|च]], [[छ#Tiếng_Kurukh|छ]], [[ज#Tiếng_Kurukh|ज]], [[झ#Tiếng_Kurukh|झ]], [[ञ#Tiếng_Kurukh|ञ]], [[ञ़#Tiếng_Kurukh|ञ़]], [[ट#Tiếng_Kurukh|ट]], [[ठ#Tiếng_Kurukh|ठ]], [[ड#Tiếng_Kurukh|ड]], [[ढ#Tiếng_Kurukh|ढ]], [[ण#Tiếng_Kurukh|ण]], [[त#Tiếng_Kurukh|त]], [[थ#Tiếng_Kurukh|थ]], [[द#Tiếng_Kurukh|द]], [[ध#Tiếng_Kurukh|ध]], [[न#Tiếng_Kurukh|न]], [[प#Tiếng_Kurukh|प]], [[फ#Tiếng_Kurukh|फ]], [[ब#Tiếng_Kurukh|ब]], [[भ#Tiếng_Kurukh|भ]], [[म#Tiếng_Kurukh|म]], [[य#Tiếng_Kurukh|य]], [[र#Tiếng_Kurukh|र]], [[ल#Tiếng_Kurukh|ल]], [[व#Tiếng_Kurukh|व]], [[श#Tiếng_Kurukh|श]], [[ष#Tiếng_Kurukh|ष]], [[स#Tiếng_Kurukh|स]], [[ह#Tiếng_Kurukh|ह]], [[क़#Tiếng_Kurukh|क़]], [[ख़#Tiếng_Kurukh|ख़]], [[ग़#Tiếng_Kurukh|ग़]], [[ज़#Tiếng_Kurukh|ज़]], [[ड़#Tiếng_Kurukh|ड़]], [[ढ़#Tiếng_Kurukh|ढ़]], [[फ़#Tiếng_Kurukh|फ़]], [[व़#Tiếng_Kurukh|व़]], [[क्ष#Tiếng_Kurukh|क्ष]], [[त्र#Tiếng_Kurukh|त्र]], [[श्र#Tiếng_Kurukh|श्र]] ==={{ĐM|ref}}=== *{{Chú thích web|editor=Toby Anderson|work=Kurux-Hindi Dictionary|entryurl=https://www.webonary.org/kurux/browse/browse-vernacular-english/?key=kru&letter=%E0%A4%98|entry=घ|year=2019|publisher=SIL International}} *{{Chú thích web|kru|author=Wycliffe Bible Translators, Inc.|work=कुड़ुख़|entryurl=https://www.bible.com/en-GB/bible/4366/LUK.5.KRUX|entry=लुकस 5|year=2024}} =={{langname|lmn}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Telugu | [[ఘ#Tiếng_Lambadi|ఘ]] |- ! Kannada | [[ಘ#Tiếng_Lambadi|ಘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|lmn|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|lmn|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Lambadi, viết bằng chữ Devanagari. #:{{quote|lmn|मारन तार वच्छ मार करार नियम करन, तोन '''घ'''णो बडतो जावस जुं करियुं कन ओनको.|tr=Māran tāra vaccha māra karāra niyama karana, tona '''gha'''ṇo baḍato jāvas juṃ kariyuṃ kana onako.|Ta sẽ lập giao-ước cùng ngươi, làm cho dòng-dõi ngươi thêm nhiều quá-bội. ([[s:Sáng thế Ký/17#17:2|Sáng thế Ký 17:2]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Lambadi|list={{l-self|lmn|अ}}, {{l-self|lmn|आ}}, {{l-self|lmn|इ}}, {{l-self|lmn|ई}}, {{l-self|lmn|उ}}, {{l-self|lmn|ऊ}}, {{l-self|lmn|ऎ}}, {{l-self|lmn|ए}}, {{l-self|lmn|ऒ}}, {{l-self|lmn|ओ}}, {{l-self|lmn|अं}}, {{l-self|lmn|क}}, {{l-self|lmn|ख}}, {{l-self|lmn|ग}}, {{l-self|lmn|घ}}, {{l-self|lmn|ङ}}, {{l-self|lmn|च}}, {{l-self|lmn|छ}}, {{l-self|lmn|ज}}, {{l-self|lmn|झ}}, {{l-self|lmn|ञ}}, {{l-self|lmn|ट}}, {{l-self|lmn|ठ}}, {{l-self|lmn|ड}}, {{l-self|lmn|ढ}}, {{l-self|lmn|ण}}, {{l-self|lmn|त}}, {{l-self|lmn|थ}}, {{l-self|lmn|द}}, {{l-self|lmn|ध}}, {{l-self|lmn|न}}, {{l-self|lmn|प}}, {{l-self|lmn|फ}}, {{l-self|lmn|ब}}, {{l-self|lmn|भ}}, {{l-self|lmn|म}}, {{l-self|lmn|य}}, {{l-self|lmn|र}}, {{l-self|lmn|ल}}, {{l-self|lmn|व}}, {{l-self|lmn|श}}, {{l-self|lmn|ष}}, {{l-self|lmn|स}}, {{l-self|lmn|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kfx|author=Bible Society of India|entryurl=https://www.bible.com/bible/4580/GEN.17.LAMBADI|entry=genesis 17|work=పవిత్తర్ బైబిల్ (బంజారా/లంబాడి/గోర్బోలి)|year=2025}} =={{langname|lhm}}== ==={{ĐM|pron}}=== *{{IPA4|lhm|/ɡʰ/}} ==={{ĐM|letter}}=== {{head|lhm|Chữ cái|tr=gha}} #Chữ Devanagari thể hiện phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Lhomi. #:{{ux|lhm|'''घ'''प्केन्|tr='''gha'''pken|[[trán]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ Devanagari tiếng Lhomi|list={{l-self|lhm|आ}}, {{l-self|lhm|इ}}, {{l-self|lhm|उ}}, {{l-self|lhm|ए}}, {{l-self|lhm|ओ}}, {{l-self|lhm|क}}, {{l-self|lhm|ख}}, {{l-self|lhm|ग}}, {{l-self|lhm|घ}}, {{l-self|lhm|ङ}}, {{l-self|lhm|च}}, {{l-self|lhm|च्‍य}}, {{l-self|lhm|छ}}, {{l-self|lhm|छ्य}}, {{l-self|lhm|ज}}, {{l-self|lhm|ज्‍य}}, {{l-self|lhm|झ}}, {{l-self|lhm|झ्‍य}}, {{l-self|lhm|ट}}, {{l-self|lhm|ठ}}, {{l-self|lhm|ड}}, {{l-self|lhm|ढ}}, {{l-self|lhm|त}}, {{l-self|lhm|थ}}, {{l-self|lhm|द}}, {{l-self|lhm|ध}}, {{l-self|lhm|न}}, {{l-self|lhm|प}}, {{l-self|lhm|फ}}, {{l-self|lhm|ब}}, {{l-self|lhm|भ}}, {{l-self|lhm|म}}, {{l-self|lhm|य}}, {{l-self|lhm|र}}, {{l-self|lhm|ल}}, {{l-self|lhm|व}}, {{l-self|lhm|स}}, {{l-self|lhm|स्‍य}}, {{l-self|lhm|ह}}, {{l-self|lhm|ॱ}}}} ==={{ĐM|n}}=== {{head|lhm|Danh từ|tr=gha}} #[[trán|Trán]]. ==={{ĐM|ref}}=== *{{Chú thích web|publisher=SIL International and NELHOS|work=Lhomi - Nepali - English Dictionary|entryurl=https://www.webonary.org/lhomi/en/browse/browse-vernacular-nepali/?key=lhm&letter=%E0%A4%98|entry=घ|year=2022}} *{{Chú thích web|lhm|author=Wycliffe Bible Translators, Inc.|work=ल्होमी|year=1995|entry=युहन्‍ना 1|entryurl=https://www.bible.com/bible/3674/JHN.1.LHM}} =={{langname|lbm}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Lodha|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|lbm|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|lbm|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Lodha. #:{{quote|lbm|परमेश्वर न ऊ पूरो देश हमरो हाथ म कर दियो हय; येको सिवाय ओको पूरो निवासी हमरो वजह '''घ'''बराय रह्यो हय।|tr=Parameśvara na ū pūro deśa hamaro hātha maṃ kara diyo hay; yeko sivāya oko pūro nivāsī hamaro vajaha '''gha'''barāya rahyo hay.|Quả thật, Đức Giê-hô-va đã phó cả xứ vào tay chúng ta; và lại, hết thảy dân của xứ đều sờn lòng trước mặt chúng ta. ([[s:Giô-suê/2#2:24|Giô-suê 2:24]])}} ==={{ĐM|ref}}=== *{{Chú thích web|lbm|author=The Word for the World International|entryurl=https://www.bible.com/bible/2788/JOS.2.LII25|entry=यहोशू 2|work=Lodhi Bible|year=2025}} =={{langname|loy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Tạng | [[གྷ#Tiếng_Loke|གྷ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|loy|/ɡʰa/}} ==={{ĐM|letter}}=== {{head|loy|Chữ cái|tr=gh}} #Phụ âm thứ 8 trong bảng chữ cái Devanagari tiếng Loke. #:{{ux|loy|'''घी़'''न्‍दा|tr='''ghī'''nda|[[đắt]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Loke'') [[आ#Tiếng_Loke|आ]], [[ई#Tiếng_Loke|ई]], [[उ#Tiếng_Loke|उ]], [[ए#Tiếng_Loke|ए]], [[ओ#Tiếng_Loke|ओ]], [[ओ़#Tiếng_Loke|ओ़]], [[आः#Tiếng_Loke|आः]], [[का#Tiếng_Loke|का]], [[क#Tiếng_Loke|क]], [[खा#Tiếng_Loke|खा]], [[ख#Tiếng_Loke|ख]], [[गा#Tiếng_Loke|गा]], [[ग#Tiếng_Loke|ग]], [[घा#Tiếng_Loke|घा]], [[घ#Tiếng_Loke|घ]], [[ङा#Tiếng_Loke|ङा]], [[ङ#Tiếng_Loke|ङ]], [[ॱङा#Tiếng_Loke|ॱङा]], [[चा#Tiếng_Loke|चा]], [[च#Tiếng_Loke|च]], [[छा#Tiếng_Loke|छा]], [[छ#Tiếng_Loke|छ]], [[जा#Tiếng_Loke|जा]], [[ज#Tiếng_Loke|ज]], [[झा#Tiếng_Loke|झा]], [[झ#Tiếng_Loke|झ]], [[टा#Tiếng_Loke|टा]], [[ट#Tiếng_Loke|ट]], [[ठा#Tiếng_Loke|ठा]], [[ठ#Tiếng_Loke|ठ]], [[डा#Tiếng_Loke|डा]], [[ड#Tiếng_Loke|ड]], [[ढा#Tiếng_Loke|ढा]], [[ढ#Tiếng_Loke|ढ]], [[ता#Tiếng_Loke|ता]], [[त#Tiếng_Loke|त]], [[था#Tiếng_Loke|था]], [[थ#Tiếng_Loke|थ]], [[धा#Tiếng_Loke|धा]], [[ध#Tiếng_Loke|ध]], [[दा#Tiếng_Loke|दा]], [[द#Tiếng_Loke|द]], [[ना#Tiếng_Loke|ना]], [[न#Tiếng_Loke|न]], [[ॱना#Tiếng_Loke|ॱना]], [[पा#Tiếng_Loke|पा]], [[प#Tiếng_Loke|प]], [[फा#Tiếng_Loke|फा]], [[फ#Tiếng_Loke|फ]], [[बा#Tiếng_Loke|बा]], [[ब#Tiếng_Loke|ब]], [[भा#Tiếng_Loke|भा]], [[भ#Tiếng_Loke|भ]], [[मा#Tiếng_Loke|मा]], [[म#Tiếng_Loke|म]], [[ॱमा#Tiếng_Loke|ॱमा]], [[या#Tiếng_Loke|या]], [[य#Tiếng_Loke|य]], [[रा#Tiếng_Loke|रा]], [[र#Tiếng_Loke|र]], [[ॱरा#Tiếng_Loke|ॱरा]], [[ला#Tiếng_Loke|ला]], [[ल#Tiếng_Loke|ल]], [[ॱला#Tiếng_Loke|ॱला]], [[वा#Tiếng_Loke|वा]], [[व#Tiếng_Loke|व]], [[सा#Tiếng_Loke|सा]], [[स#Tiếng_Loke|स]], [[शा#Tiếng_Loke|शा]], [[श#Tiếng_Loke|श]], [[हा#Tiếng_Loke|हा]], [[ह#Tiếng_Loke|ह]], [[ॱहा#Tiếng_Loke|ॱहा]], [[क्षा#Tiếng_Loke|क्षा]], [[ल्‍हा#Tiếng_Loke|ल्‍हा]], [[स्‍या#Tiếng_Loke|स्‍या]], [[श्‍या#Tiếng_Loke|श्‍या]], [[च्‍या#Tiếng_Loke|च्‍या]], [[ज्‍या#Tiếng_Loke|ज्‍या]], [[झ्‍या#Tiếng_Loke|झ्‍या]], [[क्‍या#Tiếng_Loke|क्‍या]], [[ॱ#Tiếng_Loke|ॱ]] ==={{ĐM|ref}}=== *{{Chú thích web|editor=SIL International and HIS Nepal|work=Lhowa - Nepali - English Dictionary|entryurl=https://www.webonary.org/lhowa/en/browse/browse-vernacular-nepali/?key=loy&letter=%E0%A4%98|entry=घ|year=2016}} =={{langname|mag}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Magaha|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mag|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mag|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Magaha, viết bằng chữ Devanagari. #:{{ux|mag|'''घ'''माइव|tr='''gha'''māiva|[[toát]] [[mồ hôi]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magaha|list={{l-self|mag|अ}}, {{l-self|mag|आ}}, {{l-self|mag|इ}}, {{l-self|mag|ई}}, {{l-self|mag|उ}}, {{l-self|mag|ऊ}}, {{l-self|mag|ऎ}}, {{l-self|mag|ए}}, {{l-self|mag|ऐ}}, {{l-self|mag|ऒ}}, {{l-self|mag|ओ}}, {{l-self|mag|औ}}, {{l-self|mag|अँ}}, {{l-self|mag|क}}, {{l-self|mag|ख}}, {{l-self|mag|ग}}, {{l-self|mag|घ}}, {{l-self|mag|ङ}}, {{l-self|mag|च}}, {{l-self|mag|छ}}, {{l-self|mag|ज}}, {{l-self|mag|झ}}, {{l-self|mag|ञ}}, {{l-self|mag|ट}}, {{l-self|mag|ठ}}, {{l-self|mag|ड}}, {{l-self|mag|ड़}}, {{l-self|mag|ढ}}, {{l-self|mag|ण}}, {{l-self|mag|त}}, {{l-self|mag|थ}}, {{l-self|mag|द}}, {{l-self|mag|ध}}, {{l-self|mag|न}}, {{l-self|mag|प}}, {{l-self|mag|फ}}, {{l-self|mag|ब}}, {{l-self|mag|भ}}, {{l-self|mag|म}}, {{l-self|mag|य}}, {{l-self|mag|र}}, {{l-self|mag|ल}}, {{l-self|mag|व}}, {{l-self|mag|श}}, {{l-self|mag|ष}}, {{l-self|mag|स}}, {{l-self|mag|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|mag|author=Asian Sahyogi Sanstha India Gorakhpur, (U.P.)|work=Bible.is|year=2014|entry=मत्ती 27|entryurl=https://live.bible.is/bible/MAGSSI/MAT/27}} =={{langname|mgp}}== ==={{ĐM|pron}}=== *{{IPA|mgp|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mgp|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Magar Đông. #:{{quote|mgp|'''घ'''मण्‍डौ कुरा जाटार परमेश्‍वरौ अपमान जाट्‍की होसे पशुकी बयालीस महिनासम्‍म अधिकार जाट्‍की अनुमति याहा।|tr='''Gha'''maṇḍau kurā jāṭāra parameśvarau apamāna jāṭkī hose paśukī bayālīsa mahīnāsamma adhikāra jāṭkī anumati yāhā.|Nó được ban cho cái miệng nói những lời kiêu-ngạo phạm-thượng; và nó lại được quyền làm việc trong bốn mươi hai tháng. ([[s:Khải huyền/13#13:5|Khải huyền 13:5]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magar Đông|list={{l-self|mgp|अ}}, {{l-self|mgp|आ}}, {{l-self|mgp|ई}}, {{l-self|mgp|ऊ}}, {{l-self|mgp|ए}}, {{l-self|mgp|ओ}}, {{l-self|mgp|अँ}}, {{l-self|mgp|अः}}, {{l-self|mgp|अ᳝}}, {{l-self|mgp|आ᳝}}, {{l-self|mgp|ई़}}, {{l-self|mgp|ऊ़}}, {{l-self|mgp|ए़}}, {{l-self|mgp|ओ᳝}}, {{l-self|mgp|अ᳝:}}, {{l-self|mgp|क}}, {{l-self|mgp|ख}}, {{l-self|mgp|ग}}, {{l-self|mgp|ङ}}, {{l-self|mgp|ङ़}}, {{l-self|mgp|च}}, {{l-self|mgp|छ}}, {{l-self|mgp|ज}}, {{l-self|mgp|झ}}, {{l-self|mgp|ट}}, {{l-self|mgp|ठ}}, {{l-self|mgp|ड}}, {{l-self|mgp|ढ}}, {{l-self|mgp|न}}, {{l-self|mgp|ऩ}}, {{l-self|mgp|त}}, {{l-self|mgp|थ}}, {{l-self|mgp|द}}, {{l-self|mgp|ध}}, {{l-self|mgp|प}}, {{l-self|mgp|फ}}, {{l-self|mgp|ब}}, {{l-self|mgp|भ}}, {{l-self|mgp|म}}, {{l-self|mgp|म़}}, {{l-self|mgp|य}}, {{l-self|mgp|र}}, {{l-self|mgp|ल}}, {{l-self|mgp|व}}, {{l-self|mgp|य़}}, {{l-self|mgp|ऱ}}, {{l-self|mgp|ल़}}, {{l-self|mgp|व़}}, {{l-self|mgp|स}}, {{l-self|mgp|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|mgp|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/3288/REV.13.EMGP|entry=प्रकाश 13|work=पुर्वीय मगर|year=2022}} =={{langname|mrd}}== ==={{ĐM|pron}}=== *{{IPA4|mrd|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mrd|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Magar Tây. #:{{ux|mrd|'''घ'''रुवा|tr='''gha'''ruvā|[[nhện]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magar Tây|list={{l-self|mrd|अ}}, {{l-self|mrd|आ}}, {{l-self|mrd|ई}}, {{l-self|mrd|ऊ}}, {{l-self|mrd|ए}}, {{l-self|mrd|ओ}}, {{l-self|mrd|अँ}}, {{l-self|mrd|अः}}, {{l-self|mrd|अ᳝}}, {{l-self|mrd|आ᳝}}, {{l-self|mrd|ई़}}, {{l-self|mrd|ऊ़}}, {{l-self|mrd|ए़}}, {{l-self|mrd|ओ᳝}}, {{l-self|mrd|अ᳝:}}, {{l-self|mrd|क}}, {{l-self|mrd|ख}}, {{l-self|mrd|ग}}, {{l-self|mrd|ङ}}, {{l-self|mrd|ङ़}}, {{l-self|mrd|च}}, {{l-self|mrd|छ}}, {{l-self|mrd|ज}}, {{l-self|mrd|झ}}, {{l-self|mrd|ट}}, {{l-self|mrd|ठ}}, {{l-self|mrd|ड}}, {{l-self|mrd|ढ}}, {{l-self|mrd|न}}, {{l-self|mrd|ऩ}}, {{l-self|mrd|त}}, {{l-self|mrd|थ}}, {{l-self|mrd|द}}, {{l-self|mrd|ध}}, {{l-self|mrd|प}}, {{l-self|mrd|फ}}, {{l-self|mrd|ब}}, {{l-self|mrd|भ}}, {{l-self|mrd|म}}, {{l-self|mrd|म़}}, {{l-self|mrd|य}}, {{l-self|mrd|र}}, {{l-self|mrd|ल}}, {{l-self|mrd|व}}, {{l-self|mrd|य़}}, {{l-self|mrd|ऱ}}, {{l-self|mrd|ल़}}, {{l-self|mrd|व़}}, {{l-self|mrd|स}}, {{l-self|mrd|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Andrea Csepe (eds.)|work=Magar – Nepali – English - Hungarian Dictionary|entryurl=https://www.webonary.org/wmagar/en/browse/browse-vernacular-nepali/?key=mrd-Deva&letter=%E0%A4%98|entry=घ|year=2018|publisher=SIL International}} *{{Chú thích web|mrd|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/4406/LUK.3.WMGR|entry=लूका 3|work=पश्‍चिमी मगर ढुट|year=2024}} =={{langname|mjx}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ol Chiki | [[ᱜᱷ#Tiếng_Mahal|ᱜᱷ]] |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Mahal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Mahal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mjx|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|mjx|Chữ cái}} #Phụ âm thứ 4 trong tiếng Mahal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Mahal|list={{l-self|mjx|अ}}, {{l-self|mjx|आ}}, {{l-self|mjx|इ}}, {{l-self|mjx|ई}}, {{l-self|mjx|उ}}, {{l-self|mjx|ऊ}}, {{l-self|mjx|ए}}, {{l-self|mjx|ऐ}}, {{l-self|mjx|ओ}}, {{l-self|mjx|औ}}, {{l-self|mjx|अँ}}, {{l-self|mjx|इँ}}, {{l-self|mjx|उँ}}, {{l-self|mjx|ऐं}}, {{l-self|mjx|औं}}, {{l-self|mjx|क}}, {{l-self|mjx|ख}}, {{l-self|mjx|ग}}, {{l-self|mjx|घ}}, {{l-self|mjx|ङ}}, {{l-self|mjx|च}}, {{l-self|mjx|छ}}, {{l-self|mjx|ज}}, {{l-self|mjx|झ}}, {{l-self|mjx|ञ}}, {{l-self|mjx|ट}}, {{l-self|mjx|ठ}}, {{l-self|mjx|ड}}, {{l-self|mjx|ड़}}, {{l-self|mjx|ढ}}, {{l-self|mjx|ण}}, {{l-self|mjx|त}}, {{l-self|mjx|थ}}, {{l-self|mjx|द}}, {{l-self|mjx|ध}}, {{l-self|mjx|न}}, {{l-self|mjx|प}}, {{l-self|mjx|फ}}, {{l-self|mjx|ब}}, {{l-self|mjx|भ}}, {{l-self|mjx|म}}, {{l-self|mjx|य}}, {{l-self|mjx|र}}, {{l-self|mjx|ल}}, {{l-self|mjx|स}}, {{l-self|mjx|ह}}, {{l-self|mjx|व}}}} =={{langname|mai}}== {{wp|mai:}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Tirhuta | [[𑒒#Tiếng_Maithil|𑒒]] |- ! Kaithi | [[𑂐#Tiếng_Maithil|𑂐]] |- ! Newa | [[𑐑#Tiếng_Maithil|𑐑]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mai|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mai|Chữ cái}} #Phụ âm thứ 4 trong tiếng Maithil, viết bằng chữ Devanagari. #:{{ux|mai|[[w:mai:घण्टा|'''घ'''ण्टा]]|[[giờ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Maithil|list={{l-self|mai|अ}}, {{l-self|mai|आ}}, {{l-self|mai|इ}}, {{l-self|mai|ई}}, {{l-self|mai|उ}}, {{l-self|mai|ऊ}}, {{l-self|mai|ऋ}}, {{l-self|mai|ऎ}}, {{l-self|mai|ए}}, {{l-self|mai|ꣾ}}, {{l-self|mai|ऐ}}, {{l-self|mai|ऒ}}, {{l-self|mai|ओ}}, {{l-self|mai|ॵ}}, {{l-self|mai|औ}}, {{l-self|mai|ॳ}}, {{l-self|mai|ॴ}}, {{l-self|mai|इऺ}}, {{l-self|mai|उ॑}}, {{l-self|mai|अऽ}}, {{l-self|mai|अ꣱}}, {{l-self|mai|ऍ}}, {{l-self|mai|अः}}, {{l-self|mai|आँ}}, {{l-self|mai|य़}}, {{l-self|mai|व़}}, {{l-self|mai|य़ॆ}}, {{l-self|mai|व़ॊ}}, {{l-self|mai|क}}, {{l-self|mai|ख}}, {{l-self|mai|ग}}, {{l-self|mai|घ}}, {{l-self|mai|ङ}}, {{l-self|mai|च}}, {{l-self|mai|छ}}, {{l-self|mai|ज}}, {{l-self|mai|झ}}, {{l-self|mai|ञ}}, {{l-self|mai|ट}}, {{l-self|mai|ठ}}, {{l-self|mai|ड}}, {{l-self|mai|ढ}}, {{l-self|mai|ण}}, {{l-self|mai|त}}, {{l-self|mai|थ}}, {{l-self|mai|द}}, {{l-self|mai|ध}}, {{l-self|mai|न}}, {{l-self|mai|प}}, {{l-self|mai|फ}}, {{l-self|mai|ब}}, {{l-self|mai|भ}}, {{l-self|mai|म}}, {{l-self|mai|य}}, {{l-self|mai|र}}, {{l-self|mai|ल}}, {{l-self|mai|व}}, {{l-self|mai|श}}, {{l-self|mai|ष}}, {{l-self|mai|स}}, {{l-self|mai|ह}}, {{l-self|mai|ड़}}, {{l-self|mai|ढ़}}, {{l-self|mai|ख़}}, {{l-self|mai|ज़}}, {{l-self|mai|झ़}}, {{l-self|mai|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Pt. Govind Jha|title=Kalyani Kosh : Maithili-English Dictionary|year=1999|page=179|pageurl=https://archive.org/details/dli.language.2334/page/178}} =={{langname|mup}}== ==={{ĐM|pron}}=== *{{IPA|mup|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mup|Chữ cái}} #Phụ âm thứ 4 trong tiếng Malvi, viết bằng chữ Devanagari. #:{{ux|mup|'''घु'''मट|[[vòm]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Malvi'') [[अ#Tiếng_Malvi|अ]], [[आ#Tiếng_Malvi|आ]], [[इ#Tiếng_Malvi|इ]], [[ई#Tiếng_Malvi|ई]], [[उ#Tiếng_Malvi|उ]], [[ऊ#Tiếng_Malvi|ऊ]], [[ए#Tiếng_Malvi|ए]], [[ओ#Tiếng_Malvi|ओ]], [[क#Tiếng_Malvi|क]], [[ख#Tiếng_Malvi|ख]], [[ग#Tiếng_Malvi|ग]], [[घ#Tiếng_Malvi|घ]], [[च#Tiếng_Malvi|च]], [[छ#Tiếng_Malvi|छ]], [[ज#Tiếng_Malvi|ज]], [[झ#Tiếng_Malvi|झ]], [[ट#Tiếng_Malvi|ट]], [[ठ#Tiếng_Malvi|ठ]], [[ड#Tiếng_Malvi|ड]], [[ढ#Tiếng_Malvi|ढ]], [[त#Tiếng_Malvi|त]], [[थ#Tiếng_Malvi|थ]], [[द#Tiếng_Malvi|द]], [[ध#Tiếng_Malvi|ध]], [[न#Tiếng_Malvi|न]], [[प#Tiếng_Malvi|प]], [[फ#Tiếng_Malvi|फ]], [[ब#Tiếng_Malvi|ब]], [[भ#Tiếng_Malvi|भ]], [[म#Tiếng_Malvi|म]], [[य#Tiếng_Malvi|य]], [[र#Tiếng_Malvi|र]], [[ल#Tiếng_Malvi|ल]], [[व#Tiếng_Malvi|व]], [[स#Tiếng_Malvi|स]], [[ह#Tiếng_Malvi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|en|editor=Binoy Koshy|work=Malvi – English Dictionary|year=2018|publisher=SIL International®|entry=घ|entryurl=https://www.webonary.org/malvi/browse/browse-vernacular/?key=mup&letter=%E0%A4%98}} *{{Chú thích web|mup|author=Malvoday & New Life Literature|work=Parem Sandeso|year=2012|entry=मत्ती 1|entryurl=https://live.bible.is/bible/MUPNLL/MAT/1}} =={{langname|mjl}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Mandi|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA|mjl|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mjl|Chữ cái}} #Phụ âm thứ 4 trong tiếng Mandi, viết bằng chữ Devanagari. #:{{quote|mjl|तुस्सा मन्झा ले एह्ड़ा कुणहां, जेह्ड़ा फिकर करी किन्हें आपणी जिन्दगी री उम्रा मन्झ एक '''घ'''ड़ी भी बढ़ाई सक्हा?|Vả lại, có ai trong vòng các ngươi lo-lắng mà làm cho đời mình được dài thêm một khắc không? ([[s:Ma-thi-ơ/6#6:27|Ma-thi-ơ 6:27]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Mandi'') [[अ#Tiếng_Mandi|अ]], [[आ#Tiếng_Mandi|आ]], [[इ#Tiếng_Mandi|इ]], [[ई#Tiếng_Mandi|ई]], [[उ#Tiếng_Mandi|उ]], [[ऊ#Tiếng_Mandi|ऊ]], [[ए#Tiếng_Mandi|ए]], [[ऐ#Tiếng_Mandi|ऐ]], [[ओ#Tiếng_Mandi|ओ]], [[औ#Tiếng_Mandi|औ]], [[अँ#Tiếng_Mandi|अँ]], [[अं#Tiếng_Mandi|अं]], [[क#Tiếng_Mandi|क]], [[ख#Tiếng_Mandi|ख]], [[ग#Tiếng_Mandi|ग]], [[घ#Tiếng_Mandi|घ]], [[च#Tiếng_Mandi|च]], [[छ#Tiếng_Mandi|छ]], [[ज#Tiếng_Mandi|ज]], [[झ#Tiếng_Mandi|झ]], [[ट#Tiếng_Mandi|ट]], [[ठ#Tiếng_Mandi|ठ]], [[ड#Tiếng_Mandi|ड]], [[ड़#Tiếng_Mandi|ड़]], [[ढ#Tiếng_Mandi|ढ]], [[ण#Tiếng_Mandi|ण]], [[त#Tiếng_Mandi|त]], [[थ#Tiếng_Mandi|थ]], [[द#Tiếng_Mandi|द]], [[ध#Tiếng_Mandi|ध]], [[न#Tiếng_Mandi|न]], [[प#Tiếng_Mandi|प]], [[फ#Tiếng_Mandi|फ]], [[ब#Tiếng_Mandi|ब]], [[भ#Tiếng_Mandi|भ]], [[म#Tiếng_Mandi|म]], [[य#Tiếng_Mandi|य]], [[र#Tiếng_Mandi|र]], [[ल#Tiếng_Mandi|ल]], [[व#Tiếng_Mandi|व]], [[ल़#Tiếng_Mandi|ल़]], [[स#Tiếng_Mandi|स]], [[ह#Tiếng_Mandi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|mjl|author=The Love Fellowship|work=मंडयाली नंऊँआं नियम|year=2025|entry=मत्ती 6|entryurl=https://www.bible.com/bible/2769/MAT.6.MJLNT}} =={{langname|mr}}== {{wp|mr:घ्}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Modi | [[𑘑#Tiếng_Marathi|𑘑]] |- |} ==={{ĐM|pron}}=== *{{mar-IPA}} *{{audio|mr|LL-Q1571 (mar)-नंदिनी रानडे-घ.wav}} ==={{ĐM|letter}}=== {{head|mr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Marathi, viết bằng chữ Devanagari. #:{{ux|mr|[[w:mr:घोरपड|'''घो'''रपड]]|[[kỳ đà]] [[vân]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Balbodh Devanagari|list={{l-self|mr|अ}}, {{l-self|mr|आ}}, {{l-self|mr|इ}}, {{l-self|mr|ई}}, {{l-self|mr|उ}}, {{l-self|mr|ऊ}}, {{l-self|mr|ए}}, {{l-self|mr|ऐ}}, {{l-self|mr|ओ}}, {{l-self|mr|औ}}, {{l-self|mr|अं}}, {{l-self|mr|अः}}, {{l-self|mr|ॲ}}, {{l-self|mr|ऑ }}, {{l-self|mr|क}}, {{l-self|mr|ख}}, {{l-self|mr|ग}}, {{l-self|mr|घ}}, {{l-self|mr|ङ}}, {{l-self|mr|च}}, {{l-self|mr|छ}}, {{l-self|mr|ज}}, {{l-self|mr|झ}}, {{l-self|mr|ञ}}, {{l-self|mr|ट}}, {{l-self|mr|ठ}}, {{l-self|mr|ड}}, {{l-self|mr|ढ}}, {{l-self|mr|ण}}, {{l-self|mr|त}}, {{l-self|mr|थ}}, {{l-self|mr|द}}, {{l-self|mr|ध}}, {{l-self|mr|न}}, {{l-self|mr|प}}, {{l-self|mr|फ}}, {{l-self|mr|ब}}, {{l-self|mr|भ}}, {{l-self|mr|म}}, {{l-self|mr|य}}, {{l-self|mr|र}}, {{l-self|mr|ल}}, {{l-self|mr|व}}, {{l-self|mr|श}}, {{l-self|mr|ष}}, {{l-self|mr|स}}, {{l-self|mr|ह}}, {{l-self|mr|ळ}}, {{l-self|mr|क्ष}}, {{l-self|mr|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=James Thomas Molesworth & Baba Padmanji|title=A compendium of Molesworth's Marathi and English dictionary|year=1863|location=Bombay|publisher=Bombay Education Society|page=138|pageurl=https://archive.org/details/compendiumofmole00mole/page/138}} =={{langname|omr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Modi | [[𑘑#Tiếng_Marathi_cổ|𑘑]] |- |} ==={{ĐM|pron}}=== *{{IPA4|omr|/ɡʰ/}} ==={{ĐM|letter}}=== {{head|omr|Chữ cái|tr=śa}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Marathi cổ. #:{{ux|omr|'''घ'''टणे|[[xảy ra]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Tulpule, Shankar Gopal & Anne Feldhaus|title=A dictionary of old Marathi|year=1999|location=Mumbai|publisher=Popular Prakashan|page=214|pageurl=https://dsal.uchicago.edu/cgi-bin/app/tulpule_query.py?page=214#gsc.tab=0}} =={{langname|mwr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Ả Rập | [[ﮔﻬ#Tiếng_Marwar|ﮔﻬ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mwr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|mwr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Marwar, viết bằng chữ Devanagari. #:{{ux|mwr|घघ्घू|[[cú]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Marwar|list={{l-self|mwr|अ}}, {{l-self|mwr|आ}}, {{l-self|mwr|इ}}, {{l-self|mwr|ई}}, {{l-self|mwr|उ}}, {{l-self|mwr|ऊ}}, {{l-self|mwr|अे}}/{{l-self|mwr|ए}}, {{l-self|mwr|अै}}/{{l-self|mwr|ऐ}}, {{l-self|mwr|ओ}}, {{l-self|mwr|औ}}, {{l-self|mwr|अं}}, {{l-self|mwr|क}}, {{l-self|mwr|ख}}, {{l-self|mwr|ग}}, {{l-self|mwr|घ}}, {{l-self|mwr|गं}}, {{l-self|mwr|च}}, {{l-self|mwr|छ}}, {{l-self|mwr|ज}}, {{l-self|mwr|ज़}}, {{l-self|mwr|ॼ़}}, {{l-self|mwr|झ}}, {{l-self|mwr|ट}}, {{l-self|mwr|ठ}}, {{l-self|mwr|ॸ}}/{{l-self|mwr|ड}}, {{l-self|mwr|ड}}/{{l-self|mwr|ड़}}, {{l-self|mwr|ॾ}}, {{l-self|mwr|ॾ़}}, {{l-self|mwr|ढ}}, {{l-self|mwr|ढ़}}, {{l-self|mwr|ण}}, {{l-self|mwr|ण्ह}}/{{l-self|mwr|ण़}}, {{l-self|mwr|थ}}, {{l-self|mwr|द}}, {{l-self|mwr|ध}}, {{l-self|mwr|न}}, {{l-self|mwr|न्ह}}/{{l-self|mwr|ऩ}}, {{l-self|mwr|प}}, {{l-self|mwr|फ}}, {{l-self|mwr|ब}}, {{l-self|mwr|ॿ}}, {{l-self|mwr|ॿ़}}, {{l-self|mwr|भ}}, {{l-self|mwr|म}}, {{l-self|mwr|म्ह}}/{{l-self|mwr|म़}}, {{l-self|mwr|य}}, {{l-self|mwr|र}}, {{l-self|mwr|ल}}, {{l-self|mwr|ल़}}, {{l-self|mwr|ळ}}, {{l-self|mwr|ळ्ह}}/{{l-self|mwr|ऴ}}, {{l-self|mwr|व}}, {{l-self|mwr|श}}, {{l-self|mwr|ष}}, {{l-self|mwr|स}}, {{l-self|mwr|ह}}, {{l-self|mwr|श्र}}}} ==={{ĐM|ref}}=== *{{Chú thích web|editor=Vijay Raj Dewra, Radhe Vaishnav, Suchita Surana, Umaid Singh Inda, Naresh Khatri, Pooja Rathore, Praveen Arya, Kapil Dev, Nisha Chawriya, Ritu Sisodya, Rajendra Suthar, Vinod Soni|work=Marwari – English Dictionary|year=2019|publisher=SIL International. Project LEARN|entryurl=https://www.webonary.org/marwari/browse/browse-vernacular-english/?key=rwr-IN&letter=%E0%A4%98|entry=घ}} =={{langname|unx}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Munda|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Munda|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|unx|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|unx|Chữ cái}} #Phụ âm thứ 5 trong tiếng Munda, viết bằng chữ Devanagari. #:{{quote|unx|हासुतान्कके बुगिकपे, गएःकान्कके जीउबिरिद्कपे, नागे'''घा'''अकान्कके फार्चिकपे आडः बंगाकके हार् अडङ्ग्कपे । आपे बेगार् गनङ्ग्ते नाम्काद्तेयाः बेगार् गनङ्ग्ते एमाकपे ।|Hãy chữa lành kẻ đau, khiến sống kẻ chết, làm sạch kẻ phung, và trừ các quỉ. Các ngươi đã được lãnh không thì hãy cho không. ([[s:Ma-thi-ơ/10#10:8|Ma-thi-ơ 10:8]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Munda'') [[अ#Tiếng_Munda|अ]], [[आ#Tiếng_Munda|आ]], [[इ#Tiếng_Munda|इ]], [[ई#Tiếng_Munda|ई]], [[उ#Tiếng_Munda|उ]], [[ऊ#Tiếng_Munda|ऊ]], [[ए#Tiếng_Munda|ए]], [[ऐ#Tiếng_Munda|ऐ]], [[ओ#Tiếng_Munda|ओ]], [[औ#Tiếng_Munda|औ]], [[क#Tiếng_Munda|क]], [[क्ष#Tiếng_Munda|क्ष]], [[ख#Tiếng_Munda|ख]], [[ग#Tiếng_Munda|ग]], [[घ#Tiếng_Munda|घ]], [[ङ#Tiếng_Munda|ङ]], [[च#Tiếng_Munda|च]], [[छ#Tiếng_Munda|छ]], [[ज#Tiếng_Munda|ज]], [[झ#Tiếng_Munda|झ]], [[ञ#Tiếng_Munda|ञ]], [[ट#Tiếng_Munda|ट]], [[ठ#Tiếng_Munda|ठ]], [[ड#Tiếng_Munda|ड]], [[ड़#Tiếng_Munda|ड़]], [[ढ#Tiếng_Munda|ढ]], [[ण#Tiếng_Munda|ण]], [[त#Tiếng_Munda|त]], [[थ#Tiếng_Munda|थ]], [[द#Tiếng_Munda|द]], [[ध#Tiếng_Munda|ध]], [[न#Tiếng_Munda|न]], [[प#Tiếng_Munda|प]], [[फ#Tiếng_Munda|फ]], [[ब#Tiếng_Munda|ब]], [[भ#Tiếng_Munda|भ]], [[म#Tiếng_Munda|म]], [[य#Tiếng_Munda|य]], [[र#Tiếng_Munda|र]], [[ल#Tiếng_Munda|ल]], [[ळ#Tiếng_Munda|ळ]], [[व#Tiếng_Munda|व]], [[श#Tiếng_Munda|श]], [[ष#Tiếng_Munda|ष]], [[स#Tiếng_Munda|स]], [[ह#Tiếng_Munda|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|unx|author=The Word for the World International|entryurl=https://www.bible.com/bible/2792/MAT.10.NTRUU20|entry=ମାଥିଉ 10|work=ପାର୍‌ମେଶ୍ୱାର୍‌ଆଃ ଜୀନିଦ୍‌ ବାଚାନ୍‌, ନାୱା ନିୟାମ୍‌|year=2020}} =={{langname|unr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Mundari|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Mundari|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|unr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|unr|Chữ cái}} #Phụ âm thứ 5 trong tiếng Mundari, viết bằng chữ Devanagari. #:{{quote|unr|इनीः सेताः नाअ '''घा'''ड़िक हबाअःताइकेन्‌रे पिट्‌ पिड़िरे एटाः हड़ाक सामागि तिङ्गुआकान्‌ नेल्‌केद्कआए ।|Ước-chừng giờ thứ ba, người chủ lại ra, thấy những kẻ khác rảnh việc đứng trong chợ, ([[s:Ma-thi-ơ/20#20:3|Ma-thi-ơ 20:3]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Mundari'') [[अ#Tiếng_Mundari|अ]], [[आ#Tiếng_Mundari|आ]], [[इ#Tiếng_Mundari|इ]], [[ई#Tiếng_Mundari|ई]], [[उ#Tiếng_Mundari|उ]], [[ऊ#Tiếng_Mundari|ऊ]], [[ए#Tiếng_Mundari|ए]], [[ऐ#Tiếng_Mundari|ऐ]], [[ओ#Tiếng_Mundari|ओ]], [[औ#Tiếng_Mundari|औ]], [[क#Tiếng_Mundari|क]], [[क्ष#Tiếng_Mundari|क्ष]], [[ख#Tiếng_Mundari|ख]], [[ग#Tiếng_Mundari|ग]], [[घ#Tiếng_Mundari|घ]], [[ङ#Tiếng_Mundari|ङ]], [[च#Tiếng_Mundari|च]], [[छ#Tiếng_Mundari|छ]], [[ज#Tiếng_Mundari|ज]], [[झ#Tiếng_Mundari|झ]], [[ञ#Tiếng_Mundari|ञ]], [[ट#Tiếng_Mundari|ट]], [[ठ#Tiếng_Mundari|ठ]], [[ड#Tiếng_Mundari|ड]], [[ड़#Tiếng_Mundari|ड़]], [[ढ#Tiếng_Mundari|ढ]], [[ण#Tiếng_Mundari|ण]], [[त#Tiếng_Mundari|त]], [[थ#Tiếng_Mundari|थ]], [[द#Tiếng_Mundari|द]], [[ध#Tiếng_Mundari|ध]], [[न#Tiếng_Mundari|न]], [[प#Tiếng_Mundari|प]], [[फ#Tiếng_Mundari|फ]], [[ब#Tiếng_Mundari|ब]], [[भ#Tiếng_Mundari|भ]], [[म#Tiếng_Mundari|म]], [[य#Tiếng_Mundari|य]], [[र#Tiếng_Mundari|र]], [[ल#Tiếng_Mundari|ल]], [[ळ#Tiếng_Mundari|ळ]], [[व#Tiếng_Mundari|व]], [[श#Tiếng_Mundari|श]], [[ष#Tiếng_Mundari|ष]], [[स#Tiếng_Mundari|स]], [[ह#Tiếng_Mundari|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Enike Amina Wani, Martin Lomu Goke & Tim Stirtz|work=Mundari-English Dictionary|year=2013|publisher=SIL International|entryurl=https://www.webonary.org/mundari/overview/copyright/beli-english/?letter=G&key=qaa-Latg-SD-x-mqu|entry=G}} *{{Chú thích web|unr|author=Munda Believers Assembly|entryurl=https://live.bible.is/bible/unrwfw/mat/20|entry=ମାଥିଉ 20|work=Mundari - 2018 The Word for the World International|year=2020}} =={{langname|fmu}}== ==={{ĐM|pron}}=== *{{IPA4|fmu|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|fmu|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Muria Viễn Tây, viết bằng chữ Devanagari. #:{{quote|fmu|असके अव आसक अगा आता सबोय पोल्लोंग चेला लोकुरकुन वेहिलाय हन्दुंग असके केपवालोर सयनिकनिगाडाल हुचुलोर सयनिक लोकुरक सहेरतिगा हन्जुन आतांग पुरा '''घ'''टनातुन मुक्याल याजक लोकुरकुन वेहतुरक।|tr=Aske ava āsaka agā ātā saboy polloṅga celā lokurakuna vehilāya handuṅga aske kepavālora sayanikanigāḍāla huculora sayanika lokuraka saheratigā hanjuna ātāṅga purā '''gha'''ṭanātuna mukhyāla yājaka lokurakuna vehaturaka.|Trong khi hai người đờn-bà đó đi đường, thì có mấy tên lính canh vào thành thuật lại cho các thầy tế-lễ cả biết mọi việc đã xảy đến. ([[s:Ma-thi-ơ/28#28:11|Ma-thi-ơ 28:11]])}} ===={{ĐM|see}}==== *{{letters|lang=fmu|sc=Deva|qual=Chữ Devanagari tiếng Muria Viễn Tây|अ|आ|इ|उ|ऊ|ए|ओ|क|ख|ग|घ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|ण|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|ळ|व|श|ष|स|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|fmu|author=Wycliffe Bible Translators, Inc.|work=Muria, Far Western|year=2026|entry=मत्ति 28|entryurl=https://www.bible.com/bible/3169/MAT.28.FMU}} =={{langname|nit}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Nam_Kolami|ఘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA|nit|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|nit|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Nam Kolami. #:{{quote|nit|अदुङि अने मन्दि ज्ञानं तोसेट जेलुङ् सेचनण्डर्। औरति '''घ'''नुलु करुवुत् अन्सार्। सामानयुलु ईरडुत् ओल्सनण्डर्।|tr=Aduṅi ane mandi jñānaṃ toseṭ jelūṅ sechanṇḍar. Aurati '''gha'''nulu karuvut ansār. Sāmānayulu īraḍut olsanṇḍar.|Vậy nên, dân ta phải bắt làm phu-tù, vì không hiểu-biết; kẻ sang nó chịu đói, chúng dân nó chịu khát. ([[s:Ê-sai/5#5:13|Ê-sai 5:13]])}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|editor=Uma Johnson & G.V. Ramesh|title=[https://www.sil.org/system/files/reapdata/54/89/25/54892522721528321878586909573271687411/KOLAMIdictionary.pdf కొలవ గొట్టి అర్థ ఆధారిత వర్గీకరణ విభాగము & తెలుగు, ఆంగ్లం, హిందీ అర్థాలతో బహు భాషా నిఘంటువు]|year=2010|publisher=SIL International|location=India|page=35}} *{{Chú thích web|nit|author=The Word for the World International|entryurl=https://www.bible.com/bible/3817/ISA.5.KP25|entry=యెషయ 5|work=Kolami Bible|year=2025}} =={{langname|ne}}== {{wp|ne:}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Newa | [[𑐑#Tiếng_Nepal|𑐑]] |- |} ==={{ĐM|pron}}=== *{{ne-IPA}} ==={{ĐM|letter}}=== {{head|ne|Chữ cái}} #[[phụ âm|Phụ âm]] thứ 4 trong tiếng Nepal, viết bằng chữ Devanagari. #:{{ux|ne|[[एघार#Tiếng_Nepal|ए'''घा'''र]]|[[mười một]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Nepal|list={{l-self|ne|अ}}, {{l-self|ne|आ}}, {{l-self|ne|इ}}, {{l-self|ne|ई}}, {{l-self|ne|उ}}, {{l-self|ne|ऊ}}, {{l-self|ne|ऋ}}, {{l-self|ne|ऌ}}, {{l-self|ne|ए}}, {{l-self|ne|ऐ}}, {{l-self|ne|ओ}}, {{l-self|ne|औ}}, {{l-self|ne|अं}}, {{l-self|ne|अः}}, {{l-self|ne|अँ}}, {{l-self|ne|क}}, {{l-self|ne|ख}}, {{l-self|ne|ग}}, {{l-self|ne|घ}}, {{l-self|ne|ङ}}, {{l-self|ne|च}}, {{l-self|ne|छ}}, {{l-self|ne|ज}}, {{l-self|ne|झ}}, {{l-self|ne|ञ}}, {{l-self|ne|ट}}, {{l-self|ne|ठ}}, {{l-self|ne|ड}}, {{l-self|ne|ढ}}, {{l-self|ne|ण}}, {{l-self|ne|त}}, {{l-self|ne|थ}}, {{l-self|ne|द}}, {{l-self|ne|ध}}, {{l-self|ne|न}}, {{l-self|ne|प}}, {{l-self|ne|फ}}, {{l-self|ne|ब}}, {{l-self|ne|भ}}, {{l-self|ne|म}}, {{l-self|ne|य}}, {{l-self|ne|र}}, {{l-self|ne|ल}}, {{l-self|ne|व}}, {{l-self|ne|श}}, {{l-self|ne|ष}}, {{l-self|ne|स}}, {{l-self|ne|ह}}, {{l-self|ne|क्ष}}, {{l-self|ne|त्र}}, {{l-self|ne|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Ralph Lilley Turner|title=A Comparative And Etymological Dictionary Of The Nepali Language|year=1931|location=London|page=152|pageurl=https://archive.org/details/in.ernet.dli.2015.146785/page/n171}} =={{langname|new}}== {{wikipedia|lang=new}} {| class="floatright wikitable" style="text-align:center;" |- ! Newa | [[𑐑#Tiếng_Newa|𑐑]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|new|/ɡʱə/}} ==={{ĐM|letter}}=== {{head|new|Chữ cái}} #Phụ âm thứ 4 trong tiếng Newa, viết bằng chữ Devanagari. #:{{ux|new|[[w:new:घतम्पुर|'''घ'''तम्पुर]]|[[w:Ghatampur|Ghatampur]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Newa|list={{l-self|new|अ|tr=-}}, {{l-self|new|अः|tr=-}}, {{l-self|new|आ|tr=-}}, {{l-self|new|आः|tr=-}}, {{l-self|new|इ|tr=-}}, {{l-self|new|ई|tr=-}}, {{l-self|new|उ|tr=-}}, {{l-self|new|ऊ|tr=-}}, {{l-self|new|ऋ|tr=-}}, {{l-self|new|ॠ|tr=-}}, {{l-self|new|ऌ|tr=-}}, {{l-self|new|ॡ|tr=-}}, {{l-self|new|ए|tr=-}}, {{l-self|new|ऐ|tr=-}}, {{l-self|new|ओ|tr=-}}, {{l-self|new|औ|tr=-}}, {{l-self|new|अँ|tr=-}}, {{l-self|new|अं|tr=-}}, {{l-self|new|अय्|tr=-}}, {{l-self|new|आय्|tr=-}}, {{l-self|new|एय्|tr=-}}, {{l-self|new|क|tr=-}}, {{l-self|new|ख|tr=-}}, {{l-self|new|ग|tr=-}}, {{l-self|new|घ|tr=-}}, {{l-self|new|ङ|tr=-}}, {{l-self|new|ङ्ह|tr=-}}, {{l-self|new|च|tr=-}}, {{l-self|new|छ|tr=-}}, {{l-self|new|ज|tr=-}}, {{l-self|new|झ|tr=-}}, {{l-self|new|ञ|tr=-}}, {{l-self|new|ञ्ह|tr=-}}, {{l-self|new|ट|tr=-}}, {{l-self|new|ठ|tr=-}}, {{l-self|new|ड|tr=-}}, {{l-self|new|ढ|tr=-}}, {{l-self|new|ण|tr=-}}, {{l-self|new|ण्ह|tr=-}}, {{l-self|new|त|tr=-}}, {{l-self|new|थ|tr=-}}, {{l-self|new|द|tr=-}}, {{l-self|new|ध|tr=-}}, {{l-self|new|न|tr=-}}, {{l-self|new|न्ह|tr=-}}, {{l-self|new|प|tr=-}}, {{l-self|new|फ|tr=-}}, {{l-self|new|ब|tr=-}}, {{l-self|new|भ|tr=-}}, {{l-self|new|म|tr=-}}, {{l-self|new|म्ह|tr=-}}, {{l-self|new|य|tr=-}}, {{l-self|new|ह्य|tr=-}}, {{l-self|new|र|tr=-}}, {{l-self|new|ह्र|tr=-}}, {{l-self|new|ल|tr=-}}, {{l-self|new|ल्ह|tr=-}}, {{l-self|new|व|tr=-}}, {{l-self|new|व्ह|tr=-}}, {{l-self|new|श|tr=-}}, {{l-self|new|ष|tr=-}}, {{l-self|new|स|tr=-}}, {{l-self|new|ह|tr=-}}, {{l-self|new|क्ष|tr=-}}, {{l-self|new|त्र|tr=-}}, {{l-self|new|ज्ञ|tr=-}}}} =={{langname|bfz}}== ==={{ĐM|pron}}=== *{{IPA4|bfz|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bfz|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pahari Mahasu, viết bằng chữ Devanagari. #:{{quote|bfz|कऊँकि सेयो लोक तलवारी रे सामणे ते, बल्कि नांगी तलवारी सामणे ते ओर ताणे रे धनुष ओर '''घो'''र युद्धो ते नठी रे।|Vì họ trốn gươm, trốn gươm trần, trốn cung giương ra, trốn sự chiến-tranh kinh-khiếp. ([[s:Ê-sai/21#21:15|Ê-sai 21:15]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pahari Mahasu|list={{l-self|bfz|अ|tr=-}}, {{l-self|bfz|आ|tr=-}}, {{l-self|bfz|इ|tr=-}}, {{l-self|bfz|ई|tr=-}}, {{l-self|bfz|उ|tr=-}}, {{l-self|bfz|ऊ|tr=-}}, {{l-self|bfz|ए|tr=-}}, {{l-self|bfz|ऐ|tr=-}}, {{l-self|bfz|ओ|tr=-}}, {{l-self|bfz|औ|tr=-}}, {{l-self|bfz|क|tr=-}}, {{l-self|bfz|ख|tr=-}}, {{l-self|bfz|ग|tr=-}}, {{l-self|bfz|घ|tr=-}}, {{l-self|bfz|च|tr=-}}, {{l-self|bfz|छ|tr=-}}, {{l-self|bfz|ज|tr=-}}, {{l-self|bfz|झ|tr=-}}, {{l-self|bfz|च़|tr=-}}, {{l-self|bfz|छ़|tr=-}}, {{l-self|bfz|ज़|tr=-}}, {{l-self|bfz|झ़|tr=-}}, {{l-self|bfz|ट|tr=-}}, {{l-self|bfz|ठ|tr=-}}, {{l-self|bfz|ड|tr=-}}, {{l-self|bfz|ड़|tr=-}}, {{l-self|bfz|ढ|tr=-}}, {{l-self|bfz|ण|tr=-}}, {{l-self|bfz|त|tr=-}}, {{l-self|bfz|थ|tr=-}}, {{l-self|bfz|द|tr=-}}, {{l-self|bfz|ध|tr=-}}, {{l-self|bfz|न|tr=-}}, {{l-self|bfz|प|tr=-}}, {{l-self|bfz|फ|tr=-}}, {{l-self|bfz|ब|tr=-}}, {{l-self|bfz|भ|tr=-}}, {{l-self|bfz|म|tr=-}}, {{l-self|bfz|म़|tr=-}}, {{l-self|bfz|य|tr=-}}, {{l-self|bfz|र|tr=-}}, {{l-self|bfz|ल|tr=-}}, {{l-self|bfz|ल़|tr=-}}, {{l-self|bfz|व|tr=-}}, {{l-self|bfz|श|tr=-}}, {{l-self|bfz|ष|tr=-}}, {{l-self|bfz|स|tr=-}}, {{l-self|bfz|ह|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|bfz|author=Beyond Translation|work=पवित्र परमेशरो रा वचन बघल्याणी भाषा दे|year=2026|entry=यशायाह 21|entryurl=https://www.bible.com/bible/2957/ISA.21.BGH}} =={{langname|kmj}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Paharia_Kumarbhag|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kmj|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kmj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Paharia Kumarbhag, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Paharia Kumarbhag|list={{l-self|kmj|अ}}, {{l-self|kmj|आ}}, {{l-self|kmj|इ}}, {{l-self|kmj|ई}}, {{l-self|kmj|उ}}, {{l-self|kmj|ऊ}}, {{l-self|kmj|ए}}, {{l-self|kmj|ऐ}}, {{l-self|kmj|ओ}}, {{l-self|kmj|औ}}, {{l-self|kmj|क}}, {{l-self|kmj|क़}}, {{l-self|kmj|ख}}, {{l-self|kmj|ग}}, {{l-self|kmj|ग़}}, {{l-self|kmj|घ}}, {{l-self|kmj|ङ}}, {{l-self|kmj|च}}, {{l-self|kmj|छ}}, {{l-self|kmj|ज}}, {{l-self|kmj|झ}}, {{l-self|kmj|ञ}}, {{l-self|kmj|ट}}, {{l-self|kmj|ठ}}, {{l-self|kmj|ड}}, {{l-self|kmj|ड़}}, {{l-self|kmj|ढ}}, {{l-self|kmj|ण}}, {{l-self|kmj|त}}, {{l-self|kmj|थ}}, {{l-self|kmj|द}}, {{l-self|kmj|द़}}, {{l-self|kmj|ध}}, {{l-self|kmj|न}}, {{l-self|kmj|प}}, {{l-self|kmj|फ}}, {{l-self|kmj|ब}}, {{l-self|kmj|भ}}, {{l-self|kmj|म}}, {{l-self|kmj|य}}, {{l-self|kmj|र}}, {{l-self|kmj|ल}}, {{l-self|kmj|व}}, {{l-self|kmj|श}}, {{l-self|kmj|ष}}, {{l-self|kmj|स}}, {{l-self|kmj|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|title=Dravidian family: Northeastern group (2 lists)|url=https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|publisher=The Global Lexicostatistical Database|year=2011-2016|accessdate=2026-08-23|archiveurl=https://web.archive.org/web/20250124190709/https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|archivedate=2025-01-24}} =={{langname|mjt}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Paharia_Sauria|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mjt|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|mjt|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Paharia Sauria, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Paharia Sauria|list={{l-self|mjt|अ}}, {{l-self|mjt|आ}}, {{l-self|mjt|इ}}, {{l-self|mjt|ई}}, {{l-self|mjt|उ}}, {{l-self|mjt|ऊ}}, {{l-self|mjt|ए}}, {{l-self|mjt|ऐ}}, {{l-self|mjt|ओ}}, {{l-self|mjt|औ}}, {{l-self|mjt|क}}, {{l-self|mjt|क़}}, {{l-self|mjt|ख}}, {{l-self|mjt|ग}}, {{l-self|mjt|ग़}}, {{l-self|mjt|घ}}, {{l-self|mjt|ङ}}, {{l-self|mjt|च}}, {{l-self|mjt|छ}}, {{l-self|mjt|ज}}, {{l-self|mjt|झ}}, {{l-self|mjt|ञ}}, {{l-self|mjt|ट}}, {{l-self|mjt|ठ}}, {{l-self|mjt|ड}}, {{l-self|mjt|ड़}}, {{l-self|mjt|ढ}}, {{l-self|mjt|ण}}, {{l-self|mjt|त}}, {{l-self|mjt|थ}}, {{l-self|mjt|द}}, {{l-self|mjt|द़}}, {{l-self|mjt|ध}}, {{l-self|mjt|न}}, {{l-self|mjt|प}}, {{l-self|mjt|फ}}, {{l-self|mjt|ब}}, {{l-self|mjt|भ}}, {{l-self|mjt|म}}, {{l-self|mjt|य}}, {{l-self|mjt|र}}, {{l-self|mjt|ल}}, {{l-self|mjt|व}}, {{l-self|mjt|श}}, {{l-self|mjt|ष}}, {{l-self|mjt|स}}, {{l-self|mjt|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|title=Dravidian family: Northeastern group (2 lists)|url=https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|publisher=The Global Lexicostatistical Database|year=2011-2016|accessdate=2026-08-23|archiveurl=https://web.archive.org/web/20250124190709/https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|archivedate=2025-01-24}} =={{langname|pi}}== ==={{ĐM|alt sc}}=== {{pi-alt|Latn=gha}} ==={{ĐM|letter}}=== {{head|pi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pali, viết bằng chữ Devanagari. #:{{ux|pi|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pali|list={{l-self|pi|अ}}, {{l-self|pi|आ}}, {{l-self|pi|इ}}, {{l-self|pi|ई}}, {{l-self|pi|उ}}, {{l-self|pi|ऊ}}, {{l-self|pi|ऍ}}, {{l-self|pi|ओ}}, {{l-self|pi|क}}, {{l-self|pi|ख}}, {{l-self|pi|ग}}, {{l-self|pi|घ}}, {{l-self|pi|ङ}}, {{l-self|pi|च}}, {{l-self|pi|छ}}, {{l-self|pi|ज}}, {{l-self|pi|झ}}, {{l-self|pi|ञ}}, {{l-self|pi|ट}}, {{l-self|pi|ठ}}, {{l-self|pi|ड}}, {{l-self|pi|ढ}}, {{l-self|pi|ण}}, {{l-self|pi|त}}, {{l-self|pi|थ}}, {{l-self|pi|द}}, {{l-self|pi|ध}}, {{l-self|pi|न}}, {{l-self|pi|प}}, {{l-self|pi|फ}}, {{l-self|pi|ब}}, {{l-self|pi|भ}}, {{l-self|pi|म}}, {{l-self|pi|य}}, {{l-self|pi|र}}, {{l-self|pi|ल}}, {{l-self|pi|व}}, {{l-self|pi|स}}, {{l-self|pi|ह}}, {{l-self|pi|ळ}}}} =={{langname|pcf}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Malayalam | [[ഘ#Tiếng_Paliyan|ഘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|pcf|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|pcf|Chữ cái}} #Chữ cái Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Paliyan. #:{{quote|pcf|आहयी वात ह़मळीन हेरोद राजा अने यरुसलेम ह़ेर मे रेण्‌या आखा माणहु '''घ'''बराय ज्‌या।|tr=Āhayī vāta haṃḷīna Heroda rājā ane Yarusaleṃ hēra me reṇyā ākhā māṇahu '''gha'''barāya jyā.|Nghe tin ấy, vua Hê-rốt cùng cả thành Giê-ru-sa-lem đều bối-rối. ([[s:Ma-thi-ơ/2#2:3|Ma-thi-ơ 2:3]])}} ==={{ĐM|ref}}=== *{{Chú thích web|pcf|author=Yisu Por Bherho Karanya Palya Mandli, Rajpur, Barwani, (MP)|entryurl=https://live.bible.is/bible/pcfwfw/mat/2|entry=मत्‌ती नी लीखली ईसु मसी नी खुस-खबर 2|work=The Word for the World International|year=2020}} =={{langname|tdb}}== ==={{ĐM|pron}}=== *{{IPA4|tdb|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|new|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Panchpargania. #:{{quote|tdb|आइज हामरे अजीब '''घ'''टना के देइख आही।|tr=Āija hāmare ajība '''gha'''ṭanā ke deikha āhī.|Hôm nay chúng ta đã thấy những việc dị-thường. ([[s:Lu-ca/5#5:26|Lu-ca 5:26]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Panchpargania|list={{l-self|tdb|अ}}, {{l-self|tdb|आ}}, {{l-self|tdb|इ}}, {{l-self|tdb|उ}}, {{l-self|tdb|ए}}, {{l-self|tdb|ओ}}, {{l-self|tdb|क}}, {{l-self|tdb|ख}}, {{l-self|tdb|ग}}, {{l-self|tdb|घ}}, {{l-self|tdb|ङ}}, {{l-self|tdb|च}}, {{l-self|tdb|छ}}, {{l-self|tdb|ज}}, {{l-self|tdb|झ}}, {{l-self|tdb|ञ}}, {{l-self|tdb|ट}}, {{l-self|tdb|ठ}}, {{l-self|tdb|ड}}, {{l-self|tdb|ढ}}, {{l-self|tdb|त}}, {{l-self|tdb|थ}}, {{l-self|tdb|द}}, {{l-self|tdb|ध}}, {{l-self|tdb|न}}, {{l-self|tdb|प}}, {{l-self|tdb|फ}}, {{l-self|tdb|ब}}, {{l-self|tdb|भ}}, {{l-self|tdb|म}}, {{l-self|tdb|य}}, {{l-self|tdb|र}}, {{l-self|tdb|ल}}, {{l-self|tdb|स}}, {{l-self|tdb|ह}}, {{l-self|tdb|ड़}}, {{l-self|tdb|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|tdb|entryurl=https://media.ipsapps.org/tdb/osa/01-LUK-005.html|entry=लूका 5|work=Panchpargarnia Bible|year=2025}} =={{langname|pgg}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Pangwala|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|pgg|[ɡʱɑ]}} ==={{ĐM|letter}}=== {{head|pgg|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pangwala, viết bằng chữ Devanagari. #:{{ux|pgg|उं'''घ'''|[[ngủ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pangwala|list={{l-self|pgg|अ}}, {{l-self|pgg|आ}}, {{l-self|pgg|इ}}, {{l-self|pgg|ई}}, {{l-self|pgg|उ}}, {{l-self|pgg|ऊ}}, {{l-self|pgg|ए}}, {{l-self|pgg|ऐ}}, {{l-self|pgg|ओ}}, {{l-self|pgg|औ}}, {{l-self|pgg|ऑ}}, {{l-self|pgg|अं}}, {{l-self|pgg|अः}}, {{l-self|pgg|क}}, {{l-self|pgg|ख}}, {{l-self|pgg|ग}}, {{l-self|pgg|घ}}, {{l-self|pgg|ङ}}, {{l-self|pgg|च}}, {{l-self|pgg|छ}}, {{l-self|pgg|ज}}, {{l-self|pgg|झ}}, {{l-self|pgg|ञ}}, {{l-self|pgg|ट}}, {{l-self|pgg|ठ}}, {{l-self|pgg|ड}}, {{l-self|pgg|ढ}}, {{l-self|pgg|ण}}, {{l-self|pgg|त}}, {{l-self|pgg|थ}}, {{l-self|pgg|द}}, {{l-self|pgg|ध}}, {{l-self|pgg|न}}, {{l-self|pgg|प}}, {{l-self|pgg|फ}}, {{l-self|pgg|ब}}, {{l-self|pgg|भ}}, {{l-self|pgg|म}}, {{l-self|pgg|य}}, {{l-self|pgg|र}}, {{l-self|pgg|ल}}, {{l-self|pgg|व}}, {{l-self|pgg|श}}, {{l-self|pgg|ष}}, {{l-self|pgg|स}}, {{l-self|pgg|ह}}, {{l-self|pgg|ड़}}, {{l-self|pgg|ळ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|pgg|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/3555/ACT.5.PGG|entry=प्रतिनिधि 5|work=Walangi|year=2023}} =={{langname|sa}}== {{wp|sa:घ्}} ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{san-IPA}} ==={{ĐM|letter}}=== {{head|sa|Chữ cái}} #[[phụ âm|Phụ âm]] thứ 4 trong tiếng Phạn, viết bằng chữ Devanagari. #:{{ux|sa|[[w:sa:घनत्वम् (भौतविज्ञानम्)|'''घ'''नत्वम्]]|[[khối lượng]] [[riêng]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ Devanagari tiếng Phạn|list={{l-self|sa|अ}}, {{l-self|sa|आ}}, {{l-self|sa|इ}}, {{l-self|sa|ई}}, {{l-self|sa|उ}}, {{l-self|sa|ऊ}}, {{l-self|sa|ऋ}}, {{l-self|sa|ॠ}}, {{l-self|sa|ऌ}}, {{l-self|sa|ॡ}}, {{l-self|sa|ए}}, {{l-self|sa|ऐ}}, {{l-self|sa|ओ}}, {{l-self|sa|औ}}, {{l-self|sa|क}}, {{l-self|sa|ख}}, {{l-self|sa|ग}}, {{l-self|sa|घ}}, {{l-self|sa|ङ}}, {{l-self|sa|च}}, {{l-self|sa|छ}}, {{l-self|sa|ज}}, {{l-self|sa|झ}}, {{l-self|sa|ञ}}, {{l-self|sa|ट}}, {{l-self|sa|ठ}}, {{l-self|sa|ड}}, {{l-self|sa|ढ}}, {{l-self|sa|ण}}, {{l-self|sa|त}}, {{l-self|sa|थ}}, {{l-self|sa|द}}, {{l-self|sa|ध}}, {{l-self|sa|न}}, {{l-self|sa|प}}, {{l-self|sa|फ}}, {{l-self|sa|ब}}, {{l-self|sa|भ}}, {{l-self|sa|म}}, {{l-self|sa|य}}, {{l-self|sa|र}}, {{l-self|sa|ल}}, {{l-self|sa|व}}, {{l-self|sa|श}}, {{l-self|sa|ष}}, {{l-self|sa|स}}, {{l-self|sa|ह}}, {{l-self|sa|ळ}}}} ==={{ĐM|etym}}=== Từ {{der|sa|ine-pro|*gʰe|*gʰo}}. Đồng nguyên với {{cog|grc|γε}}. Xem thêm {{m|sa|ह}}, {{m|sa|हि|tr=hí}}. ===={{ĐM|part}}==== {{head|sa|Trợ từ}} # [[ít nhất|Ít nhiều]], [[chắc chắn]], [[chỉ]] # [[thực sự|Thực sự]], [[thực tế]] # [[nhát|Nhất]] [[là]], [[đặc biệt]] [[là]] ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Monier Williams|page=375|pageurl=https://www.sanskrit-lexicon.uni-koeln.de/scans/MWScan/2014/web/webtc/servepdf.php?page=375|title=A Sanskrit–English Dictionary|year=1899|location=Oxford|publisher=At the Clarendon Press}} =={{langname|pra}}== ==={{ĐM|pron}}=== *{{IPA4|pra|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|pra|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Prakit. #:{{ux|pra|'''घ'''म्म|tr=[[𑀖𑀫𑁆𑀫#Tiếng_Prakrit|'''𑀖'''𑀫𑁆𑀫]]|[[mồ hôi]]|inline=1}} =={{langname|psu}}== ==={{ĐM|pron}}=== *{{IPA4|psu|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|psu|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Prakit Saurasen. #:{{ux|pra|सिं'''घ'''|tr=𑀲𑀺𑀁'''𑀖'''|[[sư tử]]|inline=1}} =={{langname|rjs}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Rajbanshi|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|rjs|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|rjs|Chữ cái|tr=ghô}} #Phụ âm thứ 4 trong tiếng Rajbanshi, viết bằng chữ Devanagari. #:{{quote|rjs|अगमबक्‍तार पाए बलाल प्रभुर बचनला पुरा होक कहए इला '''घ'''टना हइस्‍ले:|tr=Agambaktār pāe balāl Prabhura bacanlā purā hoka kahae ilā '''gha'''ṭanā haisle:|Mọi việc đã xảy ra như vậy, để cho ứng-nghiệm lời Chúa đã dùng đấng tiên-tri mà phán rằng: ([[s:Ma-thi-ơ/1#1:22|Ma-thi-ơ 1:22]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Rajbanshi'') [[अ#Tiếng_Rajbanshi|अ]], [[आ#Tiếng_Rajbanshi|आ]], [[इ#Tiếng_Rajbanshi|इ]], [[ई#Tiếng_Rajbanshi|ई]], [[उ#Tiếng_Rajbanshi|उ]], [[ऊ#Tiếng_Rajbanshi|ऊ]], [[ए#Tiếng_Rajbanshi|ए]], [[ऐ#Tiếng_Rajbanshi|ऐ]], [[ओ#Tiếng_Rajbanshi|ओ]], [[औ#Tiếng_Rajbanshi|औ]], [[क#Tiếng_Rajbanshi|क]], [[ख#Tiếng_Rajbanshi|ख]], [[ग#Tiếng_Rajbanshi|ग]], [[घ#Tiếng_Rajbanshi|घ]], [[ङ#Tiếng_Rajbanshi|ङ]], [[ङ़#Tiếng_Rajbanshi|ङ़]] ([[ङ्ह#Tiếng_Rajbanshi|ङ्ह]]), [[च#Tiếng_Rajbanshi|च]], [[छ#Tiếng_Rajbanshi|छ]], [[ज#Tiếng_Rajbanshi|ज]], [[झ#Tiếng_Rajbanshi|झ]], [[ट#Tiếng_Rajbanshi|ट]], [[ठ#Tiếng_Rajbanshi|ठ]], [[ड#Tiếng_Rajbanshi|ड]], [[ढ#Tiếng_Rajbanshi|ढ]], [[त#Tiếng_Rajbanshi|त]], [[थ#Tiếng_Rajbanshi|थ]], [[द#Tiếng_Rajbanshi|द]], [[ध#Tiếng_Rajbanshi|ध]], [[न#Tiếng_Rajbanshi|न]], [[ऩ#Tiếng_Rajbanshi|ऩ]] ([[न्ह#Tiếng_Rajbanshi|न्ह]]), [[प#Tiếng_Rajbanshi|प]], [[फ#Tiếng_Rajbanshi|फ]], [[ब#Tiếng_Rajbanshi|ब]], [[भ#Tiếng_Rajbanshi|भ]], [[म#Tiếng_Rajbanshi|म]], [[म़#Tiếng_Rajbanshi|म़]] ([[म्ह#Tiếng_Rajbanshi|म्ह]]), [[य#Tiếng_Rajbanshi|य]], [[र#Tiếng_Rajbanshi|र]], [[ऱ#Tiếng_Rajbanshi|ऱ]] ([[ह#Tiếng_Rajbanshi|ह]]), [[ल#Tiếng_Rajbanshi|ल]], [[ल़#Tiếng_Rajbanshi|ल़]] ([[ल्ह#Tiếng_Rajbanshi|ल्ह]]), [[व#Tiếng_Rajbanshi|व]], [[श#Tiếng_Rajbanshi|श]], [[ष#Tiếng_Rajbanshi|ष]], [[स#Tiếng_Rajbanshi|स]], [[ह#Tiếng_Rajbanshi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Kamta – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/rajbanshi/browse/?key=rkt-Beng&letter=%E0%A6%98|entry=ঘ}} *{{Chú thích web|rjs|author=Indian Evangelical Mission|work=Bible|year=2009|entry=मत्ति 1|entryurl=https://live.bible.is/bible/RJSMTS/MAT/1}} =={{langname|rkt}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Rangpur|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|rkt|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|rkt|Chữ cái|tr=sho}} #Phụ âm thứ 4 trong tiếng Rangpur, viết bằng chữ Devanagari. #:{{ux|rkt|'''घा'''स|tr='''gha'''ś|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Rangpur|list={{l-self|rkt|अ}}, {{l-self|rkt|आ}}, {{l-self|rkt|इ}}, {{l-self|rkt|ई}}, {{l-self|rkt|उ}}, {{l-self|rkt|ऊ}}, {{l-self|rkt|र्ऋ}}, {{l-self|rkt|र्ॠ}}, {{l-self|rkt|ए}}, {{l-self|rkt|ऐ}}, {{l-self|rkt|ओ}}, {{l-self|rkt|औ}}, {{l-self|rkt|क}}, {{l-self|rkt|ख}}, {{l-self|rkt|ग}}, {{l-self|rkt|घ}}, {{l-self|rkt|ङ}}, {{l-self|rkt|च}}, {{l-self|rkt|छ}}, {{l-self|rkt|ज}}, {{l-self|rkt|झ}}, {{l-self|rkt|ञ}}, {{l-self|rkt|ट}}, {{l-self|rkt|ठ}}, {{l-self|rkt|ड}}, {{l-self|rkt|ढ}}, {{l-self|rkt|ण}}, {{l-self|rkt|त}}, {{l-self|rkt|थ}}, {{l-self|rkt|द}}, {{l-self|rkt|ध}}, {{l-self|rkt|न}}, {{l-self|rkt|प}}, {{l-self|rkt|फ}}, {{l-self|rkt|ब}}, {{l-self|rkt|भ}}, {{l-self|rkt|म}}, {{l-self|rkt|य}}, {{l-self|rkt|र}}, {{l-self|rkt|ल}}, {{l-self|rkt|श}}, {{l-self|rkt|ष}}, {{l-self|rkt|स}}, {{l-self|rkt|ह}}, {{l-self|rkt|क्ष}}, {{l-self|rkt|ड़}}, {{l-self|rkt|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Kamta – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/rajbanshi/browse/?key=rkt-Beng&letter=%E0%A6%98|entry=घ}} =={{langname|sck}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Sadri|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Sadri|ঘ]] |- ! Kaithi | [[𑂐#Tiếng_Sadri|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sck|[sa]}} ==={{ĐM|letter}}=== {{head|sck|Chữ cái}} #Phụ âm thứ 4 trong tiếng Sadri, viết bằng chữ Devanagari. #:{{ux|sck|'''घा'''स|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sadri|list={{l-self|sck|अ}}, {{l-self|sck|आ}}, {{l-self|sck|इ}}, {{l-self|sck|ई}}, {{l-self|sck|उ}}, {{l-self|sck|ऊ}}, {{l-self|sck|ए}}, {{l-self|sck|ऐ}}, {{l-self|sck|ओ}}, {{l-self|sck|औ}}, {{l-self|sck|क}}, {{l-self|sck|ख}}, {{l-self|sck|ग}}, {{l-self|sck|घ}}, {{l-self|sck|ङ}}, {{l-self|sck|च}}, {{l-self|sck|छ}}, {{l-self|sck|ज}}, {{l-self|sck|झ}}, {{l-self|sck|ञ}}, {{l-self|sck|ट}}, {{l-self|sck|ठ}}, {{l-self|sck|ड}}, {{l-self|sck|ढ}}, {{l-self|sck|ण}}, {{l-self|sck|त}}, {{l-self|sck|थ}}, {{l-self|sck|द}}, {{l-self|sck|ध}}, {{l-self|sck|न}}, {{l-self|sck|प}}, {{l-self|sck|फ}}, {{l-self|sck|ब}}, {{l-self|sck|भ}}, {{l-self|sck|म}}, {{l-self|sck|य}}, {{l-self|sck|र}}, {{l-self|sck|ल}}, {{l-self|sck|व}}, {{l-self|sck|श}}, {{l-self|sck|ष}}, {{l-self|sck|स}}, {{l-self|sck|ह}}, {{l-self|sck|ड़}}, {{l-self|sck|ढ़}}, {{l-self|sck|क्ष}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hi|author=Toby Anderson|year=2020|entryurl=https://www.webonary.org/sadri/browse/browse-vernacular-english/?key=sck&letter=%E0%A4%98|entry=घ|publisher=SIL International|work=Sadri Dictionary}} *{{Chú thích web|sck|author=Beyond Translation|work=सादरी नवाँ नियम|year=2026|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/3683/REV.1.SCK}} =={{langname|sat}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ol Chiki | [[ᱜᱷ#Tiếng_Santal|ᱜᱷ]] |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Santal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Santal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sat|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|sat|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Santal, viết bằng chữ Devanagari. #:{{ux|sat|'''घु'''डि|tr=[[ᱜᱷᱩᱰᱤ#Tiếng_Santal|'''ᱜᱷ'''ᱩᱰᱤ]]|[[đồng hồ]]|inline=1}} ==={{ĐM|see also}}=== *{{list helper 2|title=Chữ Devanagari tiếng Santal|list={{l-self|sat|अ}}, {{l-self|sat|आ}}, {{l-self|sat|इ}}, {{l-self|sat|ई}}, {{l-self|sat|उ}}, {{l-self|sat|ऊ}}, {{l-self|sat|ए}}, {{l-self|sat|ऐ}}, {{l-self|sat|ओ}}, {{l-self|sat|औ}}, {{l-self|sat|अँ}}, {{l-self|sat|इँ}}, {{l-self|sat|उँ}}, {{l-self|sat|ऐं}}, {{l-self|sat|औं}}, {{l-self|sat|क}}, {{l-self|sat|ख}}, {{l-self|sat|ग}}, {{l-self|sat|घ}}, {{l-self|sat|ङ}}, {{l-self|sat|च}}, {{l-self|sat|छ}}, {{l-self|sat|ज}}, {{l-self|sat|झ}}, {{l-self|sat|ञ}}, {{l-self|sat|ट}}, {{l-self|sat|ठ}}, {{l-self|sat|ड}}, {{l-self|sat|ड़}}, {{l-self|sat|ढ}}, {{l-self|sat|ण}}, {{l-self|sat|त}}, {{l-self|sat|थ}}, {{l-self|sat|द}}, {{l-self|sat|ध}}, {{l-self|sat|न}}, {{l-self|sat|प}}, {{l-self|sat|फ}}, {{l-self|sat|ब}}, {{l-self|sat|भ}}, {{l-self|sat|म}}, {{l-self|sat|य}}, {{l-self|sat|र}}, {{l-self|sat|ल}}, {{l-self|sat|स}}, {{l-self|sat|ह}}, {{l-self|sat|व}}}} =={{langname|skr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ả Rập | [[ﮔﻬ#Tiếng_Saraiki|ﮔﻬ]] |- ! Devanagari | {{pn}} |- ! Gurmukhi | [[ਘ#Tiếng_Saraiki|ਘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|skr|[ɡʰɑ]}} ==={{ĐM|letter}}=== {{head|skr|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Saraiki, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Saraiki|list={{l-self|skr|अ}}, {{l-self|skr|आ}}, {{l-self|skr|इ}}, {{l-self|skr|ई}}, {{l-self|skr|उ}}, {{l-self|skr|ऊ}}, {{l-self|skr|ए}}, {{l-self|skr|ऐ}}, {{l-self|skr|ओ}}, {{l-self|skr|औ}}, {{l-self|skr|अँ}}, {{l-self|skr|क}}, {{l-self|skr|ख}}, {{l-self|skr|ग}}, {{l-self|skr|घ}}, {{l-self|skr|ङ}}, {{l-self|skr|ॻ}}, {{l-self|skr|च}}, {{l-self|skr|छ}}, {{l-self|skr|ज}}, {{l-self|skr|झ}}, {{l-self|skr|ॼ}}, {{l-self|skr|ट}}, {{l-self|skr|ठ}}, {{l-self|skr|ड}}, {{l-self|skr|ढ}}, {{l-self|skr|ण}}, {{l-self|skr|ट्र}}, {{l-self|skr|ड्र}}, {{l-self|skr|ढ्र}}, {{l-self|skr|ड़}}, {{l-self|skr|ढ़़}}, {{l-self|skr|ॾ}}, {{l-self|skr|ॾ़}}, {{l-self|skr|त}}, {{l-self|skr|थ}}, {{l-self|skr|द}}, {{l-self|skr|ध}}, {{l-self|skr|न}}, {{l-self|skr|न्ह}}, {{l-self|skr|प}}, {{l-self|skr|फ}}, {{l-self|skr|ब}}, {{l-self|skr|भ}}, {{l-self|skr|म}}, {{l-self|skr|ॿ}}, {{l-self|skr|म्ह}}, {{l-self|skr|य}}, {{l-self|skr|र}}, {{l-self|skr|ल}}, {{l-self|skr|व}}, {{l-self|skr|ऱ}}, {{l-self|skr|ल्ह}}, {{l-self|skr|श}}, {{l-self|skr|स}}, {{l-self|skr|ह}}, {{l-self|skr|क़}}, {{l-self|skr|ख़}}, {{l-self|skr|ग़}}, {{l-self|skr|ज़}}, {{l-self|skr|ॼ़}}, {{l-self|skr|त़}}, {{l-self|skr|फ़}}, {{l-self|skr|स़}}, {{l-self|skr|ह़}}, {{l-self|skr|अ़}}, {{l-self|skr|ड॒}}, {{l-self|skr|ब़}}}} =={{langname|saz}}== {| class="floatright wikitable" style="text-align:center;" |- ! Saurashtra | [[ꢕ#Tiếng_Saurashtra|ꢕ]] |- ! Latinh | [[Gh#Tiếng_Saurashtra|Gh]] [[gh#Tiếng_Saurashtra|gh]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|saz|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|saz|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Saurashtra, viết bằng chữ Devanagari. #:{{ux|saz|'''घ'''डि|tr='''gha'''ḍi|[[họng]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|saz|author=Bible Society of India|entryurl=https://www.bible.com/bible/3666/MAT.2|entry=மத்தேயு 2|work=Saurashtra Bible (BSI)|year=2025}} =={{langname|sd}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ả Rập | [[گهہ#Tiếng_Sindh|گهہ]] |- ! Devanagari | {{pn}} |- ! Sindh | [[𑊾#Tiếng_Sindh|𑊾]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sd|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|sd|Chữ cái|tr=gh}} #Phụ âm thứ 7 trong tiếng Sindh, viết bằng chữ Devanagari. #:{{ux|sd|'''घ'''टि|tr='''gha'''ṭi|[[ít]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sindh|list={{l-self|sd|अ}}, {{l-self|sd|आ}}, {{l-self|sd|इ}}, {{l-self|sd|ई}}, {{l-self|sd|उ}}, {{l-self|sd|ऊ}}, {{l-self|sd|ए}}, {{l-self|sd|ऐ}}, {{l-self|sd|ओ}}, {{l-self|sd|औ}}, {{l-self|sd|क}}, {{l-self|sd|ख}}, {{l-self|sd|ख़}}, {{l-self|sd|ग}}, {{l-self|sd|ॻ}}, {{l-self|sd|ग़}}, {{l-self|sd|घ}}, {{l-self|sd|ङ}}, {{l-self|sd|च}}, {{l-self|sd|छ}}, {{l-self|sd|ज}}, {{l-self|sd|ॼ}}, {{l-self|sd|ज़}}, {{l-self|sd|झ}}, {{l-self|sd|ञ}}, {{l-self|sd|ट}}, {{l-self|sd|ठ}}, {{l-self|sd|ड}}, {{l-self|sd|ॾ}}, {{l-self|sd|ड़}}, {{l-self|sd|ढ}}, {{l-self|sd|ढ़}}, {{l-self|sd|ण}}, {{l-self|sd|त}}, {{l-self|sd|थ}}, {{l-self|sd|द}}, {{l-self|sd|ध}}, {{l-self|sd|न}}, {{l-self|sd|प}}, {{l-self|sd|फ}}, {{l-self|sd|फ़}}, {{l-self|sd|ब}}, {{l-self|sd|ॿ}}, {{l-self|sd|भ}}, {{l-self|sd|म}}, {{l-self|sd|य}}, {{l-self|sd|र}}, {{l-self|sd|ल}}, {{l-self|sd|व}}, {{l-self|sd|श}}, {{l-self|sd|ष}}, {{l-self|sd|स}}, {{l-self|sd|ह}}}} =={{langname|srx}}== ==={{ĐM|pron}}=== *{{IPA4|srx|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|srx|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Sirmaur, viết bằng chữ Devanagari. #:{{ux|srx|'''घ'''रवाली|tr='''gha'''ravālī|[[vợ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sirmaur|list={{l-self|srx|अ}}, {{l-self|srx|आ}}, {{l-self|srx|इ}}, {{l-self|srx|ई}}, {{l-self|srx|उ}}, {{l-self|srx|ऊ}}, {{l-self|srx|ए}}, {{l-self|srx|ऐ}}, {{l-self|srx|ओ}}, {{l-self|srx|औ}}, {{l-self|srx|अं}}, {{l-self|srx|अः }}, {{l-self|srx|क}}, {{l-self|srx|ख}}, {{l-self|srx|ग}}, {{l-self|srx|घ}}, {{l-self|srx|गं}}, {{l-self|srx|च}}, {{l-self|srx|छ}}, {{l-self|srx|ज}}, {{l-self|srx|झ}}, {{l-self|srx|ट}}, {{l-self|srx|ठ}}, {{l-self|srx|ड}}, {{l-self|srx|ड़}}, {{l-self|srx|ढ}}, {{l-self|srx|ण}}, {{l-self|srx|त}}, {{l-self|srx|थ}}, {{l-self|srx|द}}, {{l-self|srx|ध}}, {{l-self|srx|न}}, {{l-self|srx|प}}, {{l-self|srx|फ}}, {{l-self|srx|ब}}, {{l-self|srx|भ}}, {{l-self|srx|म}}, {{l-self|srx|य}}, {{l-self|srx|र}}, {{l-self|srx|ल}}, {{l-self|srx|व}}, {{l-self|srx|श}}, {{l-self|srx|स}}, {{l-self|srx|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|srx|author=Beyond Translation|entryurl=https://www.bible.com/bible/3253/REV.1.SRXNT|entry=प्रकाशितवाक्य 1|work=सिरमौरी नौवाँ नियम|year=2025}} =={{langname|sjp}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Surjapur|ঘ]] |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Surjapur|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sjp|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|sjp|Chữ cái|tr=gh}} #Chữ cái thứ 4 trong bảng chữ cái Devanagari tiếng Surjapur. #:{{ux|sjp|'''घ'''र्ज्वला|tr='''gha'''rjvalā|[[lò]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=sjp|sc=Deva|qual=Chữ Devanagari tiếng Surjapur|अ|आ|इ|उ|ए|ओ|क|ख|ग|घ|च|छ|ज|झ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|र|ल|श|ष|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Surjapuri – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/surjapuri/browse/browse-vernacular-english/?key=sjp&letter=%E0%A6%98|entry=ঘ}} *{{Chú thích sách|sjp|author=Nav Bharat Mission|title=New Testament in Surjapuri (बाइबिल, सुरजापुरी)|year=2017|pageurl=https://archive.org/details/newtestament-surjapuri/page/n1|page=1}} =={{langname|taj}}== ==={{ĐM|pron}}=== *{{IPA4|taj|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|taj|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Tamang Đông. #:{{quote|taj|एल्‍डर चा भर्खर प्रभुदा विश्‍वास लबा छार म्‍हि तबारी आत। आहिन्‍सम थेसे ह्राङसे ह्राङदान '''घ्रे'''न स्‍होसी '''घ'''मण्‍ड लसी भ्रला। ओच्‍छे शैतानसे याङ्बा सजायरी थेएनोन परब तला।|tr=Elder ca bharkhara Prabhudā viśvāsa labā chāra mhi tabārī āta. Āhinsam these hrāṅse hrāṅdāna '''ghrē'''na śhosī '''gha'''maṇḍa lasī bhralā. Occhē śaitānase yāṅbā sajāyarī theenona paraba talā.|Người mới tin đạo không được làm giám-mục, e người tự-kiêu mà sa vào án-phạt của ma-quỉ chăng. ([[s:I Ti-mô-thê/3#3:6|I Ti-mô-thê 3:6]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Đông|list={{l-self|taj|अ|tr=-}}, {{l-self|taj|अः|tr=-}}, {{l-self|taj|आ|tr=-}}, {{l-self|taj|आः|tr=-}}, {{l-self|taj|इ|tr=-}}, {{l-self|taj|ई|tr=-}}, {{l-self|taj|इः|tr=-}}, {{l-self|taj|उ|tr=-}}, {{l-self|taj|उः|tr=-}}, {{l-self|taj|ए|tr=-}}, {{l-self|taj|एः|tr=-}}, {{l-self|taj|ओ|tr=-}}, {{l-self|taj|ओः|tr=-}}, {{l-self|taj|अँ|tr=-}}, {{l-self|taj|अ्य|tr=-}}, {{l-self|taj|अ्व|tr=-}}, {{l-self|taj|क|tr=-}}, {{l-self|taj|ख|tr=-}}, {{l-self|taj|ग|tr=-}}, {{l-self|taj|घ|tr=-}}, ({{l-self|taj|ग़)|tr=-}}, {{l-self|taj|ङ|tr=-}}, {{l-self|taj|ङ़|tr=-}}, {{l-self|taj|च|tr=-}}, {{l-self|taj|छ|tr=-}}, {{l-self|taj|ज|tr=-}}, {{l-self|taj|ट|tr=-}}, {{l-self|taj|ठ|tr=-}}, {{l-self|taj|ड|tr=-}}, {{l-self|taj|ढ|tr=-}} ({{l-self|taj|ड़|tr=-}}), {{l-self|taj|त|tr=-}}, {{l-self|taj|थ|tr=-}}, {{l-self|taj|द|tr=-}}, {{l-self|taj|ध|tr=-}}, {{l-self|taj|न|tr=-}}, {{l-self|taj|न्ह|tr=-}} ({{l-self|taj|ऩ|tr=-}}), {{l-self|taj|प|tr=-}}, {{l-self|taj|फ|tr=-}}, {{l-self|taj|ब|tr=-}}, {{l-self|taj|भ|tr=-}} ({{l-self|taj|ब़|tr=-}}), {{l-self|taj|म|tr=-}}, {{l-self|taj|म्ह|tr=-}} ({{l-self|taj|म़|tr=-}}), {{l-self|taj|य|tr=-}}, {{l-self|taj|य्ह|tr=-}} ({{l-self|taj|य़|tr=-}}), {{l-self|taj|र|tr=-}}, {{l-self|taj|ह्र|tr=-}} ({{l-self|taj|ऱ|tr=-}}), {{l-self|taj|ल|tr=-}}, {{l-self|taj|ल्ह|tr=-}} ({{l-self|taj|ल़|tr=-}}), {{l-self|taj|व|tr=-}}, {{l-self|taj|व्ह|tr=-}} ({{l-self|taj|व़|tr=-}}), {{l-self|taj|ष|tr=-}}, {{l-self|taj|स|tr=-}}, {{l-self|taj|स्ह|tr=-}} ({{l-self|taj|स़|tr=-}}), {{l-self|taj|ह|tr=-}}, {{l-self|taj|क्ष|tr=-}}, {{l-self|taj|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|taj|author=Eastern Tamang Language Team|entryurl=https://www.bible.com/bible/1177/1TI.3.TAJ|entry=१ तिमो 3|year=2011|publisher=Wycliffe Bible Translators, Inc.|work=परमेश्वरला बचन छार कबुल}} =={{langname|tge}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Tạng | [[གྷ#Tiếng_Tamang_Gorkha_Đông|གྷ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|tge|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|tge|Chữ cái|tr=gha}} #{{n-g|Phụ âm thứ 4 trong tiếng Tamang Gorkha Đông, viết bằng chữ Devanagari.}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Gorkha Đông|list={{l-self|tge|अ|tr=-}}, {{l-self|tge|अः|tr=-}}, {{l-self|tge|आ|tr=-}}, {{l-self|tge|आः|tr=-}}, {{l-self|tge|इ|tr=-}}, {{l-self|tge|ई|tr=-}}, {{l-self|tge|इः|tr=-}}, {{l-self|tge|उ|tr=-}}, {{l-self|tge|उः|tr=-}}, {{l-self|tge|ए|tr=-}}, {{l-self|tge|एः|tr=-}}, {{l-self|tge|ओ|tr=-}}, {{l-self|tge|ओः|tr=-}}, {{l-self|tge|अँ|tr=-}}, {{l-self|tge|अ्य|tr=-}}, {{l-self|tge|अ्व|tr=-}}, {{l-self|tge|क|tr=-}}, {{l-self|tge|ख|tr=-}}, {{l-self|tge|ग|tr=-}}, {{l-self|tge|घ|tr=-}}, ({{l-self|tge|ग़)|tr=-}}, {{l-self|tge|ङ|tr=-}}, {{l-self|tge|ङ़|tr=-}}, {{l-self|tge|च|tr=-}}, {{l-self|tge|छ|tr=-}}, {{l-self|tge|ज|tr=-}}, {{l-self|tge|ट|tr=-}}, {{l-self|tge|ठ|tr=-}}, {{l-self|tge|ड|tr=-}}, {{l-self|tge|ढ|tr=-}} ({{l-self|tge|ड़|tr=-}}), {{l-self|tge|त|tr=-}}, {{l-self|tge|थ|tr=-}}, {{l-self|tge|द|tr=-}}, {{l-self|tge|ध|tr=-}}, {{l-self|tge|न|tr=-}}, {{l-self|tge|न्ह|tr=-}} ({{l-self|tge|ऩ|tr=-}}), {{l-self|tge|प|tr=-}}, {{l-self|tge|फ|tr=-}}, {{l-self|tge|ब|tr=-}}, {{l-self|tge|भ|tr=-}} ({{l-self|tge|ब़|tr=-}}), {{l-self|tge|म|tr=-}}, {{l-self|tge|म्ह|tr=-}} ({{l-self|tge|म़|tr=-}}), {{l-self|tge|य|tr=-}}, {{l-self|tge|य्ह|tr=-}} ({{l-self|tge|य़|tr=-}}), {{l-self|tge|र|tr=-}}, {{l-self|tge|ह्र|tr=-}} ({{l-self|tge|ऱ|tr=-}}), {{l-self|tge|ल|tr=-}}, {{l-self|tge|ल्ह|tr=-}} ({{l-self|tge|ल़|tr=-}}), {{l-self|tge|व|tr=-}}, {{l-self|tge|व्ह|tr=-}} ({{l-self|tge|व़|tr=-}}), {{l-self|tge|ष|tr=-}}, {{l-self|tge|स|tr=-}}, {{l-self|tge|स्ह|tr=-}} ({{l-self|tge|स़|tr=-}}), {{l-self|tge|ह|tr=-}}, {{l-self|tge|क्ष|tr=-}}, {{l-self|tge|ज्ञ}}}} =={{langname|tdg}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Tạng | [[གྷ#Tiếng_Tamang_Tây|གྷ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|tdg|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|tdg|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Tamang Tây, viết bằng chữ Devanagari. #:{{ux|tdg|'''घ्‍य'''म्‍ब|tr='''ghya'''mb|[[đau]] [[quặn]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Tây|list={{l-self|tdg|अ|tr=-}}, {{l-self|tdg|अः|tr=-}}, {{l-self|tdg|आ|tr=-}}, {{l-self|tdg|आः|tr=-}}, {{l-self|tdg|इ|tr=-}}, {{l-self|tdg|ई|tr=-}}, {{l-self|tdg|इः|tr=-}}, {{l-self|tdg|उ|tr=-}}, {{l-self|tdg|उः|tr=-}}, {{l-self|tdg|ए|tr=-}}, {{l-self|tdg|एः|tr=-}}, {{l-self|tdg|ओ|tr=-}}, {{l-self|tdg|ओः|tr=-}}, {{l-self|tdg|अँ|tr=-}}, {{l-self|tdg|अ्य|tr=-}}, {{l-self|tdg|अ्व|tr=-}}, {{l-self|tdg|क|tr=-}}, {{l-self|tdg|ख|tr=-}}, {{l-self|tdg|ग|tr=-}}, {{l-self|tdg|घ|tr=-}}, ({{l-self|tdg|ग़)|tr=-}}, {{l-self|tdg|ङ|tr=-}}, {{l-self|tdg|ङ़|tr=-}}, {{l-self|tdg|च|tr=-}}, {{l-self|tdg|छ|tr=-}}, {{l-self|tdg|ज|tr=-}}, {{l-self|tdg|ट|tr=-}}, {{l-self|tdg|ठ|tr=-}}, {{l-self|tdg|ड|tr=-}}, {{l-self|tdg|ढ|tr=-}} ({{l-self|tdg|ड़|tr=-}}), {{l-self|tdg|त|tr=-}}, {{l-self|tdg|थ|tr=-}}, {{l-self|tdg|द|tr=-}}, {{l-self|tdg|ध|tr=-}}, {{l-self|tdg|न|tr=-}}, {{l-self|tdg|न्ह|tr=-}} ({{l-self|tdg|ऩ|tr=-}}), {{l-self|tdg|प|tr=-}}, {{l-self|tdg|फ|tr=-}}, {{l-self|tdg|ब|tr=-}}, {{l-self|tdg|भ|tr=-}} ({{l-self|tdg|ब़|tr=-}}), {{l-self|tdg|म|tr=-}}, {{l-self|tdg|म्ह|tr=-}} ({{l-self|tdg|म़|tr=-}}), {{l-self|tdg|य|tr=-}}, {{l-self|tdg|य्ह|tr=-}} ({{l-self|tdg|य़|tr=-}}), {{l-self|tdg|र|tr=-}}, {{l-self|tdg|ह्र|tr=-}} ({{l-self|tdg|ऱ|tr=-}}), {{l-self|tdg|ल|tr=-}}, {{l-self|tdg|ल्ह|tr=-}} ({{l-self|tdg|ल़|tr=-}}), {{l-self|tdg|व|tr=-}}, {{l-self|tdg|व्ह|tr=-}} ({{l-self|tdg|व़|tr=-}}), {{l-self|tdg|ष|tr=-}}, {{l-self|tdg|स|tr=-}}, {{l-self|tdg|स्ह|tr=-}} ({{l-self|tdg|स़|tr=-}}), {{l-self|tdg|ह|tr=-}}, {{l-self|tdg|क्ष|tr=-}}, {{l-self|tdg|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Mother Tongue Center Nepal|entryurl=https://www.webonary.org/wtamang/en/browse/browse-vernacular-nepali/?key=tdg&letter=%E0%A4%98|entry=घ|year=2017|publisher=SIL International®|work=Western Tamang Dictionary}} =={{langname|vav}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Varli|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|vav|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|vav|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Varli, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Varli|list={{l-self|vav|अ}}, {{l-self|vav|आ}}, {{l-self|vav|इ}}, {{l-self|vav|ई}}, {{l-self|vav|उ}}, {{l-self|vav|ऊ}}, {{l-self|vav|ए}}, {{l-self|vav|ऐ}}, {{l-self|vav|ओ}}, {{l-self|vav|औ}}, {{l-self|vav|अं}}, {{l-self|vav|अः}}, {{l-self|vav|ॲ}}, {{l-self|vav|ऑ}}, {{l-self|vav|क}}, {{l-self|vav|ख}}, {{l-self|vav|ग}}, {{l-self|vav|घ}}, {{l-self|vav|ङ}}, {{l-self|vav|च}}, {{l-self|vav|छ}}, {{l-self|vav|ज}}, {{l-self|vav|झ}}, {{l-self|vav|ञ}}, {{l-self|vav|ट}}, {{l-self|vav|ठ}}, {{l-self|vav|ड}}, {{l-self|vav|ढ}}, {{l-self|vav|ण}}, {{l-self|vav|त}}, {{l-self|vav|थ}}, {{l-self|vav|द}}, {{l-self|vav|ध}}, {{l-self|vav|न}}, {{l-self|vav|प}}, {{l-self|vav|फ}}, {{l-self|vav|ब}}, {{l-self|vav|भ}}, {{l-self|vav|म}}, {{l-self|vav|य}}, {{l-self|vav|र}}, {{l-self|vav|ल}}, {{l-self|vav|व}}, {{l-self|vav|श}}, {{l-self|vav|ष}}, {{l-self|vav|स}}, {{l-self|vav|ह}}, {{l-self|vav|ळ}}, {{l-self|vav|क्ष}}, {{l-self|vav|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Abraham, G.; Abraham, Hemalatha|title=[https://www.sil.org/system/files/reapdata/14/75/93/1475937409474978221737387197924835991/LCDD_20_2012_Abraham_Varli_Phonological_Grammar_Sketches.pdf Varli Phonology and Grammar Sketches]|publisher=SIL International|year=2012|location=Dallas, Texas}} =={{langname|vas}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Vasavi|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|vas|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|vas|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Vasavi, viết bằng chữ Devanagari. #:{{quote|vas|आंय तुमनेंह नोक्कीज आखुंह: तों '''घे'''टों तीयाल झुळे ता, वाट चुकयें नांह तीया नोव्वाणु '''घे'''टाहांअ लीदे तीयाल जो आनोंद वीअ तीयाअ केअता, वाट चुकी गेहलों तों एक '''घे'''टों झुळ्यों तीयाअ लीदे तीयाल वादारे आनोंद वीअ।|tr=Āṃya tumaneha nokkīja ākhūṃha: toṃ '''ghe'''ṭoṃ tīyāla jhuḷe tā, vāṭ cukayeṃ nāṃha tīyā novvāṇu '''ghe'''ṭāhāṃa līde tīyāla jo ānoṃda vīa tīyāa keatā, vāṭ cukī gehloṃ toṃ ek '''ghe'''ṭoṃ jhuḷyoṃ tīyāa līde tīyāla vādāre ānoṃda vīa.|Quả thật, ta nói cùng các ngươi, nếu người kiếm lại được, thì lấy làm vui-mừng về con đó hơn chín mươi chín con không lạc. ([[s:Ma-thi-ơ/18#18:13|Ma-thi-ơ 18:13]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Vasavi'') [[अ#Tiếng_Vasavi|अ]], [[आ#Tiếng_Vasavi|आ]], [[इ#Tiếng_Vasavi|इ]], [[ई#Tiếng_Vasavi|ई]], [[उ#Tiếng_Vasavi|उ]], [[ऊ#Tiếng_Vasavi|ऊ]], [[ए#Tiếng_Vasavi|ए]], [[ऐ#Tiếng_Vasavi|ऐ]], [[ओ#Tiếng_Vasavi|ओ]], [[औ#Tiếng_Vasavi|औ]], [[अं#Tiếng_Vasavi|अं]], [[अः#Tiếng_Vasavi|अः]], [[ॲ#Tiếng_Vasavi|ॲ]], [[ऑ #Tiếng_Vasavi|ऑ ]], [[क#Tiếng_Vasavi|क]], [[ख#Tiếng_Vasavi|ख]], [[ग#Tiếng_Vasavi|ग]], [[घ#Tiếng_Vasavi|घ]], [[ङ#Tiếng_Vasavi|ङ]], [[च#Tiếng_Vasavi|च]], [[छ#Tiếng_Vasavi|छ]], [[ज#Tiếng_Vasavi|ज]], [[झ#Tiếng_Vasavi|झ]], [[ञ#Tiếng_Vasavi|ञ]], [[ट#Tiếng_Vasavi|ट]], [[ठ#Tiếng_Vasavi|ठ]], [[ड#Tiếng_Vasavi|ड]], [[ढ#Tiếng_Vasavi|ढ]], [[ण#Tiếng_Vasavi|ण]], [[त#Tiếng_Vasavi|त]], [[थ#Tiếng_Vasavi|थ]], [[द#Tiếng_Vasavi|द]], [[ध#Tiếng_Vasavi|ध]], [[न#Tiếng_Vasavi|न]], [[प#Tiếng_Vasavi|प]], [[फ#Tiếng_Vasavi|फ]], [[ब#Tiếng_Vasavi|ब]], [[भ#Tiếng_Vasavi|भ]], [[म#Tiếng_Vasavi|म]], [[य#Tiếng_Vasavi|य]], [[र#Tiếng_Vasavi|र]], [[ल#Tiếng_Vasavi|ल]], [[व#Tiếng_Vasavi|व]], [[श#Tiếng_Vasavi|श]], [[ष#Tiếng_Vasavi|ष]], [[स#Tiếng_Vasavi|स]], [[ह#Tiếng_Vasavi|ह]], [[ळ#Tiếng_Vasavi|ळ]], [[क्ष#Tiếng_Vasavi|क्ष]], [[ज्ञ#Tiếng_Vasavi|ज्ञ]] ==={{ĐM|ref}}=== *{{Chú thích web|vas|author=Vasavi Boli|entryurl=https://media.ipsapps.org/vas/osa/bible/khan/01-MAT-018.html|entry=माथी 18|work=Vasavi Khandesi Bible|year=2024}} =={{langname|wme}}== ==={{ĐM|pron}}=== *{{IPA4|wme|[ɡʰɐ]}} ==={{ĐM|letter}}=== {{head|wme|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Wambule, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Wambule'') [[अ#Tiếng_Wambule|अ]], [[आ#Tiếng_Wambule|आ]], [[इ#Tiếng_Wambule|इ]], [[ई#Tiếng_Wambule|ई]], [[उ#Tiếng_Wambule|उ]], [[ऊ#Tiếng_Wambule|ऊ]], [[ए#Tiếng_Wambule|ए]], [[ऐ#Tiếng_Wambule|ऐ]], [[ओ#Tiếng_Wambule|ओ]], [[औ#Tiếng_Wambule|औ]], [[अ्व#Tiếng_Wambule|अ्व]], [[अ्य#Tiếng_Wambule|अ्य]], [[क#Tiếng_Wambule|क]], [[ख#Tiếng_Wambule|ख]], [[ग#Tiếng_Wambule|ग]], [[घ#Tiếng_Wambule|घ]], [[ङ#Tiếng_Wambule|ङ]], [[च#Tiếng_Wambule|च]], [[छ#Tiếng_Wambule|छ]], [[ज#Tiếng_Wambule|ज]], [[ञ#Tiếng_Wambule|ञ]], [[ट#Tiếng_Wambule|ट]], [[ठ#Tiếng_Wambule|ठ]], [[ड#Tiếng_Wambule|ड]], [[ड्अ#Tiếng_Wambule|ड्अ]], [[ढ#Tiếng_Wambule|ढ]], [[त#Tiếng_Wambule|त]], [[थ#Tiếng_Wambule|थ]], [[द#Tiếng_Wambule|द]], [[ध#Tiếng_Wambule|ध]], [[न#Tiếng_Wambule|न]], [[प#Tiếng_Wambule|प]], [[फ#Tiếng_Wambule|फ]], [[ब#Tiếng_Wambule|ब]], [[ब्‍‍अ#Tiếng_Wambule|ब्‍‍अ]], [[भ#Tiếng_Wambule|भ]], [[म#Tiếng_Wambule|म]], [[य#Tiếng_Wambule|य]], [[र#Tiếng_Wambule|र]], [[ऱ्व#Tiếng_Wambule|ऱ्व]], [[ऱ्य#Tiếng_Wambule|ऱ्य]], [[ल#Tiếng_Wambule|ल]], [[व#Tiếng_Wambule|व]], [[श#Tiếng_Wambule|श]], [[स#Tiếng_Wambule|स]], [[ह#Tiếng_Wambule|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|wme|entry=प्रकाश १|work=[https://media.ipsapps.org/wme/osa/bible/#/text Wambule Bible]|year=2025}} =={{langname|ybh}}== ==={{ĐM|pron}}=== *{{IPA4|ybh|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|ybh|Chữ cái|tr=ghä}} #Phụ âm thứ 4 trong tiếng Yakkha, viết bằng chữ Devanagari. #:{{ux|ybh|'''घा'''क|tr='''khā'''ka|[[mọi]] [[thứ]]|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/en/browse/browse-vernacular-nepali/?key=ybh&letter=%E0%A4%98|entry=घ}} =={{langname|ybi}}== ==={{ĐM|pron}}=== *{{IPA4|ybi|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|ybi|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Yamphu, viết bằng chữ Devanagari. #:{{ux|ybi|'''घ'''रे़लि|tr='''gha'''reḷi|[[nền móng]] [[nhà]]|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/en/browse/browse-yamphu-nepali/?key=ybi&letter=%E0%A4%98|entry=घ}} =={{langname|scp}}== ==={{ĐM|pron}}=== *{{IPA4|scp|[ɡ̤ʌ]}} ==={{ĐM|letter}}=== {{head|scp|Chữ cái|tr=gha}} #Phụ âm thứ 37 trong tiếng Yolmo, viết bằng chữ Devanagari. #:{{quote|scp|ओहजे पेहतीॱआङ खोगी ताम मिहङ्यीहन्‍सीमाना छेन्‍छोकला काहल्‍दी ख्‍येगी ताम थाम्‍ज्‍यी प्रा साल तेर ओहले खुङगी तामॱआङ खोगी मिहङ्यीहन्‍सीमाना खोला किन्‍ज्‍योला ङोह मे़हस्‍येएँगी मिहया़ दाङ '''घू'''स लेहन्‍गेन्‍गी ठाल तुहएँगी तिहक्‍च्‍येम्‍बा मिहया़ ल़ेहमुराङ यिहन म़ेदी सेमला ने़दोङ।”|tr=Ohje pehtīāṅ khogī tāma mihaṅyīhansīmānā chenchoklā kāhaldī khyegī tāma thāmjyī prā sāl tera ohle khuṅgī tāmaāṅ khogī mihaṅyīhansīmānā kholā kinjyolā ṅoh mehsyēeṅgī mihayā dāṅ '''ghū'''s lehaṅgeṅgī ṭhāl tuheṅgī tihkchyembā mihayā lehmurāṅ yihana medī semlā nedoṅ.|Nếu người không chịu nghe các người đó, thì hãy cáo cùng Hội-thánh, lại nếu người không chịu nghe Hội-thánh, thì hãy coi người như kẻ ngoại và kẻ thâu thuế vậy. ([[s:Ma-thi-ơ/18#18:17|Ma-thi-ơ 18:17]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Yolmo'') [[अ#Tiếng_Yolmo|अ]], [[आ#Tiếng_Yolmo|आ]], [[इ#Tiếng_Yolmo|इ]], [[उ#Tiếng_Yolmo|उ]], [[ए#Tiếng_Yolmo|ए]], [[ओ#Tiếng_Yolmo|ओ]], [[अ़#Tiếng_Yolmo|अ़]], [[आ़#Tiếng_Yolmo|आ़]], [[ई़#Tiếng_Yolmo|ई़]], [[ऊ़#Tiếng_Yolmo|ऊ़]], [[ए़#Tiếng_Yolmo|ए़]], [[ओ़#Tiếng_Yolmo|ओ़]], [[अँ#Tiếng_Yolmo|अँ]], [[अˑ#Tiếng_Yolmo|अˑ]], [[क#Tiếng_Yolmo|क]], [[ख#Tiếng_Yolmo|ख]], [[ग#Tiếng_Yolmo|ग]], [[ङ#Tiếng_Yolmo|ङ]], [[क्य#Tiếng_Yolmo|क्य]], [[ख्य#Tiếng_Yolmo|ख्य]], [[ग्य#Tiếng_Yolmo|ग्य]], [[च#Tiếng_Yolmo|च]], [[छ#Tiếng_Yolmo|छ]], [[ज#Tiếng_Yolmo|ज]], [[ज़#Tiếng_Yolmo|ज़]], [[ङ्य#Tiếng_Yolmo|ङ्य]], [[च्य#Tiếng_Yolmo|च्य]], [[छ्य#Tiếng_Yolmo|छ्य]], [[ज्य#Tiếng_Yolmo|ज्य]], [[ज़्य#Tiếng_Yolmo|ज़्य]], [[ट#Tiếng_Yolmo|ट]], [[ठ#Tiếng_Yolmo|ठ]], [[ड#Tiếng_Yolmo|ड]], [[त#Tiếng_Yolmo|त]], [[थ#Tiếng_Yolmo|थ]], [[द#Tiếng_Yolmo|द]], [[न#Tiếng_Yolmo|न]], [[प#Tiếng_Yolmo|प]], [[फ#Tiếng_Yolmo|फ]], [[ब#Tiếng_Yolmo|ब]], [[म#Tiếng_Yolmo|म]], [[य#Tiếng_Yolmo|य]], [[र#Tiếng_Yolmo|र]], [[ऱ्ह#Tiếng_Yolmo|ऱ्ह]], [[ल#Tiếng_Yolmo|ल]], [[ल्ह#Tiếng_Yolmo|ल्ह]], [[व#Tiếng_Yolmo|व]], [[स#Tiếng_Yolmo|स]], [[स्य#Tiếng_Yolmo|स्य]], [[ह#Tiếng_Yolmo|ह]], [[घ#Tiếng_Yolmo|घ]], [[ढ#Tiếng_Yolmo|ढ]], [[ध#Tiếng_Yolmo|ध]], [[श#Tiếng_Yolmo|श]] ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Anna Maria Hari & Chhegu Lama|title=[https://www.sil.org/system/files/reapdata/20/68/76/20687635068490737809780070500342314186/Long_Dictionary.pdf ह्योल्मो-नेपाली-अँग्रेजी]|year=2004|publisher=Central Department of Linguistics, Tribhuvan University|page=439}} *{{Chú thích web|scp|entryurl=https://www.bible.com/bible/3545/MAT.18.HYLM|entry=मत्ती 18|author=Wycliffe Bible Translators, Inc.|year=2023|work=ह्योल्‍मो}} [[Thể loại:Khối ký tự Devanagari|18]] 9tbk3xd53aror4m5d3hdgb456lnf6fx 2566614 2566606 2026-09-26T08:49:25Z Hiyuune 50834 (By [[meta:Indic-TechCom/Tools|FindAndReplace]]) 2566614 wikitext text/x-wiki {{minitoc}} =={{langname|mul}}== {{character info}} [[File:Deva-घ-order.gif|thumb]] ==={{ĐM|pron}}=== *{{IPA4|mul|/ɡʱə/}} {{qualifier|thay đổi theo ngôn ngữ}} ==={{ĐM|desction}}=== {{mul-letter|gha}} #Chữ Devanagari ''gha'', thể hiện phụ âm hầu bật hơi hữu thanh =={{langname|ahr}}== ==={{ĐM|pron}}=== *{{IPA4|ahr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|ahr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Ahiran, viết bằng chữ Devanagari. #:{{ux|ahr|पं'''घ'''रनं|[[mặc]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Ahiran'') [[अ#Tiếng_Ahiran|अ]], [[आ#Tiếng_Ahiran|आ]], [[इ#Tiếng_Ahiran|इ]], [[ई#Tiếng_Ahiran|ई]], [[उ#Tiếng_Ahiran|उ]], [[ऊ#Tiếng_Ahiran|ऊ]], [[ए#Tiếng_Ahiran|ए]], [[ऐ#Tiếng_Ahiran|ऐ]], [[ओ#Tiếng_Ahiran|ओ]], [[औ#Tiếng_Ahiran|औ]], [[अं#Tiếng_Ahiran|अं]], [[अः#Tiếng_Ahiran|अः]], [[क#Tiếng_Ahiran|क]], [[ख#Tiếng_Ahiran|ख]], [[ग#Tiếng_Ahiran|ग]], [[घ#Tiếng_Ahiran|घ]], [[ङ#Tiếng_Ahiran|ङ]], [[च#Tiếng_Ahiran|च]], [[छ#Tiếng_Ahiran|छ]], [[ज#Tiếng_Ahiran|ज]], [[झ#Tiếng_Ahiran|झ]], [[ञ#Tiếng_Ahiran|ञ]], [[ट#Tiếng_Ahiran|ट]], [[ठ#Tiếng_Ahiran|ठ]], [[ड#Tiếng_Ahiran|ड]], [[ढ#Tiếng_Ahiran|ढ]], [[ण#Tiếng_Ahiran|ण]], [[त#Tiếng_Ahiran|त]], [[थ#Tiếng_Ahiran|थ]], [[द#Tiếng_Ahiran|द]], [[ध#Tiếng_Ahiran|ध]], [[न#Tiếng_Ahiran|न]], [[प#Tiếng_Ahiran|प]], [[फ#Tiếng_Ahiran|फ]], [[ब#Tiếng_Ahiran|ब]], [[भ#Tiếng_Ahiran|भ]], [[म#Tiếng_Ahiran|म]], [[य#Tiếng_Ahiran|य]], [[र#Tiếng_Ahiran|र]], [[ल#Tiếng_Ahiran|ल]], [[व#Tiếng_Ahiran|व]], [[श#Tiếng_Ahiran|श]], [[ष#Tiếng_Ahiran|ष]], [[स#Tiếng_Ahiran|स]], [[ह#Tiếng_Ahiran|ह]], [[ळ#Tiếng_Ahiran|ळ]], [[क्ष#Tiếng_Ahiran|क्ष]], [[ज्ञ#Tiếng_Ahiran|ज्ञ]] ==={{ĐM|ref}}=== *{{Chú thích web|ahr|author=The Word for the World International|work=Ahirani Bible|year=2025|entry=मत्तय 1|entryurl=https://www.bible.com/bible/2776/MAT.1.AII25}} =={{langname|anp}}== ==={{ĐM|pron}}=== *{{IPA4|anp|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|anp|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Angika, viết bằng chữ Devanagari. #:{{ux|anp|'''घ'''रौवा|làm nhà|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Angika|list={{l-self|anp|अ}}, {{l-self|anp|आ}}, {{l-self|anp|इ}}, {{l-self|anp|ई}}, {{l-self|anp|उ}}, {{l-self|anp|ऊ}}, {{l-self|anp|ऋ}}, {{l-self|anp|ए}}, {{l-self|anp|ऐ}}, {{l-self|anp|ऍ}}, {{l-self|anp|ओ}}, {{l-self|anp|औ}}, {{l-self|anp|अः}}, {{l-self|anp|अँ}}, {{l-self|anp|अं}}, {{l-self|anp|क}}, {{l-self|anp|ख}}, {{l-self|anp|ग}}, {{l-self|anp|घ}}, {{l-self|anp|ङ}}, {{l-self|anp|च}}, {{l-self|anp|छ}}, {{l-self|anp|ज}}, {{l-self|anp|झ}}, {{l-self|anp|ञ}}, {{l-self|anp|ट}}, {{l-self|anp|ठ}}, {{l-self|anp|ड}}, {{l-self|anp|ढ}}, {{l-self|anp|ण}}, {{l-self|anp|त}}, {{l-self|anp|थ}}, {{l-self|anp|द}}, {{l-self|anp|ध}}, {{l-self|anp|न}}, {{l-self|anp|प}}, {{l-self|anp|फ}}, {{l-self|anp|ब}}, {{l-self|anp|भ}}, {{l-self|anp|म}}, {{l-self|anp|य}}, {{l-self|anp|र}}, {{l-self|anp|ल}}, {{l-self|anp|व}}, {{l-self|anp|श}}, {{l-self|anp|ष}}, {{l-self|anp|स}}, {{l-self|anp|ह}}, {{l-self|anp|ड़}}, {{l-self|anp|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hi|author=Toby Anderson|entry=घ|entryurl=https://www.webonary.org/angika/browse/browse-vernacular-english/?key=anp&letter=%E0%A4%98|publisher=SIL International|year=2020|work=Angika Dictionary}} =={{langname|inc-apa}}== ==={{ĐM|pron}}=== *{{IPA|inc-apa|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|inc-apa|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Apabhramsa. #:{{ux|inc-apa|'''घे'''उर|kẹo ghevar|inline=1}} =={{langname|aph}}== ==={{ĐM|pron}}=== *{{IPA4|aph|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|aph|Chữ cái|tr=hha}} #Phụ âm thứ 4 trong tiếng Athpariya, viết bằng chữ Devanagari. #:{{ux|aph|'''घाँ'''सा|tr='''ghā̃'''sā|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Athpariya|list={{l-self|aph|आ}}, {{l-self|aph|इ}}, {{l-self|aph|उ}}, {{l-self|aph|ए}}, {{l-self|aph|ओ}}, {{l-self|aph|क}}, {{l-self|aph|ख}}, {{l-self|aph|ग}}, {{l-self|aph|घ}}, {{l-self|aph|ङ}}, {{l-self|aph|च}}, {{l-self|aph|छ}}, {{l-self|aph|ज}}, {{l-self|aph|झ}}, {{l-self|aph|ट}}, {{l-self|aph|ठ}}, {{l-self|aph|ड}}, {{l-self|aph|ढ}}, {{l-self|aph|त}}, {{l-self|aph|थ}}, {{l-self|aph|द}}, {{l-self|aph|ध}}, {{l-self|aph|न}}, {{l-self|aph|प}}, {{l-self|aph|फ}}, {{l-self|aph|ब}}, {{l-self|aph|भ}}, {{l-self|aph|म}}, {{l-self|aph|य}}, {{l-self|aph|र}}, {{l-self|aph|ल}}, {{l-self|aph|व}}, {{l-self|aph|व्ह}}, {{l-self|aph|स}}, {{l-self|aph|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Dhan Bahadur Kimdan (David)|entry=घ|entryurl=https://www.webonary.org/athpahariya/en/browse/browse-vernacular-nepali/?key=aph&letter=%E0%A4%98|publisher=SIL International|year=2015|work=Athpahariya – Nepali – English Dictionary}} =={{langname|awa}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Awadh|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|awa|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|awa|Chữ cái}} #Phụ âm thứ 4 trong tiếng Awadh, viết bằng chữ Devanagari. #:{{ux|awa|[[w:awa:घाना|'''घा'''ना]]|[[w:Ghana|Ghana]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Awadh|list={{l-self|awa|अ}}, {{l-self|awa|आ}}, {{l-self|awa|इ}}, {{l-self|awa|ई}}, {{l-self|awa|उ}}, {{l-self|awa|ऊ}}, {{l-self|awa|ए}}, {{l-self|awa|ऐ}}, {{l-self|awa|ओ}}, {{l-self|awa|औ}}, {{l-self|awa|अं}}, {{l-self|awa|अः}}, {{l-self|awa|अँ}}, {{l-self|awa|ऋ}}, {{l-self|awa|क}}, {{l-self|awa|ख}}, {{l-self|awa|ग}}, {{l-self|awa|घ}}, {{l-self|awa|ङ}}, {{l-self|awa|च}}, {{l-self|awa|छ}}, {{l-self|awa|ज}}, {{l-self|awa|झ}}, {{l-self|awa|ञ}}, {{l-self|awa|ट}}, {{l-self|awa|ठ}}, {{l-self|awa|ड}}, {{l-self|awa|ढ}}, {{l-self|awa|ण}}, {{l-self|awa|त}}, {{l-self|awa|थ}}, {{l-self|awa|द}}, {{l-self|awa|ध}}, {{l-self|awa|न}}, {{l-self|awa|प}}, {{l-self|awa|फ}}, {{l-self|awa|ब}}, {{l-self|awa|भ}}, {{l-self|awa|म}}, {{l-self|awa|य}}, {{l-self|awa|र}}, {{l-self|awa|ल}}, {{l-self|awa|व}}, {{l-self|awa|श}}, {{l-self|awa|ष}}, {{l-self|awa|स}}, {{l-self|awa|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|awa|author=Bible League International|work=पवित्तर बाइबिल|year=2025|entry=उत्पत्ति 1|entryurl=https://www.bible.com/bible/2560/GEN.1.AERV}} =={{langname|bhj}}== ==={{ĐM|pron}}=== *{{IPA4|bhj|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|bhj|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Bahing, viết bằng chữ Devanagari. #:{{ux|bhj|'''घ'''मन्‍डी|tr='''gha'''ravāv|[[tự hào]]|inline=1}} ==={{Đ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/en/browse/browse-vernacular-nepali/?key=bhj&letter=%E0%A4%98|entry=घ}} =={{langname|vjk}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Bajjika|𑂐]] |- ! Tirhuta | [[𑒒#Tiếng_Bajjika|𑒒]] |- |} ==={{ĐM|pron}}=== *{{IPA|vjk|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|vjk|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bajjika. #:{{quote|vjk|हमनीके बिचमे जोन '''घ'''टना '''घ'''टल हइ ओकर लेखा-जोखा तैयार करेके काम बहुत लोग अपना हातमे ले लेले हइ।|tr=Hamnikē bicame jona '''gha'''ṭanā '''gha'''ṭala hai okara lekhā-jokhā taiyāra kareke kāma bahuta loga apanā hātame lelele hai.|Hỡi Thê-ô-phi-lơ quí-nhơn, vì có nhiều kẻ dốc lòng chép sử về những sự đã làm nên trong chúng ta, ([[s:Lu-ca/1#1:1|Lu-ca 1:1]])}} ==={{ĐM|ref}}=== *{{Chú thích web|vjk|author=Manna Harvest, Bajjika Translation Committee & Wycliffe Bible Translators Inc.|work=[https://media.ipsapps.org/vjk/osa/bible/#/text Bajjika Bible 1.0]|year=2026|entry=लूका १}} =={{langname|bap}}== ==={{ĐM|pron}}=== *{{IPA|bap|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|bap|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bantawa, viết bằng chữ Devanagari. #:{{quote|bap|मो ए'''घा'''रकापाङ्‌माङ काखेङ्‌पाचि गालिल्‌ओ मो भ़ऱदु म़खारा, मोदु खात्‍मा निकिना येसुआ म़लोचिओ।|tr=mo e'''ghā'''rakāpāṅmāṅ kākheṅpāci gālil'o mo bẖṛadu m̱akhārā, modu khātma nikina yesuā m̱aloci'o.|Mười một môn-đồ đi qua xứ Ga-li-lê, lên hòn núi mà Đức Chúa Jêsus đã chỉ cho. ([[s:Ma-thi-ơ/28#28:16|Ma-thi-ơ 28:16]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bantawa|list={{l-self|bap|अ}}, {{l-self|bap|अ़}}, {{l-self|bap|आ}}, {{l-self|bap|इ}}, {{l-self|bap|उ}}, {{l-self|bap|उ़}}, {{l-self|bap|ए}}, {{l-self|bap|ओ}}, {{l-self|bap|अ៱}}, {{l-self|bap|क}}, {{l-self|bap|ख}}, {{l-self|bap|ग}}, {{l-self|bap|घ}}, {{l-self|bap|ङ}}, {{l-self|bap|च}}, {{l-self|bap|छ}}, {{l-self|bap|ज}}, {{l-self|bap|झ}}, {{l-self|bap|त}}, {{l-self|bap|थ}}, {{l-self|bap|द}}, {{l-self|bap|ध}}, {{l-self|bap|न}}, {{l-self|bap|प}}, {{l-self|bap|फ}}, {{l-self|bap|ब}}, {{l-self|bap|भ}}, {{l-self|bap|म}}, {{l-self|bap|य}}, {{l-self|bap|र}} ({{l-self|bap|ऱ}}), {{l-self|bap|ल}}, {{l-self|bap|व}}, {{l-self|bap|स}}, {{l-self|bap|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Werner Winter|title=A Bantawa Dictionary|year=2003|publisher=Walter de Gruyter|isbn=9783110177107|page=34|pageurl=https://books.google.com/books?id=RTuMWRZ8OfkC&pg=PA34}} *{{Chú thích web|bap|entryurl=https://www.bible.com/en-GB/bible/3060/MAT.28.BAP|entry=मत्‍ति 28|author=Wycliffe Bible Translators, Inc.|year=2025|work=बान्‍तावा राई}} =={{langname|byw}}== ==={{ĐM|pron}}=== *{{IPA4|byw|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|byw|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Belhariya, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{letters|lang=byw|sc=Deva|qual=Chữ Devanagari tiếng Belhariya|अ|इ|उ|ए|ओ|क|ख|ग|घ|ङ|च|छ|ज|झ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|ष|ह}} =={{langname|bhd}}== ==={{ĐM|pron}}=== *{{IPA4|bhd|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|bhd|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bhadarwah. #:{{quote|bhd|तैखन राहाब ज़ैसारू '''घ'''र नगरेरे दिवारी सेइं साथी थियूं, एल्हेरेलेइ राहाबां तैना दैरी मरां नगरेरे बेइर कढनेरे लेई रेसारो इस्तेमाल कियो।|Vậy, nàng dùng một sợi dây dòng hai người xuống nơi cửa sổ, vì nhà nàng ở tại trên vách thành. ([[s:Giô-suê/2#2:15|Giô-suê 2:15]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bhd|author=Beyond Translation|work=भड्लाई भाषाई मां पवित्र शास्त्र|year=2020|entry=यहोशू 2|entryurl=https://www.bible.com/bible/2767/JOS.2.BHDNT}} =={{langname|bht}}== ==={{ĐM|pron}}=== *{{IPA4|bht|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|bht|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Bhattiyat. #:{{quote|bht|इसा कताबा च उना गल्लां जो लिख्या है जड़िया परमेश्वरे यीशु मसीह जो दसियां न। परमेश्वरे इस तांई उसयो दसियां ताकि सै अपणे सेबकां जो उना '''घ'''टना दे बारे च दस्सी सके जड़ियां जल्दी ही होणियां न। यीशु मसीहे ऐ संदेश मिंजो, अपणे सेबक यूहन्ना बाल स्वर्गदूते जो भेजी करी दसया,|tr=sā katābā ca unā gallā̃ jo likhyā hai jaṛiyā parameśvare yīśu masīha jo dasiā̃ na. parameśvare isa tā̃ī̃ usayo dasiā̃ tāki sai apaṇe sebakā̃ jo unā '''gha'''ṭanā de bāre ca dassī sake jaṛiyā̃ jaldī hī hoṇiyā̃ na. yīśu masīhe ai sandesa miñjo, apaṇe sebaka yuhannā bāla svargadūte jo bhejī karī dasayā,|Sự mặc-thị của Đức Chúa Jêsus-Christ mà Đức Chúa Trời đã ban cho Ngài đặng đem tỏ ra cùng tôi-tớ Ngài những đều kíp phải xảy đến, thì Ngài đã sai thiên-sứ đến tỏ những đều đó cho Giăng, tôi-tớ Ngài, ([[s:Khải huyền/1#1:1|Khải huyền 1:1]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bht|author=Beyond Translation|work=भटियाली नोआ नियम|year=2020|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/3245/REV.1.BHTNT}} =={{langname|bhb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Bhil|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|bhb|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|bhb|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bhil, viết bằng chữ Devanagari. #:{{ux|bhb|'''घी'''जवो|tr='''ghī'''jvo|[[óc]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhil|list={{l-self|bhb|अ}}, {{l-self|bhb|आ}}, {{l-self|bhb|इ}}, {{l-self|bhb|ई}}, {{l-self|bhb|उ}}, {{l-self|bhb|ऊ}}, {{l-self|bhb|ए}}, {{l-self|bhb|ऐ}}, {{l-self|bhb|ओ}}, {{l-self|bhb|औ}}, {{l-self|bhb|अं}}, {{l-self|bhb|क}}, {{l-self|bhb|ख}}, {{l-self|bhb|ग}}, {{l-self|bhb|घ}}, {{l-self|bhb|ङ}}, {{l-self|bhb|च}}, {{l-self|bhb|ज}}, {{l-self|bhb|ट}}, {{l-self|bhb|ठ}}, {{l-self|bhb|ड}}, {{l-self|bhb|ढ}}, {{l-self|bhb|ण}}, {{l-self|bhb|त}}, {{l-self|bhb|थ}}, {{l-self|bhb|द}}, {{l-self|bhb|ध}}, {{l-self|bhb|न}}, {{l-self|bhb|प}}, {{l-self|bhb|फ}}, {{l-self|bhb|ब}}, {{l-self|bhb|भ}}, {{l-self|bhb|म}}, {{l-self|bhb|य}}, {{l-self|bhb|र}}, {{l-self|bhb|ल}}, {{l-self|bhb|ळ}}, {{l-self|bhb|व}}, {{l-self|bhb|श}}, {{l-self|bhb|स}}, {{l-self|bhb|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Stephen Watters|title=[https://www.sil.org/system/files/reapdata/16/54/22/165422481227949765106602053433447679464/silesr2013_004.pdf A Sociolinguistic Profile of the Bhils of Northern Dhule District]|year=2013|publisher=SIL International|location=Dallas, Texas}} =={{langname|bho}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Bhojpur|𑂐]] |- |} ==={{ĐM|pron}}=== *{{bho-IPA}} ==={{ĐM|letter}}=== {{head|bho|Chữ cái}} #Phụ âm thứ 4 trong tiếng Bhojpur, viết bằng chữ Devanagari. #:{{ux|bho|चिड़िया'''घ'''र|[[vườn bách thú]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhojpur|list={{l-self|bho|अ}}, {{l-self|bho|आ}}, {{l-self|bho|इ}}, {{l-self|bho|ई}}, {{l-self|bho|उ}}, {{l-self|bho|ऊ}}, {{l-self|bho|ए}}, {{l-self|bho|ऐ}}, {{l-self|bho|ओ}}, {{l-self|bho|औ}}, {{l-self|bho|अः}}, {{l-self|bho|अँ}}, {{l-self|bho|क}}, {{l-self|bho|ख}}, {{l-self|bho|ग}}, {{l-self|bho|घ}}, {{l-self|bho|ङ}}, {{l-self|bho|च}}, {{l-self|bho|छ}}, {{l-self|bho|ज}}, {{l-self|bho|झ}}, {{l-self|bho|ञ}}, {{l-self|bho|ट}}, {{l-self|bho|ठ}}, {{l-self|bho|ड}}, {{l-self|bho|ड़}}, {{l-self|bho|ढ}}, {{l-self|bho|ढ़}}, {{l-self|bho|ण}}, {{l-self|bho|त}}, {{l-self|bho|थ}}, {{l-self|bho|द}}, {{l-self|bho|ध}}, {{l-self|bho|न}}, {{l-self|bho|प}}, {{l-self|bho|फ}}, {{l-self|bho|ब}}, {{l-self|bho|भ}}, {{l-self|bho|म}}, {{l-self|bho|य}}, {{l-self|bho|र}}, {{l-self|bho|ल}}, {{l-self|bho|व}}, {{l-self|bho|श}}, {{l-self|bho|ष}}, {{l-self|bho|स}}, {{l-self|bho|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Bhojpuri – Hindi Dictionary|year=2019|publisher=SIL International|entryurl=https://www.webonary.org/bhojpuri/browse/browse-vernacular-english/?letter=%E0%A4%98&key=bho|entry=घ}} =={{langname|aav-bhu}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Bhumij|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Bhumij|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|aav-bhu|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|aav-bhu|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Bhumij, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bhumij|list={{l-self|aav-bhu|अ|tr=-}}, {{l-self|aav-bhu|आ|tr=-}}, {{l-self|aav-bhu|इ|tr=-}}, {{l-self|aav-bhu|ई|tr=-}}, {{l-self|aav-bhu|उ|tr=-}}, {{l-self|aav-bhu|ऊ|tr=-}}, {{l-self|aav-bhu|ए|tr=-}}, {{l-self|aav-bhu|ऐ|tr=-}}, {{l-self|aav-bhu|ओ|tr=-}}, {{l-self|aav-bhu|औ|tr=-}}, {{l-self|aav-bhu|क|tr=-}}, {{l-self|aav-bhu|ख|tr=-}}, {{l-self|aav-bhu|ग|tr=-}}, {{l-self|aav-bhu|घ|tr=-}}, {{l-self|aav-bhu|ङ|tr=-}}, {{l-self|aav-bhu|च|tr=-}}, {{l-self|aav-bhu|छ|tr=-}}, {{l-self|aav-bhu|ज|tr=-}}, {{l-self|aav-bhu|झ|tr=-}}, {{l-self|aav-bhu|ञ|tr=-}}, {{l-self|aav-bhu|ट|tr=-}}, {{l-self|aav-bhu|ठ|tr=-}}, {{l-self|aav-bhu|ड|tr=-}}, {{l-self|aav-bhu|ढ|tr=-}}, {{l-self|aav-bhu|ण|tr=-}}, {{l-self|aav-bhu|त|tr=-}}, {{l-self|aav-bhu|थ|tr=-}}, {{l-self|aav-bhu|द|tr=-}}, {{l-self|aav-bhu|ध|tr=-}}, {{l-self|aav-bhu|न|tr=-}}, {{l-self|aav-bhu|प|tr=-}}, {{l-self|aav-bhu|फ|tr=-}}, {{l-self|aav-bhu|ब|tr=-}}, {{l-self|aav-bhu|भ|tr=-}}, {{l-self|aav-bhu|म|tr=-}}, {{l-self|aav-bhu|य|tr=-}}, {{l-self|aav-bhu|र|tr=-}}, {{l-self|aav-bhu|ल|tr=-}}, {{l-self|aav-bhu|व|tr=-}}, {{l-self|aav-bhu|श|tr=-}}, {{l-self|aav-bhu|ष|tr=-}}, {{l-self|aav-bhu|स|tr=-}}, {{l-self|aav-bhu|ह|tr=-}}, {{l-self|aav-bhu|ड़|tr=-}}, {{l-self|aav-bhu|ढ़|tr=-}}}} =={{langname|bhu}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Oriya | [[ଘ#Tiếng_Bhunjia|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|bhu|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|bhu|Chữ cái|tr=gh}} #Chữ Oriya thể hiện phụ âm '''/ɡʰ/''' trong tiếng Bhunjia. #:{{quote|bhu|अपन टोरवा हमर परभु यीसु मसीह के बारे हे ऊ देह के भाव दाऊद के '''घ'''राना लग पइदा हुइस।|tr=apan ṭoravā hamar parabhu yīsu masīha ke bāre he ū deha ke bhāva dāūd ke '''gha'''rānā laga paidā huisa.|về Con Ngài, theo xác-thịt thì bởi dòng-dõi vua Đa-vít sanh ra ([[s:Rô-ma/1#1:3|Rô-ma 1:3]])}} ==={{ĐM|ref}}=== *{{Chú thích web|bhu|author=The Word for the World International|entryurl=https://www.bible.com/en-GB/bible/3712/ROM.1.BTP25|entry=रोमियो 1|work=Bhumiya Bible|year=2025}} =={{langname|kfs}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Bilaspur|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kfs|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|kfs|Chữ cái}} #Phụ âm thứ 4 trong tiếng Bilaspur, viết bằng chữ Devanagari. #:{{quote|kfs|सै जे तिस पर बैठिरा सै यशब कने माणिक्य साई दिस्सां, कने तिस सं'''घा'''सणा रे चऊँ पासयां मरकता साई इक मे'''घ'''-धनुष दुस्याराँ।|Đấng ngồi đó rực-rỡ như bích-ngọc và mã-não; có cái mống dáng như lục-bửu-thạch bao chung-quanh ngôi. ([[s:Khải huyền/4#4:3|Khải huyền 4:3]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bilaspur|list={{l-self|kfs|अ}}, {{l-self|kfs|आ}}, {{l-self|kfs|इ}}, {{l-self|kfs|ई}}, {{l-self|kfs|उ}}, {{l-self|kfs|ऊ}}, {{l-self|kfs|ए}}, {{l-self|kfs|ऐ}}, {{l-self|kfs|ओ}}, {{l-self|kfs|औ}}, {{l-self|kfs|अँ}}, {{l-self|kfs|अं}}, {{l-self|kfs|क}}, {{l-self|kfs|ख}}, {{l-self|kfs|ग }}, {{l-self|kfs|घ}}, {{l-self|kfs|ङ}}, {{l-self|kfs|च}}, {{l-self|kfs|छ}}, {{l-self|kfs|ज}}, {{l-self|kfs|झ}}, {{l-self|kfs|ञ}}, {{l-self|kfs|ट}}, {{l-self|kfs|ठ}}, {{l-self|kfs|ड}}, {{l-self|kfs|ड़}}, {{l-self|kfs|ढ}}, {{l-self|kfs|ण}}, {{l-self|kfs|त}}, {{l-self|kfs|थ}}, {{l-self|kfs|द}}, {{l-self|kfs|ध}}, {{l-self|kfs|न}}, {{l-self|kfs|प}}, {{l-self|kfs|फ}}, {{l-self|kfs|ब}}, {{l-self|kfs|भ}}, {{l-self|kfs|म}}, {{l-self|kfs|य}}, {{l-self|kfs|र}}, {{l-self|kfs|ल}}, {{l-self|kfs|व}}, {{l-self|kfs|ल़}}, {{l-self|kfs|श}}, {{l-self|kfs|ष}}, {{l-self|kfs|स}}, {{l-self|kfs|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kfs|author=The Love Fellowship|work=बिलासपुरी नौआं नियम|year=2025|entry=प्रकाशितवाक्य 4|entryurl=https://www.bible.com/bible/2768/REV.4.KFSNT}} =={{langname|biy}}== ==={{ĐM|pron}}=== *{{IPA4|biy|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|biy|Chữ cái|tr=gh}} #Phụ âm thứ 5 trong tiếng Birhor, viết bằng chữ Devanagari. #:{{ux|biy|'''घा'''व|[[vết thương]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Birhor|list={{l-self|biy|अ}}, {{l-self|biy|आ}}, {{l-self|biy|इ}}, {{l-self|biy|ई}}, {{l-self|biy|उ}}, {{l-self|biy|ऊ}}, {{l-self|biy|ए}}, {{l-self|biy|ऐ}}, {{l-self|biy|ओ}}, {{l-self|biy|औ}}, {{l-self|biy|क}}, {{l-self|biy|क्ष}}, {{l-self|biy|ख}}, {{l-self|biy|ग}}, {{l-self|biy|घ}}, {{l-self|biy|ङ}}, {{l-self|biy|च}}, {{l-self|biy|छ}}, {{l-self|biy|ज}}, {{l-self|biy|झ}}, {{l-self|biy|ञ}}, {{l-self|biy|ट}}, {{l-self|biy|ठ}}, {{l-self|biy|ड}}, {{l-self|biy|ड़}}, {{l-self|biy|ढ}}, {{l-self|biy|ण}}, {{l-self|biy|त}}, {{l-self|biy|थ}}, {{l-self|biy|द}}, {{l-self|biy|ध}}, {{l-self|biy|न}}, {{l-self|biy|प}}, {{l-self|biy|फ}}, {{l-self|biy|ब}}, {{l-self|biy|भ}}, {{l-self|biy|म}}, {{l-self|biy|य}}, {{l-self|biy|र}}, {{l-self|biy|ल}}, {{l-self|biy|ळ}}, {{l-self|biy|व}}, {{l-self|biy|श}}, {{l-self|biy|ष}}, {{l-self|biy|स}}, {{l-self|biy|ह}}}} ==={{ĐM|ref}}=== *[https://livingdictionaries.app/birhor/entries/list Từ điển tiếng Birhor] tại Living Dictionaries. =={{langname|brx}}== ==={{ĐM|pron}}=== *{{IPA4|brx|[ɡɦɔ]}} ==={{ĐM|letter}}=== {{head|brx|Chữ cái|tr=gho}} #Phụ âm thứ 4 trong tiếng Bodo, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Bodo|list={{l-self|brx|अ}}, {{l-self|brx|आ}}, {{l-self|brx|इ}}, {{l-self|brx|ई}}, {{l-self|brx|उ}}, {{l-self|brx|ऊ}}, {{l-self|brx|ऋ}}, {{l-self|brx|ए}}, {{l-self|brx|ऐ}}, {{l-self|brx|ओ}}, {{l-self|brx|औ}}, {{l-self|brx|क}}, {{l-self|brx|ख}}, {{l-self|brx|ग}}, {{l-self|brx|घ}}, {{l-self|brx|ङ}}, {{l-self|brx|च}}, {{l-self|brx|छ}}, {{l-self|brx|ज}}, {{l-self|brx|ट}}, {{l-self|brx|ठ}}, {{l-self|brx|ड}}, {{l-self|brx|त}}, {{l-self|brx|थ}}, {{l-self|brx|द}}, {{l-self|brx|ध}}, {{l-self|brx|न}}, {{l-self|brx|प}}, {{l-self|brx|फ}}, {{l-self|brx|ब}}, {{l-self|brx|भ}}, {{l-self|brx|म}}, {{l-self|brx|य}}, {{l-self|brx|र}}, {{l-self|brx|ल}}, {{l-self|brx|व}}, {{l-self|brx|श}}, {{l-self|brx|स}}, {{l-self|brx|ह}}, {{l-self|brx|त्}}, {{l-self|brx|ड़}}, {{l-self|brx|ढ़}}, {{l-self|brx|क्ष}}}} =={{langname|bra}}== ==={{ĐM|pron}}=== *{{IPA4|bra|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bra|Chữ cái}} #Phụ âm thứ 4 trong tiếng Braj, viết bằng chữ Devanagari. #:{{ux|bra|मे'''घ'''|[[mây]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Braj|list={{l-self|bra|अ|tr=-}}, {{l-self|bra|आ|tr=-}}, {{l-self|bra|इ|tr=-}}, {{l-self|bra|ई|tr=-}}, {{l-self|bra|उ|tr=-}}, {{l-self|bra|ऊ|tr=-}}, {{l-self|bra|ऋ|tr=-}}, {{l-self|bra|ए|tr=-}}, {{l-self|bra|ऐ|tr=-}}, {{l-self|bra|ओ|tr=-}}, {{l-self|bra|औ|tr=-}}, {{l-self|bra|क|tr=-}}, {{l-self|bra|ख|tr=-}}, {{l-self|bra|ग|tr=-}}, {{l-self|bra|घ|tr=-}}, {{l-self|bra|ङ|tr=-}}, {{l-self|bra|च|tr=-}}, {{l-self|bra|छ|tr=-}}, {{l-self|bra|ज|tr=-}}, {{l-self|bra|झ|tr=-}}, {{l-self|bra|ञ|tr=-}}, {{l-self|bra|ट|tr=-}}, {{l-self|bra|ठ|tr=-}}, {{l-self|bra|ड|tr=-}}, {{l-self|bra|ड़|tr=-}}, {{l-self|bra|ढ|tr=-}}, {{l-self|bra|ढ़|tr=-}}, {{l-self|bra|ण|tr=-}}, {{l-self|bra|त|tr=-}}, {{l-self|bra|थ|tr=-}}, {{l-self|bra|द|tr=-}}, {{l-self|bra|ध|tr=-}}, {{l-self|bra|न|tr=-}}, {{l-self|bra|प|tr=-}}, {{l-self|bra|फ|tr=-}}, {{l-self|bra|ब|tr=-}}, {{l-self|bra|भ|tr=-}}, {{l-self|bra|म|tr=-}}, {{l-self|bra|य|tr=-}}, {{l-self|bra|र|tr=-}}, {{l-self|bra|ल|tr=-}}, {{l-self|bra|व|tr=-}}, {{l-self|bra|श|tr=-}}, {{l-self|bra|ष|tr=-}}, {{l-self|bra|स|tr=-}}, {{l-self|bra|ह|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|title=Braj Bhasha Dictionary|year=19xx|volume=1|pageurl=https://archive.org/details/BrajBhashaDictionary/Braj%20Bhasha%20Dictionary%20Part%201/page/n449|page=448}} *{{Chú thích web|bra|author=New Life Computer Institute|work=बृज भासा|year=2025|entry=मत्‍ती 1|entryurl=https://www.bible.com/bible/3797/MAT.1.BRAJ}} =={{langname|rab}}== ==={{ĐM|pron}}=== *{{IPA4|rab|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|rab|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Camling, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Camling|list={{l-self|rab|अ}}, {{l-self|rab|आ}}, {{l-self|rab|इ}}, {{l-self|rab|ई}}, {{l-self|rab|उ}}, {{l-self|rab|ऊ}}, {{l-self|rab|ए}}, {{l-self|rab|ऐ}}, {{l-self|rab|ओ}}, {{l-self|rab|औ}}, {{l-self|rab|क}}, {{l-self|rab|ख}}, {{l-self|rab|ग}}, {{l-self|rab|घ}}, {{l-self|rab|ङ}}, {{l-self|rab|च}}, {{l-self|rab|छ}}, {{l-self|rab|ज}}, {{l-self|rab|झ}}, {{l-self|rab|ञ}}, {{l-self|rab|ट}}, {{l-self|rab|ठ}}, {{l-self|rab|ड}}, {{l-self|rab|ढ}}, {{l-self|rab|ण}}, {{l-self|rab|त}}, {{l-self|rab|थ}}, {{l-self|rab|द}}, {{l-self|rab|ध}}, {{l-self|rab|न}}, {{l-self|rab|प}}, {{l-self|rab|फ}}, {{l-self|rab|ब}}, {{l-self|rab|भ}}, {{l-self|rab|म}}, {{l-self|rab|य}}, {{l-self|rab|र}}, {{l-self|rab|ल}}, {{l-self|rab|व}}, {{l-self|rab|श}}, {{l-self|rab|ष}}, {{l-self|rab|स}}, {{l-self|rab|ह}}}} =={{langname|cdh}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Chamba|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cdh|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cdh|Chữ cái}} #Phụ âm thứ 4 trong tiếng Chamba, viết bằng chữ Devanagari. #:{{quote|cdh|मैं जाणदा कि इक्क विश्वासी होणे रे तौर पर तुसा री जिन्दगी रा स्तर तिस जगाह् पर नी है जे परमेश्वर ने ठैहराए रा है, इधेरे तांइ चुकन्ने होई जाओ ते अपणी आत्मिक निंद्दर का उठी हो, ते अपणी मसीही खुबियां जो तिन्हेरे मुकणे का पैल्ले फिरी नौए जदेया करी लेयो जे तुसा बिच हल्ले भी हिन। मैं जाणदा कि तेरी '''घ'''टी बड़ी जादा है किजोकी परमेश्वर तेरे कम्मां का खुस नी हिन।|Hãy tỉnh-thức, và làm cho vững sự còn lại, là sự hầu chết; vì ta không thấy công-việc của ngươi là trọn-vẹn trước mặt Đức Chúa Trời ta. ([[s:Khải huyền/3#3:2|Khải huyền 3:2]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagar tiếng Chamba|list={{l-self|cdh|अ|tr=-}}, {{l-self|cdh|आ|tr=-}}, {{l-self|cdh|इ|tr=-}}, {{l-self|cdh|ई|tr=-}}, {{l-self|cdh|उ|tr=-}}, {{l-self|cdh|ऊ|tr=-}}, {{l-self|cdh|ए|tr=-}}, {{l-self|cdh|ऐ|tr=-}}, {{l-self|cdh|ओ|tr=-}}, {{l-self|cdh|औ|tr=-}}, {{l-self|cdh|अँ|tr=-}}, {{l-self|cdh|अः|tr=-}}, {{l-self|cdh|क|tr=-}}, {{l-self|cdh|ख|tr=-}}, {{l-self|cdh|ग|tr=-}}, {{l-self|cdh|घ|tr=-}}, {{l-self|cdh|ङ|tr=-}}, {{l-self|cdh|च|tr=-}}, {{l-self|cdh|छ|tr=-}}, {{l-self|cdh|ज|tr=-}}, {{l-self|cdh|झ|tr=-}}, {{l-self|cdh|ञ|tr=-}}, {{l-self|cdh|ट|tr=-}}, {{l-self|cdh|ठ|tr=-}}, {{l-self|cdh|ड|tr=-}}, {{l-self|cdh|ढ|tr=-}}, {{l-self|cdh|ण|tr=-}}, {{l-self|cdh|त|tr=-}}, {{l-self|cdh|थ|tr=-}}, {{l-self|cdh|द|tr=-}}, {{l-self|cdh|ध|tr=-}}, {{l-self|cdh|न|tr=-}}, {{l-self|cdh|प|tr=-}}, {{l-self|cdh|फ|tr=-}}, {{l-self|cdh|ब|tr=-}}, {{l-self|cdh|भ|tr=-}}, {{l-self|cdh|म|tr=-}}, {{l-self|cdh|य|tr=-}}, {{l-self|cdh|र|tr=-}}, {{l-self|cdh|ल|tr=-}}, {{l-self|cdh|व|tr=-}}, {{l-self|cdh|श|tr=-}}, {{l-self|cdh|ष|tr=-}}, {{l-self|cdh|स|tr=-}}, {{l-self|cdh|ह|tr=-}}, {{l-self|cdh|ड़|tr=-}}, {{l-self|cdh|ढ़|tr=-}}, {{l-self|cdh|ळ|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Julia Bischoffberger|title=The ASJP Database|year=2025|work=[https://asjp.clld.org/languages/CHAMBEALI Wordlist Chambeali]}} *{{Chú thích web|cdh|author=The Love Fellowship|work=चम्बयाली नौआ नियम|year=2025|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/2968/REV.1.CDHNT}} =={{langname|chx}}== ==={{ĐM|pron}}=== *{{IPA4|chx|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|chx|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Chantyal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Chantyal|list={{l-self|chx|अ}}, {{l-self|chx|आ}}, {{l-self|chx|इ}}, {{l-self|chx|ई}}, {{l-self|chx|उ}}, {{l-self|chx|ऊ}}, {{l-self|chx|ए}}, {{l-self|chx|एै}}, {{l-self|chx|ओ}}, {{l-self|chx|औ}}, {{l-self|chx|क}}, {{l-self|chx|ख}}, {{l-self|chx|ग}}, {{l-self|chx|घ}}, {{l-self|chx|ङ}}, {{l-self|chx|क्ह}}, {{l-self|chx|ख्ह}}, {{l-self|chx|च}}, {{l-self|chx|छ}}, {{l-self|chx|ज}}, {{l-self|chx|झ}}, {{l-self|chx|ञ}}, {{l-self|chx|च्ह}}, {{l-self|chx|ञ्ह}}, {{l-self|chx|ट}}, {{l-self|chx|ठ}}, {{l-self|chx|ड}}, {{l-self|chx|ढ}}, {{l-self|chx|त}}, {{l-self|chx|थ}}, {{l-self|chx|द}}, {{l-self|chx|ध}}, {{l-self|chx|न}}, {{l-self|chx|त्ह}}, {{l-self|chx|थ्ह}}, {{l-self|chx|न्ह}}, {{l-self|chx|प}}, {{l-self|chx|फ}}, {{l-self|chx|ब}}, {{l-self|chx|भ}}, {{l-self|chx|म}}, {{l-self|chx|प्ह}}, {{l-self|chx|म्ह}}, {{l-self|chx|य}}, {{l-self|chx|र}}, {{l-self|chx|ल}}, {{l-self|chx|व}}, {{l-self|chx|ऱ्ह}}, {{l-self|chx|ल्ह}}, {{l-self|chx|श}}, {{l-self|chx|स}}, {{l-self|chx|ह}}, {{l-self|chx|स्ह}}, {{l-self|chx|ह्य}}, {{l-self|chx|ह्व}}}} =={{langname|cdm}}== ==={{ĐM|pron}}=== *{{IPA4|cdm|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|cdm|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Chepang, viết bằng chữ Devanagari. #:{{ux|cdm|'''घ'''यःदो|tr='''gha'''yaḥdo|[[tây]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Chepang'') [[अ#Tiếng_Chepang|अ]], [[आ#Tiếng_Chepang|आ]], [[इ#Tiếng_Chepang|इ]], [[उ#Tiếng_Chepang|उ]], [[ए#Tiếng_Chepang|ए]], [[ओ#Tiếng_Chepang|ओ]], [[क#Tiếng_Chepang|क]], [[ख#Tiếng_Chepang|ख]], [[ग#Tiếng_Chepang|ग]], [[घ#Tiếng_Chepang|घ]], [[ङ#Tiếng_Chepang|ङ]], [[ङ्‍ह#Tiếng_Chepang|ङ्‍ह]], [[च#Tiếng_Chepang|च]], [[छ#Tiếng_Chepang|छ]], [[ज#Tiếng_Chepang|ज]], [[झ#Tiếng_Chepang|झ]], [[त#Tiếng_Chepang|त]], [[थ#Tiếng_Chepang|थ]], [[द#Tiếng_Chepang|द]], [[ध#Tiếng_Chepang|ध]], [[न#Tiếng_Chepang|न]], [[न्‍ह#Tiếng_Chepang|न्‍ह]], [[प#Tiếng_Chepang|प]], [[फ#Tiếng_Chepang|फ]], [[ब#Tiếng_Chepang|ब]], [[भ#Tiếng_Chepang|भ]], [[म#Tiếng_Chepang|म]], [[म्‍ह#Tiếng_Chepang|म्‍ह]], [[य#Tiếng_Chepang|य]], [[र#Tiếng_Chepang|र]], [[ह्र#Tiếng_Chepang|ह्र]], [[ल#Tiếng_Chepang|ल]], [[ल्‍ह#Tiếng_Chepang|ल्‍ह]], [[व#Tiếng_Chepang|व]], [[स#Tiếng_Chepang|स]], [[ह#Tiếng_Chepang|ह]], [[ड#Tiếng_Chepang|ड]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Ross Caughley|entry=घ|entryurl=https://www.webonary.org/chepang/en/browse/browse-vernacular-nepali/?letter=%E0%A4%98&key=cdm|publisher=SIL International|year=2016|work=Chepang – Nepali – English Dictionary}} =={{langname|hne}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Chhattisgarh|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hne|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|hne|Chữ cái}} #Phụ âm thứ 4 trong tiếng Chhattisgarh, viết bằng chữ Devanagari. #:{{ux|hne|ज'''घा'''|[[địa điểm]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Chhattisgarh|list={{l-self|hne|अ}}, {{l-self|hne|आ}}, {{l-self|hne|इ}}, {{l-self|hne|ई}}, {{l-self|hne|उ}}, {{l-self|hne|ऊ}}, {{l-self|hne|ऋ}}, {{l-self|hne|ए}}, {{l-self|hne|ऐ}}, {{l-self|hne|ओ}}, {{l-self|hne|औ}}, {{l-self|hne|अं}}, {{l-self|hne|अः}}, {{l-self|hne|अँ}}, {{l-self|hne|क}}, {{l-self|hne|ख}}, {{l-self|hne|ग}}, {{l-self|hne|घ}}, {{l-self|hne|ङ}}, {{l-self|hne|च}}, {{l-self|hne|छ}}, {{l-self|hne|ज}}, {{l-self|hne|झ}}, {{l-self|hne|ञ}}, {{l-self|hne|ट}}, {{l-self|hne|ठ}}, {{l-self|hne|ड}}, {{l-self|hne|ढ}}, {{l-self|hne|ण}}, {{l-self|hne|त}}, {{l-self|hne|थ}}, {{l-self|hne|द}}, {{l-self|hne|ध}}, {{l-self|hne|न}}, {{l-self|hne|प}}, {{l-self|hne|फ}}, {{l-self|hne|ब}}, {{l-self|hne|भ}}, {{l-self|hne|म}}, {{l-self|hne|य}}, {{l-self|hne|र}}, {{l-self|hne|ल}}, {{l-self|hne|व}}, {{l-self|hne|श}}, {{l-self|hne|ष}}, {{l-self|hne|स}}, {{l-self|hne|ह}}, {{l-self|hne|क्ष}}, {{l-self|hne|त्र}}, {{l-self|hne|ज्ञ}}, {{l-self|hne|श्र}}, {{l-self|hne|ड़}}, {{l-self|hne|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hne|author=Biblica, Inc.|work=पबितर बाईबल,समकालीन छत्तीसगढ़ी अनुवाद|year=2024|entry=उतपत्ती 1|entryurl=https://ebible.org/hne/GEN01.htm}} =={{langname|cih}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Chinal|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cih|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cih|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Chinal. #:{{ux|cih|मे'''घ'''|tr=me'''gh'''|[[tuyết]]|inline=1}} =={{langname|cdj}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Churah|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|cdj|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|cdj|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Churah. #:{{ux|cdj|मै'''घ'''|[[mưa]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|cdj|author=Beyond Translation|work=चुराही नवाँ नियम|year=2020|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/3250/REV.1.CDJNT}} =={{langname|dhw}}== ==={{ĐM|pron}}=== *{{IPA4|dhw|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dhw|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Danuwar, viết bằng chữ Devanagari. #:{{quote|dhw|तब मरियम तिन महिना तलिक एलिसिबासङ रहले आ आप्‍न '''घ'''र '''घु'''मिक एले।|tr=taba mariyama tina mahina talika elisibāsaṅ rahale ā āpna '''gha'''ra '''ghu'''mika ele.|Ma-ri ở với Ê-li-sa-bét chừng ba tháng, rồi trở về nhà mình. ([[s:Lu-ca/1#1:56|Lu-ca 1:56]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Danuwar|list={{l-self|dhw|अ}}, {{l-self|dhw|आ}}, {{l-self|dhw|इ}}, {{l-self|dhw|ई}}, {{l-self|dhw|उ}}, {{l-self|dhw|ऊ}}, {{l-self|dhw|ए}}, {{l-self|dhw|ऐ}}, {{l-self|dhw|ओ}}, {{l-self|dhw|औ}}, {{l-self|dhw|अँ}}, {{l-self|dhw|क}}, {{l-self|dhw|ख}}, {{l-self|dhw|ग}}, {{l-self|dhw|घ}}, {{l-self|dhw|ङ}}, {{l-self|dhw|च}}, {{l-self|dhw|छ}}, {{l-self|dhw|ज}}, {{l-self|dhw|झ}}, {{l-self|dhw|ञ}}, {{l-self|dhw|ट}}, {{l-self|dhw|ठ}}, {{l-self|dhw|ड}}, {{l-self|dhw|ढ}}, {{l-self|dhw|ण}}, {{l-self|dhw|त}}, {{l-self|dhw|थ}}, {{l-self|dhw|द}}, {{l-self|dhw|ध}}, {{l-self|dhw|न}}, {{l-self|dhw|प}}, {{l-self|dhw|फ}}, {{l-self|dhw|ब}}, {{l-self|dhw|भ}}, {{l-self|dhw|म}}, {{l-self|dhw|य}}, {{l-self|dhw|र}}, {{l-self|dhw|ल}}, {{l-self|dhw|व}}, {{l-self|dhw|श}}, {{l-self|dhw|ष}}, {{l-self|dhw|स}}, {{l-self|dhw|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|dhw|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/4355/LUK.1.DANU|entry=लुका 1|work=दनुवारि|year=2024}} =={{langname|dhn}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Dhanka|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|dhn|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dhn|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Dhanka, viết bằng chữ Devanagari. #:{{quote|dhn|काय असी काहली वात छे, जेका वाराम लोगहन कय सके की देख यी नवली छे? यी ते वेगला वाराम हामरे सी '''घ'''ण पेहले सी हुयती आय रयी।|tr=Kāy asī kāhalī vāt che, jekā vārām loghan kay sake kī dekh yī navalī che? Yī te veglā vārām hāmre sī '''gha'''ṇ pehale sī huytī āy rayī.|Nếu có một vật chi mà người ta nói rằng: Hãy xem, cái nầy mới, vật ấy thật đã có rồi trong các thời-đời trước ta. ([[s:Truyền đạo/1#1:10|Truyền đạo 1:10]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Dhanka|list={{l-self|dhn|अ}}, {{l-self|dhn|आ}}, {{l-self|dhn|इ}}, {{l-self|dhn|ई}}, {{l-self|dhn|उ}}, {{l-self|dhn|ऊ}}, {{l-self|dhn|ए}}, {{l-self|dhn|ऐ}}, {{l-self|dhn|ओ}}, {{l-self|dhn|औ}}, {{l-self|dhn|अं}}, {{l-self|dhn|क}}, {{l-self|dhn|ख}}, {{l-self|dhn|ग}}, {{l-self|dhn|घ}}, {{l-self|dhn|ङ}}, {{l-self|dhn|च}}, {{l-self|dhn|ज}}, {{l-self|dhn|ट}}, {{l-self|dhn|ठ}}, {{l-self|dhn|ड}}, {{l-self|dhn|ढ}}, {{l-self|dhn|ण}}, {{l-self|dhn|त}}, {{l-self|dhn|थ}}, {{l-self|dhn|द}}, {{l-self|dhn|ध}}, {{l-self|dhn|न}}, {{l-self|dhn|प}}, {{l-self|dhn|फ}}, {{l-self|dhn|ब}}, {{l-self|dhn|भ}}, {{l-self|dhn|म}}, {{l-self|dhn|य}}, {{l-self|dhn|र}}, {{l-self|dhn|ल}}, {{l-self|dhn|ळ}}, {{l-self|dhn|व}}, {{l-self|dhn|श}}, {{l-self|dhn|स}}, {{l-self|dhn|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|dhn|author=The Word for the World International|entryurl=https://www.bible.com/bible/4055/ECC.1.DII25|entry=सभोपदेशक 1|work=परमेश्वरन सत्य वचन, नवलो नियम|year=2020}} =={{langname|mki}}== ==={{ĐM|pron}}=== *{{IPA4|mki|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|mki|Chữ cái|tr=gha}} #Phụ âm thứ 8 trong tiếng Dhatki, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Dhatki'') [[अ#Tiếng_Dhatki|अ]], [[आ#Tiếng_Dhatki|आ]], [[इ#Tiếng_Dhatki|इ]], [[ई#Tiếng_Dhatki|ई]], [[उ#Tiếng_Dhatki|उ]], [[ऊ#Tiếng_Dhatki|ऊ]], [[ए#Tiếng_Dhatki|ए]], [[ऐ#Tiếng_Dhatki|ऐ]], [[ओ#Tiếng_Dhatki|ओ]], [[औ#Tiếng_Dhatki|औ]], [[क#Tiếng_Dhatki|क]], [[क़#Tiếng_Dhatki|क़]], [[ख#Tiếng_Dhatki|ख]], [[ख़#Tiếng_Dhatki|ख़]], [[ग#Tiếng_Dhatki|ग]], [[ग़#Tiếng_Dhatki|ग़]], [[ॻ#Tiếng_Dhatki|ॻ]], [[घ#Tiếng_Dhatki|घ]], [[ङ#Tiếng_Dhatki|ङ]], [[च#Tiếng_Dhatki|च]], [[छ#Tiếng_Dhatki|छ]], [[ज#Tiếng_Dhatki|ज]], [[ज़#Tiếng_Dhatki|ज़]], [[ॼ#Tiếng_Dhatki|ॼ]], [[झ#Tiếng_Dhatki|झ]], [[ञ#Tiếng_Dhatki|ञ]], [[ट#Tiếng_Dhatki|ट]], [[ठ#Tiếng_Dhatki|ठ]], [[ड#Tiếng_Dhatki|ड]], [[ड़#Tiếng_Dhatki|ड़]], [[ॾ#Tiếng_Dhatki|ॾ]], [[ढ#Tiếng_Dhatki|ढ]], [[ढ़#Tiếng_Dhatki|ढ़]], [[ण#Tiếng_Dhatki|ण]], [[त#Tiếng_Dhatki|त]], [[थ#Tiếng_Dhatki|थ]], [[द#Tiếng_Dhatki|द]], [[ध#Tiếng_Dhatki|ध]], [[न#Tiếng_Dhatki|न]], [[प#Tiếng_Dhatki|प]], [[फ#Tiếng_Dhatki|फ]], [[फ़#Tiếng_Dhatki|फ़]], [[ब#Tiếng_Dhatki|ब]], [[ॿ#Tiếng_Dhatki|ॿ]], [[भ#Tiếng_Dhatki|भ]], [[म#Tiếng_Dhatki|म]], [[य#Tiếng_Dhatki|य]], [[र#Tiếng_Dhatki|र]], [[ल#Tiếng_Dhatki|ल]], [[ळ#Tiếng_Dhatki|ळ]], [[व#Tiếng_Dhatki|व]], [[श#Tiếng_Dhatki|श]], [[ष#Tiếng_Dhatki|ष]], [[स#Tiếng_Dhatki|स]], [[ह#Tiếng_Dhatki|ह]] =={{langname|dhi}}== ==={{ĐM|pron}}=== *{{IPA4|dhi|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|dhi|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Dhimal, viết bằng chữ Devanagari. #:{{ux|dhi|'''घ'''ङगर|tr='''gha'''ṅgara|[[màn]] [[che]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Dhimal'') [[अ#Tiếng_Dhimal|अ]], [[आ#Tiếng_Dhimal|आ]], [[आः#Tiếng_Dhimal|आः]], [[इ#Tiếng_Dhimal|इ]], [[इः#Tiếng_Dhimal|इः]], [[उ#Tiếng_Dhimal|उ]], [[उः#Tiếng_Dhimal|उः]], [[ए#Tiếng_Dhimal|ए]], [[एः#Tiếng_Dhimal|एः]], [[ओ#Tiếng_Dhimal|ओ]], [[ओः#Tiếng_Dhimal|ओः]], [[अँ#Tiếng_Dhimal|अँ]], [[अ्#Tiếng_Dhimal|अ्]], [[क#Tiếng_Dhimal|क]], [[ख#Tiếng_Dhimal|ख]], [[ग#Tiếng_Dhimal|ग]], [[घ#Tiếng_Dhimal|घ]], [[ङ#Tiếng_Dhimal|ङ]], [[च#Tiếng_Dhimal|च]], [[छ#Tiếng_Dhimal|छ]], [[ज#Tiếng_Dhimal|ज]], [[झ#Tiếng_Dhimal|झ]], [[ट#Tiếng_Dhimal|ट]], [[ठ#Tiếng_Dhimal|ठ]], [[ड#Tiếng_Dhimal|ड]], [[ढ#Tiếng_Dhimal|ढ]], [[त#Tiếng_Dhimal|त]], [[थ#Tiếng_Dhimal|थ]], [[द#Tiếng_Dhimal|द]], [[ध#Tiếng_Dhimal|ध]], [[न#Tiếng_Dhimal|न]], [[न्ह#Tiếng_Dhimal|न्ह]], [[प#Tiếng_Dhimal|प]], [[फ#Tiếng_Dhimal|फ]], [[ब#Tiếng_Dhimal|ब]], [[भ#Tiếng_Dhimal|भ]], [[म#Tiếng_Dhimal|म]], [[म्ह#Tiếng_Dhimal|म्ह]], [[य#Tiếng_Dhimal|य]], [[य्ह#Tiếng_Dhimal|य्ह]], [[र#Tiếng_Dhimal|र]], [[ऱ्ह#Tiếng_Dhimal|ऱ्ह]], [[ल#Tiếng_Dhimal|ल]], [[ल्ह#Tiếng_Dhimal|ल्ह]], [[व#Tiếng_Dhimal|व]], [[व्ह#Tiếng_Dhimal|व्ह]], [[स#Tiếng_Dhimal|स]], [[ह#Tiếng_Dhimal|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|work=Dhimal-Nepali-English Dictionary|entryurl=https://www.webonary.org/dhimal/en/browse/browse-vernacular-nepali/?key=dhi&letter=%E0%A4%98|entry=घ|year=2020|publisher=SIL International}} =={{langname|dho}}== ==={{ĐM|pron}}=== *{{IPA4|dho|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|dho|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Dhodia. =={{langname|doi}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Dogri|𑚍]] |- ! Dogri | [[𑠍#Tiếng_Dogri|𑠍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|doi|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|doi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Dogri, viết bằng chữ Devanagari. #:{{ux|doi|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Dogri|list={{l-self|doi|अ}}, {{l-self|doi|आ}}, {{l-self|doi|इ}}, {{l-self|doi|ई}}, {{l-self|doi|उ}}, {{l-self|doi|ऊ}}, {{l-self|doi|ऋ}}, {{l-self|doi|ए}}, {{l-self|doi|ऐ}}, {{l-self|doi|ओ}}, {{l-self|doi|औ}}, {{l-self|doi|अं}}, {{l-self|doi|क}}, {{l-self|doi|ख}}, {{l-self|doi|ग}}, {{l-self|doi|घ}}, {{l-self|doi|ङ}}, {{l-self|doi|च}}, {{l-self|doi|छ}}, {{l-self|doi|ज}}, {{l-self|doi|झ}}, {{l-self|doi|ञ}}, {{l-self|doi|ट}}, {{l-self|doi|ठ}}, {{l-self|doi|ड}}, {{l-self|doi|ढ}}, {{l-self|doi|ण}}, {{l-self|doi|त}}, {{l-self|doi|थ}}, {{l-self|doi|द}}, {{l-self|doi|ध}}, {{l-self|doi|न}}, {{l-self|doi|प}}, {{l-self|doi|फ}}, {{l-self|doi|ब}}, {{l-self|doi|भ}}, {{l-self|doi|म}}, {{l-self|doi|य}}, {{l-self|doi|र}}, {{l-self|doi|ल}}, {{l-self|doi|व}}, {{l-self|doi|श}}, {{l-self|doi|ष}}, {{l-self|doi|स}}, {{l-self|doi|ह}}, {{l-self|doi|क्ष}}, {{l-self|doi|त्र}}, {{l-self|doi|ज्ञ}}, {{l-self|doi|ज़}}, {{l-self|doi|थ़}}, {{l-self|doi|ड़}}, {{l-self|doi|ढ़}}, {{l-self|doi|फ़}}}} =={{langname|dgo}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Dogri_Hindi|𑚍]] |- ! Ả Rập | [[غ#Tiếng_Dogri_Hindi|غ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|dgo|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|dgo|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Dogri Hindi. #:{{quote|dgo|लेकन आं, सरदीस च तेरे इत्थैं ऐसे लोग बी ऐ, जिन्हैं अपने-अपने कपड़े गन्दा नेई कित्ते, ओ सफेद कपड़े लाए दे मेरे कन्ने कुम'''घ'''न, किके ओ एस जोगे न।|tr=Lekana āṃ, sardīs ca tere itthaiṃ aise log bī ai, jinheṃ apne-apne kapṛe gandā neī kittē, o saphed kapṛe lāe de mere kanne kum'''gh'''an, kike o es joge ne.|Nhưng, ở Sạt-đe, ngươi còn có mấy người chưa làm ô-uế áo-xống mình: những kẻ đó sẽ mặc áo trắng mà đi cùng ta, vì họ xứng-đáng như vậy. ([[s:Khải huyền/3#3:4|Khải huyền 3:4]])}} ==={{ĐM|ref}}=== *{{Chú thích web|dgo|author=The Love Fellowship|work=डोगरी नवां नियम|year=2026|entry=प्रकाशितवाक्य 3|entryurl=https://www.bible.com/bible/2958/REV.3.DOG}} =={{langname|dty}}== ==={{ĐM|pron}}=== *{{IPA4|dty|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|dty|Chữ cái}} #Phụ âm thứ 4 trong tiếng Doteli, viết bằng chữ Devanagari. #:{{quote|dty|सुण, तमरा हृदयमि पस्साइलाइ, म '''घ'''रको बाइर कल्लिर्या रे ढोका ढकढक अददार्या मान्स जसो हुँ। यदि तमले मेरो आवाज सुण्या रे मेरी निउति आफ्नो हृदय खोल्या भण्या, म भितर आउनउ रे हाम एक अर्खासित संङइ संगति अद्दया हौ।|Nầy, ta đứng ngoài cửa mà gõ; nếu ai nghe tiếng ta mà mở cửa cho, thì ta sẽ vào cùng người ấy, ăn bữa tối với người, và người với ta. ([[s:Khải huyền/3#3:20|Khải huyền 3:20]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Doteli'') [[अ#Tiếng_Doteli|अ]], [[आ#Tiếng_Doteli|आ]], [[इ#Tiếng_Doteli|इ]], [[ई#Tiếng_Doteli|ई]], [[उ#Tiếng_Doteli|उ]], [[ऊ#Tiếng_Doteli|ऊ]], [[ए#Tiếng_Doteli|ए]], [[ऐ#Tiếng_Doteli|ऐ]], [[ओ#Tiếng_Doteli|ओ]], [[औ#Tiếng_Doteli|औ]], [[अं#Tiếng_Doteli|अं]], [[अः#Tiếng_Doteli|अः]], [[अँ#Tiếng_Doteli|अँ]], [[क#Tiếng_Doteli|क]], [[ख#Tiếng_Doteli|ख]], [[ग#Tiếng_Doteli|ग]], [[घ#Tiếng_Doteli|घ]], [[ङ#Tiếng_Doteli|ङ]], [[च#Tiếng_Doteli|च]], [[छ#Tiếng_Doteli|छ]], [[ज#Tiếng_Doteli|ज]], [[झ#Tiếng_Doteli|झ]], [[ञ#Tiếng_Doteli|ञ]], [[ट#Tiếng_Doteli|ट]], [[ठ#Tiếng_Doteli|ठ]], [[ड#Tiếng_Doteli|ड]], [[ढ#Tiếng_Doteli|ढ]], [[ण#Tiếng_Doteli|ण]], [[त#Tiếng_Doteli|त]], [[थ#Tiếng_Doteli|थ]], [[द#Tiếng_Doteli|द]], [[ध#Tiếng_Doteli|ध]], [[न#Tiếng_Doteli|न]], [[प#Tiếng_Doteli|प]], [[फ#Tiếng_Doteli|फ]], [[ब#Tiếng_Doteli|ब]], [[भ#Tiếng_Doteli|भ]], [[म#Tiếng_Doteli|म]], [[य#Tiếng_Doteli|य]], [[र#Tiếng_Doteli|र]], [[ल#Tiếng_Doteli|ल]], [[ळ#Tiếng_Doteli|ळ]], [[व#Tiếng_Doteli|व]], [[श#Tiếng_Doteli|श]], [[स#Tiếng_Doteli|स]], [[स#Tiếng_Doteli|स]], [[ह#Tiếng_Doteli|ह]], [[ड़#Tiếng_Doteli|ड़]], [[ढ़#Tiếng_Doteli|ढ़]] ==={{ĐM|ref}}=== *{{Chú thích web|dty|author=Beyond Translation|entryurl=https://www.bible.com/bible/3503/REV.3.DTYNT|entry=प्रकाश 3|work=डोटेली नयाँ करार|year=2025}} =={{langname|dus}}== ==={{ĐM|pron}}=== *{{IPA4|dus|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|dus|Chữ cái|tr=gh}} #Chữ cái Devanagari thể hiện phụ âm '''/ɡʰ/''' trong tiếng Dumi. #:{{ux|dus|'''घ'''री|tr='''gha'''rī|[[thời gian]]|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/en/browse/browse-vernacular-nepali/?key=dus&letter=%E0%A4%98|entry=घ|year=2016|publisher=SIL International}} =={{langname|gbk}}== ==={{ĐM|pron}}=== *{{IPA4|gbk|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|gbk|Chữ cái}} #Phụ âm thứ 4 trong tiếng Gaddi, viết bằng chữ Devanagari. #:{{ux|gbk|सिं'''घ'''णा|[[ngửi]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Gaddi|list={{l-self|gbk|अ}}, {{l-self|gbk|आ}}, {{l-self|gbk|इ}}, {{l-self|gbk|ई}}, {{l-self|gbk|उ}}, {{l-self|gbk|ऊ}}, {{l-self|gbk|ए}}, {{l-self|gbk|ऐ}}, {{l-self|gbk|ओ}}, {{l-self|gbk|औ}}, {{l-self|gbk|अँ}}, {{l-self|gbk|अं}}, {{l-self|gbk|क}}, {{l-self|gbk|ख}}, {{l-self|gbk|ग }}, {{l-self|gbk|घ}}, {{l-self|gbk|च}}, {{l-self|gbk|छ}}, {{l-self|gbk|ज}}, {{l-self|gbk|झ}}, {{l-self|gbk|ट}}, {{l-self|gbk|ठ}}, {{l-self|gbk|ड}}, {{l-self|gbk|ड़}}, {{l-self|gbk|ढ}}, {{l-self|gbk|ण}}, {{l-self|gbk|त}}, {{l-self|gbk|थ}}, {{l-self|gbk|द}}, {{l-self|gbk|ध}}, {{l-self|gbk|न}}, {{l-self|gbk|प}}, {{l-self|gbk|फ}}, {{l-self|gbk|ब}}, {{l-self|gbk|भ}}, {{l-self|gbk|म}}, {{l-self|gbk|य}}, {{l-self|gbk|र}}, {{l-self|gbk|ल}}, {{l-self|gbk|व}}, {{l-self|gbk|ल़}}, {{l-self|gbk|श}}/{{l-self|gbk|स}}, {{l-self|gbk|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbk|author=The Love Fellowship|work=गददी|year=2025|entry=प्रकाशित वाक्य 1|entryurl=https://www.bible.com/bible/2959/REV.1.GBKNT}} =={{langname|gbl}}== {| class="floatright wikitable" style="text-align:center;" |- ! Gujarat | [[ઘ#Tiếng_Gamit|ઘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|gbl|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gbl|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Gamit, viết bằng chữ Devanagari. #:{{quote|gbl|एने च्याल वोळखी लेदो का ओ तोज हेय जो देवाळा सुंदर नांवा बाअणा पाय बोहीन बिख मागे, एने च्ये ये '''घ'''टना कोय जीं च्याआरे जायली, च्ये बोज नोवाय पामीन चमकाय गीये।|tr=Ene cyāl voḷkhī ledo kā o toj hey jo devāḷā sundar nāṃvā bāaṇā pāy bohīn bikh māge, ene cye ye '''gha'''ṭanā koy jīṃ cyāāre jāylī, cye boj novāy pāmīn camakāy gīye.|Người ta nhận là chính người đó đã ngồi tại Cửa Đẹp đền-thờ đặng xin bố-thí; nên đều bỡ-ngỡ và sững-sờ về việc đã xảy đến cho người. ([[s:Công vụ các Sứ đồ/3#3:10|Công vụ các Sứ đồ 3:10]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Gamit|list={{l-self|gbl|अ}}, {{l-self|gbl|आ}}, {{l-self|gbl|इ}}, {{l-self|gbl|ई}}, {{l-self|gbl|उ}}, {{l-self|gbl|ऊ}}, {{l-self|gbl|ए}}, {{l-self|gbl|ऐ}}, {{l-self|gbl|ओ}}, {{l-self|gbl|औ}}, {{l-self|gbl|अं}}, {{l-self|gbl|क}}, {{l-self|gbl|ख}}, {{l-self|gbl|ग}}, {{l-self|gbl|घ}}, {{l-self|gbl|ङ}}, {{l-self|gbl|च}}, {{l-self|gbl|ज}}, {{l-self|gbl|ट}}, {{l-self|gbl|ठ}}, {{l-self|gbl|ड}}, {{l-self|gbl|ढ}}, {{l-self|gbl|ण}}, {{l-self|gbl|त}}, {{l-self|gbl|थ}}, {{l-self|gbl|द}}, {{l-self|gbl|ध}}, {{l-self|gbl|न}}, {{l-self|gbl|प}}, {{l-self|gbl|फ}}, {{l-self|gbl|ब}}, {{l-self|gbl|भ}}, {{l-self|gbl|म}}, {{l-self|gbl|य}}, {{l-self|gbl|र}}, {{l-self|gbl|ल}}, {{l-self|gbl|ळ}}, {{l-self|gbl|व}}, {{l-self|gbl|श}}, {{l-self|gbl|स}}, {{l-self|gbl|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbl|author=Beyond Translation|entryurl=https://www.bible.com/bible/3504/ACT.3.GBLNT|entry=પ્રેષિતોનાં ક્રત્યો 3|work=ગામીત નોવો કરાર|year=2025}} =={{langname|gas}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Garasia_Adiwasi|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gas|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gas|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Garasia Adiwasi, viết bằng chữ Devanagari. #:{{quote|gas|फेंर शेतान इसु नं '''घ'''णास उंसा डुंगोर इपेर लेंज्यो अने आखी दुन्य नुं राज अने वैभव वताडेने,|tr=Phēṃra śētāna isu naṃ '''gha'''ṇāsa uṃsā ḍuṃgora ipēra leṃjyo ane ākhī dunyā nuṃ rāja ane vaibhava vatāḍene.|Ma-quỉ lại đem Ngài lên trên núi rất cao, chỉ cho Ngài các nước thế-gian, cùng sự vinh-hiển các nước ấy; ([[s:Ma-thi-ơ/4#4:8|Ma-thi-ơ 4:8]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garasia Adiwasi|list={{l-self|gas|अ}}, {{l-self|gas|आ}}, {{l-self|gas|इ}}, {{l-self|gas|ई}}, {{l-self|gas|उ}}, {{l-self|gas|ऊ}}, {{l-self|gas|ए}}, {{l-self|gas|ऐ}}, {{l-self|gas|ओ}}, {{l-self|gas|औ}}, {{l-self|gas|अं}}, {{l-self|gas|क}}, {{l-self|gas|ख}}, {{l-self|gas|ग}}, {{l-self|gas|घ}}, {{l-self|gas|ङ}}, {{l-self|gas|च}}, {{l-self|gas|ज}}, {{l-self|gas|ट}}, {{l-self|gas|ठ}}, {{l-self|gas|ड}}, {{l-self|gas|ढ}}, {{l-self|gas|ण}}, {{l-self|gas|त}}, {{l-self|gas|थ}}, {{l-self|gas|द}}, {{l-self|gas|ध}}, {{l-self|gas|न}}, {{l-self|gas|प}}, {{l-self|gas|फ}}, {{l-self|gas|ब}}, {{l-self|gas|भ}}, {{l-self|gas|म}}, {{l-self|gas|य}}, {{l-self|gas|र}}, {{l-self|gas|ल}}, {{l-self|gas|ळ}}, {{l-self|gas|व}}, {{l-self|gas|श}}, {{l-self|gas|स}}, {{l-self|gas|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gas|author=The Love Fellowship|entryurl=https://www.bible.com/bible/3442/MAT.4.GASNT|entry=મત્તિ 4|work=ગરાસિયા નવો કરાર|year=2024}} =={{langname|gra}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Garasia_Rajput|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gra|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gra|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Garasia Rajput, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garasia Rajput|list={{l-self|gra|अ}}, {{l-self|gra|आ}}, {{l-self|gra|इ}}, {{l-self|gra|ई}}, {{l-self|gra|उ}}, {{l-self|gra|ऊ}}, {{l-self|gra|ए}}, {{l-self|gra|ऐ}}, {{l-self|gra|ओ}}, {{l-self|gra|औ}}, {{l-self|gra|अं}}, {{l-self|gra|क}}, {{l-self|gra|ख}}, {{l-self|gra|ग}}, {{l-self|gra|घ}}, {{l-self|gra|ङ}}, {{l-self|gra|च}}, {{l-self|gra|ज}}, {{l-self|gra|ट}}, {{l-self|gra|ठ}}, {{l-self|gra|ड}}, {{l-self|gra|ढ}}, {{l-self|gra|ण}}, {{l-self|gra|त}}, {{l-self|gra|थ}}, {{l-self|gra|द}}, {{l-self|gra|ध}}, {{l-self|gra|न}}, {{l-self|gra|प}}, {{l-self|gra|फ}}, {{l-self|gra|ब}}, {{l-self|gra|भ}}, {{l-self|gra|म}}, {{l-self|gra|य}}, {{l-self|gra|र}}, {{l-self|gra|ल}}, {{l-self|gra|ळ}}, {{l-self|gra|व}}, {{l-self|gra|श}}, {{l-self|gra|स}}, {{l-self|gra|ह}}}} =={{langname|gbm}}== ==={{ĐM|pron}}=== *{{IPA4|gbm|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|gbm|Chữ cái}} #Phụ âm thứ 4 trong tiếng Garhwal, viết bằng chữ Devanagari. #:{{ux|gbm|'''घं''''टा|[[giờ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Garhwal|list={{l-self|gbm|अ|tr=-}}, {{l-self|gbm|आ|tr=-}}, {{l-self|gbm|इ|tr=-}}, {{l-self|gbm|ई|tr=-}}, {{l-self|gbm|उ|tr=-}}, {{l-self|gbm|ऊ|tr=-}}, {{l-self|gbm|ए|tr=-}}, {{l-self|gbm|ऐ|tr=-}}, {{l-self|gbm|ओ|tr=-}}, {{l-self|gbm|औ|tr=-}}, {{l-self|gbm|अं|tr=-}}, {{l-self|gbm|अँ|tr=-}}, {{l-self|gbm|अइ|tr=-}}, {{l-self|gbm|आइ|tr=-}}, {{l-self|gbm|अउ|tr=-}}, {{l-self|gbm|आउ|tr=-}}, {{l-self|gbm|इउ|tr=-}}, {{l-self|gbm|उइ|tr=-}}, {{l-self|gbm|क|tr=-}}, {{l-self|gbm|ख|tr=-}}, {{l-self|gbm|ग|tr=-}}, {{l-self|gbm|घ|tr=-}}, {{l-self|gbm|ङ|tr=-}}, {{l-self|gbm|च|tr=-}}, {{l-self|gbm|छ|tr=-}}, {{l-self|gbm|ज|tr=-}}, {{l-self|gbm|झ|tr=-}}, {{l-self|gbm|ञ|tr=-}}, {{l-self|gbm|ट|tr=-}}, {{l-self|gbm|ठ|tr=-}}, {{l-self|gbm|ड|tr=-}}, {{l-self|gbm|ढ|tr=-}}, {{l-self|gbm|ण|tr=-}}, {{l-self|gbm|त|tr=-}}, {{l-self|gbm|थ|tr=-}}, {{l-self|gbm|द|tr=-}}, {{l-self|gbm|ध|tr=-}}, {{l-self|gbm|न|tr=-}}, {{l-self|gbm|प|tr=-}}, {{l-self|gbm|फ|tr=-}}, {{l-self|gbm|ब|tr=-}}, {{l-self|gbm|भ|tr=-}}, {{l-self|gbm|म|tr=-}}, {{l-self|gbm|य|tr=-}}, {{l-self|gbm|र|tr=-}}, {{l-self|gbm|ल|tr=-}}, {{l-self|gbm|ळ|tr=-}}, {{l-self|gbm|व|tr=-}}, {{l-self|gbm|श|tr=-}}, {{l-self|gbm|स|tr=-}}, {{l-self|gbm|ह|tr=-}}, {{l-self|gbm|ड़|tr=-}}, {{l-self|gbm|ढ़|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|gbm|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/4037/MAT.27.GBM|entry=मत्ती 27|work=Garhwali|year=2025}} =={{langname|gon}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Gondi_Adilabad|ఘ]] |- ! Devanagari | '''घ''' |- ! Oriya | [[ଘ#Tiếng_Gondi_Adilabad|ଘ]] |- ! Gunjala | [[𑵷#Tiếng_Gondi_Adilabad|𑵷]] |- ! Masara | [[𑴏#Tiếng_Gondi_Adilabad|𑴏]] |- |} ==={{ĐM|pron}}=== *{{IPA4|gon|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|gon|Chữ cái}} #Phụ âm thứ 4 trong tiếng Gondi Aheri, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Gondi'') [[अ#Tiếng_Gondi_Adilabad|अ]], [[आ#Tiếng_Gondi_Adilabad|आ]], [[इ#Tiếng_Gondi_Adilabad|इ]], [[ई#Tiếng_Gondi_Adilabad|ई]], [[उ#Tiếng_Gondi_Adilabad|उ]], [[ऊ#Tiếng_Gondi_Adilabad|ऊ]], [[ऋ#Tiếng_Gondi_Adilabad|ऋ]], [[ए#Tiếng_Gondi_Adilabad|ए]], [[ऐ#Tiếng_Gondi_Adilabad|ऐ]], [[ओ#Tiếng_Gondi_Adilabad|ओ]], [[औ#Tiếng_Gondi_Adilabad|औ]], [[अं#Tiếng_Gondi_Adilabad|अं]], [[अः#Tiếng_Gondi_Adilabad|अः]], [[अँ#Tiếng_Gondi_Adilabad|अँ]], [[क#Tiếng_Gondi_Adilabad|क]], [[ख#Tiếng_Gondi_Adilabad|ख]], [[ग#Tiếng_Gondi_Adilabad|ग]], [[घ#Tiếng_Gondi_Adilabad|घ]], [[ङ#Tiếng_Gondi_Adilabad|ङ]], [[च#Tiếng_Gondi_Adilabad|च]], [[छ#Tiếng_Gondi_Adilabad|छ]], [[ज#Tiếng_Gondi_Adilabad|ज]], [[झ#Tiếng_Gondi_Adilabad|झ]], [[ट#Tiếng_Gondi_Adilabad|ट]], [[ठ#Tiếng_Gondi_Adilabad|ठ]], [[ड#Tiếng_Gondi_Adilabad|ड]], [[ढ#Tiếng_Gondi_Adilabad|ढ]], [[ड़#Tiếng_Gondi_Adilabad|ड़]], [[त#Tiếng_Gondi_Adilabad|त]], [[थ#Tiếng_Gondi_Adilabad|थ]], [[द#Tiếng_Gondi_Adilabad|द]], [[ध#Tiếng_Gondi_Adilabad|ध]], [[न#Tiếng_Gondi_Adilabad|न]], [[प#Tiếng_Gondi_Adilabad|प]], [[फ#Tiếng_Gondi_Adilabad|फ]], [[ब#Tiếng_Gondi_Adilabad|ब]], [[भ#Tiếng_Gondi_Adilabad|भ]], [[म#Tiếng_Gondi_Adilabad|म]], [[य#Tiếng_Gondi_Adilabad|य]], [[र#Tiếng_Gondi_Adilabad|र]], [[ल#Tiếng_Gondi_Adilabad|ल]], [[व#Tiếng_Gondi_Adilabad|व]], [[स#Tiếng_Gondi_Adilabad|स]], [[ह#Tiếng_Gondi_Adilabad|ह]], [[क्ष#Tiếng_Gondi_Adilabad|क्ष]], [[त्र#Tiếng_Gondi_Adilabad|त्र]], [[ज्ञ#Tiếng_Gondi_Adilabad|ज्ञ]], [[श्र#Tiếng_Gondi_Adilabad|श्र]] ==={{ĐM|ref}}=== *{{Chú thích web|gon|author=Wycliffe Bible Translators, Inc.|work=पवित्र पोल्‍ले|year=2022|entry=मत्‍तयाल 1|entryurl=https://www.bible.com/bible/3417/MAT.1.ESG-DEVA}} =={{langname|inc-ogu}}== ==={{ĐM|pron}}=== *{{IPA|inc-ogu|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|inc-ogu|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Gujarat cổ. #:{{ux|inc-ogu|'''घ'''णउं|[[nhiều]]|inline=1}} =={{langname|hlb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Halba|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA|hlb|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|hlb|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Halba. #:{{ux|hlb|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Halba|list={{l-self|hlb|अ}}, {{l-self|hlb|आ}}, {{l-self|hlb|इ}}, {{l-self|hlb|ई}}, {{l-self|hlb|उ}}, {{l-self|hlb|ऊ}}, {{l-self|hlb|ए}}, {{l-self|hlb|ओ}}, {{l-self|hlb|औ}}, {{l-self|hlb|अं}}, {{l-self|hlb|क}}, {{l-self|hlb|ख}}, {{l-self|hlb|ग}}, {{l-self|hlb|घ}}, {{l-self|hlb|च}}, {{l-self|hlb|छ}}, {{l-self|hlb|ज}}, {{l-self|hlb|झ}}, {{l-self|hlb|ट}}, {{l-self|hlb|ठ}}, {{l-self|hlb|ड}}, {{l-self|hlb|ढ}}, {{l-self|hlb|त}}, {{l-self|hlb|थ}}, {{l-self|hlb|द}}, {{l-self|hlb|ध}}, {{l-self|hlb|न}}, {{l-self|hlb|प}}, {{l-self|hlb|फ}}, {{l-self|hlb|ब}}, {{l-self|hlb|भ}}, {{l-self|hlb|म}}, {{l-self|hlb|र}}, {{l-self|hlb|ल}}, {{l-self|hlb|स}}, {{l-self|hlb|ह}}, {{l-self|hlb|य}}, {{l-self|hlb|व}}, {{l-self|hlb|ड़}}, {{l-self|hlb|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Fran Woods|entryurl=https://www.webonary.org/halbi/browse/browse-vernacular/?letter=%E0%A4%98&key=hlb|entry=घ|work=Halbi – English Dictionary|publisher=SIL International|year=2019}} *{{Chú thích web|hlb|author=Beyond Translation|entryurl=https://www.bible.com/bible/3612/REV.1.HLBNT|entry=प्रकाशितवाक्य 1|work=Halbi|year=2024}} =={{langname|bgc}}== ==={{ĐM|pron}}=== *{{IPA4|bgc|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bgc|Chữ cái}} #Phụ âm thứ 4 trong tiếng Haryanvi, viết bằng chữ Devanagari. #:{{ux|bgc|'''घ'''नखरा|[[phần lớn]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Haryanvi'') [[अ#Tiếng_Haryanvi|अ]], [[आ#Tiếng_Haryanvi|आ]], [[इ#Tiếng_Haryanvi|इ]], [[ई#Tiếng_Haryanvi|ई]], [[उ#Tiếng_Haryanvi|उ]], [[ऊ#Tiếng_Haryanvi|ऊ]], [[ए#Tiếng_Haryanvi|ए]], [[ऐ#Tiếng_Haryanvi|ऐ]], [[ओ#Tiếng_Haryanvi|ओ]], [[औ#Tiếng_Haryanvi|औ]], [[क#Tiếng_Haryanvi|क]], [[ख#Tiếng_Haryanvi|ख]], [[ग#Tiếng_Haryanvi|ग]], [[घ#Tiếng_Haryanvi|घ]], [[ङ#Tiếng_Haryanvi|ङ]], [[च#Tiếng_Haryanvi|च]], [[छ#Tiếng_Haryanvi|छ]], [[ज#Tiếng_Haryanvi|ज]], [[झ#Tiếng_Haryanvi|झ]], [[ञ#Tiếng_Haryanvi|ञ]], [[ट#Tiếng_Haryanvi|ट]], [[ठ#Tiếng_Haryanvi|ठ]], [[ड#Tiếng_Haryanvi|ड]], [[ढ#Tiếng_Haryanvi|ढ]], [[ण#Tiếng_Haryanvi|ण]], [[त#Tiếng_Haryanvi|त]], [[थ#Tiếng_Haryanvi|थ]], [[द#Tiếng_Haryanvi|द]], [[ध#Tiếng_Haryanvi|ध]], [[न#Tiếng_Haryanvi|न]], [[प#Tiếng_Haryanvi|प]], [[फ#Tiếng_Haryanvi|फ]], [[ब#Tiếng_Haryanvi|ब]], [[भ#Tiếng_Haryanvi|भ]], [[म#Tiếng_Haryanvi|म]], [[य#Tiếng_Haryanvi|य]], [[र#Tiếng_Haryanvi|र]], [[ल#Tiếng_Haryanvi|ल]], [[ळ#Tiếng_Haryanvi|ळ]], [[व#Tiếng_Haryanvi|व]], [[श#Tiếng_Haryanvi|श]], [[ष#Tiếng_Haryanvi|ष]], [[स#Tiếng_Haryanvi|स]], [[ह#Tiếng_Haryanvi|ह]], [[क्ष#Tiếng_Haryanvi|क्ष]], [[त्र#Tiếng_Haryanvi|त्र]], [[ज्ञ#Tiếng_Haryanvi|ज्ञ]], [[श्र#Tiếng_Haryanvi|श्र]], [[ड़#Tiếng_Haryanvi|ड़]], [[ढ़#Tiếng_Haryanvi|ढ़]] ==={{ĐM|ref}}=== *{{Chú thích web|bgc|author=Beyond Translation|work=हरियाणवी|year=2025|entry=होशे 1|entryurl=https://www.bible.com/bible/2766/HOS.1.BGC}} =={{langname|hi}}== {{wikipedia|lang=hi}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Hindi|𑂐]] |- ! Newa | [[𑐑#Tiếng_Hindi|𑐑]] |- |} ==={{ĐM|pron}}=== *{{hi-IPA}} ==={{ĐM|letter}}=== {{head|hi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Hindi. #:{{ux|hi|[[w:hi:घड़ी|'''घ'''ड़ी]]|[[đồng hồ]] [[đeo]] [[tay]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Hindi|list={{l-self|hi|अ}}, {{l-self|hi|आ}}, {{l-self|hi|इ}}, {{l-self|hi|ई}}, {{l-self|hi|उ}}, {{l-self|hi|ऊ}}, {{l-self|hi|ऋ}}, {{l-self|hi|ए}}, {{l-self|hi|ऐ}}, {{l-self|hi|ओ}}, {{l-self|hi|औ}}, {{l-self|hi|अं}}, {{l-self|hi|अः}}, {{l-self|hi|अँ}}, {{l-self|hi|क}}, {{l-self|hi|ख}}, {{l-self|hi|ग}}, {{l-self|hi|घ}}, {{l-self|hi|ङ}}, {{l-self|hi|च}}, {{l-self|hi|छ}}, {{l-self|hi|ज}}, {{l-self|hi|झ}}, {{l-self|hi|ञ}}, {{l-self|hi|ट}}, {{l-self|hi|ठ}}, {{l-self|hi|ड}}, {{l-self|hi|ढ}}, {{l-self|hi|ण}}, {{l-self|hi|त}}, {{l-self|hi|थ}}, {{l-self|hi|द}}, {{l-self|hi|ध}}, {{l-self|hi|न}}, {{l-self|hi|प}}, {{l-self|hi|फ}}, {{l-self|hi|ब}}, {{l-self|hi|भ}}, {{l-self|hi|म}}, {{l-self|hi|य}}, {{l-self|hi|र}}, {{l-self|hi|ल}}, {{l-self|hi|व}}, {{l-self|hi|श}}, {{l-self|hi|ष}}, {{l-self|hi|स}}, {{l-self|hi|ह}}, {{l-self|hi|त्र}}, {{l-self|hi|ज्ञ}}, {{l-self|hi|क्ष}}, {{l-self|hi|क़}}, {{l-self|hi|ख़}}, {{l-self|hi|ग़}}, {{l-self|hi|ज़}}, {{l-self|hi|झ़}}, {{l-self|hi|ड़}}, {{l-self|hi|ढ़}}, {{l-self|hi|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=R.C. Tiwari, R.S. Sharma & Krishna Vikal|title=[https://archive.org/details/hindienglishengl0000unse Hindi-English, English-Hindi dictionary]|year=1993|location=New York|publisher=Hippocrene Books|isbn=9780781800846}} =={{langname|hii}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Hinduri|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA|hii|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|hii|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Hinduri. =={{langname|hoc}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Ho|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Ho|ଘ]] |- ! Telugu | [[ఘ#Tiếng_Ho|ఘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hoc|[ɡʱɐ]}} ==={{ĐM|letter}}=== {{head|hoc|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Ho, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Ho|list={{l-self|hoc|अ}}, {{l-self|hoc|आ}}, {{l-self|hoc|इ}}, {{l-self|hoc|ई}}, {{l-self|hoc|उ}}, {{l-self|hoc|ऊ}}, {{l-self|hoc|ऋ}}, {{l-self|hoc|ए}}, {{l-self|hoc|ऐ}}, {{l-self|hoc|ओ}}, {{l-self|hoc|ओः}}, {{l-self|hoc|औ}}, {{l-self|hoc|अं}}, {{l-self|hoc|अः}}, {{l-self|hoc|अँ}}, {{l-self|hoc|क}}, {{l-self|hoc|ख}}, {{l-self|hoc|ग}}, {{l-self|hoc|घ}}, {{l-self|hoc|ङ}}, {{l-self|hoc|च}}, {{l-self|hoc|छ}}, {{l-self|hoc|ज}}, {{l-self|hoc|झ}}, {{l-self|hoc|ट}}, {{l-self|hoc|ठ}}, {{l-self|hoc|ड}}, {{l-self|hoc|ढ}}, {{l-self|hoc|ड़}}, {{l-self|hoc|त}}, {{l-self|hoc|थ}}, {{l-self|hoc|द}}, {{l-self|hoc|ध}}, {{l-self|hoc|न}}, {{l-self|hoc|प}}, {{l-self|hoc|फ}}, {{l-self|hoc|ब}}, {{l-self|hoc|भ}}, {{l-self|hoc|म}}, {{l-self|hoc|य}}, {{l-self|hoc|र}}, {{l-self|hoc|ल}}, {{l-self|hoc|व}}, {{l-self|hoc|श}}, {{l-self|hoc|स}}, {{l-self|hoc|ह}}}} =={{langname|hoy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kannada | [[ಘ#Tiếng_Holiya|ಘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|hoy|[ɡʱɒ]}} ==={{ĐM|letter}}=== {{head|hoy|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Holiya. #:{{quote|hoy|नीम्द दिल जान्सतद कि खुद नीव भी हापाळ '''घ'''न दुसरा मंळसागोळ बुराई माळीर.|tr=Nīmd dil jānsatad ki khud nīv bhī hāpāḷ '''gha'''na dusarā maṃḷasāgoḷ burāī māḷīr.|Vì thường khi lòng ngươi cũng biết mình đã rủa kẻ khác. ([[s:Truyền đạo/7#7:22|Truyền đạo 7:22]])}} ==={{ĐM|ref}}=== *{{Chú thích web|hoy|author=The Word for the World International|entryurl=https://www.bible.com/bible/2782/ECC.7.HAA25|entry=सभोपदेशक 7|work=Holiya Bible|year=2025}} =={{langname|jns}}== ==={{ĐM|pron}}=== *{{IPA4|jns|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|jns|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Jaunsar. #:{{ux|jns|'''घा'''स|tr='''ghā'''s|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Jaunsar|list={{l-self|jns|अ}}, {{l-self|jns|आ}}, {{l-self|jns|इ}}, {{l-self|jns|ई}}, {{l-self|jns|उ}}, {{l-self|jns|ऊ}}, {{l-self|jns|ए}}, {{l-self|jns|ऐ}}, {{l-self|jns|ओ}}, {{l-self|jns|औ}}, {{l-self|jns|अं}}, {{l-self|jns|अः }}, {{l-self|jns|क}}, {{l-self|jns|ख}}, {{l-self|jns|ग}}, {{l-self|jns|घ}}, {{l-self|jns|गं}}, {{l-self|jns|च}}, {{l-self|jns|छ}}, {{l-self|jns|ज}}, {{l-self|jns|झ}}, {{l-self|jns|ट}}, {{l-self|jns|ठ}}, {{l-self|jns|ड}}, {{l-self|jns|ड़}}, {{l-self|jns|ढ}}, {{l-self|jns|ढ़}}, {{l-self|jns|ण}}, {{l-self|jns|त}}, {{l-self|jns|थ}}, {{l-self|jns|द}}, {{l-self|jns|ध}}, {{l-self|jns|न}}, {{l-self|jns|प}}, {{l-self|jns|फ}}, {{l-self|jns|ब}}, {{l-self|jns|भ}}, {{l-self|jns|म}}, {{l-self|jns|य}}, {{l-self|jns|र}}, {{l-self|jns|ल}}, {{l-self|jns|व}}, {{l-self|jns|स}}, {{l-self|jns|ह}}}} =={{langname|jul}}== ==={{ĐM|pron}}=== *{{IPA4|jul|[ɡa]}} ==={{ĐM|letter}}=== {{head|jul|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Jirel, viết bằng chữ Devanagari. #:{{ux|jul|'''घ'''ण्‍टा|tr='''gha'''ṇṭā|[[chuông]]|inline=1}} ===={{ĐM|see}}==== *{{letters|lang=jul|sc=Deva|qual=Chữ Devanagari tiếng Jirel|अ|आ|इ|ई|उ|ऊ|ऋ|ए|ऐ|ओ|औ|क|ख|ग|घ|ङ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|श|स|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|editor=Anita Maibaum & Esther Strahm|entryurl=https://www.webonary.org/jirel/en/browse/browse-vernacular-nepali/?letter=%E0%A4%98&key=jul|entry=घ|year=2019|publisher=SIL International®|work=Jirel-Nepali-English Dictionary}} *{{Chú thích web|jul|author=Wycliffe Bible Translators, Inc.|entryurl=https://www.bible.com/bible/3866/MAT.5.JUL|entry=मत्ती 5|work=जिरेल|year=1992}} =={{langname|xnr}}== ==={{ĐM|pron}}=== *{{IPA4|xnr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|xnr|Chữ cái}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Kangra #:{{ux|xnr|मे'''घा'''|[[mây]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kangra'') [[अ#Tiếng_Kangra|अ]], [[आ#Tiếng_Kangra|आ]], [[इ#Tiếng_Kangra|इ]], [[ई#Tiếng_Kangra|ई]], [[उ#Tiếng_Kangra|उ]], [[ऊ#Tiếng_Kangra|ऊ]], [[ए#Tiếng_Kangra|ए]], [[ऐ#Tiếng_Kangra|ऐ]], [[ओ#Tiếng_Kangra|ओ]], [[औ#Tiếng_Kangra|औ]], [[आह़#Tiếng_Kangra|आह़]], [[इह़#Tiếng_Kangra|इह़]], [[उह़#Tiếng_Kangra|उह़]], [[एह़#Tiếng_Kangra|एह़]], [[ऐह़#Tiếng_Kangra|ऐह़]], [[ओह़#Tiếng_Kangra|ओह़]], [[औह़#Tiếng_Kangra|औह़]], [[अं#Tiếng_Kangra|अं]], [[क#Tiếng_Kangra|क]], [[ख#Tiếng_Kangra|ख]], [[ग#Tiếng_Kangra|ग]], [[घ#Tiếng_Kangra|घ]], [[घ़#Tiếng_Kangra|घ़]], [[च#Tiếng_Kangra|च]], [[छ#Tiếng_Kangra|छ]], [[ज#Tiếng_Kangra|ज]], [[ज्ह़#Tiếng_Kangra|ज्ह़]], [[झ#Tiếng_Kangra|झ]], [[ट#Tiếng_Kangra|ट]], [[ठ#Tiếng_Kangra|ठ]], [[ड#Tiếng_Kangra|ड]], [[ढ#Tiếng_Kangra|ढ]], [[ड़#Tiếng_Kangra|ड़]], [[ण#Tiếng_Kangra|ण]], [[त#Tiếng_Kangra|त]], [[थ#Tiếng_Kangra|थ]], [[द#Tiếng_Kangra|द]], [[ध#Tiếng_Kangra|ध]], [[ध़#Tiếng_Kangra|ध़]], [[न#Tiếng_Kangra|न]], [[न्ह़#Tiếng_Kangra|न्ह़]], [[प#Tiếng_Kangra|प]], [[प्ह़#Tiếng_Kangra|प्ह़]], [[फ#Tiếng_Kangra|फ]], [[ब#Tiếng_Kangra|ब]], [[ब्ह़#Tiếng_Kangra|ब्ह़]], [[भ#Tiếng_Kangra|भ]], [[भ़#Tiếng_Kangra|भ़]], [[म#Tiếng_Kangra|म]], [[म्ह़#Tiếng_Kangra|म्ह़]], [[य#Tiếng_Kangra|य]], [[य्ह़#Tiếng_Kangra|य्ह़]], [[र#Tiếng_Kangra|र]], [[ल#Tiếng_Kangra|ल]], [[ल़#Tiếng_Kangra|ल़]], [[स#Tiếng_Kangra|स]], [[स्ह़#Tiếng_Kangra|स्ह़]], [[ह#Tiếng_Kangra|ह]], [[ह़#Tiếng_Kangra|ह़]] ==={{ĐM|ref}}=== *{{Chú thích web|xnr|author=The Love Fellowship|work=काँगड़ी|year=2025|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/2962/REV.1.XNR}} =={{langname|bjj}}== ==={{ĐM|pron}}=== *{{IPA4|bjj|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bjj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kannauj, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kannauj|list={{l-self|bjj|अ}}, {{l-self|bjj|आ}}, {{l-self|bjj|इ}}, {{l-self|bjj|ई}}, {{l-self|bjj|उ}}, {{l-self|bjj|ऊ}}, {{l-self|bjj|ऋ}}, {{l-self|bjj|ए}}, {{l-self|bjj|ऐ}}, {{l-self|bjj|ओ}}, {{l-self|bjj|औ}}, {{l-self|bjj|क}}, {{l-self|bjj|ख}}, {{l-self|bjj|ग}}, {{l-self|bjj|घ}}, {{l-self|bjj|ङ}}, {{l-self|bjj|च}}, {{l-self|bjj|छ}}, {{l-self|bjj|ज}}, {{l-self|bjj|झ}}, {{l-self|bjj|ञ}}, {{l-self|bjj|ट}}, {{l-self|bjj|ठ}}, {{l-self|bjj|ड}}, {{l-self|bjj|ढ}}, {{l-self|bjj|ण}}, {{l-self|bjj|त}}, {{l-self|bjj|थ}}, {{l-self|bjj|द}}, {{l-self|bjj|ध}}, {{l-self|bjj|न}}, {{l-self|bjj|प}}, {{l-self|bjj|फ}}, {{l-self|bjj|ब}}, {{l-self|bjj|भ}}, {{l-self|bjj|म}}, {{l-self|bjj|य}}, {{l-self|bjj|र}}, {{l-self|bjj|ल}}, {{l-self|bjj|व}}, {{l-self|bjj|श}}, {{l-self|bjj|ष}}, {{l-self|bjj|स}}, {{l-self|bjj|ह}}, {{l-self|bjj|क्ष}}, {{l-self|bjj|त्र}}, {{l-self|bjj|ज्ञ}}, {{l-self|bjj|श्र}}, {{l-self|bjj|ज़}}, {{l-self|bjj|ड़}}, {{l-self|bjj|ढ़}}, {{l-self|bjj|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Mathews John, Bezily P. Varghese|title=[https://www.sil.org/system/files/reapdata/14/08/88/140888458996511652997295155804641103350/JLSR2021_012.pdf The Kannauji-speaking People of Uttar Pradesh: A Sociolinguistic Profile]|year=2021|publisher=SIL International|isbn=9788173420610|location=Dallas, Texas|series=Journal of Language Survey Reports 2021-012}} =={{langname|kyv}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Kayort|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|kyv|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|kyv|Chữ cái|tr=ghô}} #Phụ âm thứ 4 trong tiếng Kayort, viết bằng chữ Devanagari. #:{{quote|kyv|जब बलि-भेंडा सतमा मोहर खोलल्कै ते, ऊसब जे स्वर्गमे रहै आधा '''घ'''ण्टाके लिए शान्त भ्यागेलै।|tr=Jab bali-bheṃḍā satamā mohar kholalkai te, ūsab je svargame rahai ādhā '''gha'''ṇṭāke lie śānta bhyāgelai.|Khi Chiên Con mở ấn thứ bảy, trên trời yên-lặng chừng nửa giờ. ([[s:Khải huyền/8#8:1|Khải huyền 8:1]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kayort'') [[अ#Tiếng_Kayort|अ]], [[आ#Tiếng_Kayort|आ]], [[इ#Tiếng_Kayort|इ]], [[ई#Tiếng_Kayort|ई]], [[उ#Tiếng_Kayort|उ]], [[ऊ#Tiếng_Kayort|ऊ]], [[ए#Tiếng_Kayort|ए]], [[ऐ#Tiếng_Kayort|ऐ]], [[ओ#Tiếng_Kayort|ओ]], [[औ#Tiếng_Kayort|औ]], [[क#Tiếng_Kayort|क]], [[ख#Tiếng_Kayort|ख]], [[ग#Tiếng_Kayort|ग]], [[घ#Tiếng_Kayort|घ]], [[ङ#Tiếng_Kayort|ङ]], [[ङ़#Tiếng_Kayort|ङ़]] ([[ङ्ह#Tiếng_Kayort|ङ्ह]]), [[च#Tiếng_Kayort|च]], [[छ#Tiếng_Kayort|छ]], [[ज#Tiếng_Kayort|ज]], [[झ#Tiếng_Kayort|झ]], [[ट#Tiếng_Kayort|ट]], [[ठ#Tiếng_Kayort|ठ]], [[ड#Tiếng_Kayort|ड]], [[ढ#Tiếng_Kayort|ढ]], [[त#Tiếng_Kayort|त]], [[थ#Tiếng_Kayort|थ]], [[द#Tiếng_Kayort|द]], [[ध#Tiếng_Kayort|ध]], [[न#Tiếng_Kayort|न]], [[ऩ#Tiếng_Kayort|ऩ]] ([[न्ह#Tiếng_Kayort|न्ह]]), [[प#Tiếng_Kayort|प]], [[फ#Tiếng_Kayort|फ]], [[ब#Tiếng_Kayort|ब]], [[भ#Tiếng_Kayort|भ]], [[म#Tiếng_Kayort|म]], [[म़#Tiếng_Kayort|म़]] ([[म्ह#Tiếng_Kayort|म्ह]]), [[य#Tiếng_Kayort|य]], [[र#Tiếng_Kayort|र]], [[ऱ#Tiếng_Kayort|ऱ]] ([[ह#Tiếng_Kayort|ह]]), [[ल#Tiếng_Kayort|ल]], [[ल़#Tiếng_Kayort|ल़]] ([[ल्ह#Tiếng_Kayort|ल्ह]]), [[व#Tiếng_Kayort|व]], [[श#Tiếng_Kayort|श]], [[ष#Tiếng_Kayort|ष]], [[स#Tiếng_Kayort|स]], [[ह#Tiếng_Kayort|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|kyv|author=Beyond Translation|work=केवट नया कारार|year=2025|entryurl=https://www.bible.com/bible/3514/REV.8.KYVNT|entry=प्रकाश 8}} =={{langname|klr}}== ==={{ĐM|pron}}=== *{{IPA4|klr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|klr|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Khaling. #:{{ux|klr|'''घ'''म्‌‍सिना़|tr='''gha'''m̐sinā|[[uốn]] [[cong]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Khaling|list={{l-self|klr|अ}}, {{l-self|klr|अ़}}, {{l-self|klr|आ}}, {{l-self|klr|इ}}, {{l-self|klr|उ}}, {{l-self|klr|उ़}}, {{l-self|klr|ऊ}}, {{l-self|klr|ए}}, {{l-self|klr|ओ}}, {{l-self|klr|ओ़}}, {{l-self|klr|अः}}, {{l-self|klr|क}}, {{l-self|klr|ख}}, {{l-self|klr|ग}}, {{l-self|klr|घ}}, {{l-self|klr|ङ}}, {{l-self|klr|च}}, {{l-self|klr|छ}}, {{l-self|klr|ज}}, {{l-self|klr|झ}}, {{l-self|klr|त}}, {{l-self|klr|थ}}, {{l-self|klr|द}}, {{l-self|klr|ध}}, {{l-self|klr|न}}, {{l-self|klr|प}}, {{l-self|klr|फ}}, {{l-self|klr|ब}}, {{l-self|klr|भ}}, {{l-self|klr|म}}, {{l-self|klr|य}}, {{l-self|klr|र}}, {{l-self|klr|ल}}, {{l-self|klr|व}}, {{l-self|klr|स}}, {{l-self|klr|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Ingrid Toba & Sueyoshi Toba|work=Khaling - Nepali - English Dictionary|year=2016|publisher=SIL International|entryurl=https://www.webonary.org/khaling/en/browse/browse-khaling/?key=klr-NP&letter=%E0%A4%98|entry=घ}} *{{Chú thích web|klr|author=Ekta Books|work=[https://media.ipsapps.org/klr/osa/bible/#/text Khaling Bible 1.10]|year=2011|entry=१ शमूएल 1}} =={{langname|kgj}}== ==={{ĐM|pron}}=== *{{IPA4|kgj|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kgj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Gamale, viết bằng chữ Devanagari. #:{{ux|kgj|'''घ'''री|tr='''gha'''ri|[[chuối]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Gamale|list={{l-self|kgj|अ}}, {{l-self|kgj|आ}}, {{l-self|kgj|इ}}, {{l-self|kgj|ई}}, {{l-self|kgj|उ}}, {{l-self|kgj|ऊ}}, {{l-self|kgj|ए}}, {{l-self|kgj|ओ}}, {{l-self|kgj|इ़}}, {{l-self|kgj|ए़}}, {{l-self|kgj|अः}}, {{l-self|kgj|अॱ}}, {{l-self|kgj|अँ}}, {{l-self|kgj|क}}, {{l-self|kgj|ख}}, {{l-self|kgj|ग}}, {{l-self|kgj|घ}}, {{l-self|kgj|ङ}}, {{l-self|kgj|च}}, {{l-self|kgj|छ}}, {{l-self|kgj|ज}}, {{l-self|kgj|ज़}}, {{l-self|kgj|झ}}, {{l-self|kgj|झ़}}, {{l-self|kgj|ट}}, {{l-self|kgj|ठ}}, {{l-self|kgj|त}}, {{l-self|kgj|थ}}, {{l-self|kgj|द}}, {{l-self|kgj|ध}}, {{l-self|kgj|न}}, {{l-self|kgj|न्ह}}, {{l-self|kgj|प}}, {{l-self|kgj|फ}}, {{l-self|kgj|ब}}, {{l-self|kgj|भ}}, {{l-self|kgj|म}}, {{l-self|kgj|म्ह}}, {{l-self|kgj|य}}, {{l-self|kgj|र}}, {{l-self|kgj|ल}}, {{l-self|kgj|ह्ल}}, {{l-self|kgj|व}}, {{l-self|kgj|ह्व}}, {{l-self|kgj|व़}}, {{l-self|kgj|ह्व़}}, {{l-self|kgj|श}}, {{l-self|kgj|ष}}, {{l-self|kgj|स}}, {{l-self|kgj|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Christopher P. Wilde|title=[https://openresearch-repository.anu.edu.au/server/api/core/bitstreams/bb22e879-0e06-4b5c-865b-b0c3ab3ad748/content Gamale kham phonology revisited, with Devanagari-based orthography and lexicon]|year=2016|publisher=Payap Unversity|page=152}} *{{Chú thích web|kgj|author=Manna Harvest|work=[https://media.ipsapps.org/kgj/osa/bible/#/text Gamal Kham Bible]|year=2019|entry=मटि १}} =={{langname|kif}}== ==={{ĐM|pron}}=== *{{IPA4|kif|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kif|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Parbate Đông, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Parbate Đông|list={{l-self|kif|अ}}, {{l-self|kif|आ}}, {{l-self|kif|इ}}, {{l-self|kif|ई}}, {{l-self|kif|उ}}, {{l-self|kif|ऊ}}, {{l-self|kif|ए}}, {{l-self|kif|ओ}}, {{l-self|kif|इ़}}, {{l-self|kif|ए़}}, {{l-self|kif|अः}}, {{l-self|kif|अॱ}}, {{l-self|kif|अँ}}, {{l-self|kif|क}}, {{l-self|kif|ख}}, {{l-self|kif|ग}}, {{l-self|kif|घ}}, {{l-self|kif|ङ}}, {{l-self|kif|च}}, {{l-self|kif|छ}}, {{l-self|kif|ज}}, {{l-self|kif|ज़}}, {{l-self|kif|झ}}, {{l-self|kif|झ़}}, {{l-self|kif|ट}}, {{l-self|kif|ठ}}, {{l-self|kif|त}}, {{l-self|kif|थ}}, {{l-self|kif|द}}, {{l-self|kif|ध}}, {{l-self|kif|न}}, {{l-self|kif|न्ह}}, {{l-self|kif|प}}, {{l-self|kif|फ}}, {{l-self|kif|ब}}, {{l-self|kif|भ}}, {{l-self|kif|म}}, {{l-self|kif|म्ह}}, {{l-self|kif|य}}, {{l-self|kif|र}}, {{l-self|kif|ल}}, {{l-self|kif|ह्ल}}, {{l-self|kif|व}}, {{l-self|kif|ह्व}}, {{l-self|kif|व़}}, {{l-self|kif|ह्व़}}, {{l-self|kif|श}}, {{l-self|kif|ष}}, {{l-self|kif|स}}, {{l-self|kif|ह}}}} =={{langname|kjl}}== ==={{ĐM|pron}}=== *{{IPA4|kjl|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kjl|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Parbate Tây, viết bằng chữ Devanagari. #:{{quote|kjl|येसु ननी पुलुस्‍द ओबाज़्‍याक ‘येसुलाई सैतानए '''घ'''जाँचिउक’ लिद परमेस्‍वरए छैंव उपुरूसए तोबो साइँसुइँव पोङ लाँक्‍यो।|tr=Yesu nanī pulusda obāzyāk ‘Yesulāī saitānae '''gha'''jā̃ciuk’ lid Paramesvare chaĩv upurūsae tobo sā̃suī̃v poṅ lā̃kyo.|Bấy giờ, Đức Thánh-Linh đưa Đức Chúa Jêsus đến nơi đồng-vắng, đặng chịu ma-quỉ cám-dỗ. ([[s:Ma-thi-ơ/4#4:1|Ma-thi-ơ 4:1]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Parbate Tây|list={{l-self|kjl|अ}}, {{l-self|kjl|आ}}, {{l-self|kjl|इ}}, {{l-self|kjl|ई}}, {{l-self|kjl|उ}}, {{l-self|kjl|ऊ}}, {{l-self|kjl|ए}}, {{l-self|kjl|ओ}}, {{l-self|kjl|इ़}}, {{l-self|kjl|ए़}}, {{l-self|kjl|अः}}, {{l-self|kjl|अॱ}}, {{l-self|kjl|अँ}}, {{l-self|kjl|क}}, {{l-self|kjl|ख}}, {{l-self|kjl|ग}}, {{l-self|kjl|घ}}, {{l-self|kjl|ङ}}, {{l-self|kjl|च}}, {{l-self|kjl|छ}}, {{l-self|kjl|ज}}, {{l-self|kjl|ज़}}, {{l-self|kjl|झ}}, {{l-self|kjl|झ़}}, {{l-self|kjl|ट}}, {{l-self|kjl|ठ}}, {{l-self|kjl|त}}, {{l-self|kjl|थ}}, {{l-self|kjl|द}}, {{l-self|kjl|ध}}, {{l-self|kjl|न}}, {{l-self|kjl|न्ह}}, {{l-self|kjl|प}}, {{l-self|kjl|फ}}, {{l-self|kjl|ब}}, {{l-self|kjl|भ}}, {{l-self|kjl|म}}, {{l-self|kjl|म्ह}}, {{l-self|kjl|य}}, {{l-self|kjl|र}}, {{l-self|kjl|ल}}, {{l-self|kjl|ह्ल}}, {{l-self|kjl|व}}, {{l-self|kjl|ह्व}}, {{l-self|kjl|व़}}, {{l-self|kjl|ह्व़}}, {{l-self|kjl|श}}, {{l-self|kjl|ष}}, {{l-self|kjl|स}}, {{l-self|kjl|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=David E. Watters|title=[https://www.sil.org/system/files/reapdata/87/99/38/87993827156821364547273905654085575544/Kham_dictionary.pdf A dictionary of Kham: Taka dialect (a Tibeto-Burman language of Nepal)]|publisher=SIL International|year=2004|location=Nepal}} *{{Chú thích web|kjl|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/2495/MAT.4.NKHAM|entry=मत्ती 4|work=साःरो बाचा|year=2015}} =={{langname|kip}}== ==={{ĐM|pron}}=== *{{IPA4|kip|/ɡə̤/}} ==={{ĐM|letter}}=== {{head|kip|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kham Sheshi, viết bằng chữ Devanagari. #:{{quote|kip|नकाल आन्हाए नोक्करयाङै ईका सोगलै रांरङौ ओटन नकाङ भ्याईज दुखी ताइवाङ। नकाङै हिनस्यु रा:साहूजन ईका स्वाट्टै '''घ'''टना रापानस्यौ।|tr=Nakāla ānhāe nokkarayāṅai īkā sogalai rāṃraṅau oṭana nakāṅ bhyāij dukhi tāivāṅ. Nakāṅai hinsyu rā:sāhūjana īkā svāṭṭai '''gha'''ṭanā rāpānasyaü.|Các bạn thấy vậy, buồn lắm, đến thuật lại cùng chủ mình mọi đều đã xảy ra. ([[s:Ma-thi-ơ/18#18:31|Ma-thi-ơ 18:31]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kham Sheshi|list={{l-self|kip|अ}}, {{l-self|kip|आ}}, {{l-self|kip|इ}}, {{l-self|kip|ई}}, {{l-self|kip|उ}}, {{l-self|kip|ऊ}}, {{l-self|kip|ए}}, {{l-self|kip|ओ}}, {{l-self|kip|इ़}}, {{l-self|kip|ए़}}, {{l-self|kip|अः}}, {{l-self|kip|अॱ}}, {{l-self|kip|अँ}}, {{l-self|kip|क}}, {{l-self|kip|ख}}, {{l-self|kip|ग}}, {{l-self|kip|घ}}, {{l-self|kip|ङ}}, {{l-self|kip|च}}, {{l-self|kip|छ}}, {{l-self|kip|ज}}, {{l-self|kip|ज़}}, {{l-self|kip|झ}}, {{l-self|kip|झ़}}, {{l-self|kip|ट}}, {{l-self|kip|ठ}}, {{l-self|kip|त}}, {{l-self|kip|थ}}, {{l-self|kip|द}}, {{l-self|kip|ध}}, {{l-self|kip|न}}, {{l-self|kip|न्ह}}, {{l-self|kip|प}}, {{l-self|kip|फ}}, {{l-self|kip|ब}}, {{l-self|kip|भ}}, {{l-self|kip|म}}, {{l-self|kip|म्ह}}, {{l-self|kip|य}}, {{l-self|kip|र}}, {{l-self|kip|ल}}, {{l-self|kip|ह्ल}}, {{l-self|kip|व}}, {{l-self|kip|ह्व}}, {{l-self|kip|व़}}, {{l-self|kip|ह्व़}}, {{l-self|kip|श}}, {{l-self|kip|ष}}, {{l-self|kip|स}}, {{l-self|kip|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kip|author=The Word for the World South Asia|entryurl=https://www.bible.com/bible/4468/MAT.18.NTSKM25|entry=मत्ती 18|work=छार बाचाला नियाम|year=2025}} =={{langname|khr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Kharia|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Kharia|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|khr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|khr|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong bảng chữ cái Devanagari tiếng Kharia. #:{{ux|khr|[[घल#Tiếng_Kharia|'''घ'''ल]]|tr='''ghô'''l|[[mười]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kharia|list={{l-self|khr|अ}}, {{l-self|khr|आ}}, {{l-self|khr|इ}}, {{l-self|khr|ई}}, {{l-self|khr|उ}}, {{l-self|khr|ऊ}}, {{l-self|khr|ए}}, {{l-self|khr|ऐ}}, {{l-self|khr|ओ}}, {{l-self|khr|औ}}, {{l-self|khr|क}}, {{l-self|khr|ख}}, {{l-self|khr|ग}}, {{l-self|khr|घ}}, {{l-self|khr|ङ}}, {{l-self|khr|च}}, {{l-self|khr|छ}}, {{l-self|khr|ज}}, {{l-self|khr|झ}}, {{l-self|khr|ञ}}, {{l-self|khr|ट}}, {{l-self|khr|ठ}}, {{l-self|khr|ड}}, {{l-self|khr|ढ}}, {{l-self|khr|ण}}, {{l-self|khr|त}}, {{l-self|khr|थ}}, {{l-self|khr|द}}, {{l-self|khr|ध}}, {{l-self|khr|न}}, {{l-self|khr|प}}, {{l-self|khr|फ}}, {{l-self|khr|ब}}, {{l-self|khr|भ}}, {{l-self|khr|म}}, {{l-self|khr|य}}, {{l-self|khr|र}}, {{l-self|khr|ल}}, {{l-self|khr|श}}, {{l-self|khr|ष}}, {{l-self|khr|स}}, {{l-self|khr|ह}}, {{l-self|khr|ड़}}, {{l-self|khr|ढ़}}}} =={{langname|kfb}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Kolami|ఘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|kfb|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kfb|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kolami, viết bằng chữ Devanagari. ===={{ĐM|see}}==== *{{letters|lang=kfb|sc=Deva|qual=Chữ Devanagari tiếng Kolami|अ|आ|इ|ई|उ|ऊ|ऋ|ॠ|ऌ|ॡ|ए|ऐ|ओ|औ|क|ख|ग|घ|ङ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|ण|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|व|श|ष|स|ह|ळ}} ==={{ĐM|ref}}=== *{{Chú thích web|kfb|author=Malcolm and Uma Johnson|work=Bible.is|year=2005|entry=मात्ताक लेय्‍पुळ ओव्‍वोल गोट्टी 1|entryurl=https://live.bible.is/bible/KFBNTA/MAT/1}} =={{langname|kok}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kannada | [[ಘ#Tiếng_Konkan|ಘ]] |- ! Malayalam | [[ഘ#Tiếng_Konkan|ഘ]] |- ! Ả Rập | [[گھ#Tiếng_Konkan|گھ]] |- ! Latinh | [[Gh#Tiếng_Konkan|Gh]] [[gh#Tiếng_Konkan|gh]] |- ! Brahmi | [[𑀖#Tiếng_Konkan|𑀖]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kok|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|kok|Chữ cái}} #Phụ âm thứ 4 trong tiếng Konkan, viết bằng chữ Devanagari. #:{{ux|kok|'''घ'''ट|[[chật]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Konkan|list={{l-self|kok|अ}}, {{l-self|kok|आ}}, {{l-self|kok|इ}}, {{l-self|kok|ई}}, {{l-self|kok|उ}}, {{l-self|kok|ऊ}}, {{l-self|kok|ॠ}}, {{l-self|kok|ऌ}}, {{l-self|kok|ए}}, {{l-self|kok|ॲ}}, {{l-self|kok|ऐ}}, {{l-self|kok|ओ}}, {{l-self|kok|ऑ}}, {{l-self|kok|औ}}, {{l-self|kok|अं }}, {{l-self|kok|अः}}, {{l-self|kok|क}}, {{l-self|kok|ख}}, {{l-self|kok|ग}}, {{l-self|kok|घ}}, {{l-self|kok|ङ}}, {{l-self|kok|च}}, {{l-self|kok|छ}}, {{l-self|kok|ज}}, {{l-self|kok|झ}}, {{l-self|kok|ञ}}, {{l-self|kok|ट}}, {{l-self|kok|ठ}}, {{l-self|kok|ड}}, {{l-self|kok|ढ}}, {{l-self|kok|ण}}, {{l-self|kok|त}}, {{l-self|kok|थ}}, {{l-self|kok|द}}, {{l-self|kok|ध}}, {{l-self|kok|न}}, {{l-self|kok|प}}, {{l-self|kok|फ}}, {{l-self|kok|ब}}, {{l-self|kok|भ}}, {{l-self|kok|म}}, {{l-self|kok|य}}, {{l-self|kok|र}}, {{l-self|kok|ऱ}}, {{l-self|kok|ल}}, {{l-self|kok|व}}, {{l-self|kok|ष}}, {{l-self|kok|श}}, {{l-self|kok|स}}, {{l-self|kok|ह}}, {{l-self|kok|ळ}}, {{l-self|kok|क्ष}}, {{l-self|kok|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Angelus Francis Xavier Maffei|title=Konkani-English Dictionary|year=1990|page=112|pageurl=https://archive.org/details/konkanienglishdi0000ange/page/112|location=New Delhi - Madras|publisher=Asian Educational Services}} =={{langname|kfq}}== ==={{ĐM|pron}}=== *{{IPA4|kfq|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kfq|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Korku, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Korku|list={{l-self|kfq|अ}}, {{l-self|kfq|आ}}, {{l-self|kfq|इ}}, {{l-self|kfq|ई}}, {{l-self|kfq|उ}}, {{l-self|kfq|ऊ}}, {{l-self|kfq|ए}}, {{l-self|kfq|ऐ}}, {{l-self|kfq|ओ}}, {{l-self|kfq|ऑ}}, {{l-self|kfq|अं}}, {{l-self|kfq|अः}}, {{l-self|kfq|अँ}}, {{l-self|kfq|क}}, {{l-self|kfq|ख}}, {{l-self|kfq|ग}}, {{l-self|kfq|घ}}, {{l-self|kfq|ङ}}, {{l-self|kfq|च}}, {{l-self|kfq|छ}}, {{l-self|kfq|ज}}, {{l-self|kfq|झ}}, {{l-self|kfq|ञ}}, {{l-self|kfq|ट}}, {{l-self|kfq|ठ}}, {{l-self|kfq|ड}}, {{l-self|kfq|ढ}}, {{l-self|kfq|ण}}, {{l-self|kfq|त}}, {{l-self|kfq|थ}}, {{l-self|kfq|द}}, {{l-self|kfq|ध}}, {{l-self|kfq|न}}, {{l-self|kfq|प}}, {{l-self|kfq|फ}}, {{l-self|kfq|ब}}, {{l-self|kfq|भ}}, {{l-self|kfq|म}}, {{l-self|kfq|य}}, {{l-self|kfq|र}}, {{l-self|kfq|ल}}, {{l-self|kfq|श}}, {{l-self|kfq|स}}, {{l-self|kfq|ह}}, {{l-self|kfq|ड़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Wichmann, Søren & Brown, Cecil H. & Holman, Eric W.|title=The ASJP Database|year=2024|work=[https://asjp.clld.org/languages/KORKU Wordlist Korku]}} =={{langname|kyw}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Kudmal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Kudmal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kyw|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|kyw|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kudmal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kudmal|list={{l-self|kyw|अ}}, {{l-self|kyw|आ}}, {{l-self|kyw|इ}}, {{l-self|kyw|उ}}, {{l-self|kyw|ए}}, {{l-self|kyw|ओ}}, {{l-self|kyw|क}}, {{l-self|kyw|ख}}, {{l-self|kyw|ग}}, {{l-self|kyw|घ}}, {{l-self|kyw|ङ}}, {{l-self|kyw|च}}, {{l-self|kyw|छ}}, {{l-self|kyw|ज}}, {{l-self|kyw|झ}}, {{l-self|kyw|ञ}}, {{l-self|kyw|ट}}, {{l-self|kyw|ठ}}, {{l-self|kyw|ड}}, {{l-self|kyw|ढ}}, {{l-self|kyw|त}}, {{l-self|kyw|थ}}, {{l-self|kyw|द}}, {{l-self|kyw|ध}}, {{l-self|kyw|न}}, {{l-self|kyw|प}}, {{l-self|kyw|फ}}, {{l-self|kyw|ब}}, {{l-self|kyw|भ}}, {{l-self|kyw|म}}, {{l-self|kyw|य}}, {{l-self|kyw|र}}, {{l-self|kyw|ल}}, {{l-self|kyw|स}}, {{l-self|kyw|ह}}, {{l-self|kyw|ड़}}, {{l-self|kyw|ढ़}}}} =={{langname|kex}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Kukna|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kex|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|kex|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Kukna, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kukna|list={{l-self|kex|अ}}, {{l-self|kex|आ}}, {{l-self|kex|इ}}, {{l-self|kex|ई}}, {{l-self|kex|उ}}, {{l-self|kex|ऊ}}, {{l-self|kex|ए}}, {{l-self|kex|ऐ}}, {{l-self|kex|ओ}}, {{l-self|kex|औ}}, {{l-self|kex|अं}}, {{l-self|kex|क}}, {{l-self|kex|ख}}, {{l-self|kex|ग}}, {{l-self|kex|घ}}, {{l-self|kex|ङ}}, {{l-self|kex|च}}, {{l-self|kex|ज}}, {{l-self|kex|ट}}, {{l-self|kex|ठ}}, {{l-self|kex|ड}}, {{l-self|kex|ढ}}, {{l-self|kex|ण}}, {{l-self|kex|त}}, {{l-self|kex|थ}}, {{l-self|kex|द}}, {{l-self|kex|ध}}, {{l-self|kex|न}}, {{l-self|kex|प}}, {{l-self|kex|फ}}, {{l-self|kex|ब}}, {{l-self|kex|भ}}, {{l-self|kex|म}}, {{l-self|kex|य}}, {{l-self|kex|र}}, {{l-self|kex|ल}}, {{l-self|kex|ळ}}, {{l-self|kex|व}}, {{l-self|kex|श}}, {{l-self|kex|स}}, {{l-self|kex|ह}}}} =={{langname|kfx}}== ==={{ĐM|pron}}=== *{{IPA4|kfx|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|kfx|Chữ cái}} #Phụ âm thứ 4 trong tiếng Kullu, viết bằng chữ Devanagari. #:{{quote|kfx|होर पहाड़ होर चटान का यह बोलदे लागे, हामा पेन्दे पड़ होर हामे तेऊरे मुहा जेह सिंहासना पेन्दे वैठदे साहा, होर मेमने रे प्रकोपा का '''घ'''झ़या।|chúng nói với núi và đá lớn rằng: Hãy rơi xuống chận trên chúng ta, đặng tránh khỏi mặt của Đấng ngự trên ngôi, và khỏi cơn giận của Chiên Con! ([[s:Khải huyền/6#6:16|Khải huyền 6:16]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Kullu|list={{l-self|kfx|अ}}, {{l-self|kfx|आ}}, {{l-self|kfx|इ}}, {{l-self|kfx|ई}}, {{l-self|kfx|उ}}, {{l-self|kfx|ऊ}}, {{l-self|kfx|ए}}, {{l-self|kfx|ऐ}}, {{l-self|kfx|ओ}}, {{l-self|kfx|औ}}, {{l-self|kfx|अं}}, {{l-self|kfx|अँ}}, {{l-self|kfx|क}}, {{l-self|kfx|ख}}, {{l-self|kfx|ग}}, {{l-self|kfx|घ}}, {{l-self|kfx|गं}}, {{l-self|kfx|च}}, {{l-self|kfx|छ}}, {{l-self|kfx|ज}}, {{l-self|kfx|झ}}, {{l-self|kfx|ञ}}, {{l-self|kfx|ट}}, {{l-self|kfx|ठ}}, {{l-self|kfx|ड}}, {{l-self|kfx|ढ}}, {{l-self|kfx|ण}}, {{l-self|kfx|त}}, {{l-self|kfx|थ}}, {{l-self|kfx|द}}, {{l-self|kfx|ध}}, {{l-self|kfx|न}}, {{l-self|kfx|प}}, {{l-self|kfx|फ}}, {{l-self|kfx|ब}}, {{l-self|kfx|भ}}, {{l-self|kfx|म}}, {{l-self|kfx|य}}, {{l-self|kfx|र}}, {{l-self|kfx|ल}}, {{l-self|kfx|ळ}}, {{l-self|kfx|व}}, {{l-self|kfx|श}}, {{l-self|kfx|ष}}, {{l-self|kfx|स}}, {{l-self|kfx|ह}}, {{l-self|kfx|ड़}}, {{l-self|kfx|च़}}, {{l-self|kfx|छ़}}, {{l-self|kfx|ज़}}, {{l-self|kfx|त्र}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|title=[https://pahari-languages.ru/wp-content/uploads/2023/07/Kullui-Eng-Rus-Dictionary-July2023.pdf Kullui-English-Russian Dictionary]|year=2023|publisher=Pahari languages|page=24}} *{{Chú thích web|kfx|author=Beyond Translation|entryurl=https://www.bible.com/bible/3531/REV.6.ISJNT|entry=प्रकाशितवाक्य 6|work=ईनर सराजी मे नया नियम|year=2025}} =={{langname|kfy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Kumaon|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kfy|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|kfy|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Kumaon. #:{{ux|kfy|'''घ'''रवाव|tr='''gha'''ravāv|[[chồng]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|kfy|author=Beyond Translation|work=सोरियाली नय्या नियम|year=2020|entry=मत्ती 1|entryurl=https://www.bible.com/bible/3246/MAT.1.SORNT}} =={{langname|kru}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Kurukh|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kru|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|kru|Chữ cái}} #Phụ âm thứ 4 trong tiếng Kurukh, viết bằng chữ Devanagari. #:{{quote|kru|ख़ने आ आलस ल'''घ'''लेम आर ही अगू नू चोचस की तंग्‍हय खटियन उठ्‍बाचस की धर्मेस ही महबा नन्‍नुम तंग्‍हय एड़पा तरा केरस।|Tức thì kẻ bại đứng dậy trước mặt chúng, vác giường mình đã nằm, và đi về nhà, ngợi-khen Đức Chúa Trời. ([[s:Lu-ca/5#5:25|Lu-ca 5:25]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Kurukh'') [[अ#Tiếng_Kurukh|अ]], [[आ#Tiếng_Kurukh|आ]], [[इ#Tiếng_Kurukh|इ]], [[उ#Tiếng_Kurukh|उ]], [[ऋ#Tiếng_Kurukh|ऋ]], [[ए#Tiếng_Kurukh|ए]], [[ओ#Tiếng_Kurukh|ओ]], [[आ़#Tiếng_Kurukh|आ़]], [[ओ़#Tiếng_Kurukh|ओ़]], [[ॲ#Tiếng_Kurukh|ॲ]], [[क#Tiếng_Kurukh|क]], [[ख#Tiếng_Kurukh|ख]], [[ग#Tiếng_Kurukh|ग]], [[घ#Tiếng_Kurukh|घ]], [[ङ#Tiếng_Kurukh|ङ]], [[च#Tiếng_Kurukh|च]], [[छ#Tiếng_Kurukh|छ]], [[ज#Tiếng_Kurukh|ज]], [[झ#Tiếng_Kurukh|झ]], [[ञ#Tiếng_Kurukh|ञ]], [[ञ़#Tiếng_Kurukh|ञ़]], [[ट#Tiếng_Kurukh|ट]], [[ठ#Tiếng_Kurukh|ठ]], [[ड#Tiếng_Kurukh|ड]], [[ढ#Tiếng_Kurukh|ढ]], [[ण#Tiếng_Kurukh|ण]], [[त#Tiếng_Kurukh|त]], [[थ#Tiếng_Kurukh|थ]], [[द#Tiếng_Kurukh|द]], [[ध#Tiếng_Kurukh|ध]], [[न#Tiếng_Kurukh|न]], [[प#Tiếng_Kurukh|प]], [[फ#Tiếng_Kurukh|फ]], [[ब#Tiếng_Kurukh|ब]], [[भ#Tiếng_Kurukh|भ]], [[म#Tiếng_Kurukh|म]], [[य#Tiếng_Kurukh|य]], [[र#Tiếng_Kurukh|र]], [[ल#Tiếng_Kurukh|ल]], [[व#Tiếng_Kurukh|व]], [[श#Tiếng_Kurukh|श]], [[ष#Tiếng_Kurukh|ष]], [[स#Tiếng_Kurukh|स]], [[ह#Tiếng_Kurukh|ह]], [[क़#Tiếng_Kurukh|क़]], [[ख़#Tiếng_Kurukh|ख़]], [[ग़#Tiếng_Kurukh|ग़]], [[ज़#Tiếng_Kurukh|ज़]], [[ड़#Tiếng_Kurukh|ड़]], [[ढ़#Tiếng_Kurukh|ढ़]], [[फ़#Tiếng_Kurukh|फ़]], [[व़#Tiếng_Kurukh|व़]], [[क्ष#Tiếng_Kurukh|क्ष]], [[त्र#Tiếng_Kurukh|त्र]], [[श्र#Tiếng_Kurukh|श्र]] ==={{ĐM|ref}}=== *{{Chú thích web|editor=Toby Anderson|work=Kurux-Hindi Dictionary|entryurl=https://www.webonary.org/kurux/browse/browse-vernacular-english/?key=kru&letter=%E0%A4%98|entry=घ|year=2019|publisher=SIL International}} *{{Chú thích web|kru|author=Wycliffe Bible Translators, Inc.|work=कुड़ुख़|entryurl=https://www.bible.com/en-GB/bible/4366/LUK.5.KRUX|entry=लुकस 5|year=2024}} =={{langname|lmn}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Telugu | [[ఘ#Tiếng_Lambadi|ఘ]] |- ! Kannada | [[ಘ#Tiếng_Lambadi|ಘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|lmn|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|lmn|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Lambadi, viết bằng chữ Devanagari. #:{{quote|lmn|मारन तार वच्छ मार करार नियम करन, तोन '''घ'''णो बडतो जावस जुं करियुं कन ओनको.|tr=Māran tāra vaccha māra karāra niyama karana, tona '''gha'''ṇo baḍato jāvas juṃ kariyuṃ kana onako.|Ta sẽ lập giao-ước cùng ngươi, làm cho dòng-dõi ngươi thêm nhiều quá-bội. ([[s:Sáng thế Ký/17#17:2|Sáng thế Ký 17:2]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Lambadi|list={{l-self|lmn|अ}}, {{l-self|lmn|आ}}, {{l-self|lmn|इ}}, {{l-self|lmn|ई}}, {{l-self|lmn|उ}}, {{l-self|lmn|ऊ}}, {{l-self|lmn|ऎ}}, {{l-self|lmn|ए}}, {{l-self|lmn|ऒ}}, {{l-self|lmn|ओ}}, {{l-self|lmn|अं}}, {{l-self|lmn|क}}, {{l-self|lmn|ख}}, {{l-self|lmn|ग}}, {{l-self|lmn|घ}}, {{l-self|lmn|ङ}}, {{l-self|lmn|च}}, {{l-self|lmn|छ}}, {{l-self|lmn|ज}}, {{l-self|lmn|झ}}, {{l-self|lmn|ञ}}, {{l-self|lmn|ट}}, {{l-self|lmn|ठ}}, {{l-self|lmn|ड}}, {{l-self|lmn|ढ}}, {{l-self|lmn|ण}}, {{l-self|lmn|त}}, {{l-self|lmn|थ}}, {{l-self|lmn|द}}, {{l-self|lmn|ध}}, {{l-self|lmn|न}}, {{l-self|lmn|प}}, {{l-self|lmn|फ}}, {{l-self|lmn|ब}}, {{l-self|lmn|भ}}, {{l-self|lmn|म}}, {{l-self|lmn|य}}, {{l-self|lmn|र}}, {{l-self|lmn|ल}}, {{l-self|lmn|व}}, {{l-self|lmn|श}}, {{l-self|lmn|ष}}, {{l-self|lmn|स}}, {{l-self|lmn|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|kfx|author=Bible Society of India|entryurl=https://www.bible.com/bible/4580/GEN.17.LAMBADI|entry=genesis 17|work=పవిత్తర్ బైబిల్ (బంజారా/లంబాడి/గోర్బోలి)|year=2025}} =={{langname|lhm}}== ==={{ĐM|pron}}=== *{{IPA4|lhm|/ɡʰ/}} ==={{ĐM|letter}}=== {{head|lhm|Chữ cái|tr=gha}} #Chữ Devanagari thể hiện phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Lhomi. #:{{ux|lhm|'''घ'''प्केन्|tr='''gha'''pken|[[trán]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ Devanagari tiếng Lhomi|list={{l-self|lhm|आ}}, {{l-self|lhm|इ}}, {{l-self|lhm|उ}}, {{l-self|lhm|ए}}, {{l-self|lhm|ओ}}, {{l-self|lhm|क}}, {{l-self|lhm|ख}}, {{l-self|lhm|ग}}, {{l-self|lhm|घ}}, {{l-self|lhm|ङ}}, {{l-self|lhm|च}}, {{l-self|lhm|च्‍य}}, {{l-self|lhm|छ}}, {{l-self|lhm|छ्य}}, {{l-self|lhm|ज}}, {{l-self|lhm|ज्‍य}}, {{l-self|lhm|झ}}, {{l-self|lhm|झ्‍य}}, {{l-self|lhm|ट}}, {{l-self|lhm|ठ}}, {{l-self|lhm|ड}}, {{l-self|lhm|ढ}}, {{l-self|lhm|त}}, {{l-self|lhm|थ}}, {{l-self|lhm|द}}, {{l-self|lhm|ध}}, {{l-self|lhm|न}}, {{l-self|lhm|प}}, {{l-self|lhm|फ}}, {{l-self|lhm|ब}}, {{l-self|lhm|भ}}, {{l-self|lhm|म}}, {{l-self|lhm|य}}, {{l-self|lhm|र}}, {{l-self|lhm|ल}}, {{l-self|lhm|व}}, {{l-self|lhm|स}}, {{l-self|lhm|स्‍य}}, {{l-self|lhm|ह}}, {{l-self|lhm|ॱ}}}} ==={{ĐM|n}}=== {{head|lhm|Danh từ|tr=gha}} #[[trán|Trán]]. ==={{ĐM|ref}}=== *{{Chú thích web|publisher=SIL International and NELHOS|work=Lhomi - Nepali - English Dictionary|entryurl=https://www.webonary.org/lhomi/en/browse/browse-vernacular-nepali/?key=lhm&letter=%E0%A4%98|entry=घ|year=2022}} *{{Chú thích web|lhm|author=Wycliffe Bible Translators, Inc.|work=ल्होमी|year=1995|entry=युहन्‍ना 1|entryurl=https://www.bible.com/bible/3674/JHN.1.LHM}} =={{langname|lbm}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Lodha|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|lbm|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|lbm|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Lodha. #:{{quote|lbm|परमेश्वर न ऊ पूरो देश हमरो हाथ म कर दियो हय; येको सिवाय ओको पूरो निवासी हमरो वजह '''घ'''बराय रह्यो हय।|tr=Parameśvara na ū pūro deśa hamaro hātha maṃ kara diyo hay; yeko sivāya oko pūro nivāsī hamaro vajaha '''gha'''barāya rahyo hay.|Quả thật, Đức Giê-hô-va đã phó cả xứ vào tay chúng ta; và lại, hết thảy dân của xứ đều sờn lòng trước mặt chúng ta. ([[s:Giô-suê/2#2:24|Giô-suê 2:24]])}} ==={{ĐM|ref}}=== *{{Chú thích web|lbm|author=The Word for the World International|entryurl=https://www.bible.com/bible/2788/JOS.2.LII25|entry=यहोशू 2|work=Lodhi Bible|year=2025}} =={{langname|loy}}== {| class="floatright wikitable" style="text-align:center;" |- ! Tạng | [[གྷ#Tiếng_Loke|གྷ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|loy|/ɡʰa/}} ==={{ĐM|letter}}=== {{head|loy|Chữ cái|tr=gh}} #Phụ âm thứ 8 trong bảng chữ cái Devanagari tiếng Loke. #:{{ux|loy|'''घी़'''न्‍दा|tr='''ghī'''nda|[[đắt]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Loke'') [[आ#Tiếng_Loke|आ]], [[ई#Tiếng_Loke|ई]], [[उ#Tiếng_Loke|उ]], [[ए#Tiếng_Loke|ए]], [[ओ#Tiếng_Loke|ओ]], [[ओ़#Tiếng_Loke|ओ़]], [[आः#Tiếng_Loke|आः]], [[का#Tiếng_Loke|का]], [[क#Tiếng_Loke|क]], [[खा#Tiếng_Loke|खा]], [[ख#Tiếng_Loke|ख]], [[गा#Tiếng_Loke|गा]], [[ग#Tiếng_Loke|ग]], [[घा#Tiếng_Loke|घा]], [[घ#Tiếng_Loke|घ]], [[ङा#Tiếng_Loke|ङा]], [[ङ#Tiếng_Loke|ङ]], [[ॱङा#Tiếng_Loke|ॱङा]], [[चा#Tiếng_Loke|चा]], [[च#Tiếng_Loke|च]], [[छा#Tiếng_Loke|छा]], [[छ#Tiếng_Loke|छ]], [[जा#Tiếng_Loke|जा]], [[ज#Tiếng_Loke|ज]], [[झा#Tiếng_Loke|झा]], [[झ#Tiếng_Loke|झ]], [[टा#Tiếng_Loke|टा]], [[ट#Tiếng_Loke|ट]], [[ठा#Tiếng_Loke|ठा]], [[ठ#Tiếng_Loke|ठ]], [[डा#Tiếng_Loke|डा]], [[ड#Tiếng_Loke|ड]], [[ढा#Tiếng_Loke|ढा]], [[ढ#Tiếng_Loke|ढ]], [[ता#Tiếng_Loke|ता]], [[त#Tiếng_Loke|त]], [[था#Tiếng_Loke|था]], [[थ#Tiếng_Loke|थ]], [[धा#Tiếng_Loke|धा]], [[ध#Tiếng_Loke|ध]], [[दा#Tiếng_Loke|दा]], [[द#Tiếng_Loke|द]], [[ना#Tiếng_Loke|ना]], [[न#Tiếng_Loke|न]], [[ॱना#Tiếng_Loke|ॱना]], [[पा#Tiếng_Loke|पा]], [[प#Tiếng_Loke|प]], [[फा#Tiếng_Loke|फा]], [[फ#Tiếng_Loke|फ]], [[बा#Tiếng_Loke|बा]], [[ब#Tiếng_Loke|ब]], [[भा#Tiếng_Loke|भा]], [[भ#Tiếng_Loke|भ]], [[मा#Tiếng_Loke|मा]], [[म#Tiếng_Loke|म]], [[ॱमा#Tiếng_Loke|ॱमा]], [[या#Tiếng_Loke|या]], [[य#Tiếng_Loke|य]], [[रा#Tiếng_Loke|रा]], [[र#Tiếng_Loke|र]], [[ॱरा#Tiếng_Loke|ॱरा]], [[ला#Tiếng_Loke|ला]], [[ल#Tiếng_Loke|ल]], [[ॱला#Tiếng_Loke|ॱला]], [[वा#Tiếng_Loke|वा]], [[व#Tiếng_Loke|व]], [[सा#Tiếng_Loke|सा]], [[स#Tiếng_Loke|स]], [[शा#Tiếng_Loke|शा]], [[श#Tiếng_Loke|श]], [[हा#Tiếng_Loke|हा]], [[ह#Tiếng_Loke|ह]], [[ॱहा#Tiếng_Loke|ॱहा]], [[क्षा#Tiếng_Loke|क्षा]], [[ल्‍हा#Tiếng_Loke|ल्‍हा]], [[स्‍या#Tiếng_Loke|स्‍या]], [[श्‍या#Tiếng_Loke|श्‍या]], [[च्‍या#Tiếng_Loke|च्‍या]], [[ज्‍या#Tiếng_Loke|ज्‍या]], [[झ्‍या#Tiếng_Loke|झ्‍या]], [[क्‍या#Tiếng_Loke|क्‍या]], [[ॱ#Tiếng_Loke|ॱ]] ==={{ĐM|ref}}=== *{{Chú thích web|editor=SIL International and HIS Nepal|work=Lhowa - Nepali - English Dictionary|entryurl=https://www.webonary.org/lhowa/en/browse/browse-vernacular-nepali/?key=loy&letter=%E0%A4%98|entry=घ|year=2016}} =={{langname|mag}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Magaha|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mag|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mag|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Magaha, viết bằng chữ Devanagari. #:{{ux|mag|'''घ'''माइव|tr='''gha'''māiva|[[toát]] [[mồ hôi]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magaha|list={{l-self|mag|अ}}, {{l-self|mag|आ}}, {{l-self|mag|इ}}, {{l-self|mag|ई}}, {{l-self|mag|उ}}, {{l-self|mag|ऊ}}, {{l-self|mag|ऎ}}, {{l-self|mag|ए}}, {{l-self|mag|ऐ}}, {{l-self|mag|ऒ}}, {{l-self|mag|ओ}}, {{l-self|mag|औ}}, {{l-self|mag|अँ}}, {{l-self|mag|क}}, {{l-self|mag|ख}}, {{l-self|mag|ग}}, {{l-self|mag|घ}}, {{l-self|mag|ङ}}, {{l-self|mag|च}}, {{l-self|mag|छ}}, {{l-self|mag|ज}}, {{l-self|mag|झ}}, {{l-self|mag|ञ}}, {{l-self|mag|ट}}, {{l-self|mag|ठ}}, {{l-self|mag|ड}}, {{l-self|mag|ड़}}, {{l-self|mag|ढ}}, {{l-self|mag|ण}}, {{l-self|mag|त}}, {{l-self|mag|थ}}, {{l-self|mag|द}}, {{l-self|mag|ध}}, {{l-self|mag|न}}, {{l-self|mag|प}}, {{l-self|mag|फ}}, {{l-self|mag|ब}}, {{l-self|mag|भ}}, {{l-self|mag|म}}, {{l-self|mag|य}}, {{l-self|mag|र}}, {{l-self|mag|ल}}, {{l-self|mag|व}}, {{l-self|mag|श}}, {{l-self|mag|ष}}, {{l-self|mag|स}}, {{l-self|mag|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|mag|author=Asian Sahyogi Sanstha India Gorakhpur, (U.P.)|work=Bible.is|year=2014|entry=मत्ती 27|entryurl=https://live.bible.is/bible/MAGSSI/MAT/27}} =={{langname|mgp}}== ==={{ĐM|pron}}=== *{{IPA|mgp|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mgp|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Magar Đông. #:{{quote|mgp|'''घ'''मण्‍डौ कुरा जाटार परमेश्‍वरौ अपमान जाट्‍की होसे पशुकी बयालीस महिनासम्‍म अधिकार जाट्‍की अनुमति याहा।|tr='''Gha'''maṇḍau kurā jāṭāra parameśvarau apamāna jāṭkī hose paśukī bayālīsa mahīnāsamma adhikāra jāṭkī anumati yāhā.|Nó được ban cho cái miệng nói những lời kiêu-ngạo phạm-thượng; và nó lại được quyền làm việc trong bốn mươi hai tháng. ([[s:Khải huyền/13#13:5|Khải huyền 13:5]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magar Đông|list={{l-self|mgp|अ}}, {{l-self|mgp|आ}}, {{l-self|mgp|ई}}, {{l-self|mgp|ऊ}}, {{l-self|mgp|ए}}, {{l-self|mgp|ओ}}, {{l-self|mgp|अँ}}, {{l-self|mgp|अः}}, {{l-self|mgp|अ᳝}}, {{l-self|mgp|आ᳝}}, {{l-self|mgp|ई़}}, {{l-self|mgp|ऊ़}}, {{l-self|mgp|ए़}}, {{l-self|mgp|ओ᳝}}, {{l-self|mgp|अ᳝:}}, {{l-self|mgp|क}}, {{l-self|mgp|ख}}, {{l-self|mgp|ग}}, {{l-self|mgp|ङ}}, {{l-self|mgp|ङ़}}, {{l-self|mgp|च}}, {{l-self|mgp|छ}}, {{l-self|mgp|ज}}, {{l-self|mgp|झ}}, {{l-self|mgp|ट}}, {{l-self|mgp|ठ}}, {{l-self|mgp|ड}}, {{l-self|mgp|ढ}}, {{l-self|mgp|न}}, {{l-self|mgp|ऩ}}, {{l-self|mgp|त}}, {{l-self|mgp|थ}}, {{l-self|mgp|द}}, {{l-self|mgp|ध}}, {{l-self|mgp|प}}, {{l-self|mgp|फ}}, {{l-self|mgp|ब}}, {{l-self|mgp|भ}}, {{l-self|mgp|म}}, {{l-self|mgp|म़}}, {{l-self|mgp|य}}, {{l-self|mgp|र}}, {{l-self|mgp|ल}}, {{l-self|mgp|व}}, {{l-self|mgp|य़}}, {{l-self|mgp|ऱ}}, {{l-self|mgp|ल़}}, {{l-self|mgp|व़}}, {{l-self|mgp|स}}, {{l-self|mgp|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|mgp|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/3288/REV.13.EMGP|entry=प्रकाश 13|work=पुर्वीय मगर|year=2022}} =={{langname|mrd}}== ==={{ĐM|pron}}=== *{{IPA4|mrd|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mrd|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Magar Tây. #:{{ux|mrd|'''घ'''रुवा|tr='''gha'''ruvā|[[nhện]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Magar Tây|list={{l-self|mrd|अ}}, {{l-self|mrd|आ}}, {{l-self|mrd|ई}}, {{l-self|mrd|ऊ}}, {{l-self|mrd|ए}}, {{l-self|mrd|ओ}}, {{l-self|mrd|अँ}}, {{l-self|mrd|अः}}, {{l-self|mrd|अ᳝}}, {{l-self|mrd|आ᳝}}, {{l-self|mrd|ई़}}, {{l-self|mrd|ऊ़}}, {{l-self|mrd|ए़}}, {{l-self|mrd|ओ᳝}}, {{l-self|mrd|अ᳝:}}, {{l-self|mrd|क}}, {{l-self|mrd|ख}}, {{l-self|mrd|ग}}, {{l-self|mrd|ङ}}, {{l-self|mrd|ङ़}}, {{l-self|mrd|च}}, {{l-self|mrd|छ}}, {{l-self|mrd|ज}}, {{l-self|mrd|झ}}, {{l-self|mrd|ट}}, {{l-self|mrd|ठ}}, {{l-self|mrd|ड}}, {{l-self|mrd|ढ}}, {{l-self|mrd|न}}, {{l-self|mrd|ऩ}}, {{l-self|mrd|त}}, {{l-self|mrd|थ}}, {{l-self|mrd|द}}, {{l-self|mrd|ध}}, {{l-self|mrd|प}}, {{l-self|mrd|फ}}, {{l-self|mrd|ब}}, {{l-self|mrd|भ}}, {{l-self|mrd|म}}, {{l-self|mrd|म़}}, {{l-self|mrd|य}}, {{l-self|mrd|र}}, {{l-self|mrd|ल}}, {{l-self|mrd|व}}, {{l-self|mrd|य़}}, {{l-self|mrd|ऱ}}, {{l-self|mrd|ल़}}, {{l-self|mrd|व़}}, {{l-self|mrd|स}}, {{l-self|mrd|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Andrea Csepe (eds.)|work=Magar – Nepali – English - Hungarian Dictionary|entryurl=https://www.webonary.org/wmagar/en/browse/browse-vernacular-nepali/?key=mrd-Deva&letter=%E0%A4%98|entry=घ|year=2018|publisher=SIL International}} *{{Chú thích web|mrd|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/4406/LUK.3.WMGR|entry=लूका 3|work=पश्‍चिमी मगर ढुट|year=2024}} =={{langname|mjx}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ol Chiki | [[ᱜᱷ#Tiếng_Mahal|ᱜᱷ]] |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Mahal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Mahal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mjx|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|mjx|Chữ cái}} #Phụ âm thứ 4 trong tiếng Mahal, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Mahal|list={{l-self|mjx|अ}}, {{l-self|mjx|आ}}, {{l-self|mjx|इ}}, {{l-self|mjx|ई}}, {{l-self|mjx|उ}}, {{l-self|mjx|ऊ}}, {{l-self|mjx|ए}}, {{l-self|mjx|ऐ}}, {{l-self|mjx|ओ}}, {{l-self|mjx|औ}}, {{l-self|mjx|अँ}}, {{l-self|mjx|इँ}}, {{l-self|mjx|उँ}}, {{l-self|mjx|ऐं}}, {{l-self|mjx|औं}}, {{l-self|mjx|क}}, {{l-self|mjx|ख}}, {{l-self|mjx|ग}}, {{l-self|mjx|घ}}, {{l-self|mjx|ङ}}, {{l-self|mjx|च}}, {{l-self|mjx|छ}}, {{l-self|mjx|ज}}, {{l-self|mjx|झ}}, {{l-self|mjx|ञ}}, {{l-self|mjx|ट}}, {{l-self|mjx|ठ}}, {{l-self|mjx|ड}}, {{l-self|mjx|ड़}}, {{l-self|mjx|ढ}}, {{l-self|mjx|ण}}, {{l-self|mjx|त}}, {{l-self|mjx|थ}}, {{l-self|mjx|द}}, {{l-self|mjx|ध}}, {{l-self|mjx|न}}, {{l-self|mjx|प}}, {{l-self|mjx|फ}}, {{l-self|mjx|ब}}, {{l-self|mjx|भ}}, {{l-self|mjx|म}}, {{l-self|mjx|य}}, {{l-self|mjx|र}}, {{l-self|mjx|ल}}, {{l-self|mjx|स}}, {{l-self|mjx|ह}}, {{l-self|mjx|व}}}} =={{langname|mai}}== {{wp|mai:}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Tirhuta | [[𑒒#Tiếng_Maithil|𑒒]] |- ! Kaithi | [[𑂐#Tiếng_Maithil|𑂐]] |- ! Newa | [[𑐑#Tiếng_Maithil|𑐑]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mai|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mai|Chữ cái}} #Phụ âm thứ 4 trong tiếng Maithil, viết bằng chữ Devanagari. #:{{ux|mai|[[w:mai:घण्टा|'''घ'''ण्टा]]|[[giờ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Maithil|list={{l-self|mai|अ}}, {{l-self|mai|आ}}, {{l-self|mai|इ}}, {{l-self|mai|ई}}, {{l-self|mai|उ}}, {{l-self|mai|ऊ}}, {{l-self|mai|ऋ}}, {{l-self|mai|ऎ}}, {{l-self|mai|ए}}, {{l-self|mai|ꣾ}}, {{l-self|mai|ऐ}}, {{l-self|mai|ऒ}}, {{l-self|mai|ओ}}, {{l-self|mai|ॵ}}, {{l-self|mai|औ}}, {{l-self|mai|ॳ}}, {{l-self|mai|ॴ}}, {{l-self|mai|इऺ}}, {{l-self|mai|उ॑}}, {{l-self|mai|अऽ}}, {{l-self|mai|अ꣱}}, {{l-self|mai|ऍ}}, {{l-self|mai|अः}}, {{l-self|mai|आँ}}, {{l-self|mai|य़}}, {{l-self|mai|व़}}, {{l-self|mai|य़ॆ}}, {{l-self|mai|व़ॊ}}, {{l-self|mai|क}}, {{l-self|mai|ख}}, {{l-self|mai|ग}}, {{l-self|mai|घ}}, {{l-self|mai|ङ}}, {{l-self|mai|च}}, {{l-self|mai|छ}}, {{l-self|mai|ज}}, {{l-self|mai|झ}}, {{l-self|mai|ञ}}, {{l-self|mai|ट}}, {{l-self|mai|ठ}}, {{l-self|mai|ड}}, {{l-self|mai|ढ}}, {{l-self|mai|ण}}, {{l-self|mai|त}}, {{l-self|mai|थ}}, {{l-self|mai|द}}, {{l-self|mai|ध}}, {{l-self|mai|न}}, {{l-self|mai|प}}, {{l-self|mai|फ}}, {{l-self|mai|ब}}, {{l-self|mai|भ}}, {{l-self|mai|म}}, {{l-self|mai|य}}, {{l-self|mai|र}}, {{l-self|mai|ल}}, {{l-self|mai|व}}, {{l-self|mai|श}}, {{l-self|mai|ष}}, {{l-self|mai|स}}, {{l-self|mai|ह}}, {{l-self|mai|ड़}}, {{l-self|mai|ढ़}}, {{l-self|mai|ख़}}, {{l-self|mai|ज़}}, {{l-self|mai|झ़}}, {{l-self|mai|फ़}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Pt. Govind Jha|title=Kalyani Kosh : Maithili-English Dictionary|year=1999|page=179|pageurl=https://archive.org/details/dli.language.2334/page/178}} =={{langname|mup}}== ==={{ĐM|pron}}=== *{{IPA|mup|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mup|Chữ cái}} #Phụ âm thứ 4 trong tiếng Malvi, viết bằng chữ Devanagari. #:{{ux|mup|'''घु'''मट|[[vòm]]|inline=1}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Malvi'') [[अ#Tiếng_Malvi|अ]], [[आ#Tiếng_Malvi|आ]], [[इ#Tiếng_Malvi|इ]], [[ई#Tiếng_Malvi|ई]], [[उ#Tiếng_Malvi|उ]], [[ऊ#Tiếng_Malvi|ऊ]], [[ए#Tiếng_Malvi|ए]], [[ओ#Tiếng_Malvi|ओ]], [[क#Tiếng_Malvi|क]], [[ख#Tiếng_Malvi|ख]], [[ग#Tiếng_Malvi|ग]], [[घ#Tiếng_Malvi|घ]], [[च#Tiếng_Malvi|च]], [[छ#Tiếng_Malvi|छ]], [[ज#Tiếng_Malvi|ज]], [[झ#Tiếng_Malvi|झ]], [[ट#Tiếng_Malvi|ट]], [[ठ#Tiếng_Malvi|ठ]], [[ड#Tiếng_Malvi|ड]], [[ढ#Tiếng_Malvi|ढ]], [[त#Tiếng_Malvi|त]], [[थ#Tiếng_Malvi|थ]], [[द#Tiếng_Malvi|द]], [[ध#Tiếng_Malvi|ध]], [[न#Tiếng_Malvi|न]], [[प#Tiếng_Malvi|प]], [[फ#Tiếng_Malvi|फ]], [[ब#Tiếng_Malvi|ब]], [[भ#Tiếng_Malvi|भ]], [[म#Tiếng_Malvi|म]], [[य#Tiếng_Malvi|य]], [[र#Tiếng_Malvi|र]], [[ल#Tiếng_Malvi|ल]], [[व#Tiếng_Malvi|व]], [[स#Tiếng_Malvi|स]], [[ह#Tiếng_Malvi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|en|editor=Binoy Koshy|work=Malvi – English Dictionary|year=2018|publisher=SIL International®|entry=घ|entryurl=https://www.webonary.org/malvi/browse/browse-vernacular/?key=mup&letter=%E0%A4%98}} *{{Chú thích web|mup|author=Malvoday & New Life Literature|work=Parem Sandeso|year=2012|entry=मत्ती 1|entryurl=https://live.bible.is/bible/MUPNLL/MAT/1}} =={{langname|mjl}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Takri | [[𑚍#Tiếng_Mandi|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA|mjl|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|mjl|Chữ cái}} #Phụ âm thứ 4 trong tiếng Mandi, viết bằng chữ Devanagari. #:{{quote|mjl|तुस्सा मन्झा ले एह्ड़ा कुणहां, जेह्ड़ा फिकर करी किन्हें आपणी जिन्दगी री उम्रा मन्झ एक '''घ'''ड़ी भी बढ़ाई सक्हा?|Vả lại, có ai trong vòng các ngươi lo-lắng mà làm cho đời mình được dài thêm một khắc không? ([[s:Ma-thi-ơ/6#6:27|Ma-thi-ơ 6:27]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Mandi'') [[अ#Tiếng_Mandi|अ]], [[आ#Tiếng_Mandi|आ]], [[इ#Tiếng_Mandi|इ]], [[ई#Tiếng_Mandi|ई]], [[उ#Tiếng_Mandi|उ]], [[ऊ#Tiếng_Mandi|ऊ]], [[ए#Tiếng_Mandi|ए]], [[ऐ#Tiếng_Mandi|ऐ]], [[ओ#Tiếng_Mandi|ओ]], [[औ#Tiếng_Mandi|औ]], [[अँ#Tiếng_Mandi|अँ]], [[अं#Tiếng_Mandi|अं]], [[क#Tiếng_Mandi|क]], [[ख#Tiếng_Mandi|ख]], [[ग#Tiếng_Mandi|ग]], [[घ#Tiếng_Mandi|घ]], [[च#Tiếng_Mandi|च]], [[छ#Tiếng_Mandi|छ]], [[ज#Tiếng_Mandi|ज]], [[झ#Tiếng_Mandi|झ]], [[ट#Tiếng_Mandi|ट]], [[ठ#Tiếng_Mandi|ठ]], [[ड#Tiếng_Mandi|ड]], [[ड़#Tiếng_Mandi|ड़]], [[ढ#Tiếng_Mandi|ढ]], [[ण#Tiếng_Mandi|ण]], [[त#Tiếng_Mandi|त]], [[थ#Tiếng_Mandi|थ]], [[द#Tiếng_Mandi|द]], [[ध#Tiếng_Mandi|ध]], [[न#Tiếng_Mandi|न]], [[प#Tiếng_Mandi|प]], [[फ#Tiếng_Mandi|फ]], [[ब#Tiếng_Mandi|ब]], [[भ#Tiếng_Mandi|भ]], [[म#Tiếng_Mandi|म]], [[य#Tiếng_Mandi|य]], [[र#Tiếng_Mandi|र]], [[ल#Tiếng_Mandi|ल]], [[व#Tiếng_Mandi|व]], [[ल़#Tiếng_Mandi|ल़]], [[स#Tiếng_Mandi|स]], [[ह#Tiếng_Mandi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|mjl|author=The Love Fellowship|work=मंडयाली नंऊँआं नियम|year=2025|entry=मत्ती 6|entryurl=https://www.bible.com/bible/2769/MAT.6.MJLNT}} =={{langname|mr}}== {{wp|mr:घ्}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Modi | [[𑘑#Tiếng_Marathi|𑘑]] |- |} ==={{ĐM|pron}}=== *{{mar-IPA}} *{{audio|mr|LL-Q1571 (mar)-नंदिनी रानडे-घ.wav}} ==={{ĐM|letter}}=== {{head|mr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Marathi, viết bằng chữ Devanagari. #:{{ux|mr|[[w:mr:घोरपड|'''घो'''रपड]]|[[kỳ đà]] [[vân]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Balbodh Devanagari|list={{l-self|mr|अ}}, {{l-self|mr|आ}}, {{l-self|mr|इ}}, {{l-self|mr|ई}}, {{l-self|mr|उ}}, {{l-self|mr|ऊ}}, {{l-self|mr|ए}}, {{l-self|mr|ऐ}}, {{l-self|mr|ओ}}, {{l-self|mr|औ}}, {{l-self|mr|अं}}, {{l-self|mr|अः}}, {{l-self|mr|ॲ}}, {{l-self|mr|ऑ }}, {{l-self|mr|क}}, {{l-self|mr|ख}}, {{l-self|mr|ग}}, {{l-self|mr|घ}}, {{l-self|mr|ङ}}, {{l-self|mr|च}}, {{l-self|mr|छ}}, {{l-self|mr|ज}}, {{l-self|mr|झ}}, {{l-self|mr|ञ}}, {{l-self|mr|ट}}, {{l-self|mr|ठ}}, {{l-self|mr|ड}}, {{l-self|mr|ढ}}, {{l-self|mr|ण}}, {{l-self|mr|त}}, {{l-self|mr|थ}}, {{l-self|mr|द}}, {{l-self|mr|ध}}, {{l-self|mr|न}}, {{l-self|mr|प}}, {{l-self|mr|फ}}, {{l-self|mr|ब}}, {{l-self|mr|भ}}, {{l-self|mr|म}}, {{l-self|mr|य}}, {{l-self|mr|र}}, {{l-self|mr|ल}}, {{l-self|mr|व}}, {{l-self|mr|श}}, {{l-self|mr|ष}}, {{l-self|mr|स}}, {{l-self|mr|ह}}, {{l-self|mr|ळ}}, {{l-self|mr|क्ष}}, {{l-self|mr|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=James Thomas Molesworth & Baba Padmanji|title=A compendium of Molesworth's Marathi and English dictionary|year=1863|location=Bombay|publisher=Bombay Education Society|page=138|pageurl=https://archive.org/details/compendiumofmole00mole/page/138}} =={{langname|omr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Modi | [[𑘑#Tiếng_Marathi_cổ|𑘑]] |- |} ==={{ĐM|pron}}=== *{{IPA4|omr|/ɡʰ/}} ==={{ĐM|letter}}=== {{head|omr|Chữ cái|tr=śa}} #Chữ Devanagari biểu thị phụ âm '''/ɡʰ/''' trong tiếng Marathi cổ. #:{{ux|omr|'''घ'''टणे|[[xảy ra]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Tulpule, Shankar Gopal & Anne Feldhaus|title=A dictionary of old Marathi|year=1999|location=Mumbai|publisher=Popular Prakashan|page=214|pageurl=https://dsal.uchicago.edu/cgi-bin/app/tulpule_query.py?page=214#gsc.tab=0}} =={{langname|mwr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Ả Rập | [[ﮔﻬ#Tiếng_Marwar|ﮔﻬ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mwr|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|mwr|Chữ cái}} #Phụ âm thứ 4 trong tiếng Marwar, viết bằng chữ Devanagari. #:{{ux|mwr|घघ्घू|[[cú]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Marwar|list={{l-self|mwr|अ}}, {{l-self|mwr|आ}}, {{l-self|mwr|इ}}, {{l-self|mwr|ई}}, {{l-self|mwr|उ}}, {{l-self|mwr|ऊ}}, {{l-self|mwr|अे}}/{{l-self|mwr|ए}}, {{l-self|mwr|अै}}/{{l-self|mwr|ऐ}}, {{l-self|mwr|ओ}}, {{l-self|mwr|औ}}, {{l-self|mwr|अं}}, {{l-self|mwr|क}}, {{l-self|mwr|ख}}, {{l-self|mwr|ग}}, {{l-self|mwr|घ}}, {{l-self|mwr|गं}}, {{l-self|mwr|च}}, {{l-self|mwr|छ}}, {{l-self|mwr|ज}}, {{l-self|mwr|ज़}}, {{l-self|mwr|ॼ़}}, {{l-self|mwr|झ}}, {{l-self|mwr|ट}}, {{l-self|mwr|ठ}}, {{l-self|mwr|ॸ}}/{{l-self|mwr|ड}}, {{l-self|mwr|ड}}/{{l-self|mwr|ड़}}, {{l-self|mwr|ॾ}}, {{l-self|mwr|ॾ़}}, {{l-self|mwr|ढ}}, {{l-self|mwr|ढ़}}, {{l-self|mwr|ण}}, {{l-self|mwr|ण्ह}}/{{l-self|mwr|ण़}}, {{l-self|mwr|थ}}, {{l-self|mwr|द}}, {{l-self|mwr|ध}}, {{l-self|mwr|न}}, {{l-self|mwr|न्ह}}/{{l-self|mwr|ऩ}}, {{l-self|mwr|प}}, {{l-self|mwr|फ}}, {{l-self|mwr|ब}}, {{l-self|mwr|ॿ}}, {{l-self|mwr|ॿ़}}, {{l-self|mwr|भ}}, {{l-self|mwr|म}}, {{l-self|mwr|म्ह}}/{{l-self|mwr|म़}}, {{l-self|mwr|य}}, {{l-self|mwr|र}}, {{l-self|mwr|ल}}, {{l-self|mwr|ल़}}, {{l-self|mwr|ळ}}, {{l-self|mwr|ळ्ह}}/{{l-self|mwr|ऴ}}, {{l-self|mwr|व}}, {{l-self|mwr|श}}, {{l-self|mwr|ष}}, {{l-self|mwr|स}}, {{l-self|mwr|ह}}, {{l-self|mwr|श्र}}}} ==={{ĐM|ref}}=== *{{Chú thích web|editor=Vijay Raj Dewra, Radhe Vaishnav, Suchita Surana, Umaid Singh Inda, Naresh Khatri, Pooja Rathore, Praveen Arya, Kapil Dev, Nisha Chawriya, Ritu Sisodya, Rajendra Suthar, Vinod Soni|work=Marwari – English Dictionary|year=2019|publisher=SIL International. Project LEARN|entryurl=https://www.webonary.org/marwari/browse/browse-vernacular-english/?key=rwr-IN&letter=%E0%A4%98|entry=घ}} =={{langname|unx}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Munda|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Munda|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|unx|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|unx|Chữ cái}} #Phụ âm thứ 5 trong tiếng Munda, viết bằng chữ Devanagari. #:{{quote|unx|हासुतान्कके बुगिकपे, गएःकान्कके जीउबिरिद्कपे, नागे'''घा'''अकान्कके फार्चिकपे आडः बंगाकके हार् अडङ्ग्कपे । आपे बेगार् गनङ्ग्ते नाम्काद्तेयाः बेगार् गनङ्ग्ते एमाकपे ।|Hãy chữa lành kẻ đau, khiến sống kẻ chết, làm sạch kẻ phung, và trừ các quỉ. Các ngươi đã được lãnh không thì hãy cho không. ([[s:Ma-thi-ơ/10#10:8|Ma-thi-ơ 10:8]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Munda'') [[अ#Tiếng_Munda|अ]], [[आ#Tiếng_Munda|आ]], [[इ#Tiếng_Munda|इ]], [[ई#Tiếng_Munda|ई]], [[उ#Tiếng_Munda|उ]], [[ऊ#Tiếng_Munda|ऊ]], [[ए#Tiếng_Munda|ए]], [[ऐ#Tiếng_Munda|ऐ]], [[ओ#Tiếng_Munda|ओ]], [[औ#Tiếng_Munda|औ]], [[क#Tiếng_Munda|क]], [[क्ष#Tiếng_Munda|क्ष]], [[ख#Tiếng_Munda|ख]], [[ग#Tiếng_Munda|ग]], [[घ#Tiếng_Munda|घ]], [[ङ#Tiếng_Munda|ङ]], [[च#Tiếng_Munda|च]], [[छ#Tiếng_Munda|छ]], [[ज#Tiếng_Munda|ज]], [[झ#Tiếng_Munda|झ]], [[ञ#Tiếng_Munda|ञ]], [[ट#Tiếng_Munda|ट]], [[ठ#Tiếng_Munda|ठ]], [[ड#Tiếng_Munda|ड]], [[ड़#Tiếng_Munda|ड़]], [[ढ#Tiếng_Munda|ढ]], [[ण#Tiếng_Munda|ण]], [[त#Tiếng_Munda|त]], [[थ#Tiếng_Munda|थ]], [[द#Tiếng_Munda|द]], [[ध#Tiếng_Munda|ध]], [[न#Tiếng_Munda|न]], [[प#Tiếng_Munda|प]], [[फ#Tiếng_Munda|फ]], [[ब#Tiếng_Munda|ब]], [[भ#Tiếng_Munda|भ]], [[म#Tiếng_Munda|म]], [[य#Tiếng_Munda|य]], [[र#Tiếng_Munda|र]], [[ल#Tiếng_Munda|ल]], [[ळ#Tiếng_Munda|ळ]], [[व#Tiếng_Munda|व]], [[श#Tiếng_Munda|श]], [[ष#Tiếng_Munda|ष]], [[स#Tiếng_Munda|स]], [[ह#Tiếng_Munda|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|unx|author=The Word for the World International|entryurl=https://www.bible.com/bible/2792/MAT.10.NTRUU20|entry=ମାଥିଉ 10|work=ପାର୍‌ମେଶ୍ୱାର୍‌ଆଃ ଜୀନିଦ୍‌ ବାଚାନ୍‌, ନାୱା ନିୟାମ୍‌|year=2020}} =={{langname|unr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Mundari|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Mundari|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|unr|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|unr|Chữ cái}} #Phụ âm thứ 5 trong tiếng Mundari, viết bằng chữ Devanagari. #:{{quote|unr|इनीः सेताः नाअ '''घा'''ड़िक हबाअःताइकेन्‌रे पिट्‌ पिड़िरे एटाः हड़ाक सामागि तिङ्गुआकान्‌ नेल्‌केद्कआए ।|Ước-chừng giờ thứ ba, người chủ lại ra, thấy những kẻ khác rảnh việc đứng trong chợ, ([[s:Ma-thi-ơ/20#20:3|Ma-thi-ơ 20:3]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Mundari'') [[अ#Tiếng_Mundari|अ]], [[आ#Tiếng_Mundari|आ]], [[इ#Tiếng_Mundari|इ]], [[ई#Tiếng_Mundari|ई]], [[उ#Tiếng_Mundari|उ]], [[ऊ#Tiếng_Mundari|ऊ]], [[ए#Tiếng_Mundari|ए]], [[ऐ#Tiếng_Mundari|ऐ]], [[ओ#Tiếng_Mundari|ओ]], [[औ#Tiếng_Mundari|औ]], [[क#Tiếng_Mundari|क]], [[क्ष#Tiếng_Mundari|क्ष]], [[ख#Tiếng_Mundari|ख]], [[ग#Tiếng_Mundari|ग]], [[घ#Tiếng_Mundari|घ]], [[ङ#Tiếng_Mundari|ङ]], [[च#Tiếng_Mundari|च]], [[छ#Tiếng_Mundari|छ]], [[ज#Tiếng_Mundari|ज]], [[झ#Tiếng_Mundari|झ]], [[ञ#Tiếng_Mundari|ञ]], [[ट#Tiếng_Mundari|ट]], [[ठ#Tiếng_Mundari|ठ]], [[ड#Tiếng_Mundari|ड]], [[ड़#Tiếng_Mundari|ड़]], [[ढ#Tiếng_Mundari|ढ]], [[ण#Tiếng_Mundari|ण]], [[त#Tiếng_Mundari|त]], [[थ#Tiếng_Mundari|थ]], [[द#Tiếng_Mundari|द]], [[ध#Tiếng_Mundari|ध]], [[न#Tiếng_Mundari|न]], [[प#Tiếng_Mundari|प]], [[फ#Tiếng_Mundari|फ]], [[ब#Tiếng_Mundari|ब]], [[भ#Tiếng_Mundari|भ]], [[म#Tiếng_Mundari|म]], [[य#Tiếng_Mundari|य]], [[र#Tiếng_Mundari|र]], [[ल#Tiếng_Mundari|ल]], [[ळ#Tiếng_Mundari|ळ]], [[व#Tiếng_Mundari|व]], [[श#Tiếng_Mundari|श]], [[ष#Tiếng_Mundari|ष]], [[स#Tiếng_Mundari|स]], [[ह#Tiếng_Mundari|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Enike Amina Wani, Martin Lomu Goke & Tim Stirtz|work=Mundari-English Dictionary|year=2013|publisher=SIL International|entryurl=https://www.webonary.org/mundari/overview/copyright/beli-english/?letter=G&key=qaa-Latg-SD-x-mqu|entry=G}} *{{Chú thích web|unr|author=Munda Believers Assembly|entryurl=https://live.bible.is/bible/unrwfw/mat/20|entry=ମାଥିଉ 20|work=Mundari - 2018 The Word for the World International|year=2020}} =={{langname|fmu}}== ==={{ĐM|pron}}=== *{{IPA4|fmu|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|fmu|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Muria Viễn Tây, viết bằng chữ Devanagari. #:{{quote|fmu|असके अव आसक अगा आता सबोय पोल्लोंग चेला लोकुरकुन वेहिलाय हन्दुंग असके केपवालोर सयनिकनिगाडाल हुचुलोर सयनिक लोकुरक सहेरतिगा हन्जुन आतांग पुरा '''घ'''टनातुन मुक्याल याजक लोकुरकुन वेहतुरक।|tr=Aske ava āsaka agā ātā saboy polloṅga celā lokurakuna vehilāya handuṅga aske kepavālora sayanikanigāḍāla huculora sayanika lokuraka saheratigā hanjuna ātāṅga purā '''gha'''ṭanātuna mukhyāla yājaka lokurakuna vehaturaka.|Trong khi hai người đờn-bà đó đi đường, thì có mấy tên lính canh vào thành thuật lại cho các thầy tế-lễ cả biết mọi việc đã xảy đến. ([[s:Ma-thi-ơ/28#28:11|Ma-thi-ơ 28:11]])}} ===={{ĐM|see}}==== *{{letters|lang=fmu|sc=Deva|qual=Chữ Devanagari tiếng Muria Viễn Tây|अ|आ|इ|उ|ऊ|ए|ओ|क|ख|ग|घ|च|छ|ज|झ|ञ|ट|ठ|ड|ढ|ण|त|थ|द|ध|न|प|फ|ब|भ|म|य|र|ल|ळ|व|श|ष|स|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|fmu|author=Wycliffe Bible Translators, Inc.|work=Muria, Far Western|year=2026|entry=मत्ति 28|entryurl=https://www.bible.com/bible/3169/MAT.28.FMU}} =={{langname|nit}}== {| class="floatright wikitable" style="text-align:center;" |- ! Telugu | [[ఘ#Tiếng_Nam_Kolami|ఘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA|nit|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|nit|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Nam Kolami. #:{{quote|nit|अदुङि अने मन्दि ज्ञानं तोसेट जेलुङ् सेचनण्डर्। औरति '''घ'''नुलु करुवुत् अन्सार्। सामानयुलु ईरडुत् ओल्सनण्डर्।|tr=Aduṅi ane mandi jñānaṃ toseṭ jelūṅ sechanṇḍar. Aurati '''gha'''nulu karuvut ansār. Sāmānayulu īraḍut olsanṇḍar.|Vậy nên, dân ta phải bắt làm phu-tù, vì không hiểu-biết; kẻ sang nó chịu đói, chúng dân nó chịu khát. ([[s:Ê-sai/5#5:13|Ê-sai 5:13]])}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|editor=Uma Johnson & G.V. Ramesh|title=[https://www.sil.org/system/files/reapdata/54/89/25/54892522721528321878586909573271687411/KOLAMIdictionary.pdf కొలవ గొట్టి అర్థ ఆధారిత వర్గీకరణ విభాగము & తెలుగు, ఆంగ్లం, హిందీ అర్థాలతో బహు భాషా నిఘంటువు]|year=2010|publisher=SIL International|location=India|page=35}} *{{Chú thích web|nit|author=The Word for the World International|entryurl=https://www.bible.com/bible/3817/ISA.5.KP25|entry=యెషయ 5|work=Kolami Bible|year=2025}} =={{langname|ne}}== {{wp|ne:}} {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Newa | [[𑐑#Tiếng_Nepal|𑐑]] |- |} ==={{ĐM|pron}}=== *{{ne-IPA}} ==={{ĐM|letter}}=== {{head|ne|Chữ cái}} #[[phụ âm|Phụ âm]] thứ 4 trong tiếng Nepal, viết bằng chữ Devanagari. #:{{ux|ne|[[एघार#Tiếng_Nepal|ए'''घा'''र]]|[[mười một]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Nepal|list={{l-self|ne|अ}}, {{l-self|ne|आ}}, {{l-self|ne|इ}}, {{l-self|ne|ई}}, {{l-self|ne|उ}}, {{l-self|ne|ऊ}}, {{l-self|ne|ऋ}}, {{l-self|ne|ऌ}}, {{l-self|ne|ए}}, {{l-self|ne|ऐ}}, {{l-self|ne|ओ}}, {{l-self|ne|औ}}, {{l-self|ne|अं}}, {{l-self|ne|अः}}, {{l-self|ne|अँ}}, {{l-self|ne|क}}, {{l-self|ne|ख}}, {{l-self|ne|ग}}, {{l-self|ne|घ}}, {{l-self|ne|ङ}}, {{l-self|ne|च}}, {{l-self|ne|छ}}, {{l-self|ne|ज}}, {{l-self|ne|झ}}, {{l-self|ne|ञ}}, {{l-self|ne|ट}}, {{l-self|ne|ठ}}, {{l-self|ne|ड}}, {{l-self|ne|ढ}}, {{l-self|ne|ण}}, {{l-self|ne|त}}, {{l-self|ne|थ}}, {{l-self|ne|द}}, {{l-self|ne|ध}}, {{l-self|ne|न}}, {{l-self|ne|प}}, {{l-self|ne|फ}}, {{l-self|ne|ब}}, {{l-self|ne|भ}}, {{l-self|ne|म}}, {{l-self|ne|य}}, {{l-self|ne|र}}, {{l-self|ne|ल}}, {{l-self|ne|व}}, {{l-self|ne|श}}, {{l-self|ne|ष}}, {{l-self|ne|स}}, {{l-self|ne|ह}}, {{l-self|ne|क्ष}}, {{l-self|ne|त्र}}, {{l-self|ne|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|author=Ralph Lilley Turner|title=A Comparative And Etymological Dictionary Of The Nepali Language|year=1931|location=London|page=152|pageurl=https://archive.org/details/in.ernet.dli.2015.146785/page/n171}} =={{langname|new}}== {{wikipedia|lang=new}} {| class="floatright wikitable" style="text-align:center;" |- ! Newa | [[𑐑#Tiếng_Newa|𑐑]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|new|/ɡʱə/}} ==={{ĐM|letter}}=== {{head|new|Chữ cái}} #Phụ âm thứ 4 trong tiếng Newa, viết bằng chữ Devanagari. #:{{ux|new|[[w:new:घतम्पुर|'''घ'''तम्पुर]]|[[w:Ghatampur|Ghatampur]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Newa|list={{l-self|new|अ|tr=-}}, {{l-self|new|अः|tr=-}}, {{l-self|new|आ|tr=-}}, {{l-self|new|आः|tr=-}}, {{l-self|new|इ|tr=-}}, {{l-self|new|ई|tr=-}}, {{l-self|new|उ|tr=-}}, {{l-self|new|ऊ|tr=-}}, {{l-self|new|ऋ|tr=-}}, {{l-self|new|ॠ|tr=-}}, {{l-self|new|ऌ|tr=-}}, {{l-self|new|ॡ|tr=-}}, {{l-self|new|ए|tr=-}}, {{l-self|new|ऐ|tr=-}}, {{l-self|new|ओ|tr=-}}, {{l-self|new|औ|tr=-}}, {{l-self|new|अँ|tr=-}}, {{l-self|new|अं|tr=-}}, {{l-self|new|अय्|tr=-}}, {{l-self|new|आय्|tr=-}}, {{l-self|new|एय्|tr=-}}, {{l-self|new|क|tr=-}}, {{l-self|new|ख|tr=-}}, {{l-self|new|ग|tr=-}}, {{l-self|new|घ|tr=-}}, {{l-self|new|ङ|tr=-}}, {{l-self|new|ङ्ह|tr=-}}, {{l-self|new|च|tr=-}}, {{l-self|new|छ|tr=-}}, {{l-self|new|ज|tr=-}}, {{l-self|new|झ|tr=-}}, {{l-self|new|ञ|tr=-}}, {{l-self|new|ञ्ह|tr=-}}, {{l-self|new|ट|tr=-}}, {{l-self|new|ठ|tr=-}}, {{l-self|new|ड|tr=-}}, {{l-self|new|ढ|tr=-}}, {{l-self|new|ण|tr=-}}, {{l-self|new|ण्ह|tr=-}}, {{l-self|new|त|tr=-}}, {{l-self|new|थ|tr=-}}, {{l-self|new|द|tr=-}}, {{l-self|new|ध|tr=-}}, {{l-self|new|न|tr=-}}, {{l-self|new|न्ह|tr=-}}, {{l-self|new|प|tr=-}}, {{l-self|new|फ|tr=-}}, {{l-self|new|ब|tr=-}}, {{l-self|new|भ|tr=-}}, {{l-self|new|म|tr=-}}, {{l-self|new|म्ह|tr=-}}, {{l-self|new|य|tr=-}}, {{l-self|new|ह्य|tr=-}}, {{l-self|new|र|tr=-}}, {{l-self|new|ह्र|tr=-}}, {{l-self|new|ल|tr=-}}, {{l-self|new|ल्ह|tr=-}}, {{l-self|new|व|tr=-}}, {{l-self|new|व्ह|tr=-}}, {{l-self|new|श|tr=-}}, {{l-self|new|ष|tr=-}}, {{l-self|new|स|tr=-}}, {{l-self|new|ह|tr=-}}, {{l-self|new|क्ष|tr=-}}, {{l-self|new|त्र|tr=-}}, {{l-self|new|ज्ञ|tr=-}}}} =={{langname|bfz}}== ==={{ĐM|pron}}=== *{{IPA4|bfz|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|bfz|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pahari Mahasu, viết bằng chữ Devanagari. #:{{quote|bfz|कऊँकि सेयो लोक तलवारी रे सामणे ते, बल्कि नांगी तलवारी सामणे ते ओर ताणे रे धनुष ओर '''घो'''र युद्धो ते नठी रे।|Vì họ trốn gươm, trốn gươm trần, trốn cung giương ra, trốn sự chiến-tranh kinh-khiếp. ([[s:Ê-sai/21#21:15|Ê-sai 21:15]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pahari Mahasu|list={{l-self|bfz|अ|tr=-}}, {{l-self|bfz|आ|tr=-}}, {{l-self|bfz|इ|tr=-}}, {{l-self|bfz|ई|tr=-}}, {{l-self|bfz|उ|tr=-}}, {{l-self|bfz|ऊ|tr=-}}, {{l-self|bfz|ए|tr=-}}, {{l-self|bfz|ऐ|tr=-}}, {{l-self|bfz|ओ|tr=-}}, {{l-self|bfz|औ|tr=-}}, {{l-self|bfz|क|tr=-}}, {{l-self|bfz|ख|tr=-}}, {{l-self|bfz|ग|tr=-}}, {{l-self|bfz|घ|tr=-}}, {{l-self|bfz|च|tr=-}}, {{l-self|bfz|छ|tr=-}}, {{l-self|bfz|ज|tr=-}}, {{l-self|bfz|झ|tr=-}}, {{l-self|bfz|च़|tr=-}}, {{l-self|bfz|छ़|tr=-}}, {{l-self|bfz|ज़|tr=-}}, {{l-self|bfz|झ़|tr=-}}, {{l-self|bfz|ट|tr=-}}, {{l-self|bfz|ठ|tr=-}}, {{l-self|bfz|ड|tr=-}}, {{l-self|bfz|ड़|tr=-}}, {{l-self|bfz|ढ|tr=-}}, {{l-self|bfz|ण|tr=-}}, {{l-self|bfz|त|tr=-}}, {{l-self|bfz|थ|tr=-}}, {{l-self|bfz|द|tr=-}}, {{l-self|bfz|ध|tr=-}}, {{l-self|bfz|न|tr=-}}, {{l-self|bfz|प|tr=-}}, {{l-self|bfz|फ|tr=-}}, {{l-self|bfz|ब|tr=-}}, {{l-self|bfz|भ|tr=-}}, {{l-self|bfz|म|tr=-}}, {{l-self|bfz|म़|tr=-}}, {{l-self|bfz|य|tr=-}}, {{l-self|bfz|र|tr=-}}, {{l-self|bfz|ल|tr=-}}, {{l-self|bfz|ल़|tr=-}}, {{l-self|bfz|व|tr=-}}, {{l-self|bfz|श|tr=-}}, {{l-self|bfz|ष|tr=-}}, {{l-self|bfz|स|tr=-}}, {{l-self|bfz|ह|tr=-}}}} ==={{ĐM|ref}}=== *{{Chú thích web|bfz|author=Beyond Translation|work=पवित्र परमेशरो रा वचन बघल्याणी भाषा दे|year=2026|entry=यशायाह 21|entryurl=https://www.bible.com/bible/2957/ISA.21.BGH}} =={{langname|kmj}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Paharia_Kumarbhag|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|kmj|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|kmj|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Paharia Kumarbhag, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Paharia Kumarbhag|list={{l-self|kmj|अ}}, {{l-self|kmj|आ}}, {{l-self|kmj|इ}}, {{l-self|kmj|ई}}, {{l-self|kmj|उ}}, {{l-self|kmj|ऊ}}, {{l-self|kmj|ए}}, {{l-self|kmj|ऐ}}, {{l-self|kmj|ओ}}, {{l-self|kmj|औ}}, {{l-self|kmj|क}}, {{l-self|kmj|क़}}, {{l-self|kmj|ख}}, {{l-self|kmj|ग}}, {{l-self|kmj|ग़}}, {{l-self|kmj|घ}}, {{l-self|kmj|ङ}}, {{l-self|kmj|च}}, {{l-self|kmj|छ}}, {{l-self|kmj|ज}}, {{l-self|kmj|झ}}, {{l-self|kmj|ञ}}, {{l-self|kmj|ट}}, {{l-self|kmj|ठ}}, {{l-self|kmj|ड}}, {{l-self|kmj|ड़}}, {{l-self|kmj|ढ}}, {{l-self|kmj|ण}}, {{l-self|kmj|त}}, {{l-self|kmj|थ}}, {{l-self|kmj|द}}, {{l-self|kmj|द़}}, {{l-self|kmj|ध}}, {{l-self|kmj|न}}, {{l-self|kmj|प}}, {{l-self|kmj|फ}}, {{l-self|kmj|ब}}, {{l-self|kmj|भ}}, {{l-self|kmj|म}}, {{l-self|kmj|य}}, {{l-self|kmj|र}}, {{l-self|kmj|ल}}, {{l-self|kmj|व}}, {{l-self|kmj|श}}, {{l-self|kmj|ष}}, {{l-self|kmj|स}}, {{l-self|kmj|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|title=Dravidian family: Northeastern group (2 lists)|url=https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|publisher=The Global Lexicostatistical Database|year=2011-2016|accessdate=2026-08-23|archiveurl=https://web.archive.org/web/20250124190709/https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|archivedate=2025-01-24}} =={{langname|mjt}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Bengal | [[ঘ#Tiếng_Paharia_Sauria|ঘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|mjt|[ɡʱa]}} ==={{ĐM|letter}}=== {{head|mjt|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Paharia Sauria, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Paharia Sauria|list={{l-self|mjt|अ}}, {{l-self|mjt|आ}}, {{l-self|mjt|इ}}, {{l-self|mjt|ई}}, {{l-self|mjt|उ}}, {{l-self|mjt|ऊ}}, {{l-self|mjt|ए}}, {{l-self|mjt|ऐ}}, {{l-self|mjt|ओ}}, {{l-self|mjt|औ}}, {{l-self|mjt|क}}, {{l-self|mjt|क़}}, {{l-self|mjt|ख}}, {{l-self|mjt|ग}}, {{l-self|mjt|ग़}}, {{l-self|mjt|घ}}, {{l-self|mjt|ङ}}, {{l-self|mjt|च}}, {{l-self|mjt|छ}}, {{l-self|mjt|ज}}, {{l-self|mjt|झ}}, {{l-self|mjt|ञ}}, {{l-self|mjt|ट}}, {{l-self|mjt|ठ}}, {{l-self|mjt|ड}}, {{l-self|mjt|ड़}}, {{l-self|mjt|ढ}}, {{l-self|mjt|ण}}, {{l-self|mjt|त}}, {{l-self|mjt|थ}}, {{l-self|mjt|द}}, {{l-self|mjt|द़}}, {{l-self|mjt|ध}}, {{l-self|mjt|न}}, {{l-self|mjt|प}}, {{l-self|mjt|फ}}, {{l-self|mjt|ब}}, {{l-self|mjt|भ}}, {{l-self|mjt|म}}, {{l-self|mjt|य}}, {{l-self|mjt|र}}, {{l-self|mjt|ल}}, {{l-self|mjt|व}}, {{l-self|mjt|श}}, {{l-self|mjt|ष}}, {{l-self|mjt|स}}, {{l-self|mjt|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|title=Dravidian family: Northeastern group (2 lists)|url=https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|publisher=The Global Lexicostatistical Database|year=2011-2016|accessdate=2026-08-23|archiveurl=https://web.archive.org/web/20250124190709/https://starlingdb.org/cgi-bin/response.cgi?root=new100&morpho=0&basename=new100%5Cdrv%5Cned&limit=-1|archivedate=2025-01-24}} =={{langname|pi}}== ==={{ĐM|alt sc}}=== {{pi-alt|Latn=gha}} ==={{ĐM|letter}}=== {{head|pi|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pali, viết bằng chữ Devanagari. #:{{ux|pi|'''घ'''र|[[nhà]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pali|list={{l-self|pi|अ}}, {{l-self|pi|आ}}, {{l-self|pi|इ}}, {{l-self|pi|ई}}, {{l-self|pi|उ}}, {{l-self|pi|ऊ}}, {{l-self|pi|ऍ}}, {{l-self|pi|ओ}}, {{l-self|pi|क}}, {{l-self|pi|ख}}, {{l-self|pi|ग}}, {{l-self|pi|घ}}, {{l-self|pi|ङ}}, {{l-self|pi|च}}, {{l-self|pi|छ}}, {{l-self|pi|ज}}, {{l-self|pi|झ}}, {{l-self|pi|ञ}}, {{l-self|pi|ट}}, {{l-self|pi|ठ}}, {{l-self|pi|ड}}, {{l-self|pi|ढ}}, {{l-self|pi|ण}}, {{l-self|pi|त}}, {{l-self|pi|थ}}, {{l-self|pi|द}}, {{l-self|pi|ध}}, {{l-self|pi|न}}, {{l-self|pi|प}}, {{l-self|pi|फ}}, {{l-self|pi|ब}}, {{l-self|pi|भ}}, {{l-self|pi|म}}, {{l-self|pi|य}}, {{l-self|pi|र}}, {{l-self|pi|ल}}, {{l-self|pi|व}}, {{l-self|pi|स}}, {{l-self|pi|ह}}, {{l-self|pi|ळ}}}} =={{langname|pcf}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Malayalam | [[ഘ#Tiếng_Paliyan|ഘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|pcf|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|pcf|Chữ cái}} #Chữ cái Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Paliyan. #:{{quote|pcf|आहयी वात ह़मळीन हेरोद राजा अने यरुसलेम ह़ेर मे रेण्‌या आखा माणहु '''घ'''बराय ज्‌या।|tr=Āhayī vāta haṃḷīna Heroda rājā ane Yarusaleṃ hēra me reṇyā ākhā māṇahu '''gha'''barāya jyā.|Nghe tin ấy, vua Hê-rốt cùng cả thành Giê-ru-sa-lem đều bối-rối. ([[s:Ma-thi-ơ/2#2:3|Ma-thi-ơ 2:3]])}} ==={{ĐM|ref}}=== *{{Chú thích web|pcf|author=Yisu Por Bherho Karanya Palya Mandli, Rajpur, Barwani, (MP)|entryurl=https://live.bible.is/bible/pcfwfw/mat/2|entry=मत्‌ती नी लीखली ईसु मसी नी खुस-खबर 2|work=The Word for the World International|year=2020}} =={{langname|tdb}}== ==={{ĐM|pron}}=== *{{IPA4|tdb|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|new|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʱ/}}''' trong tiếng Panchpargania. #:{{quote|tdb|आइज हामरे अजीब '''घ'''टना के देइख आही।|tr=Āija hāmare ajība '''gha'''ṭanā ke deikha āhī.|Hôm nay chúng ta đã thấy những việc dị-thường. ([[s:Lu-ca/5#5:26|Lu-ca 5:26]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Panchpargania|list={{l-self|tdb|अ}}, {{l-self|tdb|आ}}, {{l-self|tdb|इ}}, {{l-self|tdb|उ}}, {{l-self|tdb|ए}}, {{l-self|tdb|ओ}}, {{l-self|tdb|क}}, {{l-self|tdb|ख}}, {{l-self|tdb|ग}}, {{l-self|tdb|घ}}, {{l-self|tdb|ङ}}, {{l-self|tdb|च}}, {{l-self|tdb|छ}}, {{l-self|tdb|ज}}, {{l-self|tdb|झ}}, {{l-self|tdb|ञ}}, {{l-self|tdb|ट}}, {{l-self|tdb|ठ}}, {{l-self|tdb|ड}}, {{l-self|tdb|ढ}}, {{l-self|tdb|त}}, {{l-self|tdb|थ}}, {{l-self|tdb|द}}, {{l-self|tdb|ध}}, {{l-self|tdb|न}}, {{l-self|tdb|प}}, {{l-self|tdb|फ}}, {{l-self|tdb|ब}}, {{l-self|tdb|भ}}, {{l-self|tdb|म}}, {{l-self|tdb|य}}, {{l-self|tdb|र}}, {{l-self|tdb|ल}}, {{l-self|tdb|स}}, {{l-self|tdb|ह}}, {{l-self|tdb|ड़}}, {{l-self|tdb|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|tdb|entryurl=https://media.ipsapps.org/tdb/osa/01-LUK-005.html|entry=लूका 5|work=Panchpargarnia Bible|year=2025}} =={{langname|pgg}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Takri | [[𑚍#Tiếng_Pangwala|𑚍]] |- |} ==={{ĐM|pron}}=== *{{IPA4|pgg|[ɡʱɑ]}} ==={{ĐM|letter}}=== {{head|pgg|Chữ cái}} #Phụ âm thứ 4 trong tiếng Pangwala, viết bằng chữ Devanagari. #:{{ux|pgg|उं'''घ'''|[[ngủ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Pangwala|list={{l-self|pgg|अ}}, {{l-self|pgg|आ}}, {{l-self|pgg|इ}}, {{l-self|pgg|ई}}, {{l-self|pgg|उ}}, {{l-self|pgg|ऊ}}, {{l-self|pgg|ए}}, {{l-self|pgg|ऐ}}, {{l-self|pgg|ओ}}, {{l-self|pgg|औ}}, {{l-self|pgg|ऑ}}, {{l-self|pgg|अं}}, {{l-self|pgg|अः}}, {{l-self|pgg|क}}, {{l-self|pgg|ख}}, {{l-self|pgg|ग}}, {{l-self|pgg|घ}}, {{l-self|pgg|ङ}}, {{l-self|pgg|च}}, {{l-self|pgg|छ}}, {{l-self|pgg|ज}}, {{l-self|pgg|झ}}, {{l-self|pgg|ञ}}, {{l-self|pgg|ट}}, {{l-self|pgg|ठ}}, {{l-self|pgg|ड}}, {{l-self|pgg|ढ}}, {{l-self|pgg|ण}}, {{l-self|pgg|त}}, {{l-self|pgg|थ}}, {{l-self|pgg|द}}, {{l-self|pgg|ध}}, {{l-self|pgg|न}}, {{l-self|pgg|प}}, {{l-self|pgg|फ}}, {{l-self|pgg|ब}}, {{l-self|pgg|भ}}, {{l-self|pgg|म}}, {{l-self|pgg|य}}, {{l-self|pgg|र}}, {{l-self|pgg|ल}}, {{l-self|pgg|व}}, {{l-self|pgg|श}}, {{l-self|pgg|ष}}, {{l-self|pgg|स}}, {{l-self|pgg|ह}}, {{l-self|pgg|ड़}}, {{l-self|pgg|ळ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|pgg|author=Wycliffe Bible Translators|entryurl=https://www.bible.com/bible/3555/ACT.5.PGG|entry=प्रतिनिधि 5|work=Walangi|year=2023}} =={{langname|sa}}== {{wp|sa:घ्}} ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{san-IPA}} ==={{ĐM|letter}}=== {{head|sa|Chữ cái}} #[[phụ âm|Phụ âm]] thứ 4 trong tiếng Phạn, viết bằng chữ Devanagari. #:{{ux|sa|[[w:sa:घनत्वम् (भौतविज्ञानम्)|'''घ'''नत्वम्]]|[[khối lượng]] [[riêng]]|inline=1}} ===={{ĐM|see}}==== *{{list helper 2|title=Chữ Devanagari tiếng Phạn|list={{l-self|sa|अ}}, {{l-self|sa|आ}}, {{l-self|sa|इ}}, {{l-self|sa|ई}}, {{l-self|sa|उ}}, {{l-self|sa|ऊ}}, {{l-self|sa|ऋ}}, {{l-self|sa|ॠ}}, {{l-self|sa|ऌ}}, {{l-self|sa|ॡ}}, {{l-self|sa|ए}}, {{l-self|sa|ऐ}}, {{l-self|sa|ओ}}, {{l-self|sa|औ}}, {{l-self|sa|क}}, {{l-self|sa|ख}}, {{l-self|sa|ग}}, {{l-self|sa|घ}}, {{l-self|sa|ङ}}, {{l-self|sa|च}}, {{l-self|sa|छ}}, {{l-self|sa|ज}}, {{l-self|sa|झ}}, {{l-self|sa|ञ}}, {{l-self|sa|ट}}, {{l-self|sa|ठ}}, {{l-self|sa|ड}}, {{l-self|sa|ढ}}, {{l-self|sa|ण}}, {{l-self|sa|त}}, {{l-self|sa|थ}}, {{l-self|sa|द}}, {{l-self|sa|ध}}, {{l-self|sa|न}}, {{l-self|sa|प}}, {{l-self|sa|फ}}, {{l-self|sa|ब}}, {{l-self|sa|भ}}, {{l-self|sa|म}}, {{l-self|sa|य}}, {{l-self|sa|र}}, {{l-self|sa|ल}}, {{l-self|sa|व}}, {{l-self|sa|श}}, {{l-self|sa|ष}}, {{l-self|sa|स}}, {{l-self|sa|ह}}, {{l-self|sa|ळ}}}} ==={{ĐM|etym}}=== Từ {{der|sa|ine-pro|*gʰe|*gʰo}}. Đồng nguyên với {{cog|grc|γε}}. Xem thêm {{m|sa|ह}}, {{m|sa|हि|tr=hí}}. ===={{ĐM|part}}==== {{head|sa|Trợ từ}} # [[ít nhất|Ít nhiều]], [[chắc chắn]], [[chỉ]] # [[thực sự|Thực sự]], [[thực tế]] # [[nhát|Nhất]] [[là]], [[đặc biệt]] [[là]] ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Monier Williams|page=375|pageurl=https://www.sanskrit-lexicon.uni-koeln.de/scans/MWScan/2014/web/webtc/servepdf.php?page=375|title=A Sanskrit–English Dictionary|year=1899|location=Oxford|publisher=At the Clarendon Press}} =={{langname|pra}}== ==={{ĐM|pron}}=== *{{IPA4|pra|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|pra|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Prakit. #:{{ux|pra|'''घ'''म्म|tr=[[𑀖𑀫𑁆𑀫#Tiếng_Prakrit|'''𑀖'''𑀫𑁆𑀫]]|[[mồ hôi]]|inline=1}} =={{langname|psu}}== ==={{ĐM|pron}}=== *{{IPA4|psu|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|psu|Chữ cái|tr=gh}} #Chữ Devanagari biểu thị phụ âm '''/ɡʱ/''' trong tiếng Prakit Saurasen. #:{{ux|pra|सिं'''घ'''|tr=𑀲𑀺𑀁'''𑀖'''|[[sư tử]]|inline=1}} =={{langname|rjs}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Rajbanshi|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|rjs|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|rjs|Chữ cái|tr=ghô}} #Phụ âm thứ 4 trong tiếng Rajbanshi, viết bằng chữ Devanagari. #:{{quote|rjs|अगमबक्‍तार पाए बलाल प्रभुर बचनला पुरा होक कहए इला '''घ'''टना हइस्‍ले:|tr=Agambaktār pāe balāl Prabhura bacanlā purā hoka kahae ilā '''gha'''ṭanā haisle:|Mọi việc đã xảy ra như vậy, để cho ứng-nghiệm lời Chúa đã dùng đấng tiên-tri mà phán rằng: ([[s:Ma-thi-ơ/1#1:22|Ma-thi-ơ 1:22]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Rajbanshi'') [[अ#Tiếng_Rajbanshi|अ]], [[आ#Tiếng_Rajbanshi|आ]], [[इ#Tiếng_Rajbanshi|इ]], [[ई#Tiếng_Rajbanshi|ई]], [[उ#Tiếng_Rajbanshi|उ]], [[ऊ#Tiếng_Rajbanshi|ऊ]], [[ए#Tiếng_Rajbanshi|ए]], [[ऐ#Tiếng_Rajbanshi|ऐ]], [[ओ#Tiếng_Rajbanshi|ओ]], [[औ#Tiếng_Rajbanshi|औ]], [[क#Tiếng_Rajbanshi|क]], [[ख#Tiếng_Rajbanshi|ख]], [[ग#Tiếng_Rajbanshi|ग]], [[घ#Tiếng_Rajbanshi|घ]], [[ङ#Tiếng_Rajbanshi|ङ]], [[ङ़#Tiếng_Rajbanshi|ङ़]] ([[ङ्ह#Tiếng_Rajbanshi|ङ्ह]]), [[च#Tiếng_Rajbanshi|च]], [[छ#Tiếng_Rajbanshi|छ]], [[ज#Tiếng_Rajbanshi|ज]], [[झ#Tiếng_Rajbanshi|झ]], [[ट#Tiếng_Rajbanshi|ट]], [[ठ#Tiếng_Rajbanshi|ठ]], [[ड#Tiếng_Rajbanshi|ड]], [[ढ#Tiếng_Rajbanshi|ढ]], [[त#Tiếng_Rajbanshi|त]], [[थ#Tiếng_Rajbanshi|थ]], [[द#Tiếng_Rajbanshi|द]], [[ध#Tiếng_Rajbanshi|ध]], [[न#Tiếng_Rajbanshi|न]], [[ऩ#Tiếng_Rajbanshi|ऩ]] ([[न्ह#Tiếng_Rajbanshi|न्ह]]), [[प#Tiếng_Rajbanshi|प]], [[फ#Tiếng_Rajbanshi|फ]], [[ब#Tiếng_Rajbanshi|ब]], [[भ#Tiếng_Rajbanshi|भ]], [[म#Tiếng_Rajbanshi|म]], [[म़#Tiếng_Rajbanshi|म़]] ([[म्ह#Tiếng_Rajbanshi|म्ह]]), [[य#Tiếng_Rajbanshi|य]], [[र#Tiếng_Rajbanshi|र]], [[ऱ#Tiếng_Rajbanshi|ऱ]] ([[ह#Tiếng_Rajbanshi|ह]]), [[ल#Tiếng_Rajbanshi|ल]], [[ल़#Tiếng_Rajbanshi|ल़]] ([[ल्ह#Tiếng_Rajbanshi|ल्ह]]), [[व#Tiếng_Rajbanshi|व]], [[श#Tiếng_Rajbanshi|श]], [[ष#Tiếng_Rajbanshi|ष]], [[स#Tiếng_Rajbanshi|स]], [[ह#Tiếng_Rajbanshi|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Kamta – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/rajbanshi/browse/?key=rkt-Beng&letter=%E0%A6%98|entry=ঘ}} *{{Chú thích web|rjs|author=Indian Evangelical Mission|work=Bible|year=2009|entry=मत्ति 1|entryurl=https://live.bible.is/bible/RJSMTS/MAT/1}} =={{langname|rkt}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Rangpur|ঘ]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|rkt|[ɡʱɔ]}} ==={{ĐM|letter}}=== {{head|rkt|Chữ cái|tr=sho}} #Phụ âm thứ 4 trong tiếng Rangpur, viết bằng chữ Devanagari. #:{{ux|rkt|'''घा'''स|tr='''gha'''ś|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Rangpur|list={{l-self|rkt|अ}}, {{l-self|rkt|आ}}, {{l-self|rkt|इ}}, {{l-self|rkt|ई}}, {{l-self|rkt|उ}}, {{l-self|rkt|ऊ}}, {{l-self|rkt|र्ऋ}}, {{l-self|rkt|र्ॠ}}, {{l-self|rkt|ए}}, {{l-self|rkt|ऐ}}, {{l-self|rkt|ओ}}, {{l-self|rkt|औ}}, {{l-self|rkt|क}}, {{l-self|rkt|ख}}, {{l-self|rkt|ग}}, {{l-self|rkt|घ}}, {{l-self|rkt|ङ}}, {{l-self|rkt|च}}, {{l-self|rkt|छ}}, {{l-self|rkt|ज}}, {{l-self|rkt|झ}}, {{l-self|rkt|ञ}}, {{l-self|rkt|ट}}, {{l-self|rkt|ठ}}, {{l-self|rkt|ड}}, {{l-self|rkt|ढ}}, {{l-self|rkt|ण}}, {{l-self|rkt|त}}, {{l-self|rkt|थ}}, {{l-self|rkt|द}}, {{l-self|rkt|ध}}, {{l-self|rkt|न}}, {{l-self|rkt|प}}, {{l-self|rkt|फ}}, {{l-self|rkt|ब}}, {{l-self|rkt|भ}}, {{l-self|rkt|म}}, {{l-self|rkt|य}}, {{l-self|rkt|र}}, {{l-self|rkt|ल}}, {{l-self|rkt|श}}, {{l-self|rkt|ष}}, {{l-self|rkt|स}}, {{l-self|rkt|ह}}, {{l-self|rkt|क्ष}}, {{l-self|rkt|ड़}}, {{l-self|rkt|ढ़}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Kamta – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/rajbanshi/browse/?key=rkt-Beng&letter=%E0%A6%98|entry=घ}} =={{langname|sck}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Oriya | [[ଘ#Tiếng_Sadri|ଘ]] |- ! Bengal | [[ঘ#Tiếng_Sadri|ঘ]] |- ! Kaithi | [[𑂐#Tiếng_Sadri|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sck|[sa]}} ==={{ĐM|letter}}=== {{head|sck|Chữ cái}} #Phụ âm thứ 4 trong tiếng Sadri, viết bằng chữ Devanagari. #:{{ux|sck|'''घा'''स|[[cỏ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sadri|list={{l-self|sck|अ}}, {{l-self|sck|आ}}, {{l-self|sck|इ}}, {{l-self|sck|ई}}, {{l-self|sck|उ}}, {{l-self|sck|ऊ}}, {{l-self|sck|ए}}, {{l-self|sck|ऐ}}, {{l-self|sck|ओ}}, {{l-self|sck|औ}}, {{l-self|sck|क}}, {{l-self|sck|ख}}, {{l-self|sck|ग}}, {{l-self|sck|घ}}, {{l-self|sck|ङ}}, {{l-self|sck|च}}, {{l-self|sck|छ}}, {{l-self|sck|ज}}, {{l-self|sck|झ}}, {{l-self|sck|ञ}}, {{l-self|sck|ट}}, {{l-self|sck|ठ}}, {{l-self|sck|ड}}, {{l-self|sck|ढ}}, {{l-self|sck|ण}}, {{l-self|sck|त}}, {{l-self|sck|थ}}, {{l-self|sck|द}}, {{l-self|sck|ध}}, {{l-self|sck|न}}, {{l-self|sck|प}}, {{l-self|sck|फ}}, {{l-self|sck|ब}}, {{l-self|sck|भ}}, {{l-self|sck|म}}, {{l-self|sck|य}}, {{l-self|sck|र}}, {{l-self|sck|ल}}, {{l-self|sck|व}}, {{l-self|sck|श}}, {{l-self|sck|ष}}, {{l-self|sck|स}}, {{l-self|sck|ह}}, {{l-self|sck|ड़}}, {{l-self|sck|ढ़}}, {{l-self|sck|क्ष}}}} ==={{ĐM|ref}}=== *{{Chú thích web|hi|author=Toby Anderson|year=2020|entryurl=https://www.webonary.org/sadri/browse/browse-vernacular-english/?key=sck&letter=%E0%A4%98|entry=घ|publisher=SIL International|work=Sadri Dictionary}} *{{Chú thích web|sck|author=Beyond Translation|work=सादरी नवाँ नियम|year=2026|entry=प्रकाशितवाक्य 1|entryurl=https://www.bible.com/bible/3683/REV.1.SCK}} =={{langname|sat}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ol Chiki | [[ᱜᱷ#Tiếng_Santal|ᱜᱷ]] |- ! Devanagari | '''घ''' |- ! Bengal | [[ঘ#Tiếng_Santal|ঘ]] |- ! Oriya | [[ଘ#Tiếng_Santal|ଘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sat|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|sat|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Santal, viết bằng chữ Devanagari. #:{{ux|sat|'''घु'''डि|tr=[[ᱜᱷᱩᱰᱤ#Tiếng_Santal|'''ᱜᱷ'''ᱩᱰᱤ]]|[[đồng hồ]]|inline=1}} ==={{ĐM|see also}}=== *{{list helper 2|title=Chữ Devanagari tiếng Santal|list={{l-self|sat|अ}}, {{l-self|sat|आ}}, {{l-self|sat|इ}}, {{l-self|sat|ई}}, {{l-self|sat|उ}}, {{l-self|sat|ऊ}}, {{l-self|sat|ए}}, {{l-self|sat|ऐ}}, {{l-self|sat|ओ}}, {{l-self|sat|औ}}, {{l-self|sat|अँ}}, {{l-self|sat|इँ}}, {{l-self|sat|उँ}}, {{l-self|sat|ऐं}}, {{l-self|sat|औं}}, {{l-self|sat|क}}, {{l-self|sat|ख}}, {{l-self|sat|ग}}, {{l-self|sat|घ}}, {{l-self|sat|ङ}}, {{l-self|sat|च}}, {{l-self|sat|छ}}, {{l-self|sat|ज}}, {{l-self|sat|झ}}, {{l-self|sat|ञ}}, {{l-self|sat|ट}}, {{l-self|sat|ठ}}, {{l-self|sat|ड}}, {{l-self|sat|ड़}}, {{l-self|sat|ढ}}, {{l-self|sat|ण}}, {{l-self|sat|त}}, {{l-self|sat|थ}}, {{l-self|sat|द}}, {{l-self|sat|ध}}, {{l-self|sat|न}}, {{l-self|sat|प}}, {{l-self|sat|फ}}, {{l-self|sat|ब}}, {{l-self|sat|भ}}, {{l-self|sat|म}}, {{l-self|sat|य}}, {{l-self|sat|र}}, {{l-self|sat|ल}}, {{l-self|sat|स}}, {{l-self|sat|ह}}, {{l-self|sat|व}}}} =={{langname|skr}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ả Rập | [[ﮔﻬ#Tiếng_Saraiki|ﮔﻬ]] |- ! Devanagari | {{pn}} |- ! Gurmukhi | [[ਘ#Tiếng_Saraiki|ਘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|skr|[ɡʰɑ]}} ==={{ĐM|letter}}=== {{head|skr|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Saraiki, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Saraiki|list={{l-self|skr|अ}}, {{l-self|skr|आ}}, {{l-self|skr|इ}}, {{l-self|skr|ई}}, {{l-self|skr|उ}}, {{l-self|skr|ऊ}}, {{l-self|skr|ए}}, {{l-self|skr|ऐ}}, {{l-self|skr|ओ}}, {{l-self|skr|औ}}, {{l-self|skr|अँ}}, {{l-self|skr|क}}, {{l-self|skr|ख}}, {{l-self|skr|ग}}, {{l-self|skr|घ}}, {{l-self|skr|ङ}}, {{l-self|skr|ॻ}}, {{l-self|skr|च}}, {{l-self|skr|छ}}, {{l-self|skr|ज}}, {{l-self|skr|झ}}, {{l-self|skr|ॼ}}, {{l-self|skr|ट}}, {{l-self|skr|ठ}}, {{l-self|skr|ड}}, {{l-self|skr|ढ}}, {{l-self|skr|ण}}, {{l-self|skr|ट्र}}, {{l-self|skr|ड्र}}, {{l-self|skr|ढ्र}}, {{l-self|skr|ड़}}, {{l-self|skr|ढ़़}}, {{l-self|skr|ॾ}}, {{l-self|skr|ॾ़}}, {{l-self|skr|त}}, {{l-self|skr|थ}}, {{l-self|skr|द}}, {{l-self|skr|ध}}, {{l-self|skr|न}}, {{l-self|skr|न्ह}}, {{l-self|skr|प}}, {{l-self|skr|फ}}, {{l-self|skr|ब}}, {{l-self|skr|भ}}, {{l-self|skr|म}}, {{l-self|skr|ॿ}}, {{l-self|skr|म्ह}}, {{l-self|skr|य}}, {{l-self|skr|र}}, {{l-self|skr|ल}}, {{l-self|skr|व}}, {{l-self|skr|ऱ}}, {{l-self|skr|ल्ह}}, {{l-self|skr|श}}, {{l-self|skr|स}}, {{l-self|skr|ह}}, {{l-self|skr|क़}}, {{l-self|skr|ख़}}, {{l-self|skr|ग़}}, {{l-self|skr|ज़}}, {{l-self|skr|ॼ़}}, {{l-self|skr|त़}}, {{l-self|skr|फ़}}, {{l-self|skr|स़}}, {{l-self|skr|ह़}}, {{l-self|skr|अ़}}, {{l-self|skr|ड॒}}, {{l-self|skr|ब़}}}} =={{langname|saz}}== {| class="floatright wikitable" style="text-align:center;" |- ! Saurashtra | [[ꢕ#Tiếng_Saurashtra|ꢕ]] |- ! Latinh | [[Gh#Tiếng_Saurashtra|Gh]] [[gh#Tiếng_Saurashtra|gh]] |- ! Devanagari | {{pn}} |- |} ==={{ĐM|pron}}=== *{{IPA4|saz|[ɡʱə]}} ==={{ĐM|letter}}=== {{head|saz|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Saurashtra, viết bằng chữ Devanagari. #:{{ux|saz|'''घ'''डि|tr='''gha'''ḍi|[[họng]]|inline=1}} ==={{ĐM|ref}}=== *{{Chú thích web|saz|author=Bible Society of India|entryurl=https://www.bible.com/bible/3666/MAT.2|entry=மத்தேயு 2|work=Saurashtra Bible (BSI)|year=2025}} =={{langname|sd}}== {| class="floatright wikitable" style="text-align:center;" |- ! Ả Rập | [[گهہ#Tiếng_Sindh|گهہ]] |- ! Devanagari | {{pn}} |- ! Sindh | [[𑊾#Tiếng_Sindh|𑊾]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sd|[ɡʱ]}} ==={{ĐM|letter}}=== {{head|sd|Chữ cái|tr=gh}} #Phụ âm thứ 7 trong tiếng Sindh, viết bằng chữ Devanagari. #:{{ux|sd|'''घ'''टि|tr='''gha'''ṭi|[[ít]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sindh|list={{l-self|sd|अ}}, {{l-self|sd|आ}}, {{l-self|sd|इ}}, {{l-self|sd|ई}}, {{l-self|sd|उ}}, {{l-self|sd|ऊ}}, {{l-self|sd|ए}}, {{l-self|sd|ऐ}}, {{l-self|sd|ओ}}, {{l-self|sd|औ}}, {{l-self|sd|क}}, {{l-self|sd|ख}}, {{l-self|sd|ख़}}, {{l-self|sd|ग}}, {{l-self|sd|ॻ}}, {{l-self|sd|ग़}}, {{l-self|sd|घ}}, {{l-self|sd|ङ}}, {{l-self|sd|च}}, {{l-self|sd|छ}}, {{l-self|sd|ज}}, {{l-self|sd|ॼ}}, {{l-self|sd|ज़}}, {{l-self|sd|झ}}, {{l-self|sd|ञ}}, {{l-self|sd|ट}}, {{l-self|sd|ठ}}, {{l-self|sd|ड}}, {{l-self|sd|ॾ}}, {{l-self|sd|ड़}}, {{l-self|sd|ढ}}, {{l-self|sd|ढ़}}, {{l-self|sd|ण}}, {{l-self|sd|त}}, {{l-self|sd|थ}}, {{l-self|sd|द}}, {{l-self|sd|ध}}, {{l-self|sd|न}}, {{l-self|sd|प}}, {{l-self|sd|फ}}, {{l-self|sd|फ़}}, {{l-self|sd|ब}}, {{l-self|sd|ॿ}}, {{l-self|sd|भ}}, {{l-self|sd|म}}, {{l-self|sd|य}}, {{l-self|sd|र}}, {{l-self|sd|ल}}, {{l-self|sd|व}}, {{l-self|sd|श}}, {{l-self|sd|ष}}, {{l-self|sd|स}}, {{l-self|sd|ह}}}} =={{langname|srx}}== ==={{ĐM|pron}}=== *{{IPA4|srx|[ɡʰə]}} ==={{ĐM|letter}}=== {{head|srx|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Sirmaur, viết bằng chữ Devanagari. #:{{ux|srx|'''घ'''रवाली|tr='''gha'''ravālī|[[vợ]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Sirmaur|list={{l-self|srx|अ}}, {{l-self|srx|आ}}, {{l-self|srx|इ}}, {{l-self|srx|ई}}, {{l-self|srx|उ}}, {{l-self|srx|ऊ}}, {{l-self|srx|ए}}, {{l-self|srx|ऐ}}, {{l-self|srx|ओ}}, {{l-self|srx|औ}}, {{l-self|srx|अं}}, {{l-self|srx|अः }}, {{l-self|srx|क}}, {{l-self|srx|ख}}, {{l-self|srx|ग}}, {{l-self|srx|घ}}, {{l-self|srx|गं}}, {{l-self|srx|च}}, {{l-self|srx|छ}}, {{l-self|srx|ज}}, {{l-self|srx|झ}}, {{l-self|srx|ट}}, {{l-self|srx|ठ}}, {{l-self|srx|ड}}, {{l-self|srx|ड़}}, {{l-self|srx|ढ}}, {{l-self|srx|ण}}, {{l-self|srx|त}}, {{l-self|srx|थ}}, {{l-self|srx|द}}, {{l-self|srx|ध}}, {{l-self|srx|न}}, {{l-self|srx|प}}, {{l-self|srx|फ}}, {{l-self|srx|ब}}, {{l-self|srx|भ}}, {{l-self|srx|म}}, {{l-self|srx|य}}, {{l-self|srx|र}}, {{l-self|srx|ल}}, {{l-self|srx|व}}, {{l-self|srx|श}}, {{l-self|srx|स}}, {{l-self|srx|ह}}}} ==={{ĐM|ref}}=== *{{Chú thích web|srx|author=Beyond Translation|entryurl=https://www.bible.com/bible/3253/REV.1.SRXNT|entry=प्रकाशितवाक्य 1|work=सिरमौरी नौवाँ नियम|year=2025}} =={{langname|sjp}}== {| class="floatright wikitable" style="text-align:center;" |- ! Bengal | [[ঘ#Tiếng_Surjapur|ঘ]] |- ! Devanagari | {{pn}} |- ! Kaithi | [[𑂐#Tiếng_Surjapur|𑂐]] |- |} ==={{ĐM|pron}}=== *{{IPA4|sjp|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|sjp|Chữ cái|tr=gh}} #Chữ cái thứ 4 trong bảng chữ cái Devanagari tiếng Surjapur. #:{{ux|sjp|'''घ'''र्ज्वला|tr='''gha'''rjvalā|[[lò]]|inline=1}} ==={{ĐM|see}}=== *{{letters|lang=sjp|sc=Deva|qual=Chữ Devanagari tiếng Surjapur|अ|आ|इ|उ|ए|ओ|क|ख|ग|घ|च|छ|ज|झ|ट|ठ|ड|ढ|त|थ|द|ध|न|प|फ|ब|भ|म|र|ल|श|ष|ह}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Toby Anderson|work=Surjapuri – Bengali Dictionary|year=2020|publisher=SIL International|entryurl=https://www.webonary.org/surjapuri/browse/browse-vernacular-english/?key=sjp&letter=%E0%A6%98|entry=ঘ}} *{{Chú thích sách|sjp|author=Nav Bharat Mission|title=New Testament in Surjapuri (बाइबिल, सुरजापुरी)|year=2017|pageurl=https://archive.org/details/newtestament-surjapuri/page/n1|page=1}} =={{langname|taj}}== ==={{ĐM|pron}}=== *{{IPA4|taj|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|taj|Chữ cái|tr=gha}} #Chữ Devanagari biểu thị phụ âm '''{{IPAchar|/ɡʰ/}}''' trong tiếng Tamang Đông. #:{{quote|taj|एल्‍डर चा भर्खर प्रभुदा विश्‍वास लबा छार म्‍हि तबारी आत। आहिन्‍सम थेसे ह्राङसे ह्राङदान '''घ्रे'''न स्‍होसी '''घ'''मण्‍ड लसी भ्रला। ओच्‍छे शैतानसे याङ्बा सजायरी थेएनोन परब तला।|tr=Elder ca bharkhara Prabhudā viśvāsa labā chāra mhi tabārī āta. Āhinsam these hrāṅse hrāṅdāna '''ghrē'''na śhosī '''gha'''maṇḍa lasī bhralā. Occhē śaitānase yāṅbā sajāyarī theenona paraba talā.|Người mới tin đạo không được làm giám-mục, e người tự-kiêu mà sa vào án-phạt của ma-quỉ chăng. ([[s:I Ti-mô-thê/3#3:6|I Ti-mô-thê 3:6]])}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Đông|list={{l-self|taj|अ|tr=-}}, {{l-self|taj|अः|tr=-}}, {{l-self|taj|आ|tr=-}}, {{l-self|taj|आः|tr=-}}, {{l-self|taj|इ|tr=-}}, {{l-self|taj|ई|tr=-}}, {{l-self|taj|इः|tr=-}}, {{l-self|taj|उ|tr=-}}, {{l-self|taj|उः|tr=-}}, {{l-self|taj|ए|tr=-}}, {{l-self|taj|एः|tr=-}}, {{l-self|taj|ओ|tr=-}}, {{l-self|taj|ओः|tr=-}}, {{l-self|taj|अँ|tr=-}}, {{l-self|taj|अ्य|tr=-}}, {{l-self|taj|अ्व|tr=-}}, {{l-self|taj|क|tr=-}}, {{l-self|taj|ख|tr=-}}, {{l-self|taj|ग|tr=-}}, {{l-self|taj|घ|tr=-}}, ({{l-self|taj|ग़)|tr=-}}, {{l-self|taj|ङ|tr=-}}, {{l-self|taj|ङ़|tr=-}}, {{l-self|taj|च|tr=-}}, {{l-self|taj|छ|tr=-}}, {{l-self|taj|ज|tr=-}}, {{l-self|taj|ट|tr=-}}, {{l-self|taj|ठ|tr=-}}, {{l-self|taj|ड|tr=-}}, {{l-self|taj|ढ|tr=-}} ({{l-self|taj|ड़|tr=-}}), {{l-self|taj|त|tr=-}}, {{l-self|taj|थ|tr=-}}, {{l-self|taj|द|tr=-}}, {{l-self|taj|ध|tr=-}}, {{l-self|taj|न|tr=-}}, {{l-self|taj|न्ह|tr=-}} ({{l-self|taj|ऩ|tr=-}}), {{l-self|taj|प|tr=-}}, {{l-self|taj|फ|tr=-}}, {{l-self|taj|ब|tr=-}}, {{l-self|taj|भ|tr=-}} ({{l-self|taj|ब़|tr=-}}), {{l-self|taj|म|tr=-}}, {{l-self|taj|म्ह|tr=-}} ({{l-self|taj|म़|tr=-}}), {{l-self|taj|य|tr=-}}, {{l-self|taj|य्ह|tr=-}} ({{l-self|taj|य़|tr=-}}), {{l-self|taj|र|tr=-}}, {{l-self|taj|ह्र|tr=-}} ({{l-self|taj|ऱ|tr=-}}), {{l-self|taj|ल|tr=-}}, {{l-self|taj|ल्ह|tr=-}} ({{l-self|taj|ल़|tr=-}}), {{l-self|taj|व|tr=-}}, {{l-self|taj|व्ह|tr=-}} ({{l-self|taj|व़|tr=-}}), {{l-self|taj|ष|tr=-}}, {{l-self|taj|स|tr=-}}, {{l-self|taj|स्ह|tr=-}} ({{l-self|taj|स़|tr=-}}), {{l-self|taj|ह|tr=-}}, {{l-self|taj|क्ष|tr=-}}, {{l-self|taj|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|taj|author=Eastern Tamang Language Team|entryurl=https://www.bible.com/bible/1177/1TI.3.TAJ|entry=१ तिमो 3|year=2011|publisher=Wycliffe Bible Translators, Inc.|work=परमेश्वरला बचन छार कबुल}} =={{langname|tge}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Tạng | [[གྷ#Tiếng_Tamang_Gorkha_Đông|གྷ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|tge|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|tge|Chữ cái|tr=gha}} #{{n-g|Phụ âm thứ 4 trong tiếng Tamang Gorkha Đông, viết bằng chữ Devanagari.}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Gorkha Đông|list={{l-self|tge|अ|tr=-}}, {{l-self|tge|अः|tr=-}}, {{l-self|tge|आ|tr=-}}, {{l-self|tge|आः|tr=-}}, {{l-self|tge|इ|tr=-}}, {{l-self|tge|ई|tr=-}}, {{l-self|tge|इः|tr=-}}, {{l-self|tge|उ|tr=-}}, {{l-self|tge|उः|tr=-}}, {{l-self|tge|ए|tr=-}}, {{l-self|tge|एः|tr=-}}, {{l-self|tge|ओ|tr=-}}, {{l-self|tge|ओः|tr=-}}, {{l-self|tge|अँ|tr=-}}, {{l-self|tge|अ्य|tr=-}}, {{l-self|tge|अ्व|tr=-}}, {{l-self|tge|क|tr=-}}, {{l-self|tge|ख|tr=-}}, {{l-self|tge|ग|tr=-}}, {{l-self|tge|घ|tr=-}}, ({{l-self|tge|ग़)|tr=-}}, {{l-self|tge|ङ|tr=-}}, {{l-self|tge|ङ़|tr=-}}, {{l-self|tge|च|tr=-}}, {{l-self|tge|छ|tr=-}}, {{l-self|tge|ज|tr=-}}, {{l-self|tge|ट|tr=-}}, {{l-self|tge|ठ|tr=-}}, {{l-self|tge|ड|tr=-}}, {{l-self|tge|ढ|tr=-}} ({{l-self|tge|ड़|tr=-}}), {{l-self|tge|त|tr=-}}, {{l-self|tge|थ|tr=-}}, {{l-self|tge|द|tr=-}}, {{l-self|tge|ध|tr=-}}, {{l-self|tge|न|tr=-}}, {{l-self|tge|न्ह|tr=-}} ({{l-self|tge|ऩ|tr=-}}), {{l-self|tge|प|tr=-}}, {{l-self|tge|फ|tr=-}}, {{l-self|tge|ब|tr=-}}, {{l-self|tge|भ|tr=-}} ({{l-self|tge|ब़|tr=-}}), {{l-self|tge|म|tr=-}}, {{l-self|tge|म्ह|tr=-}} ({{l-self|tge|म़|tr=-}}), {{l-self|tge|य|tr=-}}, {{l-self|tge|य्ह|tr=-}} ({{l-self|tge|य़|tr=-}}), {{l-self|tge|र|tr=-}}, {{l-self|tge|ह्र|tr=-}} ({{l-self|tge|ऱ|tr=-}}), {{l-self|tge|ल|tr=-}}, {{l-self|tge|ल्ह|tr=-}} ({{l-self|tge|ल़|tr=-}}), {{l-self|tge|व|tr=-}}, {{l-self|tge|व्ह|tr=-}} ({{l-self|tge|व़|tr=-}}), {{l-self|tge|ष|tr=-}}, {{l-self|tge|स|tr=-}}, {{l-self|tge|स्ह|tr=-}} ({{l-self|tge|स़|tr=-}}), {{l-self|tge|ह|tr=-}}, {{l-self|tge|क्ष|tr=-}}, {{l-self|tge|ज्ञ}}}} =={{langname|tdg}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | '''घ''' |- ! Tạng | [[གྷ#Tiếng_Tamang_Tây|གྷ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|tdg|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|tdg|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Tamang Tây, viết bằng chữ Devanagari. #:{{ux|tdg|'''घ्‍य'''म्‍ब|tr='''ghya'''mb|[[đau]] [[quặn]]|inline=1}} ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Tamang Tây|list={{l-self|tdg|अ|tr=-}}, {{l-self|tdg|अः|tr=-}}, {{l-self|tdg|आ|tr=-}}, {{l-self|tdg|आः|tr=-}}, {{l-self|tdg|इ|tr=-}}, {{l-self|tdg|ई|tr=-}}, {{l-self|tdg|इः|tr=-}}, {{l-self|tdg|उ|tr=-}}, {{l-self|tdg|उः|tr=-}}, {{l-self|tdg|ए|tr=-}}, {{l-self|tdg|एः|tr=-}}, {{l-self|tdg|ओ|tr=-}}, {{l-self|tdg|ओः|tr=-}}, {{l-self|tdg|अँ|tr=-}}, {{l-self|tdg|अ्य|tr=-}}, {{l-self|tdg|अ्व|tr=-}}, {{l-self|tdg|क|tr=-}}, {{l-self|tdg|ख|tr=-}}, {{l-self|tdg|ग|tr=-}}, {{l-self|tdg|घ|tr=-}}, ({{l-self|tdg|ग़)|tr=-}}, {{l-self|tdg|ङ|tr=-}}, {{l-self|tdg|ङ़|tr=-}}, {{l-self|tdg|च|tr=-}}, {{l-self|tdg|छ|tr=-}}, {{l-self|tdg|ज|tr=-}}, {{l-self|tdg|ट|tr=-}}, {{l-self|tdg|ठ|tr=-}}, {{l-self|tdg|ड|tr=-}}, {{l-self|tdg|ढ|tr=-}} ({{l-self|tdg|ड़|tr=-}}), {{l-self|tdg|त|tr=-}}, {{l-self|tdg|थ|tr=-}}, {{l-self|tdg|द|tr=-}}, {{l-self|tdg|ध|tr=-}}, {{l-self|tdg|न|tr=-}}, {{l-self|tdg|न्ह|tr=-}} ({{l-self|tdg|ऩ|tr=-}}), {{l-self|tdg|प|tr=-}}, {{l-self|tdg|फ|tr=-}}, {{l-self|tdg|ब|tr=-}}, {{l-self|tdg|भ|tr=-}} ({{l-self|tdg|ब़|tr=-}}), {{l-self|tdg|म|tr=-}}, {{l-self|tdg|म्ह|tr=-}} ({{l-self|tdg|म़|tr=-}}), {{l-self|tdg|य|tr=-}}, {{l-self|tdg|य्ह|tr=-}} ({{l-self|tdg|य़|tr=-}}), {{l-self|tdg|र|tr=-}}, {{l-self|tdg|ह्र|tr=-}} ({{l-self|tdg|ऱ|tr=-}}), {{l-self|tdg|ल|tr=-}}, {{l-self|tdg|ल्ह|tr=-}} ({{l-self|tdg|ल़|tr=-}}), {{l-self|tdg|व|tr=-}}, {{l-self|tdg|व्ह|tr=-}} ({{l-self|tdg|व़|tr=-}}), {{l-self|tdg|ष|tr=-}}, {{l-self|tdg|स|tr=-}}, {{l-self|tdg|स्ह|tr=-}} ({{l-self|tdg|स़|tr=-}}), {{l-self|tdg|ह|tr=-}}, {{l-self|tdg|क्ष|tr=-}}, {{l-self|tdg|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích web|author=Mother Tongue Center Nepal|entryurl=https://www.webonary.org/wtamang/en/browse/browse-vernacular-nepali/?key=tdg&letter=%E0%A4%98|entry=घ|year=2017|publisher=SIL International®|work=Western Tamang Dictionary}} =={{langname|vav}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Varli|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|vav|[ɡʰa]}} ==={{ĐM|letter}}=== {{head|vav|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Varli, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *{{list helper 2|title=Chữ Devanagari tiếng Varli|list={{l-self|vav|अ}}, {{l-self|vav|आ}}, {{l-self|vav|इ}}, {{l-self|vav|ई}}, {{l-self|vav|उ}}, {{l-self|vav|ऊ}}, {{l-self|vav|ए}}, {{l-self|vav|ऐ}}, {{l-self|vav|ओ}}, {{l-self|vav|औ}}, {{l-self|vav|अं}}, {{l-self|vav|अः}}, {{l-self|vav|ॲ}}, {{l-self|vav|ऑ}}, {{l-self|vav|क}}, {{l-self|vav|ख}}, {{l-self|vav|ग}}, {{l-self|vav|घ}}, {{l-self|vav|ङ}}, {{l-self|vav|च}}, {{l-self|vav|छ}}, {{l-self|vav|ज}}, {{l-self|vav|झ}}, {{l-self|vav|ञ}}, {{l-self|vav|ट}}, {{l-self|vav|ठ}}, {{l-self|vav|ड}}, {{l-self|vav|ढ}}, {{l-self|vav|ण}}, {{l-self|vav|त}}, {{l-self|vav|थ}}, {{l-self|vav|द}}, {{l-self|vav|ध}}, {{l-self|vav|न}}, {{l-self|vav|प}}, {{l-self|vav|फ}}, {{l-self|vav|ब}}, {{l-self|vav|भ}}, {{l-self|vav|म}}, {{l-self|vav|य}}, {{l-self|vav|र}}, {{l-self|vav|ल}}, {{l-self|vav|व}}, {{l-self|vav|श}}, {{l-self|vav|ष}}, {{l-self|vav|स}}, {{l-self|vav|ह}}, {{l-self|vav|ळ}}, {{l-self|vav|क्ष}}, {{l-self|vav|ज्ञ}}}} ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Abraham, G.; Abraham, Hemalatha|title=[https://www.sil.org/system/files/reapdata/14/75/93/1475937409474978221737387197924835991/LCDD_20_2012_Abraham_Varli_Phonological_Grammar_Sketches.pdf Varli Phonology and Grammar Sketches]|publisher=SIL International|year=2012|location=Dallas, Texas}} =={{langname|vas}}== {| class="floatright wikitable" style="text-align:center;" |- ! Devanagari | {{pn}} |- ! Gujarat | [[ઘ#Tiếng_Vasavi|ઘ]] |- |} ==={{ĐM|pron}}=== *{{IPA4|vas|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|vas|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Vasavi, viết bằng chữ Devanagari. #:{{quote|vas|आंय तुमनेंह नोक्कीज आखुंह: तों '''घे'''टों तीयाल झुळे ता, वाट चुकयें नांह तीया नोव्वाणु '''घे'''टाहांअ लीदे तीयाल जो आनोंद वीअ तीयाअ केअता, वाट चुकी गेहलों तों एक '''घे'''टों झुळ्यों तीयाअ लीदे तीयाल वादारे आनोंद वीअ।|tr=Āṃya tumaneha nokkīja ākhūṃha: toṃ '''ghe'''ṭoṃ tīyāla jhuḷe tā, vāṭ cukayeṃ nāṃha tīyā novvāṇu '''ghe'''ṭāhāṃa līde tīyāla jo ānoṃda vīa tīyāa keatā, vāṭ cukī gehloṃ toṃ ek '''ghe'''ṭoṃ jhuḷyoṃ tīyāa līde tīyāla vādāre ānoṃda vīa.|Quả thật, ta nói cùng các ngươi, nếu người kiếm lại được, thì lấy làm vui-mừng về con đó hơn chín mươi chín con không lạc. ([[s:Ma-thi-ơ/18#18:13|Ma-thi-ơ 18:13]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Vasavi'') [[अ#Tiếng_Vasavi|अ]], [[आ#Tiếng_Vasavi|आ]], [[इ#Tiếng_Vasavi|इ]], [[ई#Tiếng_Vasavi|ई]], [[उ#Tiếng_Vasavi|उ]], [[ऊ#Tiếng_Vasavi|ऊ]], [[ए#Tiếng_Vasavi|ए]], [[ऐ#Tiếng_Vasavi|ऐ]], [[ओ#Tiếng_Vasavi|ओ]], [[औ#Tiếng_Vasavi|औ]], [[अं#Tiếng_Vasavi|अं]], [[अः#Tiếng_Vasavi|अः]], [[ॲ#Tiếng_Vasavi|ॲ]], [[ऑ #Tiếng_Vasavi|ऑ ]], [[क#Tiếng_Vasavi|क]], [[ख#Tiếng_Vasavi|ख]], [[ग#Tiếng_Vasavi|ग]], [[घ#Tiếng_Vasavi|घ]], [[ङ#Tiếng_Vasavi|ङ]], [[च#Tiếng_Vasavi|च]], [[छ#Tiếng_Vasavi|छ]], [[ज#Tiếng_Vasavi|ज]], [[झ#Tiếng_Vasavi|झ]], [[ञ#Tiếng_Vasavi|ञ]], [[ट#Tiếng_Vasavi|ट]], [[ठ#Tiếng_Vasavi|ठ]], [[ड#Tiếng_Vasavi|ड]], [[ढ#Tiếng_Vasavi|ढ]], [[ण#Tiếng_Vasavi|ण]], [[त#Tiếng_Vasavi|त]], [[थ#Tiếng_Vasavi|थ]], [[द#Tiếng_Vasavi|द]], [[ध#Tiếng_Vasavi|ध]], [[न#Tiếng_Vasavi|न]], [[प#Tiếng_Vasavi|प]], [[फ#Tiếng_Vasavi|फ]], [[ब#Tiếng_Vasavi|ब]], [[भ#Tiếng_Vasavi|भ]], [[म#Tiếng_Vasavi|म]], [[य#Tiếng_Vasavi|य]], [[र#Tiếng_Vasavi|र]], [[ल#Tiếng_Vasavi|ल]], [[व#Tiếng_Vasavi|व]], [[श#Tiếng_Vasavi|श]], [[ष#Tiếng_Vasavi|ष]], [[स#Tiếng_Vasavi|स]], [[ह#Tiếng_Vasavi|ह]], [[ळ#Tiếng_Vasavi|ळ]], [[क्ष#Tiếng_Vasavi|क्ष]], [[ज्ञ#Tiếng_Vasavi|ज्ञ]] ==={{ĐM|ref}}=== *{{Chú thích web|vas|author=Vasavi Boli|entryurl=https://media.ipsapps.org/vas/osa/bible/khan/01-MAT-018.html|entry=माथी 18|work=Vasavi Khandesi Bible|year=2024}} =={{langname|wme}}== ==={{ĐM|pron}}=== *{{IPA4|wme|[ɡʰɐ]}} ==={{ĐM|letter}}=== {{head|wme|Chữ cái|tr=gha}} #Phụ âm thứ 4 trong tiếng Wambule, viết bằng chữ Devanagari. ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Wambule'') [[अ#Tiếng_Wambule|अ]], [[आ#Tiếng_Wambule|आ]], [[इ#Tiếng_Wambule|इ]], [[ई#Tiếng_Wambule|ई]], [[उ#Tiếng_Wambule|उ]], [[ऊ#Tiếng_Wambule|ऊ]], [[ए#Tiếng_Wambule|ए]], [[ऐ#Tiếng_Wambule|ऐ]], [[ओ#Tiếng_Wambule|ओ]], [[औ#Tiếng_Wambule|औ]], [[अ्व#Tiếng_Wambule|अ्व]], [[अ्य#Tiếng_Wambule|अ्य]], [[क#Tiếng_Wambule|क]], [[ख#Tiếng_Wambule|ख]], [[ग#Tiếng_Wambule|ग]], [[घ#Tiếng_Wambule|घ]], [[ङ#Tiếng_Wambule|ङ]], [[च#Tiếng_Wambule|च]], [[छ#Tiếng_Wambule|छ]], [[ज#Tiếng_Wambule|ज]], [[ञ#Tiếng_Wambule|ञ]], [[ट#Tiếng_Wambule|ट]], [[ठ#Tiếng_Wambule|ठ]], [[ड#Tiếng_Wambule|ड]], [[ड्अ#Tiếng_Wambule|ड्अ]], [[ढ#Tiếng_Wambule|ढ]], [[त#Tiếng_Wambule|त]], [[थ#Tiếng_Wambule|थ]], [[द#Tiếng_Wambule|द]], [[ध#Tiếng_Wambule|ध]], [[न#Tiếng_Wambule|न]], [[प#Tiếng_Wambule|प]], [[फ#Tiếng_Wambule|फ]], [[ब#Tiếng_Wambule|ब]], [[ब्‍‍अ#Tiếng_Wambule|ब्‍‍अ]], [[भ#Tiếng_Wambule|भ]], [[म#Tiếng_Wambule|म]], [[य#Tiếng_Wambule|य]], [[र#Tiếng_Wambule|र]], [[ऱ्व#Tiếng_Wambule|ऱ्व]], [[ऱ्य#Tiếng_Wambule|ऱ्य]], [[ल#Tiếng_Wambule|ल]], [[व#Tiếng_Wambule|व]], [[श#Tiếng_Wambule|श]], [[स#Tiếng_Wambule|स]], [[ह#Tiếng_Wambule|ह]] ==={{ĐM|ref}}=== *{{Chú thích web|wme|entry=प्रकाश १|work=[https://media.ipsapps.org/wme/osa/bible/#/text Wambule Bible]|year=2025}} =={{langname|ybh}}== ==={{ĐM|pron}}=== *{{IPA4|ybh|[ɡʰʌ]}} ==={{ĐM|letter}}=== {{head|ybh|Chữ cái|tr=ghä}} #Phụ âm thứ 4 trong tiếng Yakkha, viết bằng chữ Devanagari. #:{{ux|ybh|'''घा'''क|tr='''khā'''ka|[[mọi]] [[thứ]]|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/en/browse/browse-vernacular-nepali/?key=ybh&letter=%E0%A4%98|entry=घ}} =={{langname|ybi}}== ==={{ĐM|pron}}=== *{{IPA4|ybi|[ɡʰ]}} ==={{ĐM|letter}}=== {{head|ybi|Chữ cái|tr=gh}} #Phụ âm thứ 4 trong tiếng Yamphu, viết bằng chữ Devanagari. #:{{ux|ybi|'''घ'''रे़लि|tr='''gha'''reḷi|[[nền móng]] [[nhà]]|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/en/browse/browse-yamphu-nepali/?key=ybi&letter=%E0%A4%98|entry=घ}} =={{langname|scp}}== ==={{ĐM|pron}}=== *{{IPA4|scp|[ɡ̤ʌ]}} ==={{ĐM|letter}}=== {{head|scp|Chữ cái|tr=gha}} #Phụ âm thứ 37 trong tiếng Yolmo, viết bằng chữ Devanagari. #:{{quote|scp|ओहजे पेहतीॱआङ खोगी ताम मिहङ्यीहन्‍सीमाना छेन्‍छोकला काहल्‍दी ख्‍येगी ताम थाम्‍ज्‍यी प्रा साल तेर ओहले खुङगी तामॱआङ खोगी मिहङ्यीहन्‍सीमाना खोला किन्‍ज्‍योला ङोह मे़हस्‍येएँगी मिहया़ दाङ '''घू'''स लेहन्‍गेन्‍गी ठाल तुहएँगी तिहक्‍च्‍येम्‍बा मिहया़ ल़ेहमुराङ यिहन म़ेदी सेमला ने़दोङ।”|tr=Ohje pehtīāṅ khogī tāma mihaṅyīhansīmānā chenchoklā kāhaldī khyegī tāma thāmjyī prā sāl tera ohle khuṅgī tāmaāṅ khogī mihaṅyīhansīmānā kholā kinjyolā ṅoh mehsyēeṅgī mihayā dāṅ '''ghū'''s lehaṅgeṅgī ṭhāl tuheṅgī tihkchyembā mihayā lehmurāṅ yihana medī semlā nedoṅ.|Nếu người không chịu nghe các người đó, thì hãy cáo cùng Hội-thánh, lại nếu người không chịu nghe Hội-thánh, thì hãy coi người như kẻ ngoại và kẻ thâu thuế vậy. ([[s:Ma-thi-ơ/18#18:17|Ma-thi-ơ 18:17]])}} ==={{ĐM|see}}=== *(''Chữ Devanagari tiếng Yolmo'') [[अ#Tiếng_Yolmo|अ]], [[आ#Tiếng_Yolmo|आ]], [[इ#Tiếng_Yolmo|इ]], [[उ#Tiếng_Yolmo|उ]], [[ए#Tiếng_Yolmo|ए]], [[ओ#Tiếng_Yolmo|ओ]], [[अ़#Tiếng_Yolmo|अ़]], [[आ़#Tiếng_Yolmo|आ़]], [[ई़#Tiếng_Yolmo|ई़]], [[ऊ़#Tiếng_Yolmo|ऊ़]], [[ए़#Tiếng_Yolmo|ए़]], [[ओ़#Tiếng_Yolmo|ओ़]], [[अँ#Tiếng_Yolmo|अँ]], [[अˑ#Tiếng_Yolmo|अˑ]], [[क#Tiếng_Yolmo|क]], [[ख#Tiếng_Yolmo|ख]], [[ग#Tiếng_Yolmo|ग]], [[ङ#Tiếng_Yolmo|ङ]], [[क्य#Tiếng_Yolmo|क्य]], [[ख्य#Tiếng_Yolmo|ख्य]], [[ग्य#Tiếng_Yolmo|ग्य]], [[च#Tiếng_Yolmo|च]], [[छ#Tiếng_Yolmo|छ]], [[ज#Tiếng_Yolmo|ज]], [[ज़#Tiếng_Yolmo|ज़]], [[ङ्य#Tiếng_Yolmo|ङ्य]], [[च्य#Tiếng_Yolmo|च्य]], [[छ्य#Tiếng_Yolmo|छ्य]], [[ज्य#Tiếng_Yolmo|ज्य]], [[ज़्य#Tiếng_Yolmo|ज़्य]], [[ट#Tiếng_Yolmo|ट]], [[ठ#Tiếng_Yolmo|ठ]], [[ड#Tiếng_Yolmo|ड]], [[त#Tiếng_Yolmo|त]], [[थ#Tiếng_Yolmo|थ]], [[द#Tiếng_Yolmo|द]], [[न#Tiếng_Yolmo|न]], [[प#Tiếng_Yolmo|प]], [[फ#Tiếng_Yolmo|फ]], [[ब#Tiếng_Yolmo|ब]], [[म#Tiếng_Yolmo|म]], [[य#Tiếng_Yolmo|य]], [[र#Tiếng_Yolmo|र]], [[ऱ्ह#Tiếng_Yolmo|ऱ्ह]], [[ल#Tiếng_Yolmo|ल]], [[ल्ह#Tiếng_Yolmo|ल्ह]], [[व#Tiếng_Yolmo|व]], [[स#Tiếng_Yolmo|स]], [[स्य#Tiếng_Yolmo|स्य]], [[ह#Tiếng_Yolmo|ह]], [[घ#Tiếng_Yolmo|घ]], [[ढ#Tiếng_Yolmo|ढ]], [[ध#Tiếng_Yolmo|ध]], [[श#Tiếng_Yolmo|श]] ==={{ĐM|ref}}=== *{{Chú thích sách|en|author=Anna Maria Hari & Chhegu Lama|title=[https://www.sil.org/system/files/reapdata/20/68/76/20687635068490737809780070500342314186/Long_Dictionary.pdf ह्योल्मो-नेपाली-अँग्रेजी]|year=2004|publisher=Central Department of Linguistics, Tribhuvan University|page=439}} *{{Chú thích web|scp|entryurl=https://www.bible.com/bible/3545/MAT.18.HYLM|entry=मत्ती 18|author=Wycliffe Bible Translators, Inc.|year=2023|work=ह्योल्‍मो}} [[Thể loại:Khối ký tự Devanagari|18]] n1jr0pmfi92qee6522acdm3zebeanip 應對 0 418149 2566607 2026-09-26T08:40:46Z Hiyuune 50834 Trang mới: “{{also|应对|応対}} =={{langname|zh}}== {{zh-forms|s=应对}} ==={{section|pron}}=== {{zh-pron |m=yìngduì |c=jing3 deoi3 |mn=èng-tùi |mn-t=êng3 dui3 |cat=v }} ==={{section|v}}=== {{head|zh|Động từ}} # [[phản hồi|Phản hồi]]; [[trả lời]]. ===={{section|drv}}==== {{col3|zh|應對策略}}” 2566607 wikitext text/x-wiki {{also|应对|応対}} =={{langname|zh}}== {{zh-forms|s=应对}} ==={{section|pron}}=== {{zh-pron |m=yìngduì |c=jing3 deoi3 |mn=èng-tùi |mn-t=êng3 dui3 |cat=v }} ==={{section|v}}=== {{head|zh|Động từ}} # [[phản hồi|Phản hồi]]; [[trả lời]]. ===={{section|drv}}==== {{col3|zh|應對策略}} h9lzrsjb8jhu3fd96gsmv9zibn99nwx 応変 0 418150 2566610 2026-09-26T08:45:57Z Hiyuune 50834 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|おう|へん|yomi=on}} ==={{section|n}}=== {{ja-noun|おうへん}} # Tính có lợi, tính [[thiết thực]]; tính [[thích hợp]]. ===={{section|drv}}==== * {{ja-r|臨機応変|りんきおうへん}}” 2566610 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|おう|へん|yomi=on}} ==={{section|n}}=== {{ja-noun|おうへん}} # Tính có lợi, tính [[thiết thực]]; tính [[thích hợp]]. ===={{section|drv}}==== * {{ja-r|臨機応変|りんきおうへん}} rtog385ea3npl8350ngcrmkype9vf9q 應變 0 418151 2566612 2026-09-26T08:46:10Z Hiyuune 50834 Trang mới: “{{also|应变}} =={{langname|vi}}== {{vi-hantutab}} ==={{section|v}}=== {{vi-verb|sc=Hani}} # {{vi-Han form of|ứng biến}} =={{langname|ja}}== {{ja-kanjitab|おう|へん|yomi=on}} {{ja-see|応変}} =={{langname|zh}}== {{zh-forms|s=应变}} ==={{section|pron}}=== {{zh-pron |m=yìngbiàn |c=jing3 bin3 |mn=qz,tw,xm,zz:èng-piàn |mn-t=êng3 biang3 |cat=v,n }} ==={{section|v}}=== {{head|zh|Động từ}} # [[ứng biến|Ứng biến]]. ===={{section|drv}}==== {{c…” 2566612 wikitext text/x-wiki {{also|应变}} =={{langname|vi}}== {{vi-hantutab}} ==={{section|v}}=== {{vi-verb|sc=Hani}} # {{vi-Han form of|ứng biến}} =={{langname|ja}}== {{ja-kanjitab|おう|へん|yomi=on}} {{ja-see|応変}} =={{langname|zh}}== {{zh-forms|s=应变}} ==={{section|pron}}=== {{zh-pron |m=yìngbiàn |c=jing3 bin3 |mn=qz,tw,xm,zz:èng-piàn |mn-t=êng3 biang3 |cat=v,n }} ==={{section|v}}=== {{head|zh|Động từ}} # [[ứng biến|Ứng biến]]. ===={{section|drv}}==== {{col3|zh|隨機應變}} ==={{section|n}}=== {{head|zh|Danh từ}} # {{lb|zh|physics}} Sự [[biến dạng]]. ===={{section|drv}}==== {{col3|zh|應變片}} 9ga46ro2vqvakcaavmqqs53790ne0g4 labidun 0 418152 2566631 2026-09-26T09:58:31Z TheHighFighter2 42988 Trang mới: “=={{langname|yo}}== ==={{ĐM|etym}}=== Từ {{bor|yo|ha|dabīnṑ}}. ==={{ĐM|pron}}=== * {{yo-IPA|làbídùn}} ==={{ĐM|noun}}=== {{yo-noun|làbídùn}} # {{lb|yo|Ìlọrin}} [[chà là|Chà là]]. ==={{ĐM|ref}}=== *Katibi, Abdulrazaq M. ''Domestication of Arabo-Islamic Words in the Ilọrin Dialect of Yorùbá,'' [https://journals.flvc.org/ysr/article/download/130281/132984/228607] {{C|yo|Trái cây}}” 2566631 wikitext text/x-wiki =={{langname|yo}}== ==={{ĐM|etym}}=== Từ {{bor|yo|ha|dabīnṑ}}. ==={{ĐM|pron}}=== * {{yo-IPA|làbídùn}} ==={{ĐM|noun}}=== {{yo-noun|làbídùn}} # {{lb|yo|Ìlọrin}} [[chà là|Chà là]]. ==={{ĐM|ref}}=== *Katibi, Abdulrazaq M. ''Domestication of Arabo-Islamic Words in the Ilọrin Dialect of Yorùbá,'' [https://journals.flvc.org/ysr/article/download/130281/132984/228607] {{C|yo|Trái cây}} byntinptomp1t58s8f6ex9atu7r5wez mangoro 0 418153 2566632 2026-09-26T10:04:25Z TheHighFighter2 42988 Trang mới: “=={{langname|yo}}== [[Image:Mangoes in Ghana.jpg|thumb|right|'''Máńgòrò''']] ==={{ĐM|alter}}=== * {{alter|yo|mọ́ńgòrò}} ==={{ĐM|etym}}=== {{bor+|yo|pt|manga}}, cùng gốc với {{cog|ha|mangoro}}. ==={{ĐM|pron}}=== * {{yo-IPA|máńgòrò}} ==={{ĐM|noun}}=== {{yo-noun|máńgòrò}} # [[xoài|Xoài]]. {{C|yo|Thực phẩm|Trái cây}}” 2566632 wikitext text/x-wiki =={{langname|yo}}== [[Image:Mangoes in Ghana.jpg|thumb|right|'''Máńgòrò''']] ==={{ĐM|alter}}=== * {{alter|yo|mọ́ńgòrò}} ==={{ĐM|etym}}=== {{bor+|yo|pt|manga}}, cùng gốc với {{cog|ha|mangoro}}. ==={{ĐM|pron}}=== * {{yo-IPA|máńgòrò}} ==={{ĐM|noun}}=== {{yo-noun|máńgòrò}} # [[xoài|Xoài]]. {{C|yo|Thực phẩm|Trái cây}} gbqlcefx6e8t6wazeoujwpl1i0t5fvb cün 0 418154 2566633 2026-09-26T10:11:33Z TheHighFighter2 42988 Trang mới: “{{also|Phụ lục:Biến thể của "cun"}} =={{langname|vo}}== ==={{ĐM|noun}}=== {{vo-noun}} # [[cằm|Cằm]]. ===={{ĐM|decl}}==== {{vo-decl-noun}} ==={{ĐM|further}}=== * {{R:vo:Vödabuk}}” 2566633 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "cun"}} =={{langname|vo}}== ==={{ĐM|noun}}=== {{vo-noun}} # [[cằm|Cằm]]. ===={{ĐM|decl}}==== {{vo-decl-noun}} ==={{ĐM|further}}=== * {{R:vo:Vödabuk}} 6sfwpbm6nx8lk91fm6nulz699wtcsde Bản mẫu:mn-adj 10 418155 2566641 2026-09-26T10:25:51Z Hiyuune 50834 Hiyuune đã đổi [[Bản mẫu:mn-adj]] thành [[Bản mẫu:mn-adjective]] 2566641 wikitext text/x-wiki #đổi [[Bản mẫu:mn-adjective]] ea9cd5kw7r4mc4ney3qnvxbwg0xkcx7 Bản mẫu:mn-head 10 418156 2566649 2026-09-26T10:42:59Z Hiyuune 50834 Trang mới: “<includeonly>{{#invoke:mn-headword|show}}</includeonly><noinclude>{{documentation}}</noinclude>” 2566649 wikitext text/x-wiki <includeonly>{{#invoke:mn-headword|show}}</includeonly><noinclude>{{documentation}}</noinclude> pugaa4tm6a1e7j7nmqq8m75d7xtmet4