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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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 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 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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;"> <b>A</b> l p h a m a </span>]] <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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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> – [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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 639-1 (hai ký tự, nếu có).
** Ưu tiên 2: chuẩn ISO 639-2 (ba ký tự, nếu không có ISO 639-1).
** Ưu tiên 3: chuẩn ISO 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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 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 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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;"> <b>A</b> l p h a m a </span>]] <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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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> – [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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 639-1 (hai ký tự, nếu có).
** Ưu tiên 2: chuẩn ISO 639-2 (ba ký tự, nếu không có ISO 639-1).
** Ưu tiên 3: chuẩn ISO 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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 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 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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;"> <b>A</b> l p h a m a </span>]] <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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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;"> '''☀DefenderTienMinh☽''' </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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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;"> '''☀DefenderTienMinh☽''' </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> – [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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>⎕</span>]] – [[Thảo luận Thành viên:Ccv2020|<span style=color:#ff0000>⍰</span>]] – [[Đặc biệt:Đóng góp/Ccv2020|<span style=color:#ffff00>〿</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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.
– [[Thành viên:Mxn|Nguyễn Xuân Minh]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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 639-1 (hai ký tự, nếu có).
** Ưu tiên 2: chuẩn ISO 639-2 (ba ký tự, nếu không có ISO 639-1).
** Ưu tiên 3: chuẩn ISO 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]] <sup>[[Thảo luận Thành viên:Mxn|<span style="display: inline-block;">💬</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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/41|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/42|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/43|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/44|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/45|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/46|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/47|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/48|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/49|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/50|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/51|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2025/52|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/03|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/04|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/05|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/06|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/07|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/08|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/09|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/10|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/11|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/12|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/13|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/14|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/15|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/16|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/17|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/18|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/19|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/20|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/21|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/22|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/23|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/24|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/25|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/26|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/27|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Contribute]] • [[m:Special:MyLanguage/Tech/News/2026/28|Translate]] • [[m:Tech|Get help]] • [[m:Talk:Tech/News|Give feedback]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/29|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/30|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/31|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/32|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/33|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/34|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/35|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/36|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/37|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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]] • [[m:Special:MyLanguage/Tech/News#contribute|Đóng góp]] • [[m:Special:MyLanguage/Tech/News/2026/38|Biên dịch]] • [[m:Tech|Nhờ giúp đỡ]] • [[m:Talk:Tech/News|Phản hồi]] • [[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 " +‎ " 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 " +‎ " 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> --.--[[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 " ") ..
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=| {{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'oːlʔ", "" }, { "5428", "隓", "歌", "3", "墮", "l'oːlʔ", "" }, { "5438", "隓", "歌", "3", "鬌", "l'ol", "" }, }”
2566425
Scribunto
text/plain
return {
{ "5415", "隓", "歌", "3", "埵", "ʔl'oːlʔ", "" },
{ "5428", "隓", "歌", "3", "墮", "l'oːlʔ", "" },
{ "5438", "隓", "歌", "3", "鬌", "l'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}}} | — |- ! 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}}}
| —
|-
! Khả năng
| {{{pres_abil}}}
| {{{past_abil}}}
| {{{fut_abil}}}
| —
{{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